freedink-108.4+dfsg/0000755000175000017500000000000012421730246012021 5ustar memefreedink-108.4+dfsg/share/0000755000175000017500000000000012421730246013123 5ustar memefreedink-108.4+dfsg/share/freedink/0000755000175000017500000000000012421730246014712 5ustar memefreedink-108.4+dfsg/share/freedink/jump.wav0000644000175000017500000003556412330466347016430 0ustar memeRIFFl;WAVEfmt "VDLISTPINFOINAMJumpIARTSylvain BeuclerICMTLicense: GPLv3+ICRD2008data: <  رof"U<,#@+ ]B2@ *#YO(8*R!C2-X?jN? -$Q52c;oQ4[_A?-&gZ,'{wi| vV +'5)%*yX,u&;!jJ.[]?:)&2,#  LElHqR? G+N( f&r{1R#@D,1#%1+"q%a]cc w ot,#l2w,&@Pu] woC, %\:!4Z<4:$)~Z#}+]"5$x:u1bH2,&5C)SQ=4;#*}&q*s! BY Fvi\]G!+"?]" C@gErSy1,P#{H7`#P;hL3"\+J"y$a ++& >Jrj()\ }V KkdV~\ ') @*GFkIpQ((Q r>6b}3gd I+'<44aZ{#D,$W (da V<v'z) bL}Am8, $X{5t0_B 0+'()? L80GNe8"LQ49&((7 ]|&54k+$f*Y!_;:d`nA%VT;;g ,#Q' +%e.W9?c6e%w+4&n 3w}p\+%U)_ t= ,`$#v "+#\8 #+5"D-\^O@`)'^M4v$^+0#0`sW~zYKV 2*W'@$gzy#3*/!5} >80_Boc_+"fQ, @y3bW%+#fe`QH+#^X9y-^+!#uN2'J=l"*!\-tY(j(ze2<95<#-+$2jL /~n.^e%~) lt,;( /7 (z+%$FlJAiHp )"' \iQ"pj#U]%) D"fr`7!OQ68!m*v!C]4)0"*!y$N36:&,!e*n!@wQTgV*EN-6}G%a) P-3\>hlG D('UT4 WAy+$ cX s!R*_!-U{w \{`T*%MpJBOq #)  "mj#1+#aE~S.JM06 f*R&3p__u'(<|8zcXJ%<)a _aCw^SF%9)b ]c?ta X{&(l`x%`(o',9( #+$~T7_bC[*2"~2:V4N:''}!8N!(/X[+#? &'5s/}''t7P&,@*"q-(fEpG*$y0,yh/f(Q'r LJmB+S[8D&t(CWd136$(( x2yJ=G&$)- |:w~K=F);&m(D 1f5$NV4A~(8' pd'*$xT|JxNm*!U|.],Dz#;\''F%.m.+#B$ayj#&P(*v%jeA1+"n6 2:M C)&U-\V$( ZJ"(zh/ ,*\!EV;ceE*X"vA"N5baE'*"t1l4$OV4*"k+i3#PQ7*S"j9J5^c>*F!q 85s/$(G|KxO )a&h>-en*[#M}F3X^>"$)N kaW 9*%w`(FL2 ) g%BtH-*v$gJw>,VX<%(f|\F pO*!T ?r=mW*##}ca% )%v4$RV7(&5{\w- RQ:&i'5Z>F*&_'1T:E*'&1rRq-QN8 y)%4p8oi/*#cm+;0b$*!U[K%'AUn'FS.D*=$6IVGu [) NwV 6A! p)x%8mmI|) yw7&,H )$y&X $L(;qTuxSJ*!Pq:$,1**$(^ z&}(% S#UY&'M"R #J(5W/vpQ"(h3d_H"(`3^~b#.(|+K#uk@& '4T| 2)D% + SN*"k5k =C&4V) W0~ ^Z9}&'/Sz+*b#V(!HT.f%"(C;=g)#f 7B"Z"(85p*/*o#bIqoP){&&Ua.c5m) 1f9`#*W#z ^HioK-P(% tWV#/;%p'w%@p<"(+LF' (' \O*T) l M) g  ( Il)V#'BI4^0H&&x 7#DL.R (%[4nRywq)"52W9) rJl >&&n}KWAigW)-#g#HQo!D(xU:>$ )!$n&4Rd()112<)5#)c"*' { ft)O! Qvy(0 '#&Mf"&8 ?!){(aaqB0[anX(>!>)OV: '"sZ@*1xM&#Z^b\H%B$U{:BO n&$$.A_#z$ 8H 0$# 5@ E%!#dH%VW: &!?X{y& gE[&uY $|"0$]"'Jv|U&r*$CpV!PS9$o!{xLp% ?T`-)/#!=k}D%q amz96;!?$ %F5H.$g6ery$*E*5! "bu$l0g$7rLT3y`# 'p  i!/"j "F=W#o~s# ?^Sa#tG y PHER#P8 |SN*0#1- ^"iv"!mx1 !2w=A( 7w8`kE!s-us A"\b'n"\K0Tz 6xt !~ U}6!p &^`Bx,Al! X3=$,t,R B! B-:|g:e!)@uuR\eHnt =6gU E x+Y_Azm4fs! =3@Q+ ! SB"l|];WxZ (' "OS=}E[0];%w9eL{ 4%e , Ibs/9rrX !7H+JZfM:H`kIv,krk`UD% @NX<>xk8rUn 6/C& 2 {pYIpom mg T[_D0x1[ J@P/OVbq (}luSgH&/ Xg5t%j%5%%s}-N$orSG 7'%idR_@ Q;Dq]Pyb; 5jYI7zQ8.%n0 KQI,Lo,] SXA q )oG a ~UC n5:zL7eb [XnZqc%hDx /{p( /\g}8 , AEf=  ^$sJ Xj0sWube-E\0fH m9 W/rbEy6x`{+ /E!S CUY`o TLH G` s3,b &S, 6 \Q:Fe I_&K s"#bi VL b['!}-M{s r%/:c Z,i* Z9 &I_]) ^9N<( //DWj[Z%4W~N, )g08 4;  188 ?y+2! 5.8 .8@ (AG ;OOa _]! j nit L~v8? !, 8l f 3e+'3KV Oz Ao xa | =L= /\`' 7{I) I DnV>& $2 K Kb D tE l0  [X $MoN KS w!u X l  )b" w_3 )* b ;2x sn K< 1 ~ `_T$ v q"f DJ :% W ~uGm0 B; 1hF ;`] s9M x;!T  nU \t> R~A- Z &E . hD= W6X  d|K6 RA Y6.x S)0 d& N$vM Qu> _L*zQ u;1| !'/6V 4|6|  8:B!,J)2K'-UW^x`+ i5 /qID u$y~P Z#64 ~;^K99]RSmRx<pQi>)Hb[P[ b"Xj@/3=-Ct u*. Cymzz0T!Z!(` 0MX()\)Q@BZV.%.>*b}F;.<N3#9(W+|6D1ahDUN>>7Ao]S1,_vlM!4>n/Z!f {2V6FtNN&np^`W$YpC!8z];Id_DXl02fAJkH\s!!f|7:q"Q{do4V1v.P+gi8|5 kR\PhVM `"nxZ,iwK~ UW#Yz77oX<V539freedink-108.4+dfsg/share/freedink/stop_data/0000755000175000017500000000000012330466347016677 5ustar memefreedink-108.4+dfsg/share/freedink/stop_data/e00/0000755000175000017500000000000012330466347017263 5ustar memefreedink-108.4+dfsg/share/freedink/stop_data/e00/d00/0000755000175000017500000000000012330466347017646 5ustar memefreedink-108.4+dfsg/share/freedink/stop_data/e00/d00/e0000719.au0000644000175000017500000000621012330466347021161 0ustar memedns.8 DAudacityBlockFile112MЄ=8 ;MЄ=8 =#@:N:-;+<7< AŻd==o;=֭MdBgA=Є=- P*ؼj==ܗS=:;freedink-108.4+dfsg/share/freedink/stop_data/e00/d00/e000068d.au0000644000175000017500000000612012330466347021242 0ustar memedns.8 DAudacityBlockFile112#A=:c<#A=<=$~ freedink-108.4+dfsg/share/freedink/jump.sfxr0000644000175000017500000000015112330466347016575 0ustar memef? >^> >B>>y? $>freedink-108.4+dfsg/share/freedink/Makefile.am0000644000175000017500000000015312330466347016754 0ustar memedist_pkgdata_DATA = LiberationSans-Regular.ttf jump.wav stop.wav EXTRA_DIST = jump.sfxr stop.aup stop_data freedink-108.4+dfsg/share/freedink/Makefile.in0000644000175000017500000012063212421727615016771 0ustar meme# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = share/freedink DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gnulib/m4/00gnulib.m4 \ $(top_srcdir)/gnulib/m4/absolute-header.m4 \ $(top_srcdir)/gnulib/m4/alloca.m4 \ $(top_srcdir)/gnulib/m4/canonicalize.m4 \ $(top_srcdir)/gnulib/m4/chdir-long.m4 \ $(top_srcdir)/gnulib/m4/close.m4 \ $(top_srcdir)/gnulib/m4/closedir.m4 \ $(top_srcdir)/gnulib/m4/d-ino.m4 \ $(top_srcdir)/gnulib/m4/dirent_h.m4 \ $(top_srcdir)/gnulib/m4/dirfd.m4 \ $(top_srcdir)/gnulib/m4/dirname.m4 \ $(top_srcdir)/gnulib/m4/double-slash-root.m4 \ $(top_srcdir)/gnulib/m4/dup.m4 $(top_srcdir)/gnulib/m4/dup2.m4 \ $(top_srcdir)/gnulib/m4/eealloc.m4 \ $(top_srcdir)/gnulib/m4/environ.m4 \ $(top_srcdir)/gnulib/m4/errno_h.m4 \ $(top_srcdir)/gnulib/m4/error.m4 \ $(top_srcdir)/gnulib/m4/exponentd.m4 \ $(top_srcdir)/gnulib/m4/extensions.m4 \ $(top_srcdir)/gnulib/m4/extern-inline.m4 \ $(top_srcdir)/gnulib/m4/fchdir.m4 \ $(top_srcdir)/gnulib/m4/fcntl-o.m4 \ $(top_srcdir)/gnulib/m4/fcntl.m4 \ $(top_srcdir)/gnulib/m4/fcntl_h.m4 \ $(top_srcdir)/gnulib/m4/fdopendir.m4 \ $(top_srcdir)/gnulib/m4/filenamecat.m4 \ $(top_srcdir)/gnulib/m4/float_h.m4 \ $(top_srcdir)/gnulib/m4/fstat.m4 \ $(top_srcdir)/gnulib/m4/fstatat.m4 \ $(top_srcdir)/gnulib/m4/getcwd-abort-bug.m4 \ $(top_srcdir)/gnulib/m4/getcwd-path-max.m4 \ $(top_srcdir)/gnulib/m4/getcwd.m4 \ $(top_srcdir)/gnulib/m4/getdtablesize.m4 \ $(top_srcdir)/gnulib/m4/getopt.m4 \ $(top_srcdir)/gnulib/m4/gettext.m4 \ $(top_srcdir)/gnulib/m4/gettimeofday.m4 \ $(top_srcdir)/gnulib/m4/gnulib-common.m4 \ $(top_srcdir)/gnulib/m4/gnulib-comp.m4 \ $(top_srcdir)/gnulib/m4/iconv.m4 \ $(top_srcdir)/gnulib/m4/include_next.m4 \ $(top_srcdir)/gnulib/m4/intlmacosx.m4 \ $(top_srcdir)/gnulib/m4/intmax_t.m4 \ $(top_srcdir)/gnulib/m4/inttypes_h.m4 \ $(top_srcdir)/gnulib/m4/largefile.m4 \ $(top_srcdir)/gnulib/m4/lib-ld.m4 \ $(top_srcdir)/gnulib/m4/lib-link.m4 \ $(top_srcdir)/gnulib/m4/lib-prefix.m4 \ $(top_srcdir)/gnulib/m4/longlong.m4 \ $(top_srcdir)/gnulib/m4/lstat.m4 \ $(top_srcdir)/gnulib/m4/malloc.m4 \ $(top_srcdir)/gnulib/m4/malloca.m4 \ $(top_srcdir)/gnulib/m4/memchr.m4 \ $(top_srcdir)/gnulib/m4/mempcpy.m4 \ $(top_srcdir)/gnulib/m4/memrchr.m4 \ $(top_srcdir)/gnulib/m4/mmap-anon.m4 \ $(top_srcdir)/gnulib/m4/mode_t.m4 \ $(top_srcdir)/gnulib/m4/msvc-inval.m4 \ $(top_srcdir)/gnulib/m4/msvc-nothrow.m4 \ $(top_srcdir)/gnulib/m4/multiarch.m4 \ $(top_srcdir)/gnulib/m4/nls.m4 \ $(top_srcdir)/gnulib/m4/nocrash.m4 \ $(top_srcdir)/gnulib/m4/off_t.m4 \ $(top_srcdir)/gnulib/m4/open.m4 \ $(top_srcdir)/gnulib/m4/openat.m4 \ $(top_srcdir)/gnulib/m4/opendir.m4 \ $(top_srcdir)/gnulib/m4/pathmax.m4 \ $(top_srcdir)/gnulib/m4/po.m4 \ $(top_srcdir)/gnulib/m4/printf.m4 \ $(top_srcdir)/gnulib/m4/progtest.m4 \ $(top_srcdir)/gnulib/m4/readdir.m4 \ $(top_srcdir)/gnulib/m4/readlink.m4 \ $(top_srcdir)/gnulib/m4/realloc.m4 \ $(top_srcdir)/gnulib/m4/relocatable-lib.m4 \ $(top_srcdir)/gnulib/m4/relocatable.m4 \ $(top_srcdir)/gnulib/m4/rewinddir.m4 \ $(top_srcdir)/gnulib/m4/same.m4 \ $(top_srcdir)/gnulib/m4/save-cwd.m4 \ $(top_srcdir)/gnulib/m4/setenv.m4 \ $(top_srcdir)/gnulib/m4/size_max.m4 \ $(top_srcdir)/gnulib/m4/ssize_t.m4 \ $(top_srcdir)/gnulib/m4/stat.m4 \ $(top_srcdir)/gnulib/m4/stdbool.m4 \ $(top_srcdir)/gnulib/m4/stddef_h.m4 \ $(top_srcdir)/gnulib/m4/stdint.m4 \ $(top_srcdir)/gnulib/m4/stdint_h.m4 \ $(top_srcdir)/gnulib/m4/stdio_h.m4 \ $(top_srcdir)/gnulib/m4/stdlib_h.m4 \ $(top_srcdir)/gnulib/m4/strcase.m4 \ $(top_srcdir)/gnulib/m4/strdup.m4 \ $(top_srcdir)/gnulib/m4/strerror.m4 \ $(top_srcdir)/gnulib/m4/string_h.m4 \ $(top_srcdir)/gnulib/m4/strings_h.m4 \ $(top_srcdir)/gnulib/m4/strndup.m4 \ $(top_srcdir)/gnulib/m4/strnlen.m4 \ $(top_srcdir)/gnulib/m4/sys_socket_h.m4 \ $(top_srcdir)/gnulib/m4/sys_stat_h.m4 \ $(top_srcdir)/gnulib/m4/sys_time_h.m4 \ $(top_srcdir)/gnulib/m4/sys_types_h.m4 \ $(top_srcdir)/gnulib/m4/time_h.m4 \ $(top_srcdir)/gnulib/m4/unistd-safer.m4 \ $(top_srcdir)/gnulib/m4/unistd_h.m4 \ $(top_srcdir)/gnulib/m4/vasnprintf.m4 \ $(top_srcdir)/gnulib/m4/vasprintf.m4 \ $(top_srcdir)/gnulib/m4/warn-on-use.m4 \ $(top_srcdir)/gnulib/m4/wchar_h.m4 \ $(top_srcdir)/gnulib/m4/wchar_t.m4 \ $(top_srcdir)/gnulib/m4/wint_t.m4 \ $(top_srcdir)/gnulib/m4/xalloc.m4 \ $(top_srcdir)/gnulib/m4/xgetcwd.m4 \ $(top_srcdir)/gnulib/m4/xsize.m4 \ $(top_srcdir)/gnulib/m4/xstrndup.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CHECK_CFLAGS = @CHECK_CFLAGS@ CHECK_LIBS = @CHECK_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FLOAT_H = @FLOAT_H@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETOPT_H = @GETOPT_H@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FCNTL = @GNULIB_FCNTL@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFS = @GNULIB_FFS@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBRLEN = @GNULIB_MBRLEN@ GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSINIT = @GNULIB_MBSINIT@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_OPEN = @GNULIB_OPEN@ GNULIB_OPENAT = @GNULIB_OPENAT@ GNULIB_OPENDIR = @GNULIB_OPENDIR@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READDIR = @GNULIB_READDIR@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCPCPY = @GNULIB_WCPCPY@ GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ GNULIB_WCSCAT = @GNULIB_WCSCAT@ GNULIB_WCSCHR = @GNULIB_WCSCHR@ GNULIB_WCSCMP = @GNULIB_WCSCMP@ GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ GNULIB_WCSCPY = @GNULIB_WCSCPY@ GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ GNULIB_WCSDUP = @GNULIB_WCSDUP@ GNULIB_WCSLEN = @GNULIB_WCSLEN@ GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ GNULIB_WCSSPN = @GNULIB_WCSSPN@ GNULIB_WCSSTR = @GNULIB_WCSSTR@ GNULIB_WCSTOK = @GNULIB_WCSTOK@ GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ GNULIB_WCTOB = @GNULIB_WCTOB@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ GNULIB_WMEMSET = @GNULIB_WMEMSET@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DIRENT_H = @HAVE_DIRENT_H@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFS = @HAVE_FFS@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OPENDIR = @HAVE_OPENDIR@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READDIR = @HAVE_READDIR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASECMP = @HAVE_STRCASECMP@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRINGS_H = @HAVE_STRINGS_H@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE__BOOL = @HAVE__BOOL@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM_ENV = @INSTALL_PROGRAM_ENV@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBZIP_CFLAGS = @LIBZIP_CFLAGS@ LIBZIP_LIBS = @LIBZIP_LIBS@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRINGS_H = @NEXT_STRINGS_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ RELOCATABLE = @RELOCATABLE@ RELOCATABLE_BUILD_DIR = @RELOCATABLE_BUILD_DIR@ RELOCATABLE_CONFIG_H_DIR = @RELOCATABLE_CONFIG_H_DIR@ RELOCATABLE_LDFLAGS = @RELOCATABLE_LDFLAGS@ RELOCATABLE_LIBRARY_PATH = @RELOCATABLE_LIBRARY_PATH@ RELOCATABLE_SRC_DIR = @RELOCATABLE_SRC_DIR@ RELOCATABLE_STRIP = @RELOCATABLE_STRIP@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ REPLACE_DIRFD = @REPLACE_DIRFD@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_OPENDIR = @REPLACE_OPENDIR@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WRITE = @REPLACE_WRITE@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDBOOL_H = @STDBOOL_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ UPX = @UPX@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDRES = @WINDRES@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZIP = @ZIP@ ZZIPLIB_CFLAGS = @ZZIPLIB_CFLAGS@ ZZIPLIB_LIBS = @ZZIPLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ dist_pkgdata_DATA = LiberationSans-Regular.ttf jump.wav stop.wav EXTRA_DIST = jump.sfxr stop.aup stop_data all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits share/freedink/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits share/freedink/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_pkgdataDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: freedink-108.4+dfsg/share/freedink/stop.wav0000644000175000017500000000107612330466347016431 0ustar memeRIFF6WAVEfmt "VDLISTPINFOINAMStopIARTSylvain BeuclerICMTLicense: GPLv3+ICRD2008dataU=gOQ+uX st<J Kfreedink-108.4+dfsg/share/freedink/LiberationSans-Regular.ttf0000644000175000017500000000012213041206044021731 0ustar memeThis file is a stub. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=851110 freedink-108.4+dfsg/share/applications/0000755000175000017500000000000012421730246015611 5ustar memefreedink-108.4+dfsg/share/applications/freedinkedit.desktop0000644000175000017500000000030212341573776021652 0ustar meme[Desktop Entry] Version=1.0 Type=Application Name=FreeDinkedit Comment=Editor for the Dink Smallwood adventure & role-playing game Exec=freedinkedit Icon=freedink Categories=Game;AdventureGame; freedink-108.4+dfsg/share/applications/freedink.desktop0000644000175000017500000000025612341573776021014 0ustar meme[Desktop Entry] Version=1.0 Type=Application Name=FreeDink Comment=Humorous top-down adventure & role-playing game Exec=freedink Icon=freedink Categories=Game;AdventureGame; freedink-108.4+dfsg/share/pixmaps/0000755000175000017500000000000012421730246014604 5ustar memefreedink-108.4+dfsg/share/pixmaps/freedink.png0000644000175000017500000000115112330466347017106 0ustar memePNG  IHDR szz pHYs  tIME  3pQzIDATXíVm0x?UM53 Tx(ofnA(s @DO|aUQ@hVfk;qcNN2~d% y.rT`&#wQ6EDxR6%lrgiYE.yuwu݋J)/44ݮ&&*၏':,GT\_jjfqyRW21*Xx%>E߈z̛r%ܭgEɿYg0R)w.RJҍ4;].og :<On "H8=bo"0iɺDQ IENDB`freedink-108.4+dfsg/share/Makefile.am0000644000175000017500000000202212341573776015171 0ustar memeSUBDIRS = freedink EXTRA_DIST = pixmaps/freedink.png applications/freedink.desktop \ applications/freedinkedit.desktop README README.fonts \ appdata/freedink.appdata.xml # freedesktop.org menu entry install-data-local: $(mkdir_p) "$(DESTDIR)$(datarootdir)/pixmaps" $(mkdir_p) "$(DESTDIR)$(datarootdir)/applications" $(mkdir_p) "$(DESTDIR)$(datarootdir)/appdata" $(INSTALL_DATA) "$(srcdir)/pixmaps/freedink.png" "$(DESTDIR)$(datarootdir)/pixmaps/" $(INSTALL_DATA) "$(srcdir)/applications/freedink.desktop" "$(DESTDIR)$(datarootdir)/applications/" $(INSTALL_DATA) "$(srcdir)/applications/freedinkedit.desktop" "$(DESTDIR)$(datarootdir)/applications/" $(INSTALL_DATA) "$(srcdir)/appdata/freedink.appdata.xml" "$(DESTDIR)$(datarootdir)/appdata/freedink.appdata.xml" uninstall-local: rm -f "$(DESTDIR)$(datarootdir)/pixmaps/freedink.png" rm -f "$(DESTDIR)$(datarootdir)/applications/freedink.desktop" rm -f "$(DESTDIR)$(datarootdir)/applications/freedinkedit.desktop" rm -f "$(DESTDIR)$(datarootdir)/appdata/freedink.appdata.xml" freedink-108.4+dfsg/share/Makefile.in0000644000175000017500000013415112421727615015203 0ustar meme# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = share DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gnulib/m4/00gnulib.m4 \ $(top_srcdir)/gnulib/m4/absolute-header.m4 \ $(top_srcdir)/gnulib/m4/alloca.m4 \ $(top_srcdir)/gnulib/m4/canonicalize.m4 \ $(top_srcdir)/gnulib/m4/chdir-long.m4 \ $(top_srcdir)/gnulib/m4/close.m4 \ $(top_srcdir)/gnulib/m4/closedir.m4 \ $(top_srcdir)/gnulib/m4/d-ino.m4 \ $(top_srcdir)/gnulib/m4/dirent_h.m4 \ $(top_srcdir)/gnulib/m4/dirfd.m4 \ $(top_srcdir)/gnulib/m4/dirname.m4 \ $(top_srcdir)/gnulib/m4/double-slash-root.m4 \ $(top_srcdir)/gnulib/m4/dup.m4 $(top_srcdir)/gnulib/m4/dup2.m4 \ $(top_srcdir)/gnulib/m4/eealloc.m4 \ $(top_srcdir)/gnulib/m4/environ.m4 \ $(top_srcdir)/gnulib/m4/errno_h.m4 \ $(top_srcdir)/gnulib/m4/error.m4 \ $(top_srcdir)/gnulib/m4/exponentd.m4 \ $(top_srcdir)/gnulib/m4/extensions.m4 \ $(top_srcdir)/gnulib/m4/extern-inline.m4 \ $(top_srcdir)/gnulib/m4/fchdir.m4 \ $(top_srcdir)/gnulib/m4/fcntl-o.m4 \ $(top_srcdir)/gnulib/m4/fcntl.m4 \ $(top_srcdir)/gnulib/m4/fcntl_h.m4 \ $(top_srcdir)/gnulib/m4/fdopendir.m4 \ $(top_srcdir)/gnulib/m4/filenamecat.m4 \ $(top_srcdir)/gnulib/m4/float_h.m4 \ $(top_srcdir)/gnulib/m4/fstat.m4 \ $(top_srcdir)/gnulib/m4/fstatat.m4 \ $(top_srcdir)/gnulib/m4/getcwd-abort-bug.m4 \ $(top_srcdir)/gnulib/m4/getcwd-path-max.m4 \ $(top_srcdir)/gnulib/m4/getcwd.m4 \ $(top_srcdir)/gnulib/m4/getdtablesize.m4 \ $(top_srcdir)/gnulib/m4/getopt.m4 \ $(top_srcdir)/gnulib/m4/gettext.m4 \ $(top_srcdir)/gnulib/m4/gettimeofday.m4 \ $(top_srcdir)/gnulib/m4/gnulib-common.m4 \ $(top_srcdir)/gnulib/m4/gnulib-comp.m4 \ $(top_srcdir)/gnulib/m4/iconv.m4 \ $(top_srcdir)/gnulib/m4/include_next.m4 \ $(top_srcdir)/gnulib/m4/intlmacosx.m4 \ $(top_srcdir)/gnulib/m4/intmax_t.m4 \ $(top_srcdir)/gnulib/m4/inttypes_h.m4 \ $(top_srcdir)/gnulib/m4/largefile.m4 \ $(top_srcdir)/gnulib/m4/lib-ld.m4 \ $(top_srcdir)/gnulib/m4/lib-link.m4 \ $(top_srcdir)/gnulib/m4/lib-prefix.m4 \ $(top_srcdir)/gnulib/m4/longlong.m4 \ $(top_srcdir)/gnulib/m4/lstat.m4 \ $(top_srcdir)/gnulib/m4/malloc.m4 \ $(top_srcdir)/gnulib/m4/malloca.m4 \ $(top_srcdir)/gnulib/m4/memchr.m4 \ $(top_srcdir)/gnulib/m4/mempcpy.m4 \ $(top_srcdir)/gnulib/m4/memrchr.m4 \ $(top_srcdir)/gnulib/m4/mmap-anon.m4 \ $(top_srcdir)/gnulib/m4/mode_t.m4 \ $(top_srcdir)/gnulib/m4/msvc-inval.m4 \ $(top_srcdir)/gnulib/m4/msvc-nothrow.m4 \ $(top_srcdir)/gnulib/m4/multiarch.m4 \ $(top_srcdir)/gnulib/m4/nls.m4 \ $(top_srcdir)/gnulib/m4/nocrash.m4 \ $(top_srcdir)/gnulib/m4/off_t.m4 \ $(top_srcdir)/gnulib/m4/open.m4 \ $(top_srcdir)/gnulib/m4/openat.m4 \ $(top_srcdir)/gnulib/m4/opendir.m4 \ $(top_srcdir)/gnulib/m4/pathmax.m4 \ $(top_srcdir)/gnulib/m4/po.m4 \ $(top_srcdir)/gnulib/m4/printf.m4 \ $(top_srcdir)/gnulib/m4/progtest.m4 \ $(top_srcdir)/gnulib/m4/readdir.m4 \ $(top_srcdir)/gnulib/m4/readlink.m4 \ $(top_srcdir)/gnulib/m4/realloc.m4 \ $(top_srcdir)/gnulib/m4/relocatable-lib.m4 \ $(top_srcdir)/gnulib/m4/relocatable.m4 \ $(top_srcdir)/gnulib/m4/rewinddir.m4 \ $(top_srcdir)/gnulib/m4/same.m4 \ $(top_srcdir)/gnulib/m4/save-cwd.m4 \ $(top_srcdir)/gnulib/m4/setenv.m4 \ $(top_srcdir)/gnulib/m4/size_max.m4 \ $(top_srcdir)/gnulib/m4/ssize_t.m4 \ $(top_srcdir)/gnulib/m4/stat.m4 \ $(top_srcdir)/gnulib/m4/stdbool.m4 \ $(top_srcdir)/gnulib/m4/stddef_h.m4 \ $(top_srcdir)/gnulib/m4/stdint.m4 \ $(top_srcdir)/gnulib/m4/stdint_h.m4 \ $(top_srcdir)/gnulib/m4/stdio_h.m4 \ $(top_srcdir)/gnulib/m4/stdlib_h.m4 \ $(top_srcdir)/gnulib/m4/strcase.m4 \ $(top_srcdir)/gnulib/m4/strdup.m4 \ $(top_srcdir)/gnulib/m4/strerror.m4 \ $(top_srcdir)/gnulib/m4/string_h.m4 \ $(top_srcdir)/gnulib/m4/strings_h.m4 \ $(top_srcdir)/gnulib/m4/strndup.m4 \ $(top_srcdir)/gnulib/m4/strnlen.m4 \ $(top_srcdir)/gnulib/m4/sys_socket_h.m4 \ $(top_srcdir)/gnulib/m4/sys_stat_h.m4 \ $(top_srcdir)/gnulib/m4/sys_time_h.m4 \ $(top_srcdir)/gnulib/m4/sys_types_h.m4 \ $(top_srcdir)/gnulib/m4/time_h.m4 \ $(top_srcdir)/gnulib/m4/unistd-safer.m4 \ $(top_srcdir)/gnulib/m4/unistd_h.m4 \ $(top_srcdir)/gnulib/m4/vasnprintf.m4 \ $(top_srcdir)/gnulib/m4/vasprintf.m4 \ $(top_srcdir)/gnulib/m4/warn-on-use.m4 \ $(top_srcdir)/gnulib/m4/wchar_h.m4 \ $(top_srcdir)/gnulib/m4/wchar_t.m4 \ $(top_srcdir)/gnulib/m4/wint_t.m4 \ $(top_srcdir)/gnulib/m4/xalloc.m4 \ $(top_srcdir)/gnulib/m4/xgetcwd.m4 \ $(top_srcdir)/gnulib/m4/xsize.m4 \ $(top_srcdir)/gnulib/m4/xstrndup.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CHECK_CFLAGS = @CHECK_CFLAGS@ CHECK_LIBS = @CHECK_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FLOAT_H = @FLOAT_H@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETOPT_H = @GETOPT_H@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FCNTL = @GNULIB_FCNTL@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFS = @GNULIB_FFS@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBRLEN = @GNULIB_MBRLEN@ GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSINIT = @GNULIB_MBSINIT@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_OPEN = @GNULIB_OPEN@ GNULIB_OPENAT = @GNULIB_OPENAT@ GNULIB_OPENDIR = @GNULIB_OPENDIR@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READDIR = @GNULIB_READDIR@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCPCPY = @GNULIB_WCPCPY@ GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ GNULIB_WCSCAT = @GNULIB_WCSCAT@ GNULIB_WCSCHR = @GNULIB_WCSCHR@ GNULIB_WCSCMP = @GNULIB_WCSCMP@ GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ GNULIB_WCSCPY = @GNULIB_WCSCPY@ GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ GNULIB_WCSDUP = @GNULIB_WCSDUP@ GNULIB_WCSLEN = @GNULIB_WCSLEN@ GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ GNULIB_WCSSPN = @GNULIB_WCSSPN@ GNULIB_WCSSTR = @GNULIB_WCSSTR@ GNULIB_WCSTOK = @GNULIB_WCSTOK@ GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ GNULIB_WCTOB = @GNULIB_WCTOB@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ GNULIB_WMEMSET = @GNULIB_WMEMSET@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DIRENT_H = @HAVE_DIRENT_H@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFS = @HAVE_FFS@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OPENDIR = @HAVE_OPENDIR@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READDIR = @HAVE_READDIR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASECMP = @HAVE_STRCASECMP@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRINGS_H = @HAVE_STRINGS_H@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE__BOOL = @HAVE__BOOL@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM_ENV = @INSTALL_PROGRAM_ENV@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBZIP_CFLAGS = @LIBZIP_CFLAGS@ LIBZIP_LIBS = @LIBZIP_LIBS@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRINGS_H = @NEXT_STRINGS_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ RELOCATABLE = @RELOCATABLE@ RELOCATABLE_BUILD_DIR = @RELOCATABLE_BUILD_DIR@ RELOCATABLE_CONFIG_H_DIR = @RELOCATABLE_CONFIG_H_DIR@ RELOCATABLE_LDFLAGS = @RELOCATABLE_LDFLAGS@ RELOCATABLE_LIBRARY_PATH = @RELOCATABLE_LIBRARY_PATH@ RELOCATABLE_SRC_DIR = @RELOCATABLE_SRC_DIR@ RELOCATABLE_STRIP = @RELOCATABLE_STRIP@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ REPLACE_DIRFD = @REPLACE_DIRFD@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_OPENDIR = @REPLACE_OPENDIR@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WRITE = @REPLACE_WRITE@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDBOOL_H = @STDBOOL_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ UPX = @UPX@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDRES = @WINDRES@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZIP = @ZIP@ ZZIPLIB_CFLAGS = @ZZIPLIB_CFLAGS@ ZZIPLIB_LIBS = @ZZIPLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = freedink EXTRA_DIST = pixmaps/freedink.png applications/freedink.desktop \ applications/freedinkedit.desktop README README.fonts \ appdata/freedink.appdata.xml all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits share/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits share/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-local .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-local \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-local # freedesktop.org menu entry install-data-local: $(mkdir_p) "$(DESTDIR)$(datarootdir)/pixmaps" $(mkdir_p) "$(DESTDIR)$(datarootdir)/applications" $(mkdir_p) "$(DESTDIR)$(datarootdir)/appdata" $(INSTALL_DATA) "$(srcdir)/pixmaps/freedink.png" "$(DESTDIR)$(datarootdir)/pixmaps/" $(INSTALL_DATA) "$(srcdir)/applications/freedink.desktop" "$(DESTDIR)$(datarootdir)/applications/" $(INSTALL_DATA) "$(srcdir)/applications/freedinkedit.desktop" "$(DESTDIR)$(datarootdir)/applications/" $(INSTALL_DATA) "$(srcdir)/appdata/freedink.appdata.xml" "$(DESTDIR)$(datarootdir)/appdata/freedink.appdata.xml" uninstall-local: rm -f "$(DESTDIR)$(datarootdir)/pixmaps/freedink.png" rm -f "$(DESTDIR)$(datarootdir)/applications/freedink.desktop" rm -f "$(DESTDIR)$(datarootdir)/applications/freedinkedit.desktop" rm -f "$(DESTDIR)$(datarootdir)/appdata/freedink.appdata.xml" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: freedink-108.4+dfsg/share/README0000644000175000017500000000534412330466347014020 0ustar memefreedink.ico ============ (and hence freedink_xpm.c, freedink.png) From the original Dink source package, see src/freedink_xpm.c jump.wav, stop.wav ================== The original sounds (see below) had unclear origin. I replaced them. jump.wav: generated using sfxr (http://www.cyd.liu.se/~tompe573/hp/project_sfxr.html). The parameters are stored in jump.sfxr. stop.wav: generated using Audacity and various try&test. As far as I remember I started with a generated drum, reversed it to have 'bumps' at the beginning and the end of the sound, then increased frequency quite a lot, and eventually lowered the volume. The last state of the Audacity project is in stop.aup. Legal info: Copyright (C) 2008 Sylvain Beucler This file is part of GNU FreeDink GNU FreeDink 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 3 of the License, or (at your option) any later version. GNU FreeDink 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, see . Extracting wav resources from dinkedit.exe ========================================== Dinkedit embedded sound resources in the v1.06 executable. The resources were forgotten in v1.07, so if you noticed that sound and application icon were missing, that's the reason :) To extract and study them, I went the manual way. You need to get the position and length of the data using a PE/COFF (aka .exe) analyser: http://www.mikekohn.net/file_formats/anal_pe.php $ ./anal_pe dinkedit106.exe or http://code.google.com/p/pefile/wiki/UsageExamples $ python >>> import pefile >>> pe = pefile.PE('dinkedit106.exe') >>> print pe.dump_info() First, all data offsets are base memory offsets, not file offsets. You can get the link between the two in the section header: .rsrc VirtualAddress = 0x3B9000 = 3907584 (memory) PointerToRawData = 0x1C800 = 120320 (file) Then you can compute the file offset: Resource OffsetToData = 3908016 (memory) => (3908016 - 3907584) + 120320 (file) Size: 3356 Resource OffsetToData = 3911372 (memory) => (3911372 - 3907584) + 120320 (file) Size: 9196 (alternatively you can look for 'RIFF' in the file using hexedit :)) Now you can extract your data: dd if=dinkedit106.exe of=stop-orig.wav bs=1 skip=120752 count=3356 dd if=dinkedit106.exe of=jump.wav bs=1 skip=124108 count=9196 stop-orig.wav has to be re-written using Audacity to make it compatible with SDL_Mixer. freedink-108.4+dfsg/share/appdata/0000755000175000017500000000000012421730246014535 5ustar memefreedink-108.4+dfsg/share/appdata/freedink.appdata.xml0000644000175000017500000000257712341573776020510 0ustar meme freedink.desktop CC0-1.0 GPL-3.0+ GNU FreeDink Humorous top-down adventure & role-playing game

Dink Smallwood is an adventure/role-playing game, similar to Zelda, made by RTsoft. Besides twisted humour, it includes the actual game editor, allowing players to create hundreds of new adventures called Dink Modules or D-Mods for short.

GNU FreeDink is a new and portable version of the game engine, which runs the original game as well as its D-Mods, with close compatibility, under multiple platforms.

http://www.gnu.org/software/freedink/screenshots/freedink-appdata1.png http://www.gnu.org/software/freedink/screenshots/freedink-appdata2.png http://www.gnu.org/software/freedink/screenshots/dfarc-appdata1.png http://www.gnu.org/software/freedink/ bug-freedink@gnu.org GNU
freedink-108.4+dfsg/share/README.fonts0000644000175000017500000001055312330466347015146 0ustar memeFont LiberationSans-Regular.ttf originally from: https://www.redhat.com/promo/fonts/ https://fedorahosted.org/liberation-fonts/ https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-1.04.93.devel.tar.gz It is released under the GNU GPL + some unusual exceptions, which makes the license incompatible with the vanilla GNU GPL itself. However, it is still legal to use this font in a GNU GPL'd application [gnu.org #342619]. ===== LICENSE AGREEMENT AND LIMITED PRODUCT WARRANTY LIBERATION FONT SOFTWARE This agreement governs the use of the Software and any updates to the Software, regardless of the delivery mechanism. Subject to the following terms, Red Hat, Inc. ("Red Hat") grants to the user ("Client") a license to this work pursuant to the GNU General Public License v.2 with the exceptions set forth below and such other terms as are set forth in this End User License Agreement. 1. The Software and License Exception. LIBERATION font software (the "Software") consists of TrueType-OpenType formatted font software for rendering LIBERATION typefaces in sans-serif, serif, and monospaced character styles. You are licensed to use, modify, copy, and distribute the Software pursuant to the GNU General Public License v.2 with the following exceptions: (a) As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. (b) As a further exception, any distribution of the object code of the Software in a physical product must provide you the right to access and modify the source code for the Software and to reinstall that modified version of the Software in object code form on the same physical product on which you received it. 2. Intellectual Property Rights. The Software and each of its components, including the source code, documentation, appearance, structure and organization are owned by Red Hat and others and are protected under copyright and other laws. Title to the Software and any component, or to any copy, modification, or merged portion shall remain with the aforementioned, subject to the applicable license. The "LIBERATION" trademark is a trademark of Red Hat, Inc. in the U.S. and other countries. This agreement does not permit Client to distribute modified versions of the Software using Red Hat's trademarks. If Client makes a redistribution of a modified version of the Software, then Client must modify the files names to remove any reference to the Red Hat trademarks and must not use the Red Hat trademarks in any way to reference or promote the modified Software. 3. Limited Warranty. To the maximum extent permitted under applicable law, the Software is provided and licensed "as is" without warranty of any kind, expressed or implied, including the implied warranties of merchantability, non-infringement or fitness for a particular purpose. Red Hat does not warrant that the functions contained in the Software will meet Client's requirements or that the operation of the Software will be entirely error free or appear precisely as described in the accompanying documentation. 4. Limitation of Remedies and Liability. To the maximum extent permitted by applicable law, Red Hat or any Red Hat authorized dealer will not be liable to Client for any incidental or consequential damages, including lost profits or lost savings arising out of the use or inability to use the Software, even if Red Hat or such dealer has been advised of the possibility of such damages. 5. General. If any provision of this agreement is held to be unenforceable, that shall not affect the enforceability of the remaining provisions. This agreement shall be governed by the laws of the State of North Carolina and of the United States, without regard to any conflict of laws provisions, except that the United Nations Convention on the International Sale of Goods shall not apply. Copyright © 2007 Red Hat, Inc. All rights reserved. LIBERATION is a trademark of Red Hat, Inc. freedink-108.4+dfsg/TRANSLATIONS.txt0000644000175000017500000000323112330466347014511 0ustar memeTranslate FreeDink in your own language! ======================================== For those who don't like the command line ----------------------------------------- Poedit (PO editor) is a nice graphical editor that can create new .po files and synchronize them with the FreeDink source code. Check it out! http://www.poedit.net/ You can get the latest translation template from the Translation Project at: http://translationproject.org/domain/freedink.html Alternatively, to generate the translation template manually:: ./configure cd po/ make freedink.pot You then can create a new language using: 'File' -> 'New catalog from a POT file'. To synchronize your translation with a new version of the source code, you need to add the location of FreeDink in the catalog configuration ('Catalog' -> 'Configuration' menu and 'Paths' tab). Then you can use 'Catalog' -> 'Update from sources'. The following sections describe the standard and developer way to add and update translations, but requires command line tools. To translate FreeDink in a new language --------------------------------------- First, determine your language code (see http://www.gnu.org/software/gettext/manual/html_node/Language-Codes.html). Add it at the end of the po/LINGUAS file. You then can use ``msginit`` to create a new .po file (replace XX with your language code):: cd po/ msginit --locale XX To update your translation -------------------------- First, synchronize the .po files with the source code (this preserves your previous translations):: ./configure cd po/ make update-po You now can edit them file using your favorite PO editor (I recommend Emacs's PO-mode). freedink-108.4+dfsg/INSTALL0000644000175000017500000003660011777117217013071 0ustar memeInstallation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. freedink-108.4+dfsg/COPYING0000644000175000017500000010451312330466347013067 0ustar meme GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 of the License, 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . freedink-108.4+dfsg/psp/0000755000175000017500000000000012330466347012632 5ustar memefreedink-108.4+dfsg/psp/README0000644000175000017500000000151212330466347013511 0ustar memefreedink.png, icon1.xcf (icon1.png), splash.png ----------------------------------------------- Copyright (C) 2009 Sylvain Beucler Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson This file is part of GNU FreeDink GNU FreeDink 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 3 of the License, or (at your option) any later version. GNU FreeDink 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, see . freedink-108.4+dfsg/psp/icon1.xcf0000644000175000017500000224241012330466347014352 0ustar memegimp xcf file6BBO gimp-commentCreated with GIMPgimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 32.000000) (yspacing 32.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) rFt-oABDuck     :{ABABaiyZ8Z6ZZZZ4Z[ZZ5ZXaZ6Z`[`8slu~Z7g|z6Km֋3z¾=1ůvѣro2ͭqnf0gn{QD/irgdosu//kpqgcl^ 0[jlwuJ71kjcqi`J2kcVaX\aA.+b6m6Vru6ksA`7x}y8R]nos:Zn \86sm\4i 5DkU6^agǜ8vuf17|cScg6b_PqG3܅iG1ࢅߦro2ơt̄x0w}¶SH/zwtsǬu0/kg]iڠ_0lzx°K71{|lt~sZR2{ta^eVYTGGZ6>Bab6)KgK_T^g6:V*UV3R7BFRS?B8ZSBFB:RJNR \86ZUH4R 5<{w> &@;fN TfNQuc/"d [}"dа bGаw6 FCum  u  tE Jt c;(V N'LEۿq8'L 7# g;;g; ;\&M<<I=&;X ޥ ')@ x Jzd x0  d a @!2c c ЭM kP ‹} > nzE$I#$ <{ E To,EU\2Q[}:Ma+bR<)9m  -ub pE 1p4 i? p$c;(VU &d#Eۿ&O<a9%5i= =7  _ cP+< o 3xŽ@f _ [m  2o!Qvp #$lJBM Z] ) -z[<Y9-QW:KGQ!aG+T ht*56?s7u@B @f= J8,l>¯*-  0  *񘙘?2򑒑 ,.?    &   #  ) #      +  򵴵  ' #    >  򧦧"*  (61??!?'           *   8 )   򼽼 򼻼    = -    6)4󧦦 +#ء  %8%  蘙   4?  (& -?:.> ?"?   5  .  >?? 񹸹그A   :   ?!?  /*4+𛜜 5?  5    ( ?  ?" ?6>   =7:  ?> 𷸷>?   ? "$  > 8+ 6 ! 㚛 ) ? 2  & # ?   =0@? '  ? @﾿ ? "1򸹹𷸷?5  򱰱> " 3 8$   ?? :&   * 8  ?    (  )  %$    4     "     ?4     :.-   ? -,,        3      "     )9 !   ?  . :!- 򕖖>.(􏐐  #  ?     #           2     "    !#  뫪 %!)񤣤  . " /"  &%    : $? '6?   ?? ?8? %%?  ?6񬭭𬭭 ? $: 祦9:?  3)  * - 4 ?" ??7< >-@ ?>  ? + 񴳳  >>   ?? 7?  򞟞> 4   = -     /  &"?  65? & .? =  ? @:(󴳴 ? ?? ? 𦥦@*? 򞟞 0     0 !? (         򟠟       󗖖          򏐏&  4? #~~~~;~}|}}|}}|}}|}}|}}|}||}|}|}}|}}|}}||}|}|}}|{||{|{{||{||{|{|{||{{||{{|{|{|| {|{{|{{zz{z{{zz{z{{z{zz{z{zz{z z{z{zz,yxyy7xwxx?wvuvvuvvuvvuuvuvvuvvuvuvvuvuvuvvuuvuutuuttututtutuutuututtututtutuuttuttuttuttuttsttstststtsttsttsstssts stssrsr;rqrqqrq#q?pono onoonnoononono onoonmnnmmnnmnnmnnmnmnnmnmmnmmnnmnnmnmmnnmnnmnnmmnmnmmnmmlmlmmlmllmlmlmlmllmllml lmll?kjkjjkjjkjjkjj>ihghhghhghghg hg hgfggfggfgfggffgfgffgffggfgffgfgfgfggfgfggfeffefefefe efeefefeededded5dcdccdc cdc#cbcb.ba`aa`a`a a`aa`a`aa``_``_`_`_`_``_`_`_`_`__``_``_`__``_``_``^_^__^_^^_^^__^^_^_^__^__^_^__^_^__^^__^^__^_^^]]^]^1]\]\\]\]\\]\]\\]\\[\[%["ZYZYZZYXYYXYYXYYXYYXYYXYXYYXXYXYYXYXYYXYXYXXWXXWXXWWXWXWWXWXWXXWXWWXXWXXWXWWXWXWWXWXV VW VW$VUVUV%UVU UTUT-T SRSSRSSRSRSSRSRSSRSQRQRRQRRQQRRQRQRRQRRQRQRQRQRQRRQRRQRRQQPQQPQQPQQPQPQQPQQPPQPQQPQPQPQQPPQPQQOOPO OP.ONONOONONNONNONNONONNON NMNM"MLKLLKLLKLLKLLK LKLLKJKJ KJKJJKKJKKJKJKJKKJKKJJIJIJJIJJIJJIJIJJIJIIJIJIJJIIJIIJIIJIIJHIIHHI:HGHGGHGGHGHGGHGGHGGHGHGGF FG#FGFFEDEDEEDEEDEEDEEDDCDCDDCDCDDCDDCDCDDCDDCDDCDDCDDCD' ! >/9  ? ~~~>~}|}}|}|}|}|}}|}|}}|}|}}|}|}||}}|}}|}||{|{|{|{{||{|{||{{||{|{|{{|{|zz{z{{z{zz{zz{zz{z{zz{z{zz{zz{y>y xyxyx xyxxwxx?wvuvuvvuvvuvuvuuvvuvvuvuvuvvuuvuuvuvvuvvuvuvuvuutuututtuttututtututuutuututuuttuuttuutututtuttusttstssttsttssttsstsstsstststss=rqrqqrq-q?ponoonoonoononoonoonoon ononnonnmnmnmnmnmnmnnmnmnnmnmnmnnmmnmmnllmllmlmlmmlmllmllmllmmlmllmllml lmll:kjkkjkjjkjjkjjkj)jiji8i hghhghhg hghhghhghhghggfggfggfgfgfgfggfgfggffgfgfgfggffgfggefeffeffeefefeffefeefeeffeefeefefe efee ded.dcdccdcc@b`a`aa`a a`a`aa`aa`aa`aa`aa`aa``a`aa`_`_``_``_``_`_``_``_``__``_`_`_``_`^_^__^_^_^^_^_^_^^__^^_^^]^^];]\]\ \]\ \]\\2[\[ [ZYZZYZZYYZZYZZYZ ZYZZYZZYXYYXYXYXYYXYXYXYXYXXYYXXYYXWXWXXWXWXXWXWXWWXWWXXWXWXXWXWXXWXWXXWXX VWVVW*V UVUUVUUVUUVUU TUTTUTTSRSSRSSRSSRSSRSSRSRSSRSSRQRRQRRQRRQRQRRQRRQRRQRQQRRQRQPQPPQQPQQPQPQPPQQPQPQPPQPQQPPQQPQPQQPPOP:ONONOONONNONNONNONNONONNONNON NMNM4M LKLLKLLKLLKLLKLLKLJKKJKJKJKKJKKJKJKKJKJKKJKJKJJIJJIJIJJI JIJIJIIJIJIJJIJJIJII HI1HGHGGHGGHG GHGGHGGHGGHG GFGGFFGFFGF%FEDE EDEEDEEDEEDC DCDDCDCDDCDCDDCDCDDCDCDC& 8񊋊 22? ? !~?~}|} }|}}|}}|}}|}}|}||}}|}||}}|}|{|{{|{|{{|{{||{|{{|{|{||{||{{|{{|{{|{{|{z{z{z{zz{z z{z{zzr8qpqq?pono on onoononononoonmnnmnmnmnnmnnmnmmnnmmnnmnnmnnmnmnnmnmmnmmnmmnnmmlmmlmlmmlmllmlmlmllmllmllmmlmlmllmll=kjkjkjjkjjijiijiiji ihghghhghhgh hgfgfggfggfgfggfggfgfgffgfgfggfgfeffeffeffefefeefeefefefeef efeede6dcdccdccdccdcc?ba`a a`aa`a`aa`a`_``_`_``_``_`_`_`_``_``_`__`__`__`__^_^__^_^_^^_^_^_^__^^]^*]\]\]\]\\]\\]\\]\\>[ZYZZYZYZZYZZYZZYZZYZYYXYXXYXYYXYXYXYYXYYXYXYYXYXY YXYXWXXWXWXXWXWXWXWXWWXWXWWXWWXWWXWWXWWVWVVWV2VUVUVUUVUUVVUVUUVUUVVUUVUUTUTTUTTUT TUT TUTTUTTSRSSRSRSS RQRRQRRQRRQRRQRRQ RQRRQRRQRRQPQPQQPQQPQQPQPQQPQQPQPQPQPPQPQPQQPOPPOOP*ONONNONNONONON+NMNMMN.MLKLKLKLLKLLKLLKLLK KJKJKJKJKJJKKJKKJKKJJKJKKJKKJJKJJIJJIJJIJJIJIIJIJIIJIJIJJIJJIJIJIIJIJH>HGHGHGGHGGHGGHGHHGGHGGHHGGHGGHGFGFFGFFGF3FEDEEDEEDEEDEDDEDDCDC DCDDCDCDDCDDCDCDCCDCDDCD󋌋   $ ~~~ ~~~~~} ~}~}~}}~~}}~}~~}~}~|}|}}|}||}|}|}||}| |}|}||}||{|{{|{|{|{{|{ {|{{|{{|{{|{{|{ {z{zz{z&zyxyyxyyxyyxyxwxxwx xwxwxwxwwxxwxxwxwxx0wvwvwvvuvuvuvuvuuvuvuuvuuvu ututtutuuttututtutstsststsststsstssrqrrqrrqrrqrrqrr qpqqpqqpqqpqqpqqpqpqqpqpqpqqpopoppopopooppnoononoonnoononnonnonnononno nmnmnmmnnmnmmnmnnmmnmmnmmnmmnmllmllmllmllml lmlkjkkjkkjkkjkkjkjij jijjijjijjijjijijji ihiihihghghgghhghghghhgghggh ghgfgffgfgfggffgffgffgfgfggfggfgffggffgffgfgfe efeefeefeefeefee dcddcdcddcdcddcddccbccbccbccbc c babababababba`a``aa`aa`a`a`aa`a``a``a`aa` `_`_``_``__`__`_``_`_`_``_`_``__`_`__`__`__^^_^^_^^_^_^^_^ ^_^^?]\[\\[\\[\\<[Z[[ZYZYZZYYZYZYZZYZ YZYYXYYXXYXXYXYYXYXYYXXYXXYXXYXYXXYXYXYXXYYXYXYYXYXXWXWWXWXWWXW?VUTUUTUUTUUTUU/TSTTSTTSTSSRSRSSRSRSRSRSSRSRRSRS RSRQQRRQRQQRQRQRQQRQQRQQRQRQRQQRQQRQRQRQQRQRQQPQPPQPPQQPQPQPQQPQPPQPQP P?O=NMNM.MLMMLMMLMLLKLLKLKKLLKLLKKLLKKLLKLK KLKLJKKJKJKKJKKJKJJKJKJKJJKJJKJKKJJKJKKJKJJIIJIJJIIJIJJIIJIJIIJIJIIJIJIJIJJII?H4GFGFGGFGF(FEFFEF FEDEEDEEDEDDEDEEDEDEEDEDEEDCDDCDDCDCDCDDCDCDCCDCDCDCDCDCCD􌍍 9 )    ~~~~~~~~~~~~$~} ~} ~|}|}||}||}||}||}||}|{|{{|{{|{|{{|{{|{zz{zz{z z{zz{z$z+yxyxyyxyxxyxxwxxwxxwxwxxwxxwxxwxxwxxwx)wvwvwvwwvwvwvuuvvuvuuvuvvuuvuvuvuuvuuvuvuutut tut tutuututtstsstsstsstssts s?r qpqqp qpqqpqqpqpqqpqqpqqpqqpqppoppoppoppoppopoppnoonnonnoonoonoonnoonono nonnmnmmnnmmnmnnmnnmmnmmnmmnmmnmmnmmnm mnmmlml lmlmllml lmllk+kjkkjk k jijjijjijjiijjiijjijijjijjijjijiijjiji*ihiihhiihiihihghghghghhghhghggh ghgghggfgfgffgfgffgffgfggffggffgffgffgffgfgffgeefeefeefeefeed>d%cbc cbccbabbabba`aa`a`aa`aa`a`a``a``a` `a``_`__`_``_`_`__``_`_`_``_``_``__`__`__^^_^^_^^_^^_^^_^_^^_^^]\]"]\]]\\[\\[\\[\\[\\[\\[\\[\\[\[7[Z[[ZYZYYZYZYZZYYZYZZYZZYZYZZYYZYYZYXXYXYYXXYXXYYXYYXYXXYXXYXXYXYXXYXYYXXYXYYXYYXXYXXWXWWXW WXWWXWXWWXWWXWW/VUV V/UTUUTUUTUUTUT TST TSTSTTSTTSTTSRSSRS SRSSRSRSRSRSRSRRSRRSRRQRQRQRQQRQQRQQRQRQQRQRRQQRQQRQQRQQRQRQQPQPPQPPQPQQPQPPQPQPPQPPQPPQPPQPPQPP?O NMNNMNN,MLMLL MLKLKLKKLKKLLKLLKKLKLLKLKLKKLKLKKLKKJKJJKJKJJKJKJJKJJKJJKJKJKJKJJKJKKJKJJIJJIIJIJIIJIJIJ IJIJIH>H:GFGFGGF%FEFFEFF EDEDEDDEEDEDEEDEDEDEEDDEDCDCDDCDCDDCCDCDDCDCDCCDCDCDCCDDCDCDC 􅄄򅄅􃄄 %  ~~ ~~~~~~~~~~~~~~}~} ~}~}~}~}}|}}|}||}|}|}}||}||}}|}||{|{{|{{|{|{{|{{|{{|{{|{{z{{zz{zz{,z"yxy yxyxyyxyy xwxxwxxwxxwxxwxxwxxwxwxxwwxwxxwwvwvwwvwwvwvwvwwvwwvvwvvuvuvvuvvuvvuuvuuvuuvu uvuuvuuvtuut tuttututtut tusstssts&s/rqrrqrrqrrpqpqqpqqpq qpqpqppqqpqpqpqppoppo popopoppopnonnonnononononnonoonnonnoonnonnommnmmnmmnnmmnmnmmnmmnmnmmnmmnm mlmllml#lkjkkjkkjk kjkk jijijjijjij jijjijjij(ihiihihihghghghhgghghghhghghhgghghg ghgghggfgfggfgfgffgffgffgfgf fgffefeefefefefe efeefeefeffedcddcddcbccbc cbccbccbcc.babbababba`aa`aa`aa``aa`a`a``a`a`a``a`aa``a`__`_``__`_`__`_``__`_`__``_``_`__`__``__`_`__^^_^_^^_^_^^_^^_^^__^^_^^_ ^?]'\[\\[\\[\\ [Z[Z[[Z[[YZZYZYZYZYZZYZ YZYZYYXYXXYXYXYYXXYXYXYYXYXYXXYXXYX XYXYXWXWWXWWXWXWXWXWXXWWXWWXWXW WXW9VUVVUTUTUUTUUTUUTUUTUUTUUTUUTUU&TSTSTTST TSRSSRSRSRSSRRSSRSSRRSRSRRSRRSSRSSRRSRQRQRRQRQRRQRQRRQRQRRQRQRQRQRRQRQQRQQRQPPQQPPQPQPPQP PQPPQPPQP PQPP?ONMN NMNNMNNMN%MLMMLMKLKLKLLKLLKLLKKLKLKL KLKKLJK KJKKJKKJKJJKJKKJKJKKJKJKJKJJKJJKJJIJIJIJJI IJIIJIJI?H(GFGGFGG:FEFFEDEEDEEDEEDEDEEDEEDEDEDDEDCDCCDDCDDCDDCCDCDDCDCDDCDCDCCDCCD  $%  ? 􆅅  ?;8~~~~~~~~~~~~~~~~~~~~}~}}~}}~}}~}}~}}~} }?|1{z{ {?zyxyyxy yxyxyyxyyxyxyyxyxyyxyyxxyxxwxwxxwxwxwwxxwxwwxwxwwxxwwxwxwwxwxwxwwxwwvwvww vwvwvwvvwvu>u6tsttstt#stssrqrqrrqrqrrqrqrrqrrqqrrqrrqrrqrrqrqrrqpqpqqpqqpqqpqppqpqqppqpqpqqppqpqpqqpqppqpqppqpqppopoppopopoppoppopopopooppopoonon7nmnm mnm-m?lkjkkjkkjkkjkkjkkjkjkjkjkjkkjkjkkjjijijijijijjiijijijjiijiijjijiijijjijhiihiihiihhiihhihihhiihihihihhihhihhihiihgghghh4gfgffgffgfgf'fefeefe5edcdcddcddc dcdcddcbcbcbcbcbccbccbccbcbcbccbcbcbccbccbcbcbcbcbabbabbab babbabaababbaababaababaabaa?`_`__`__`__`_(_ ^_^^_^'^"]\ ]\]\]]\]]\[\\[\[\\[\\[\[\[[\\[\[\\[\[\[\[\[\\[\[ZZ[[Z[ZZ[ZZ[[Z[[Z[[Z[Z[[Z[[Z[[Z[Z[ZYZYYZYYZY0YXYXYXXYXXYXX WX0W VUVVUVUUV VUVUVVUVVUUV VUVVUVVUUTUUTUUTU UTUTTUTTUTTUUTUTUTUUTUTTSTTSSTSSTSTTSTSSTSSTSTTSTSSTSSTTSSTSTSSTSTSSR RS/RQRQQRQQRQQRQQRQQPQPPQP1PONOONOONOONOONOONMNNMNNMNNM NMNNMNNMNNMNMNNMNMNNMNMMLMLMMLMLMLLMLLMLLMLMMLMLMMKLLKLLKLKLLK KLK$KJKKJJKJJKJKJKKJJK JKJ JIJI)I,HGHHGHHGHHGHGFGGFGGFGFGFG GFGFEFFEFFEEFFEFEFFEFFEFEEFEEFEFFEFFEEFFEFEFDDE DEDE!D CDCCDDCDDCCDCDCCDCCDC CDCC  !0? 񇆇?7%~~~~~~~~~~~~~ ~}~}~}}~}}~}~}}/|{| |/{z{{z{{?zyxyyxyyxyyxyyxyxxyxyxyxxyyxyyxyxywxxwxwxwxwxxwxwxxwwxwwxwwxwxxwxwwxwwxwwxwwxwwxwxvwv vwvwwvvwvwvvwvwv v:utuutut)t?srqrqrrqrrqrqrrqrrqrqrqqrqrrqqrqrrppqpqqpqppqqpqpqpqpqpqpqpqqpqpqppqppqpqpopopoppopopoopopoopoo?n mn0m lml/lkjkkjkkjkkjkkjkkjkjkkjkkjkjkkjjkjkjijiijjijjijjijijjiijijjijjiijijjiijijjijiijijiihihii hihihhihhihihiih?gfgff?edcddcddcdc dcdcdccddcddcddccbbcbccbbccbcbbcbccbcbbcbcbbcbcbccbccbcabbabbabbababaabababaabaabaaba`a`a``a``a`2`_`__`__`_`_%_ ^_^2^\ ]\]]\]]\]]\]\ ]\[\\[\\[\ \[\[\[\\[\\[\[\[\[[\\[\[[\\[Z[Z[[ZZ[[ZZ[Z[Z[[Z[[Z[Z[[Z[Z[Z YZYZY/YXYXYXYXXYXXYXXYXXYXYXX?WVUVVUVUUVVUVUVVUVUVVUUTUTUTUUTUTUUTUUTUUTUTUTUUTUTSTSTSSTTSTTSTTSTTSTSTTSTTSTTSTTSSTSTTSSRRS7RQRQQRQQRQQRQQRQQRQQ PQPPQP PQPP ONOONOONOONM NMNMNNMNNMNNMNNMNNMLMLMMLLMMLMLMMLLMLLMLMMLLMLMLMMLLMLLMLMLLMLMLKLKLKKLKLK)KJKJJKJJKJKJJKJJKJJ?IHGH HGH HGHHGHFGFGGFGFFGGFGFGGFGGFFGFEFFEFFEFEFEEFFEEFFEFEEFFEFEFEFEFEEFEEDDE DE%DCDCDDCDCCDCCDDCDCCDCCDCCDCCDCCDCC ?, ?  -6?~~~~~~~~~~~~~~ ~~}~~}~}~}~} }~}}~}}~}}~~} }?|?{?zyxyyxyyxyyxyyxyxyxyyxyyxyyxyyxyyxyxxyxwxxwxwwxwwxwxwxxwwxwxwwxwwxwwxwwxwwxxwwxwwxwvwvvwwvwvwvvwvvwvvuvu5u tut0t?srqrqrrqrqrqrrqrrqrrqrrqrqqrqrqpqpqqpqpqqppqpqppqppqpqqppqpqpqqppqpqppopoopoppopoopoopopoopopopoopoopoonononnon2nmnm-m?l kjkkjkkj kjkjkjkjjkjjiijijjijijjijijjijijijijjijijiijiihihihiihihiihihihhiihihhih hihhih?g fgffgfgff?edc dcd dcddcddccdcdcdcddcbccbcbccbccbcbbcbccbcbcbcbcbccbccbbabbababababbaabababbabababaabaabaababaa`a<`_`__`_ _`__^_^+^]\]]\] ]\]]\]\\]]\]]\]]\]]\ \[\\[\[\[\\[\[\\[\\[\[\[\\[\\[[\[\[\[Z[[Z[Z[[Z[Z[ZZ[[Z[Z[[Z[ZZ[Z[[Z ZYZY+YXYXXYXXYXXYXYXXWXWA?@BCBBCB'B(A@AA@AA@A@?@@?@ @?@@? @?@@?@@?@?@?@@BCB BCBBCB$B"A@A A@AA@A'@?@?@@?@@?@@?@@??@BCBBCBBCBBCB$BA@AA@AA@A@?@ @?@@?@@?@?@?@ @?@@*BABABBABBABABBA@A@A@A@A@AA@A@A@@A@@AA@AA@@AA@A@@?@@?@@?@?@@?@?@?@@??@??@?@@??@@%BABBABABBAB BA@ A@A@A@AA@A@@AA@@A@@AA@@?@?@@?@??@?@??@?@?@?@??@?@@?@?.BABBAB B A@A@AA@AA@@AA@A@A@?@@?@?@?@?@@??@@??@@?@??@?@@?@?@??@?BAABAABBABBABB@A@?@??@?@?@@BABBABB@?@ ? BAB@@A@@A@@A@@AA@??@??@?5AD "uGNU ...      gimp-text-layer(text "GNU\nFreeDink") (font "Sans Bold") (font-size 72.000000) (font-size-unit pixels) (hinting yes) (antialias yes) (language "fr-fr") (base-direction ltr) (color (color-rgb 0.000000 0.000000 0.000000)) (justify center) (box-mode dynamic) (box-unit pixels) uNZfuK[!=M"+ ,I[nv|}yqdR=,I϶8  6H$ &6$ DY$ kY$ vY$ \Y$ ; حj: =dY$2BY$bJ !TY$!O1$L7$~$)$1$\b $4 $u l$  $ $ $ $& $pE $Mq:@@$ $C ${ $*h $[ $D} $y m4 3$ ⷚ$ 2$ 0$ *$ b$'٧H $? ʛh4 $9^ʫ\8% @@'?a vN  $i  $i . $i  $i ,$i $i ;$i $i B$i $i E$i $i \$i `$i Y$i H$i d$i U$i {$i @+$i u$i ,($i  $j >($o${'$ ($E$ &~s $ki) $C mf $R )~ $e ^ $  $ 2 Y $ d  $ _ G $ (s  $ S 5 @ @ -PƝo>B999999999999999999999999999n9@999Y::q:;#<0> @ @ @/e!?!?!?!?!?!?!?пe!?C2?C!5us?CZ?C?C?CՆ?C%?п ? V? N I?`#H?o ?! ?~ !?п D *?C$ /?C 1?C /?C ,?C %?C ?C ?C _?C !?C t?C?C8?C?C?C?C@@>@@3 @ @ @Mzu= "Xi0 $jA 3~3 p 1 $ ݆? 4'9ZM@EB#nLKsdIQFj/ XA ('ejUM7   x',  Ŀ:E!JY6Qc6Ug7Ud7U\!E@@NA@@46zkI-VD 30, @\ XJ+ad. ?l6W&  $Hu^YuI o 5| D ͤtE Z Úl8  )IƧ^8'-VT5" @ @ @5Um3Umw zaBUmv8UmX Um% Umi Um| Umo@@ h,M| 2 `  LUm ) Um E2Um eUm 5 Um Um Um x#Um@ e&Umw \(Um _'Um m%Um  Um Um Um ltUm KUm@ |Um tqUmUm bkUm@@AI^ Um+Um0Um! Um! UmJ UmЗ8Um tN!Um(@ @?><95/)  @@ @ @ @.Gz3Gz3Gz3Gz3Gz3Gz3Gz3Gz3Gz3Gz3Gz0yF Gz 1`} Gz 1),Gz 2+ GzYGzz!Gz usGzn Gz k 5a1Gz ih CNGz_bG]kGgsGmYvGKRvG;NvG1LvG1LvG1LvG1LvGz:1LvGz]1LvGz l1LvGze1LvGz1LvGz1LvGz 1LvGz1LvGz 1LvGz 1LvGz $@@ @@@@-.+}6"+!       t~eu p$Ug #b$@@(+:C!Border     5eq}} -=M]5555AD "masque Border FPF\Fh^2[_'5$@CRDDERF==<============>== 2                                   !!    !"##"!     !"#$%%#        !"#%&&$!      "#%&&%"     "#%&&$"     "#%%$!   !""            !    #    "&   #'  $(  #(  #'   !%   ! #  !!!  !!                !!    !                                                                           !!    "#"   "$%$#    #$&&$"   #&((&$"   &)**)(&$"   )+,,+*)(&$#"   +--,+*)('%$#"   +-.--,**)('&&$"   +-.--,+**))('&$"  *,--,++**)'$   (*++*+,+(%"  &(**+,,--,*'#  $&'())*,-.-+(#  "$%&'(()*+,-.-+(#  !#$%&((*+,--,*'#  !"$&()*+,++)&!  "$&())**(&#  "$&'(('%#  "$%&%$" "$$"!""   !                              :9764 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 4#                                    !#$%%$#"! !#&'())(''&%$" "$')++*)''%$"   $'*,,+**(('&$"  "&)+,,+*)(('&%#"!!  $')++*)(''&%%$## "&()((&&%$$#  ! !$&'&%$#"!!""#"  !! "$$#!  !""!  !!  !! !                                                                                                                    (                               !""##"!    !""##"!  !"#$$%$#"   !"#$$%$#! !#$%%&&'&%$"!  "#$%&&'&%$"  !"#$%&&''('%$#!  "#$%&''('&%$" "##$%%&'(())('&%#"  "#$%%''(())(''&$#!##$%&(())(&&%##!!""$$%'(())'&&$#" ##"##%&())(&%$#"!  !""$%'())('&$$#"!"!!"$&())('%#""!!   !#%&())('%#"!!  !#%'())())((&$"!   !$%'())()(&$"  "%&()(('%#!  "%'()((&%#  #%''&%$"  !$%''&%$!"$&''&%#!  "%&''&%$" !#%&&%$"  !!  !$%&&%#"  "$%&%%$#"  !!  #$%&%%$##! "$%%$#""!  !!  "$%%$#""!  "$%%$##""!  !""!  "$%%$$##""!  !  #$%%$#"!! !"##"!!#$%%$#"!!  !" "$%%$#!  !"#$$#" "$%%$"!  !"#$$#! #$%&$#"  !"$%%$" !#%&%$#!  !##$%%$!!#%&&%#"  !#%&''&$" !#%&%$#!  "#%&''%" "$&&%$"  !#$&()('%"!#$&&%#"  !#%&((&# !"#$&'&%$#!  !#$&()**(%" !"#%&'&%$"!  !#$'()*)'# !!""$%&&%$#"!!"$%')*+*)%! !!"#$%&&%$#!!"$&()**)'# !"##$%&'&&%$##$%&)*++)% !""#$$&&'&&%$##$%')*++*'#!"#$%%&''&&%$$%&()*++)'#""#$%&&''&&%$$%&'()*+*)&" "#$%%&&%&'()**)(&" "#$%%&&%&'()**)($! "#$%%$%%&''((&# "#$%%$%%&''(('&" "##$$%&%$"  !"##$$%&%$" !!""#"!   !!""#"                                   2} 3                              !!     !""!     "##"!    !"$$#!    "$$%$$"   "$%%$"   !     #%&&%#  !!  "$&&$"  !! "$&&$"   "#%%$"   !##$$#!  !""!                              !!  !!  !                           5 5 679;=m + '%"                                                                    "#$%%$$"!   #%&()(('%#!   !#&(*++*(&$"  "#&)+,,+*(%#  !!"$%!%(+-,,*(%#  "#$%&'(#'*+,+)'%# "$&'())*!%()*)('$#! #&()**++ #&'((&%#" !$')*+,,"$%%$#"!  $&)*++,, ""!! #%()*++!#&'())*!#%&'()!#$&'( "#%&' "#$&' "##$&&"#$%&& !$&&''&'  $&(('  !%()**)(' "%()**)((  "$'())('  !$&''   "#$%%&  !!"##  !         h          !!  "$%&&%$!  "$&'))(&" $%')*++)&# '()++,+*)%! )*++*)&" ++*(&# ,,+*)(%" ,,+)(%" ,+*(%" +*)&# *)'$  )(&" ('%! '&$  '&$  '&$! '&%" '&%#! '&&%"  '&&%$" ''&&%$"  ''&&%$#! &&'&%$! &&'(''$" %%&&'(()((&# "#$&''()*)(&! !#$&'')**)'#  "#$&'(('#  !#$%%$!  !""!                                                                 AD "Shadow     GG7GGQ\``jv@Qzd4 -     üſż㌎ƻƼ|yvttuwz}Ǹ{smhda_^^_`bdgkpwʻ|sǺvld\WSQPOOPQSTVY^dlv°vg\ȸym`XQKHFFGHIKLLMOPTY`jwͻyfVJǸqcWMFB??@BDGIKLNOOQUZco~ȵnZG:ɸn]PF?;9:>AFKPSVYZ[[YYXWY]do|űeP=/Ͻm]MA:658PiuZD1$ƭz^G7*%(3CVpĿuZD1%©uYC3(%)5G\wĻѿuZE2'rV@1'%*8Ka}ϿuZE3(ѿpT?0&%+9MdƷ{vqppsx;uZE4)ѾoS>/&%,:Neξ~qga\YY\bky̼uZE4*ѾoS>/&%,:Ne˺sdXOIEDGMWfyʼuZF5+ѿpT?0&%+9Mdʹo^QG>979?JZnɻuZF5,rVA1'%*8J`|˻p^OC81./5?Pe{ȺuZF5-évZD3(%)5G\wxdTE8.))-7I^uǺuZF5-ƭz^H7*&(2BWqƷmZJ;/(&*4EZrǺuZF5-ɲdM;-''0>Pi˾wcQ?1)%(1BXpƺuZF5-ϸlTA1(',8H^uĶlXD5+&(1AWoƺuZF5-ӿt[H6,(*3ATi~Źp\H7,&(1AWnƺuZF5-ů}eQ=1**0:J]pq]H8,')1AWnƺuZF5-͹r\G9/+-4@O_rn[G7,')1BXpƺu[G6.®~iRB6/-08ERbqxfUC4+'*3DYqǺu\G7/˹v_M@5003;ES`kxzl\M>2*'+5F]tȻv\H80Ʊq^N@7336BFJORTUSPLF@:5227?K^shUF>  丸ؠ¸ǻʈǹʽnkmqzñ~|~ɻywzпVSTYbn}˹rjgirxkcadmzȵC?@EN[j}űrcYUYbr˺zi[QOS]l~ì2..3QjͿw\G5*',8Ja~ʴ #1CVmŽiQ=2.2=QiͿw[F4)&*7Ia}ʴ !,;LbygP<1-1N`pz~wl^TKFFGHHE?8/'$%-:OhͿx\F4(%(5F^zDZ{,3AQewxh[OFA?>=:5/(" #,:Ohy^H5($(4E\wůy,4BTi|rcTG@;852-("!+9Nh­{_I6)%(3CZu¬w-5CVl}lZK@82.*%!*9Nhï}aK8*%'2AVqνs-5EWoxdRD8/(#(8NhƲdN:,&&/>RkƵm-6EXqnYI:.%'7MhȵiR=-&&-:Le|ȼ}f-6FYrxbO>/%&7Mg˹nWA1)&+6F\rs^.6FZsnYE4' &6MhϾv^H6+'*1?Rey{fS/7G[u¶ycM:+'7Nhð}fO<0)).9IYk}~mZJ08I]voWB1$'8NiɸpYD7-*,4@M\kwwl^NA3;K_yʽ|dN<+ +;Ql}fPA5.-08ALX`hllhaXMA88@Oc|ƴqYF5(#0?Uoɶs]L>5114:BJQVZZWRKC;5>FUhϿ~gSA3)#!$*7FZtlZK?95580'%+8Lc~*O;.&&-;Pg*I6,&(0?Ul*A2*'+5E\t*;/))0;Me|+5,*,6CVn+1-.4@Oc{,15=K\p,59?JYk,     ^ȿȹ퇈 ̽xrnlkkmnopqruzñyj`YTSRSTVWXYZ[[]_bgnyͻzhVLD@>>@BEGJKMNOOQSV[co}ɵo[I=6102582+&&).4:@EJMOPRSUX^eqíw`J6*# "&.6?GOTY\]_abfjq|t\F2& !'2DP`xϸr^PGFKYlɺtfZOHDA@ABDFHIIHFB@=<@GSdxǼm[LB<<@GQZbikkg`WNF@>Ar^NB856=FQ]hottqi^TH?98=GWkþs^N@858?HT`iqutof\QE=99yfRB7/.2;GSaltzzvmbVH=625IWdnvzytk`SF;42r_J:/**/9FSamuzzvmbVH;3.06CUis\H9.*+1ObykS@2(%'.9ES`jquupg]PC8/,gQ<.$ "'2>IV`gllibYOC80+,1M^sr^G5(  &0;GQY`cc_ZSI?70.|bK6'"+5?IRX\][WQKC<7449CQauoZD2%$-7BKSY\]ZVPIA;64{aJ5& *3=GOUY[ZXTOIDA?@DNZi{mYB0$#,5@IPVZ[ZWSNHD@?{aJ5&"+5?IRX]__^[XTQNMNRZfsnXB0$$-6BKSY^__][WTPNM}bL6($.9DOY_eijihfc`^^_cjtp[D2&&0;GQZafijiheb`^^fO:+""(3?LYclswz{zywtsrsv{t^G5(!"*6AO[entxz{zxvtrrkT>.&"%,8ESamwycL9,$"&.:GWdozqZC3*&(/L]kxîzcL;1+,2>LZkyis[H9/+-5AN^n{ɵlUC8004>KYjx¸}eQA5006AN]mzϽx`N@747?IVer}p\K=648AKYhtDzo\MB<;?GP\gqz}~ȻjYJ@;ACDDCA>=<=X_l|ijvdUKDABGQ^qǷqbXPIFDDEDFIio{Ͽwi_YUVZcoƵwlbZURONNOQUZ;ztpqu|ȹ|tmheba``abdhms̾ʿ{xvvx{ùƻ¾ý  1 6    Ż¿껼ŷŻʺµñ~toƵ}upmkklmnoprtuwz}Ͼtidμrg]WTSSTUWYZ\^_abeimrzͼpc_ȳs`SHB?>?ADFIKMOOPQSUX\bis~ͼpe`í~gSE:41036:>ADFHHGHIKPU^iuϿujfҿu]H:/(&'+06M\gpwyxtnf\RH>732450/2;HZpƷ~͹iO9+" %0@QfzvfUG;1--3>Mbx³zv̸iO9+#"(4FZqxeTD6.*-5BVkɼyoj˸iO9+$#*8LazƼvbN=1*).:L`xõ}mb\yʷiO9,$$,:Of˾nXD6+'*3DWoǾsbVPfvɷiO:,%%-Pg¹~jXJEUdwȶiO:,%&.=TkȵlSA1'&+8I`zwbPBUlнsYE3)%)5E[us^J<7?J[oŵiO:,&&/>UmĬz^I6*%'2BWrpZG826@PbzóhO:,&&/>Umȱ~bL8*%'0@UooXD5009HZr²hO:,&&/>UmʳdM9+%&0>SmnXC4.-5BTkhO:,&&/>UmʴdM9+%&/>SmmVC3-,3@PghN:,&&/>UmɲcL9*%&0?TnmVB3-/5AQgƿhN:,&&/>UmŮ{`J7*%'1AVpmVB3-5Ulv[F4(%(3DYsmWB3-AGQ_rǿhN:,%&.>TlʷnUA1'%+7H^ymWB3-OT]j|hN:,%%-=SjfN=/''-;Md~nWB3-_dmxhN9,%%,;Pgôs\G7,')1ATk¿nWC3-sw~³hN9+$$*9Mc|yeQ>2*(-8I]u´nWC3-ijhN9+##(5H]ujXG8.*+2?Rf~ĶnWC3-ŴhN9+"!&2CUk~m[L>3,+09H]rǷnWC3-ǵiO9+"#-;K^puiZL@6/.19EVlʹpXD4.ǶjP:+!!(4BQanx|vnbXLA93028CQdz̻pYD5/ȷkR<-"%/9FS]ejlkgb[RJB;635:CQ`tμr[F71~ɸoU?0& #*2;ELRVWVTPKE@<98:@HTdtѿu^K<6v|˻s[F7,%$&*07>CHKLKIGDA?=>@FNXevzdPBHVjgnz¬w`L=78AQepxt\H823=Mb~yտrZF600;J`|տqZE4./:I_{ԾqYD4-.8H]z~¸ӾpYD4-.8H]yw~Ϳ|{}ҽpYD3-.8G\wks~ò|vtuw|~xsmgdbdgnxѽpYD3-.7FZt^frȹpf_[\_dhkmlie_ZTPNNQWam}μpYD3,-6EXpR[hz±s`TLHHKPUZ]]\XTNHD@?AFO[jͻpYD3,,5CTl~FP^rɽ|gSF<88;@GLQSTRNIB=8547?JZo˺pXC3,+3?Pev=GVkƹu^H:0++/6=ELQTTQME>71..4=K`uɹoXC2+)0;J\kv8BQgĶpXB3)$%)1;DOUZ\ZVME;2-*-5AUjǸoXC1)'-6CS`i4>NdõmU>/% "'1PgnWA-#"(-0.:J`{iQ;-%%+7K_us[G8,*.;MdnV@,!"%.:J`{jQ;.&'/=Rg{aL;.+.;Lb}nV@,.:J`{jQ;.()2AXoƾfP>0+.:J`|nV@+.:J`{jQ<0*,5E]uųjS@1,.9J_{nV?+.:J`{jQ<0*-7HayɷlUA2,.9I_znV@+.:J`{jR=1+/9Jc|˹nWB3-.9I^znV@, .:J`{jR=1,/:Le~ͻoWC3-.8I^znV@-!!%(.:J`{jR=1,0;MfλoXC3-.8I^ynWA.##).1.:J`{jR=1-0;MgλoXD3-.8I^ynWA/% %+3:>/:J`|kS>2.1PiϼqZE5/0;K`{pYE3*',4>LU\3=Mc~ômVA615@RkϽs\G822=Mb|q[G6.,2;GWck7BQfĶpYF:69DUnпv_L<67APeu^K:329DRdr|>GWkƸu_K@<@J[szdQB==GVj¸ydQA;;BM\o~GP_rȼ{gTJEISczılZKFGP^qŻkYKEELXg{D üظüѰͦ~xtuyʛvmhgjq~ˎ{qf`]_eo~~{sjaZWW]fsookd]WSSWam|^^[UQOOT\jxNMKIIJPZfw@AA.DJTap357;BKZj|)+07ANat"&+5APfz"(4@Qh} '2@Ph}!'1>Ndy!%)2<=@IS`tPOLGCBDJTds_^YRKFDGMXfvpoi`WOHFHPZh|у}rg\QKHKR\m~ƒwj\SMLPWet{k`WRRWbn~̹wfWOMS]lӾ}k^UUYgwuga_dm{IJznfejuȷzusw˻yy|ŵqd\VSSTWZ]`bdeegjow|ncZUSSUX[^acdeegkijwnf`^]]^`acdefghkov~Ϳvkd`]]_`bcdefghlpõxrnjiijklnorv{Ϳwqljiijkmnpsw|pzðo\ND=:9;=@CFIJLLMMOPSW\clxɷwfYUwɸ}l_VOLKKLNQRTVXYZ\^aejqyϾuie~sjea``bcefhikmorw{Ƶ|xV^l~sbXTWaoȷwgYUU^k|wgYTT\gvfnzǸqhehp}ξvjefnyǺvjeelwy{xzƶ|yy´|xy555ʱrh_]^fp}yokjowȿ}{}AD "masque Shadow p !\|N48jҾV-  (((] ͓a6 $}՜J $ [Q$ Y$ $Y$ Y$ ԻY$f ]5 2NxY$36 ,Y$ qP$&($h$S$$B$lM $, $ $ $ $ $ $- $gQ$: $ $U $Z $# $ $&C$X k;  Am$ $ $ $ $ Eԗ*$nq/$Ih4 $( (((( !(( $h > $h  $h Q$h $h K$h $h [$h $h h$h $h k$h $h x$h =/$h $h 3&$h  $h 42$h  $h $@$h v $h !<$h s$j#O$r l$~$ 0U$W$.\ $_- $3U N $? $W $N 8 $ $ $ H $ E  $ +| 3 $ }K  # (kL(9999999999999999999999999999_969 9:G::J:} ;< 9{!?!?!?!?!?!?!?S!?C2?C  U΍?Cp?C?C?Cؑ?C+? ? ܹ_? ?;r?L O?h ? ?w "? B +?C" /?C 1?C /?C +?C $?C ?C ?C [?C ?C p?C?C6?C?C?C?C<<:<<0SykJ4mи]( Bx̳P"  6Y II = - "-Y N=Eh ]LNL(S00X"I.6g =\( `6y%$ y"nuGE5  w(/ <H!JZ6Qd6Uh7Ud7U\!700L20038 "uR 8]J ;.1 Ib"_O.in7 %Hv2`/ -Q~\V qD j 4y B ˡqC W i6  'FãZ5%+Sؼ{P2 ,Dr]/9,,3Ul3UlǷkH( UlǓW Ulq UlF Ul Ul Ul   u!9_ :B   UUl Ul 4:Ul hUl / Ul Ul Ul v#UlF c&Ulz \(Ul `'Ul p%Ul Ul Ul Ul rrUl HUl0 Ul |lUlUlncUlKKLSg Ul(Ul*Ul Ul UlE Ul̓6Ul ϾpK Ul&< <;862,& <<n ,,3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz   Pʧf( Hz 1w'Hz 136Hz 3C %Hz eHz(HzHz  ˱Hzy u*P3Hz vU4QHzuwbHj~kHfsHjYuHIRuH9OuH1MuH1LuH1LuH1LuHz71LuHzX1LuHzc1LuHz`1LuHz~1LuHz1LuHz 1LuHz1LuHz 1LuHz 1LuHz "<< <<<<T  '!%    s      my s"[i #d"<<&5AD "Behind      8<\ n9Rk6Bl                                   ! !  "$ !"$   !#%    "#% !"                                   ! !  "$ !"$   !#%    "#% !"                                         !    "        !"$       "#%        !"$%       "#%&    "$%'     #$&()    %'(*       &')+  !"     &(*+!"##     ')*,##$%}&                                         !    "        !"$       "#%        !"$%       "#%&    "$%'     #$&()    %'(*       &')+  !"     &(*+!"##     ')*,##$%}&              !         !"        !"#       "#$    !#$%      "#%&'       #$&'(       %&()       &')*     '(*+  ()*,-  (*+-.  +,./ !~!|  +-/0|!""|#y ,./~1{##|$y%w -/0}2y4$|%z&w't( ./1{3x5z'w(u(r)              !         !"        !"#       "#$    !#$%      "#%&'       #$&'(       %&()       &')*     '(*+  ()*,-  (*+-.  +,./ !~!|  +-/0|!""|#y ,./~1{##|$y%w -/0}2y4$|%z&w't( ./1{3x5z'w(u(r)   ! !" !"#$  "#$%    !#$%&       !$%&(    !%&()    !#&')*+    "$(*+,     "$)+,-|     "$+,-~/{  "$+-.}0y} "%',./{1x2~{ "%'/}0z2v3~{y  #%'0|1x3u4q~ {!y!v"t #%(~~1z2w4s5p"y#v#t$q #%(}2y3u5r7n$w%t%q&o #%~({*3w4t6p8m9&t&r'o(l) #%|(y*v5r7o9k:r(o)m*j+#}&z(x+t6q8m:j;fo*m+j,h-e   ! !" !"#$  "#$%    !#$%&       !$%&(    !%&()    !#&')*+    "$(*+,     "$)+,-|     "$+,-~/{  "$+-.}0y} "%',./{1x2~{ "%'/}0z2v3~{y  #%'0|1x3u4q~ {!y!v"t #%(~~1z2w4s5p"y#v#t$q #%(}2y3u5r7n$w%t%q&o #%~({*3w4t6p8m9&t&r'o(l) #%|(y*v5r7o9k:r(o)m*j+#}&z(x+t6q8m:j;fo*m+j,h-e " "#$"%  "&   #(  #) #%*+ &, &~.z &/y&0w}')1v2{)t4x)s5ov!s*~6n#q*|7l%n*z-8k:'l'y-i;j*w-h<dg,eu-s=c.b " "#$"%  "&   #(  #) #%*+ &, &~.z &/y&0w}')1v2{)t4x)s5ov!s*~6n#q*|7l%n*z-8k:'l'y-i;j*w-h<dg,eu-s=c.b   "$&!!"#    !#$&("#$%%     #%')$%&'      #%')%&'(~       $&(*'()*|     $&(*()*}+{     %')+-)*~+|-y.    ')+-,|-z.x/   ')+-}-{.x/v0t  ~{(*,.~.y/w1t2r~|y(*,.|/w1u2s3q~|y!w$(*-~/{10v2s3q4o6|yw#t&+-}/y1t3r4p6m7zw!t$r'+~-{0x2tr4p6n7l8jw u#r&o)m+}.y0v2s5n7l8j:h!r$p(m+j,{.x0u3q7l8j:h;f#p&m)j-h0,z.v1s3p68k9i;g<e>$m(k+h.e1x/u1q3n6i;g<e>c?k)h-f0c3w/s1p4m6ig<e=c?aA_i+f.c1a5^u/r2n4k7h=c?b@`B^,c0a3^7\/p2m5j7f>b@`A^C\.a1^5\8Y<   "$&!!"#    !#$&("#$%%     #%')$%&'      #%')%&'(~       $&(*'()*|     $&(*()*}+{     %')+-)*~+|-y.    ')+-,|-z.x/   ')+-}-{.x/v0t  ~{(*,.~.y/w1t2r~|y(*,.|/w1u2s3q~|y!w$(*-~/{10v2s3q4o6|yw#t&+-}/y1t3r4p6m7zw!t$r'+~-{0x2tr4p6n7l8jw u#r&o)m+}.y0v2s5n7l8j:h!r$p(m+j,{.x0u3q7l8j:h;f#p&m)j-h0,z.v1s3p68k9i;g<e>$m(k+h.e1x/u1q3n6i;g<e>c?k)h-f0c3w/s1p4m6ig<e=c?aA_i+f.c1a5^u/r2n4k7h=c?b@`B^,c0a3^7\/p2m5j7f>b@`A^C\.a1^5\8Y<     ')+-.$%&}'{(    *,-/&~'|(y)    *,.0~(})z*x+u  +-/1|){*y+v,t  +-/~1{+z,x-u.s/ }",.0}2y4,x-v.t/q1 }!{#/0{2x4w/u0r1p2} {#x%v/}1z3v5su0s1q3n4l~{"x$v's0|2x4u6q2r3o4m5k y#v&s)q0z2w4s6p3p4n6k7i8"v%t(q+n.1y3u5r7n94n6l7j8h:t'q*o-l0w3t5p8m:m7k8i:f;q)o,l/j2gv4r6o8k:hk9i:g;e=co+l.j1g4e4q6m9j;f:h;e=c>a,j/g3e6b5o7l9h<e;f=d>b@`A.h1e4b8`;5n7j:g<c>=d>b@`A^Ce3c6`:]=l8i:e=b?c?aA_C]Dc5`8^;[?Xk8g;d=`@]aA_B]D[FY`7^:[=Y@V9f;b>_@[B^D\EZGX8[<Y?VBS9d<a>]AZC\EZGXHVJ:Y=VATDQH:c<_?\AXDEZFYHWJULW?TCQFOI     ')+-.$%&}'{(    *,-/&~'|(y)    *,.0~(})z*x+u  +-/1|){*y+v,t  +-/~1{+z,x-u.s/ }",.0}2y4,x-v.t/q1 }!{#/0{2x4w/u0r1p2} {#x%v/}1z3v5su0s1q3n4l~{"x$v's0|2x4u6q2r3o4m5k y#v&s)q0z2w4s6p3p4n6k7i8"v%t(q+n.1y3u5r7n94n6l7j8h:t'q*o-l0w3t5p8m:m7k8i:f;q)o,l/j2gv4r6o8k:hk9i:g;e=co+l.j1g4e4q6m9j;f:h;e=c>a,j/g3e6b5o7l9h<e;f=d>b@`A.h1e4b8`;5n7j:g<c>=d>b@`A^Ce3c6`:]=l8i:e=b?c?aA_C]Dc5`8^;[?Xk8g;d=`@]aA_B]D[FY`7^:[=Y@V9f;b>_@[B^D\EZGX8[<Y?VBS9d<a>]AZC\EZGXHVJ:Y=VATDQH:c<_?\AXDEZFYHWJULW?TCQFOI 0}2z4v5x(u)s*p+n!|1|3x5u6qw*t+r,o-l!|$z2z4w5s7p,s-p.n/k }#z&w2y4u6r8n:-r.o/m0j1 }"z%x(u+3w5t7p9m;p0n1k2i3z$x'u*s-v6r8o:k<o2l3j4h5ex&u)s,p/mt6q8m:j<fm3k4i6f7d(s+p.n1k7o9l;h=e5j6g7e8c*q-n0k3i8n:j<g>c@6h8f9d:a;,n/l2i5f88l;i=e?bAg9e;b<`=l1i4f7d:k;g=d@`Bf;c<a=_?]i3g6d9a<_i<f>b@_C[d<b>`?^@[5d8b;_>\=d?aA]CZ>a?^A\BZ7b:_=]@Z=c@_B\DXF@_A]B[DYE9`<]?ZBXF>a@^BZEWG^B\DZEXG]>ZAXEUH`A\CYFUH\DZFXGVHT[@XCUGSJP^A[DWFTIP[FYGWIUJSBVESIPLNBYEVGRIOGWIVJTLRDSGQJNNKCXETHQJMMIVJTLRMPOFQINLLPISCVFSHOKLMULSMQOOQNKLNIRGUUFQINKJNSMQOOQNRLLMIPGTDWB 0}2z4v5x(u)s*p+n!|1|3x5u6qw*t+r,o-l!|$z2z4w5s7p,s-p.n/k }#z&w2y4u6r8n:-r.o/m0j1 }"z%x(u+3w5t7p9m;p0n1k2i3z$x'u*s-v6r8o:k<o2l3j4h5ex&u)s,p/mt6q8m:j<fm3k4i6f7d(s+p.n1k7o9l;h=e5j6g7e8c*q-n0k3i8n:j<g>c@6h8f9d:a;,n/l2i5f88l;i=e?bAg9e;b<`=l1i4f7d:k;g=d@`Bf;c<a=_?]i3g6d9a<_i<f>b@_C[d<b>`?^@[5d8b;_>\=d?aA]CZ>a?^A\BZ7b:_=]@Z=c@_B\DXF@_A]B[DYE9`<]?ZBXF>a@^BZEWG^B\DZEXG]>ZAXEUH`A\CYFUH\DZFXGVHT[@XCUGSJP^A[DWFTIP[FYGWIUJSBVESIPLNBYEVGRIOGWIVJTLRDSGQJNNKCXETHQJMMIVJTLRMPOFQINLLPISCVFSHOKLMULSMQOOQNKLNIRGUUFQINKJNSMQOOQNRLLMIPGTDWB~#{&y(v+ts7o9l;h<e,k-h.f/c$z'w)t,r8n:j<g=c.j/g0e1b&w)t,r.o19l;i=e>b@0i1f2d2a3(u+r.o1m3k<g>d?`Ah2e3c4`5r-p0m3j6i=f?b@_B[f4d5a6_7]p0m2k5h8eh>d?aA]CZ6c7`8^9\2k5h7f:c>c@_B\DX8b9_:];Z4h7f:c=a??aA^CZEWG:`;^<\=Y>6f9c<a?^B`B\DYFUH_<]>[?X@d;a>^A\D^C[EWGTIP^>\?YAWBUa=_@\CYFW]DYFVHRJO@[AXCVDT?\BZEWITEXGTIQKMBYCWDUFSAZEWHUKRNFVHSJOLLNCXEVFTHRIDWGUJRMPPUIQKNMJOWGUHSIQKUIRLPOMRSIPLLNIPEVHTJQKOMMSKPNMQKUHRJNMKOGQDJRKPMNNLMNPKTHWFKMMIPFRBLQMOOMPKOKRIVFYC\LKNHQDSAVMPONPLRJTQITFXC[A^JOFQCT?VOQMRKTIUFWDZA]>aHPERAU>W:MRKTJVHWFDYA\?_<c9GQCS@V<X9TJVHWFYE[?^<b:e7~#{&y(v+ts7o9l;h<e,k-h.f/c$z'w)t,r8n:j<g=c.j/g0e1b&w)t,r.o19l;i=e>b@0i1f2d2a3(u+r.o1m3k<g>d?`Ah2e3c4`5r-p0m3j6i=f?b@_B[f4d5a6_7]p0m2k5h8eh>d?aA]CZ6c7`8^9\2k5h7f:c>c@_B\DX8b9_:];Z4h7f:c=a??aA^CZEWG:`;^<\=Y>6f9c<a?^B`B\DYFUH_<]>[?X@d;a>^A\D^C[EWGTIP^>\?YAWBUa=_@\CYFW]DYFVHRJO@[AXCVDT?\BZEWITEXGTIQKMBYCWDUFSAZEWHUKRNFVHSJOLLNCXEVFTHRIDWGUJRMPPUIQKNMJOWGUHSIQKUIRLPOMRSIPLLNIPEVHTJQKOMMSKPNMQKUHRJNMKOGQDJRKPMNNLMNPKTHWFKMMIPFRBLQMOOMPKOKRIVFYC\LKNHQDSAVMPONPLRJTQITFXC[A^JOFQCT?VOQMRKTIUFWDZA]>aHPERAU>W:MRKTJVHWFDYA\?_<c9GQCS@V<X9TJVHWFYE[?^<b:e7-q>a0a/o1?`A1`2m4^B_4j6]CY^6[h8eDX8Z;cEV:Y=`@FUH<X=^BSIW?\ERJNVATYGVKMCSITLKERLROMJPGQHOQHQPJMSGRCOLLJVHSBNKXET@PJZC]U?WRISA`=XHU>b<Y8GWE<d9Z7YDf7[5[Ch4l-q>a0a/o1?`A1`2m4^B_4j6]CY^6[h8eDX8Z;cEV:Y=`@FUH<X=^BSIW?\ERJNVATYGVKMCSITLKERLROMJPGQHOQHQPJMSGRCOLLJVHSBNKXET@PJZC]U?WRISA`=XHU>b<Y8GWE<d9Z7YDf7[5[Ch4l0o2k5h7e:?`A^C\DZF/_3\6Y:W=0o2k5h7e:?`A^C\DZF/_3\6Y:W=a=^?ZBWDYHWJUKSMTARDOHLKJa=^?ZBWDYHWJUKSMTARDOHLKJSGPJLLIOEROPPNRLTKOGRDVBY?SGPJLLIOEROPPNRLTKOGRDVBY?QBT>V;Y7VIWGYE[C]<`:d7g5kQBT>V;Y7VIWGYE[C]<`:d7g5k\4^]B^2n\4^]B^2n55AD "masque Behind  Ss?q_18jҾV-  (((] ͓a6 $}՜J $ [Q$ Y$ $Y$ Y$ ԻY$f ]5 2NxY$36 ,Y$ qP$&($h$S$$B$lM $, $ $ $ $ $ $- $gQ$: $ $U $Z $# $ $&C$X k;  Am$ $ $ $ $ Eԗ*$nq/$Ih4 $( (((( !(( $h > $h  $h Q$h $h K$h $h [$h $h h$h $h k$h $h x$h =/$h $h 3&$h  $h 42$h  $h $@$h v $h !<$h s$j#O$r l$~$ 0U$W$.\ $_- $3U N $? $W $N 8 $ $ $ H $ E  $ +| 3 $ }K  # (kL(9999999999999999999999999999_969 9:G::J:} ;< 9{!?!?!?!?!?!?!?S!?C2?C  U΍?Cp?C?C?Cؑ?C+? ? ܹ_? ?;r?L O?h ? ?w "? B +?C" /?C 1?C /?C +?C $?C ?C ?C [?C ?C p?C?C6?C?C?C?C<<:<<0SykJ4mи]( Bx̳P"  6Y II = - "-Y N=Eh ]LNL(S00X"I.6g =\( `6y%$ y"nuGE5  w(/ <H!JZ6Qd6Uh7Ud7U\!700L20038 "uR 8]J ;.1 Ib"_O.in7 %Hv2`/ -Q~\V qD j 4y B ˡqC W i6  'FãZ5%+Sؼ{P2 ,Dr]/9,,3Ul3UlǷkH( UlǓW Ulq UlF Ul Ul Ul   u!9_ :B   UUl Ul 4:Ul hUl / Ul Ul Ul v#UlF c&Ulz \(Ul `'Ul p%Ul Ul Ul Ul rrUl HUl0 Ul |lUlUlncUlKKLSg Ul(Ul*Ul Ul UlE Ul̓6Ul ϾpK Ul&< <;862,& <<n ,,3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz3Hz   Pʧf( Hz 1w'Hz 136Hz 3C %Hz eHz(HzHz  ˱Hzy u*P3Hz vU4QHzuwbHj~kHfsHjYuHIRuH9OuH1MuH1LuH1LuH1LuHz71LuHzX1LuHzc1LuHz`1LuHz~1LuHz1LuHz 1LuHz1LuHz 1LuHz 1LuHz "<< <<<<T  '!%    s      my s"[i #d"<<&5AD "Nouveau calque#1      gs%+Gfp]E?/.x=<<<<;;;;;;;;;;;;;;<<<<==?=<<<<;;;;;;;;;;;;;;<<<<==?=<<<<;;;;;;;;;;;;;;<<<<==?=<<<;; ; ;::::::::;; ; ;<<<<== ̿ տ ժ ȶ ̶ Ӷ̶̿뀿쪿̿տ ̿ տ ժ ȶ ̶ Ӷ̶̿뀿쪿̿տ ̿ տ ժ ȶ ̶ Ӷ̶̿뀿쪿̿տ        !#$$#"     #*28=@B BA@=70(  +5:==<9 (2TkʴjA! %K{ž+>UmέS, 'Oų*>Umݿ`4 (Qγ})=TmȜh:)Qġ|bWYh &;Sl¿ˠk<)RջfF66D` 5Nh½Ӏ̡m=)RҶW3!*Cg +D`}ʟl=)RѳP*.P!8Trƾƛi;)RѲN''D +EdĻ~~Ժc8)RѲM(.G5Rs»ƽ}maXSRTZcnzļX2 )QѳO,#1DZ$>^¿ƺkYJ=50./4:CMYhxkH) (QѳQ1)6Me{*Gh¹Ⱦv^J:.%!&-6AO^ltsgR8  (QѴS75Kk1OrųxZB1%!&-7BMTTM>+ (PѴU<@^7Wz}v~ȿbD.! $&'(()*,.27=DIID8) (PѴW?Hl#>_qmzǸvQ4"(4>DHIJJKKLMORUWWRH8&(PѴWBMt'DgzgevİhD)(&*PѴXCPx)Hlq__r]:" 4Qn|\;#+QѴXCPz*IniXZo¾~U3$?cƹzQ0".RѴXCQz*JocRVm{Q/'Foӹb:'0RѴXCQz*Io¼aOSkyO-)JvǞlA+1SѴXCQz)HncPSk¾{P-)Kx±ͤrD,2SѴXCPz&DjưjUVlS/(IvͰͦsF-2SѴXCPz"?d˸t][oƯZ4%Epǣlp˦tF-2SҴXCPy7\ο~e`q͹f="!L`{mOMhɥtF-1QҶZDPx .Pyæx{ҷv\KCBFO^vmOMhɦtF-0PҶZDPx$BiҺ|ҼynihlwnOMhɧuG-0PҶZDPx 4W̲ȷšoQPjʧvH-0PҶZDPx&DjǮrVUp˨wH.0Pҷ[EPy 1RzŮxab|̩wI.1PӸ]GS{!<_Ǵнuy̨wH.1PջeOZ (DiͿǻ˦tG-0P›uak ,JnƟnC+/Oί /LoƼӸc;'.NDZ 0LnøѾyP0!*L} .Igƴ}[:"%Fu )@ZuǽrW<$;e  ߪտ߿ۿƿ̀ƿ߿ƪ۶϶ߪ̀̿㿿ĪտĪĪժժժժժժժժժժժժժժ̶Pƿ»տ  ߪտ߿ۿƿ̀ƿ߿ƪ۶϶ߪ̀̿㿿ĪտĪĪժժժժժժժժժժժժժժ̶Pƿ»տ  ߪտ߿ۿƿ̀ƿ߿ƪ۶϶ߪ̀̿㿿ĪտĪĪժժժժժժժժժժժժժժ̶Pƿ»տ            "##"    "$3)  *39<==<93)+6=@AA?<6+ )5 $Epΰ\6 )SȹѮ}K& ?nȹl@ (LyƣwL) -XϵӲM'!Aq˲ÞnA *O}Ư׻d;/[ yӳM("BsԹ~ğnA +Q˱Ϋ}P,0]շk`rӳN("BsʩigÞnA ,Qͽ{f="2^Я[PeҳN("BsÝtYYužn@ ,Q~Ǵk{ѭ~P/%5_ΪzSG^ѳN("BsҿlPRožn@ ,Q~įbkg@/:`ͩwPE[ѳN("BsҾiMOmm@ ,Q~ì_iҭTQshB$/C>QshB#/C>QshA#/C>QsgA#/C>QsgA#/C>Qsg@"/C>Qsg@"/B>Qsg@"/B>Qsg@"/B>Psg@"/B>Psg@"/A=Psg@"/A=Qtg@"/B>Rvg@"/B@Uyg@"/DZIJg@"/HJcȳf?!/NRmɲb< /T\yʯ]7 /[gǩU1 /cs vL*/mһkB#0zβ_9 0ȧ|R/ 0ֽkC$1̭X4 1ֽlE&1Ǧ}T2 2˭`=!2ɮfC' 3dD) 4{\@( 4@"   ̿򿙪ռۿնննƿնӪ̪̿ߪ@"   ̿򿙪ռۿնննƿնӪ̪̿ߪ@"   ̿򿙪ռۿնննƿնӪ̪̿ߪ@" '*,.0110/-*&! NSX\_`aa`^[UMD9.#~𘕐}o_M;* ÿlT=( ųiN5  ;vY>& ¼뵶Ⱦ{_B)  񩬭뙚}aE+ 𗘗yuuz듕cG- xssx秨fK4"  !"! ~}ŴmVC5-)(('&%#""$'-44) òzj^VSRRQPOLJHHJOWaktyztiYF3" ȿ҅}{{}gM5#)žȷeI4*,8L~{|̴x]JCJ]vunkjiihgedekvpbbo~uolkjjihgfiq}Ư~ň˹ۄÿ㲰Ǽ儈ㄇrnt؂xjel~ǁ~xsoouviemƵ}wpga`enzxljsĶ˵|vne``fq~|rq{Ŵ{ttzϻ~ysnknxwwľw_NFGN\p|}Ƚz{vW>-%&.>TpqՀ3Ŀ|}bC*+Dbyg}~vW8  #<\~raƿ}~qQ4  :Z}q`}phdbaa`^\Z\bn}}~nO2  9Z|td|hUF<754432239EWk}~mN1  9Z|{mxdO:*%5Jby}}lN1  9Y|z}mXA,  -D^w}}lN1 8XzyhS<&  +C]v}}lN1 6UwwfQ:$  *B]v}}lN1  2OowgQ:$  *B]v}~lM1  +Fe¾xgQ:$  *B]vlM1 $;XwDžzhR:$  *B]vlM1  /JgЊ}iR:$  *B]wmM0  %4*! +9CHJKKIF> (2:AFIJJIFB;3+$   "$$#!  !"##"!              "%(('%!   #'*++*'#  &/8AHNQRPLF=5,$  !*6AKQUVVUQJA7-%'3@N[gr|wmaUIQcumXB,bz·hM4 4NiǽkN2rS7!!9XyȳvS4̵vU8! !:[ԽzU5зwU8! ";\zSϷvT6 !:[v͵rO3$%7W׽˱iI68OuӴŦ^JMhɼзr_c~͹֪ĸåsxçȬޙӿ˲ί|áኒԻлyiv࿘{y{ӸѴh[k߽sno~ҷ«ʨ}ZPb޽unfvԺĬßsQG[Ÿ~`qŴŬmKBWδ_qīϾkJBXdvϾlLF]nֺqRMe{ͭâz\Vm鉖Ϳ yɬjcwǶ䘢˹عyqϹ}tϷ{xzᨰıwtv}յsjyƬζzrorz๾ʹմocpí˾ضk[c}ĻȹٷgRTjٶbHDTqش\>4>VtӮU4&+$)C\oy~|tdL1  !3G[n毭xfS2#  $4@GJKKJHC9*&3AO]irx{}}|ytk`SF9+  "#$$"    )2;BFIJJIFB;2*"   !"##"!    -  2     )/345542/   .AQ\beffdaZ#*/12 20.)"  0Li!5GU]ab ba_[SI?72.)" $Ciź"=[w 엒}qga[SH<0$ ,Q} 6\»|lZI7'0X%Jyـ»zbJ22\-Y˽uW:"3]2aǵм]<#3]5eƧztwŨ^=#3\5fԴeOJRbuǩ_=# 1Z5fΨvL42C^|ĿȪ^<" /V5fˢm@)+Ekȩ]:  +Q5fʠj<&-N|μǨW4)Lz5fɟi;&0U̶ġvL,*Ly5fɟi;'2YϾɰ׻e>%.P}5fɟi<(3Zϳ~ħ|ͪ|P1'4V 6fɟi<(3[ؾsYMLUfչ{p{ػc?0;\2 6fɟi<(3[ҳX9)&-;RqɦiiȢtM:A`N-6fɟi<(3[ϭzJ'/Krյj_oѰZCFcmC$7gɟi<(3[ΫwE! 0Sq[b׻eJKeξϊ[48gɟi<(3[ΪvC  iɟi<(3[ΪuB  8eֹcMVyžsUQhêvwΧuI5Aiɟi<(3[ΪuB 2]պcKRtžsUQhêvwֳT;Cjɟi<(3[ΪuB 1\ԺcKQrsUQhīwxڼ[@Ekɟi<(3[ΪuB  6cԹcLTusUQhīxx`BGkɟi<(3[ΪuB  ?mӶcPZ|sUQhĬxy“aCGlɟi<(3[ΪuB %IyаcUcrTQhŭyy“aCGlɟi<(3[ΪuB  0W˨b[oԿoROhŭyy`BGkɟi<(3[ΪvC  %BjŠzbc|ӹiNMgƮzz߽\@Fkɟi<(3[ΫxF$&=]ؿvemΰ`HJeƮzzٴT;Djɟi<(3[Ю|N. $0D^~Էvm|ǤzT@FcƮzzЧuI5Ajɟi<(3[ӵ^D;=GVkˮyyԼkH8AaŮzzƙg>/>iɟi<(3[zgbitֿ̮[<0=_Ůzz]6*Zwy_F̬W2  *DaƱeKϯZ4  ,FdgMϰ[5  ,GdþgNΰ[5  ,Gc~}fMϰZ5   ,Fc}{eMЯY4    ,Fc|롟zeMϬV2   #$$"  ,Fb|꟞zeN˦{Q0"%'(('%" $+4Of}̯`F@Qs÷ĸϾiQDERg~ȮaF@Rsïw^NLVi~ĭaF@Rstp|˸õhXS[l¬`F@Rs{c[fDZq_Y_n}`F@RsuZPXrԿve^bp`F@RssXMUmȳyhaeq`F@Rsu[PYpſ˺zibfr`F@Rsw^Vayŷɼzjbfr`F@Qrxb]i³|z¼yibfr`F@Qrzebop`\g}yibfrwuz`F@Qrzgdsv[JGSkyibfrxmffmz`F@Qq{gethL;8F`yibfrylc`cly`F@Pq{get_C10?Zyyibfrvnjlt~`F@Pp{get{Z=,+;Wwyibfr`E?Op{getzX;*):Vvyibfr`E?Oo{getzW:))9Vvyibfr`E?Oo{getyW9))9Vvyibfr`E?Oo{getzW:))9Vvyibfr`E?Oo{getzW:))9VvyibfraE?Oo|ifuzW:))9VvyibfrɢaF?OoliwzW:))9Vvyibfr¬aF?Oovq}zW:))9VwyibfríbF@OoIJzW:))9VwyibfsƯcG?OoŲzW:((9Vxƿyibes¼ɯbF?Nn˾µzW9((8TwyhadrŻȭ`D+ʹnT>.ȶkSBƴkXƲrdzȶɻt{]^i}̀̀̀춾˾}dM7$  (>Xr˽kM2 &9OgyaK7&  %;RjnQ8# ':Oer[E2"  #7MbukQ8# *g&5J 7kJyn,lOwQVJFy`  n  'r 3g ?BRcRckRkRocRRkRssososRsRssRRsoosRssRokRRB BRBRBBRRBRRkBRRBosRoosssRssBBRBRBRBBRBBRBRRckRcssoRRsososRsRRoRokoRRBRBBRBRBBRBRBRB BRBRRkRRkokossokRssR RBRBRBRBRBBRBBRBBRoRRoossRssococcRRBRBBRBBRBRBBRBBRBRBBRRBBRBRRkRRoRoosRsccRBRRBRBBRBBRBBRBBRBBRBBRBBRBRRcRRsRooRoRcRRcRRBBRRBBRBBRBBRBRBBRRBRRBRBRRBBRBRBBRBRRc׵RkocRocRRBRRBRRBRBBRBBRBRBBRRBRRBRBRRBR׵RssRooccRRBRBBRBRRBRBRBBRRBBRBRBRBBRBRBRRީީ׵𔄄ssooRscoRcRcRRBRBRBBRBRBBRRBBRBBRBRBBRBRBBscskoRccoRRcRRcRRBRBRRBRBRBRBR޵֥soscocRcRRcRRB׵֩ީ޵sssooRoccRcRcީ޵ީ׵sRoRRoRRoRooRoo׵ֵ޵soRsRkRRcoRoީީ׵ssooRoRRc޵޵ީ׵RsooRkRocR޵ש׵کީީokRoRR޵שש޵ששީ޵soRoBRRששש޵ߩשީ޵޵sooRosRsRocRcRR׵ssoosssooRkRRBRRssoRooRsssssssoRooRoR RoRRoRRBRRBRBRBRRBRBRBRBRBR RBRBBRRB BRBRBRBRBRBRBoRcRRBRBRRBRBRRBRRBRBRBRBRBBRBRBRBRBRBRBBRcRRoR RBRBRRBRBRBRRBBRBRBRBRBRB BRBRBRRBR RgRRBRRBBRBRRBRBRRBRBRBBRBRBRBRBRBRBBRcRoRRBRBBRRBRRBRBRBBRBBRBRBBRBRBRRBRBRBRBRBRBBRRBoRcRRgRoRRooRgRBRRBBRBRBRBRBRBRBRBRBRBBRBRBRBRBBRBRBRBBRBBRBBsRsooRgRRgRgRRBRBRRBRRBRBRBRBRRBRBBRBRBRBRB׵oRsRoRooRRgRgRgRRBRBRRBRBRRBRBRBBRBRRBRBRBRBRR׵ssooRcRgRRBRRBBRBRRBRBRRBRBBRBRBRBRBRB׵soRsRooRgR RBRBBRBBRBBRBRBRBRBRRBשsRoRRgRRBRBBRBBRsRooRRoRgRRBRBRBB޵ssRoRooRoRgRR$BީRssRoRRBRB!BީީשsooRgRBBRB$B޵sRsRoRRgRRBRBBRBBץssRoRRsRRoRRgRRBRBBRBBRBBRBsooRoRoRoRRoRoRRBRBRBBRBBRBBRoRRBRRBBRBRRBRRBBRRBRRBRBRBRBBRB BRBBRBBRBRRBBRBRRBoRBRoRRBRBRBBRBBRB BRBBRBBRBRBRoBBRBRBBRBRBRBBRBRBRBBRBBRBBRBBRBRBRRBBRBRBRBBRBBRBRBBRBBRBRBBoBRBRBRBBRBBRBRBBRBRBRBBoBRBBRB BRoBBoBBRBRoBRBBRoBRBBRoBoBRRoBBRBoBBoBRBoBoBoBoBBRBoBBRBoBoBoBBoBoBBRBBRBRBBRBBRBBRBRBRBBoBBRBoBBRBBRBoRBBRBoBoRBBRBoBoRRoRoRoRoBRBBoBRoBRRBoBRBRBBoBRRBoBRRBBoBBoRBRBRBBRBBRBoBRBRBBoBRBoBRBRBoBRRBBoBBRoBBoBBoRoBBoRRoBoBBoRBRoRBRRBRBBRRBoBRBBoBRBoBoBBRBoRBRBoRoRBoRBRoBBoRBRRBRoBRBoRRBRRBoBoRBoBoBRBoRBRBRBRRBRBoBBRBoBRBBRRBRRBoRBRRoBoBRoBoRoBRBRRBoBRBRBB!RBRRBR!RRBRoRBoRoRBRRoBRRoBRoBoRBoRRoRBRoBoRRBoRRoRBoRoRoRRoRRoRRoRBRRBRBRoBoRRoBRoBRRBoRBoRBRRoBRoBoBRoRRoRRoRBRBRBRRBRRBRoRBoRRoRBRRoBRoRRBoRBRoRRoRoRoRRoRBoBRRoRRoRRBoBoRRBoRRBRRBRRoRRoRBRoRBRoRRBoRBoRRoRoRRoRooRRoRRoRRBRR!RoRRoRRoRRoRRBRBRRoRBRoRooRRoRRoRRoRRoRRoRoRRoRoRRoRRoRRoRRoRRoRRoRoRRoRRoRRooRooRooRRoRRoRRooRo oRooR RoRRoRRoRoRRoRRoRRoRoRoRRoRsscocoocococooRooRoRRoRRoRRoRRoRoRoRRoRoRoRoRossscooRoRoRRoRRoRooRoRoRoRoRooRoRooRoRoRoRooRoRoRoRssccssococooRooRoRRoRoRoRoRoRoRoRoRoRoRooRoRoRooRogkgkggksss{{s{s{scssc{{ss{ssggkgkggkgkgsksgksskss{ksskcscccc{kkgkgkksgskskgsggkgkgkkgkggksgss{{{s{sss{ssgskgskskksksgsgkggkgkkgkggkksskss{s{{c{{s sgsgsgsgskgkgsgkggkgkgkggkgkksggksssscc{sskskgsgkkgsgsgkkgsgkkgsgsggssgkgkskss{sss{sksskskgsgkkgskgkgsgkkgksgkkgskgsgkkskss{s{{{ss؄sskgsskkskgskgskskgssgssksksskgskskgskssȽ{{{ssgssgssgskgkgksgksksgkssgssgsgssgkgkkssȽ{{sskskkskssksksgkssgkkskskskkgsskskssȽ𵘘{sssskskskgskskksskgsgkgsgskkgkgskskk󥄥{ssssssskskssksksgsgs޽ssssskȽڽ޽sss޽Ƚ{sss{{{Ƚν޽{{{ssȽs{s{޽޽Ƚ{{{s{޽ڽڽȽڽڽ{֘s{s޽ڽ޽ڽڽڽ޽ڵ{ks{ss޽ڽ޽޽{s{{ssȽ{skss{ss{s{{𥘥{ss{{s{ss{s{s{ss{s s{ss{s{s{s{{sssksskskskssksks{sksksks skskkssk ksksksksksksk{ss{ssksksskskssksskskskskskkskskskskskskks{{s{s{ss{sskskssksksksskksksksksksk ksksk{ss{sskss{s{s{ssksskkskssksksskskskkskskskskskskks{ss{sskskksskss{ss{s{sskskskkskkskskksksksskskskskskskkssk{{{{{{{sksskkskskskskskskskskskkskskskskkskskskkskkskk{{{{{{ssksksskssksksksksskskkskskskskȽ{{{{{s{{{{s{ksks{ss{ksksskskskksksskskskskssȽ{{ssks{kk{kss{s{ss{ss{ssksksskskkskskskskskȽ{{{{ss{ss{sskskkskkskksksksksksskڽ{{{s{{s{skkskkskks{{{{sskskskk޽{{{{{s{ssk#kڽ{{{{s{{skksk!kڽڽ{{kksk$k޽{{{{{s{kkskkskkȽ{{{{{{{{{skkskkskkskksk{{{{{{s{s{s{skk{s{skkskkskkskks{{{{s{s{s{ks{kkskssksskks{kss{s{k{ksk{kk{k kskkskksks{kk{ks{k{ks{{ksk{kk{kksk k{kkskk{skksskks{kk{k{kk{skk{skkskkskskskk{kkskkskk{sk{k{skk{k{k{kk{kk{k{kk{kk{k{kkk{k{k{kk{kks{kkskk{skkskskkk{kk{k kskkkks{kksk{kksk{kkskk{{kk{kkkk{kkkkkk{kkk{kkkkkkkk{kksk{kk{kk{kk{k{k{kkkk{kkk{kk{kskk{kkskk{kk{{{{{k{kkk{k{{kk{k{kkk{{kk{{kkkk{ksk{kk{kk{kk{k{kkk{kk{k{kk{{kkkkskkkk{kk{skkk{ks{k{{k{kk{{kk{kkk{kkkk{k{k{k{{k{k{kk{k{{k{k{k{{k{{kۘk{kkk{k{k{k{k{{k{kkk{kk{kk{{k{{k{k{{kk{k{k{k{{kk{k{kk{k{{k{{{k{{k{{k{{k{{k{k{k{{{k{k{{k{s{k{{{{{{{{{k{{k{k{k{{k{k{{k{k{k{sk{kks{{{{{k{k{k{{k{{k{{k{{{k{{k{{{k{k{{{{{{{{kk{{{{{{kk{{k{{k{{k{{{{{k{{k{{{k{ks{{{{{{s{{{{{{k{{{{{{{{{{{k{k{{{k{{{{{{{s{s{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{s{ {{ {{{{{{{{{{{{{s{{{{{򜘜{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{猘{{{{{{{{{{{{{{挜뵩挄񌜌󄩄 錜 􌜌 󌜜νƩ𽩩 ƽ󭌭 茜εƩƥεƩ譩ΩꜩΩƽԄ罽ƽƽƽ𭩭   !' #奜ک 䥜ƽ䜵ν奜νƩ  ΩƩ윥ƽ휥޵윥ƽ䜥蜥󜥜 霥 󵥵 穥ڵ嵥휩٥۩ܥ極𥩵ѥ򥩵񩵵襵冀橵󩵜驵 穩穩ީީ޵޵赩󵩵ީީ޵ީRcRcR RcRRcRRkRkRRkRRkRR BRcRRsokoscRcRcRkccscokossRssssssskocRkRRcRosRoRRokRsooRsossR׵ބsssRss׵޵ss׵ީ޵okBoRoRooss RRkRRosRRsoosss䥵coRkRRkRkRRoosoRsoosRss󔄄ީRcR RkRoRoo RRkRoRosRsRsssשBRBRRkRkoRRoRooRssRsRBRBRBBRRkRRcoosssscRBRBRBRBBRBRBRkRkocRkoosRooRRcRcRcR RkRRkRRkoRRkBsRssocooRsoossoccRRcRRcRRccoRoRssRsoksooRosscoRcRRcRookRRsBoRoRRkRsosRRoRRcRkRkRoRkRkRkoRooRosRRoRRcRRcocRoo RBRRgoccRoRssosoRsoRRBRBRBRBBRBRRBRRBsRBsoRoRoosRRRBRBRBBRBBRRcRRcRRoRoRRBRRBBRB BRBRRBRRokRkRRBRRBRB BRBRBRB BRBRBRBBRB BRBRBRBBRB BRBRRBRBBRBRBRBRBRBRBRBRBRBBRBRBRBBRBBRBRBBRBB RBRBRBBRBBRBRBRBRBRBRBBRBRRBRBRBBRBRBRBRBBRBRBRRBRBRRBRBBRBBRBRBRBRBRBRBBRBBRBBRBRBRBRBRRBRBRBBRBRRBRBRBRBBRBRBRBBRBRBRBRBRBRBRBBRBRBRBBRRBRBRBRBRBBRBBRBRRBRRBRRBRBRBRBRBRBRBRBRBBRBBRBRBRBBRBBRBRRBRRBRRBRRBRRBRBRRBRBRBRRBRBBRBRBRBRBRBRBBRBRRBRRBRBRBRBRRBRRBRRBRRBRRBRRBRRBRRBRBRBRBRBRBRRBRBBRBRBRRBRRBRRBRRBRRBRRBRRBRRBRRBRBBRBRBRBRBRBRBRBRBRBRRBRRBRRBRRBRRBRRBRRBRRBRRBRRBRRBRBRRBBRBRBRRBRBRRBRRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRRBRRBRBBRBBRBBRBRBRRBRBRBRRBRRBRBRRBRRBRBBRBRBRRBRBRBBRRBRBRBBRRBRRBRBRBBRRBRRBRBR R BRBRBRRBRBRBRBRRBRRBRBRRBRBRRBRRBRRBRBRBRBRBRRBRRBRRBRBBRBBRBBRBBRBRBRRBRRBR RBoRRBRBBRBRRBRBRBRBRBRBBRgRBoRRoRgRRBRBRBBRBBRBRBBRBRRBRRBRRBgRRBRRgBBRBRBRBRRBRBRRgBoRRgRgRRgRRgRgRRBBRBBRRBRRBRRBRRBRRBRBRRBRRoBRoBRRBRRBoRRBRRoBRRoBRRoRRoRRoRBRRBRRBRoRRBRRBRBBRBRoBRoBRRoBoBRRgRRoBoBRRBRgBRRBoRBoBoBoRRBBoRRoRBRRBoRBRRBoRRBRgBoRRgRRgBoRRoRoRRoRRBBRRBoBRRoBRoRBRRoRoRoBRRoRBoBoRoRRoRBoRRgRRgRoRRoRgRBRBRRBBRRoRBgRBRoRoBRRoRRoBgRRoBgoBgRgRRgRoRRoogRgRoBoBR RBRRoBRRoRoRoRRoRRgRRgRoRRoRRoRRgoRgRoRRoRogRBBRBBRRBRoRBoRRBoRRBRRoRRBoRRoRgRoRRgRRgBoRgRRgRgoRgRgRgRBRBoRBoBBoBBoRRBoRoRBRoRRoRoRBoRRgRgRoRRoRogogRgRgRoRgRRoBRRBoBRRoBRRoRBRRoBRoBRRoBRoRoRoRsRRgRgRgRRoRRoRooRogoBBoBoBRRoBRRoRRBRoBoRRoBoRRoBRoRRoBoBoBoRoRRoRoRRogoRgoRRgoRoRRBoBoRRBoRRoRoRoRRoRRoRoRoRoBoRoRoRoRgoRoRoggRgooRooRgogooRoRRoRRoRoRRoRRoRoBooRRoRoRoRoRoRoRoRgoRoogooRooRogogooRBRBoBRoRRoRRoRRoRooBoRoRRoRRoRoRoRoRoogooRogRoRgogRgooRgoRooRRoRRoRRoBooRoBoRRoRoRooRoRoogRoRoRgogoogogoogoRgogoogoRRoRoRRooRoRBRooRoRooRoRoRRgooRgRooRooRgogooBoRoRRoRoRRoRooRRoRooRRooRooRgoRgRgRgogoogoogoosoRoRoRoRRoRooRoRooRooRooRoRgRoogoogoososososRoRoRooRoRoRoRoRoRoRooRoogooRooRgoogoogoosoosossoRoRoRooRoRooRgooRoogoogoosoosRoRooRoRooRoRoRoRooRooRoososssssooRooRoogoogoosssssRRooRoRooRooRoosossssssssss sssss{{s{ss{ss gsss㥔{sss{{{{s{ssssss{{{{Ƚޘ{޽ccȽ޽ޘ{kss s{{scssڽބs{ss{scs{󵘘s{sss{ss ss{s{ss{{kskss{ss{s{{{{skskskkss{s{sksgsgskksksks{{{{sssssss{s{s{s{{{{ksc{ssss{ss{{{{sss{s{{{ck{s{{c{sss{ss{ss{{ {{{s{sssss{{s{s{s{sskss{{{sskskskskkskssksskcskc{{{sskskskkskkss{ss{s{s{{ssksskkgksgkgkgkgkgkksksskss{s{{s{ssksskskkgkkgkkgsskksksk k s{sskskskksk kskskskkgkskkgkksksskskkskskskskskskskskskkskskskkskkskskkskk skskskkskkskskskskskskksksskskskkskskskskkskskssksksskskkskkskskskskskskkskkskksksksksksskskskksksskskskskkskskskkskskskskskskskkskskskksskskskskskkskksksskssksskskskskskskskskskkskkskskskkskksksskssksskssksskskssksksksskskkskskskskskskksksskssksksksksskssksskssksskssksskssksksksksksksskskksksksskssksskssksskssksskssksskskkskskskskskskskskskssksskssksskssksskssksskssksskssksksskksksksskskssksskskskskskskskskskskskskskskskskskskskssksskskkskkskksksksskskskssksskskssksskskksksksskskskksskskskkssksskskskksskssksks s kskskssksksksksskssksksskskssksskssksksksksksskssksskskkskkskkskkskskssks{ssk{ss{ss{ss{sskss{ss{ss{kkskksksskskskskskskks{s{ss{ss{ss{ss{s{ksss{skskskkskkskskksksskss{kss{ss{ssk{sks{skksksksksskskss{s{ss{ss{s{s{ss{ks{{ss{s{s{{s{kkskk{ss{sk{ss{s{s{s{s{ssks{s{sskssks{skks{sk{ssk{ss{ss{ss{s{sskskss{skss{k{sskss{ssksskssssss{{ss{ks{s{ks{ks{s{kss{kskkskskskss{skkss{skksskskss{kkskkks{kkss{skssksks{skssk{ks{{s{kssssss{kk{skk{s{ss{s{ssk{sk{s{sk{sskkss{sks{{s{ss{ss{sksks{kks{s{ss{s{k{k{skss{sss{sk{sskk{{{{ss{{kk{ss{ss{s{ss{ks{{sks{s{s{ss{{{{{s{sss{{{sss{kkskk{sk{sk{skssk{sss{ss{k{s{{{ss{s{k{{ss{{{{{sk{kskkkkks{kssk{s{sskss{s{ss{{{{sss{{s{{{ks{kk{sk{s{{s{k{sksks{s{ksss{s{{{{ss{s{sskkkk{sk{s{ss{ksk{skssks{skkks{s{s{ssssss{kks{ks{{s{s{s{s{s{sssksss{ss{s{{{{Ҙs{{ss{s{s{{ks{{{s{ss{{{s{k{kks{s{{{s{{ks{sssssss񈘘{{{{ss{s{{{sk{sk{s{{{s{s{s{{{s{{{k{{ssss{{{{{ks{{{{{s{s{{s{{{{{{{{{{s{{{s{{{{ޔ{{{{s{s{{{{{{{{{{{{{񥔥{{{{{{{{{{{{񘥥{{{{{{ 󌜜 㭔ީƽȔƽƽΥީ ʜތ􄵄󽩩ƥ ʜ絜ƽ%$ⵄ􌵜ƽ%0񌵜󌜜  6&Х򥜜ⵜ𵜥󵜥穜ᵥ㥜ҩٵ񈩩񈵩󜩜祩񵈩񜩩ޔ񭔭񩭭RcRRkRkRokssoossooRkRkRcRocRRoRsosRoשssRsRosRkRcsBocsooRs׵׵׵׵׵׵ש޵׵שީ޵֥޵ީ޵ꌩ޵׵sש޾ש޵sީשީשsoRk޵ީ޵sokoRRש׵sRRcRީީީשީשsokocRRש׵֩׵soRoRcss֥έssooRsRosRocRosssֵששRoosRoosRss׵޵׵soosk׵ֵ׵޵޵Rֵ֩޵׵׵焔޵޵  ׵RsRssossRssRoss sss RooRsoRsRsRoRcRRcRcRooRoosssssssssoscRssossokRoRcRRcRRkRoosossoRssskBosoossRkRoRkRRcRocooscooRRoRoRosossRokRkssRoosssoRRcRcRcRcRoRcoRccoRRoRRBRRBRBRRcRRkRcRRoRoRRcRRcRRBRqRcRcRRBRBRRBRBRRBRRocogocogRRBRRBRBRBRBRBRRBRRBRRBRRcRRcR RBRBRBRBR RBRRBRBRBRBRBBRBRRBRBRBR.RBRBBRRBRBBR"RgRgRgRRBRRBR!RgRRcRRBRRgRRgRRgRRgRRcRRcRRcRRcRcRcRRBRRBRRgRRoRRgRRgRRgRRgRgRgRRgRRgRRgRRgBRRBRRBRRBgR RBRRgRRgRRgRgRRgRgRRgRgRgRgg RgRRgRgRRgRRgRgRgRRgRcRRgRRgoRgRRgRgoRgRRgRRgR RgRRgRRgRRgRgRRgRRgRgRRgoRRgRRgRgRRgoRgcgRRgRRgRRgRRgRgRRgRgRRoRRgRgRRgRgRoRRoRRgRgRcocRRgRRggRgRRgRRgRRgRgRRgRgRgRgRRgRogRgRgRRgoRRgogRogRRcsRgsRRgRRgRRgRgRRgRgRgRgRRgRRggRoRggoRRgRgRgoRRgoRRoRgRgocRscRsRgRRgRRoRgRgRRgRRgRgRRoRgRgoRgRRgRRoRgoRgRgogRgoccocgoRoccoccRRogRgRgRRoRoRoRogRgRgRRgRgRRgRggRggoggRoRocogRococRocRcRoccoRoogRRgRRgRoRRgRgRRgRgRogogRogRogRoRoRgRocgRocRoRoccoccsoococosRRgRRoRRgRgoRgRgoRgoRgRRoRgoRgRoccgocogcoogocogocooRocoRccoccosRRgRRgRRoRRgRgRRoRRgogoRgRcgogRooRcoRooRococococcoscocoococoocoRgRRgRRgRRggRRogRgRoogoogoccgococcococococoocgocoocscscoscgRgRoRgRgRggRoggRgogRoRgoRoocRoocoococoococococoocooscscsscsRgRoRoRgoRgRgRoRgRgoggoococcooccocoococoocscscscssocscssgoRgoRoRgRogRggogoRgRococoocoococoocscococscssocsscsscskscsRogRogRoogRogoRgRggogocococcoccoocococococscscscososoossogRoRRogRRogRgRogoRgRgRococoococcocococococokscoososcsscssRooRoggRoggRogogRgoogogoRoccocoocococosocococsocscssocsossossooRgogRogoogooRooggogogoogogoocoocsosscossossossos sgoRgoogogRoRggoggoogoocsoocsossoossossossossRgoogoogoosoogoocogoosoososossososssssoogogRogoosgoosoosossosssssssogosoososossssssssssoososososossssssssssssssssssoossssssss sssssssssssssssssssssssssssssssssssss ssssssssssss sssssssssssssss sssssssssڭssssssss{s{s{c{sssssccsڽ{{{{ckc{ȽȽȽȽڽȽȽ޽ڽȽڽڽڽ޽罽޽ڽ޽Ƚ޾ڽ޽ڽڽڽڽs{޽޽{ss{sȽ{ss{sssڽ{ssȽڽȽssصcsscs{ڽν{cs{Ƚ޽Ƚ{ȽνȽ޽޽{޽ȽȽ޽޽ν  Ƚ{{{{  {{{{{s{ss{{{{򥘥{ccc{{sssss{{{{kc{{{{s{ss{ss{s륄s{ssssccs{{{ss{{{s{sssss{sskssksksss{s{{{sss{{sssskss{s[sssskskssksksskssssksskgksksksksksskssksskssss{{s skgkgsskksksks skssksgsksgsgkgsgssksksks.sgkskksskskgs!s{ssssgssgs!ssssskssssssssssssssssssssksskss{s{ss{ss{sssssssssssssskssksskssks skss{ss{s{sss{sss{s{s{ss{ss{ss{sssss{ss{s{sss{s{sss{{s s{s{ss{ss{ss{s{s{ss{ss{ssss{ss{ss{ss{s{ss{s{sss{ss{ss{ss{{s{ssssss{ss{s{{ss{{s{s{ss{{s{ss{{ss{s{ss{{ssssss{{ss{s{sss{ss{s{s{{s{ss{Әss{{sssss{{{{s{s{ss{{s{s{{ss{{{s{{ssss{{ss{{{sssss{{s{{ss{{sss{{ssss{s{{ss{{s{{ss{{s{{ssss{s{ss{ss{s{{s{{ssss{s{s{s{s{{s{ss{{{sss{ss{ss{s{ss{s{ss{{{{{{ssĄ{{s{s{s{{⥔sss{{{{넘{{{ss{{ǥss{s{{s{{s{ss{{{ۈs󘔔s{s䘈 {s{{륔{񜘜꥔蘥蔘򥔔򔘜򭔜ʜלŜٽ󄜄굄쭩νεƭ޾νƽƩƽƽ޵νννƽνƽƽƽƽεƥ穩εƽꩽƽ    򵭩򭩭ݭᵌ[/{{" 85!!򵈜 򈵈∵ 􈵜㈵䈜ߵө﵈Č⭔댩ǭ휩ۈ󩔔䩈 뭔񄩄ꭔ詭蔩{򭔔򔩄􄭄੭ʄ{ׄ{ń{{{⩄{׭sskRsRRBRBB-B1BB1BB1BB1BB1B1BJB1JBBֵsRRcBB1BB1JBB1B B1BB1B޵skRRBRB,BJssRoRRBRBRBRB$B-BBJ1BscokokRBokRR'B1BB1BBsRkRRsRR$B1BB1BBRsRR6BRcRRBRBRB0BRBRBRB5BcRRBRRBRBRBRRBBRBRB BRBBRcR RBRBRBRBR RBRRBRBBRBRBRRcR RBRRBRBRRBRRBRBRBRRBRBRBBRBRBRRBRRBRRcRcRRcRRcRRcRRZR RcRcRosokososssososscRcRcRRcRRcRRcRRcRcRRcRcRcRcRRsRsRskokocRccRccRccoRsosocskokoRccRssssRsssssssosoksoRcosRsRsoRosoosRsRooss ssookcRRsRkRosRkRRkRRkRkRRkRRsRosssRRcsRoRsRkRRcRRkRcoRcRRsssRooRkokRRkssRokRsoRcRRskRkRooRocsRkooRRoRcRsooRkRRBRBRBRBRBRBRBRBBRRokRRkRRcRRRoocRRkRRcRRBRBBRRBRRBRRcRRcRRcRcRRcoBR RBRRBRRBRBRBRRBRRcRRcRRcRRBR RcRRcRRcRRcRRcRcRcRRcRcRBBRRBRBRBBRRBRBBRBRBRBRcRRcRRcRRcRRcRRcRRcRRcRBBRBRBBRBRBRRBRBRRBRRBRBBRRBRRcRRcRRcRcRRcRRcRRBRBRBBRBRBRBRBBRBRBRRBBRRBRRBRRBRBRBRRcRRcRRcRRcRRcRcRcBBRBRRBRBBRBBRBRBBRBBRRBRRBRRBRRBRBRBRcRRcRRcRcRcRRcRcRRcRRBBRBRBRBRRBRBRBRRBRRBBRBRRBRBRBRcRRBRcRRcRRgRRcRRBRRBRRBRBRBRBRRBRRBRRBRRBRRBRcRRBRcRRcRccRcRRgRggRRgRRBRRBRRBRRBRRBRcRRBcRRcRBcRRcRcRRccRRgRggcgoRggccRRgRRcRgRcRRcRRcRRcRRcRRBcRRcRRcRRcRcRcRgRcRggcoRoRcRgoRoRRgRRgRgRRcRcRRcRRcRcRcRRcRRcRRcRRgRRgRgccogRoRocRccRocsRccgRRgRgRRggRgRRgRRgRRcRcRRgRRgRggsRococRogccRccoccRccRocRgRgRgRgcRRgRggRggRggRgRgRggRgRsRgRcRcgcoRcgcocococoRccoccoRcogcRgRgRcgcgRgRccRgoRRgRgRgRgRggRggcggocoRocoRcoRccoRsoccoccsccRRgRocRoRoRocgRoggRgscococoggcoogoococcRoccoccoccoccoccococogogRogccgcococgRgocoRoccocoocRoccRoccosccooccooscsccsccsscscsccRgoRcoocoRocooccoccoRccoscocscoccocsccssccocscskssoksosoococcoccRccRccocoRscoccocosococcococscsocscssksscsscscsocscscocoocococosooccoscocoocsccscsscosscscsscsskscscsscs sococcocococcococoscscsscsscsscsscocoocscscsscsscsscs#scococsscscscssossos"ss scssosssscsss ss sssssssssssssssssssssssssss sssssssssssssss ssssssssssss sssssssss sssss ssssssssssss󔄄sssssssssssssssssssssssssss򔄄ssssssssssssss딌sssssssݭsss򭌄񌔌s߭ssss攄ssㄭsȌsߔs񄭭ss򄭭׌ȵ{sssgsggZgZggZggZggZggZgZgZgZZgg罽cssggZggZgZg gZggZg޽{ssgsg,gZڵsssgsgsgsg$gZggZZg{{sk{ssgkg$gZggZgg{{scssgkggZggZgg{{sskggkg/gsssgkgsgsg0gsgsgsgkgkggkkg-gssgssgsgsgssgksgsgkgkgkgkgkgkgkgsggkggk{ss sgsgsgsgs skssgsggkggkggkgsgsksss sgsskgssgssgssgsgsgssgskskkgskskssgssgssssssssssscs sss{ssssssssssssssssss{{{{{{{s{{ss{c{{{{{{{ {ss{sc{{ss{ss{s{ss{sscsc{{{s{{ssss{s{ss{s{s{{ss{{{{ss{{ss{sss{{sksgsgsgsgsgsgsgkss{ss{ssss{s{{ssssgsgkssgssgsssssssssks sgssgssgsgsgssgssssssssgs ssssssssssssssskkssgsgsggssgsggsgsgsgsssssssssssssssskgsgsgkgkgsgsgssgsgssgssgsgkssgsssssssssssssgsgsgkgsgsksgsgkgsksgssggssgssgssgsgsgsssssssssssskksgsskskggskgsgsggskgssgssgssgssgsgsgssssssssssssssgksgsgsgssgsksgssgssggsgssgsgsgsssgkssssssssssgssgssgsgsgsgssgssgssgssgssgsssgssssssssssssgssgssgssgssgsssgsssgssssssss턈sssssssssssssssssgssssssssssssssssssssssssssssssssssssssssss{s{s{{s{ssssssssssssssss☄{ss{s{s{s{{sssssss{{sssss{s{{s{s{s{sssssss{ssssssss툄{sׄss{sss{{s{s{݄᥄{섘􄥄􄥔ꄘc   󘔔嘔 䘔 ☜И Д͘ڥҵϘ՜𽘽襽򘽽Ƚƽ{{εƽ{ƽ,{罽${-,/0󌜌.{ 񌜜 { 挜򜌜󌜌󄩄򩜔 򵜄񜩌򌜌􌜜 􌜜{{ 댜쌜팜򌜜􌜜쌜􌜌쌜팈匜挜눜󔜩⩌툌׌݌ᭌ쌩􌭌􌭔ꌩ   󩔔婔 䩔 ⩄Щ Ք{{ͩ{{ڭ{{{{󩄩{{{{{ש{ϩ{{{{{{˩{{{{{{{҄{{{{{{{Մ{{{{{{{{{{{{{{{{{{{{{{{{򩌌{{{{{{{1BB1BBJB1BJB-B1BBRBBRB1JB-B11BB11BBJB-B*BR1BB1BBJ1BBJ1B1BBJ1J1B#BRBRZRBJBBR1BB1BB1B%BRBBRBRR1BB1B%BRBBRBRBRBBRBRBB1B&BRBRRBRBBRBRB)BRBRBRBBRBRRZRBRB+BRBRBRRcRcckocscB#BRBRBRRBRBRBBRkRoossBBRBRBRBRBRBRBRBRB BRBRBBRBRBRRkRckossBZRBRBRBBRBBRBRRBR RBRBRRBRRcRcRcRcRRkRRssRRBRRBRBRBcBBRRBRBRBRBRBRRBRRcRRcRRkBRcRRBcRRBRRBRBRRBcBRcRRBRRBRRcRRcRcRRk RcRcRRBRRBRRBRRBRRBRcR RcRRcRcRocRRcRcRcRRcR RBRRBRRcRcRRcRkRRcRRcRRcRRBRRcRcRcRRcRcRRcRRcRRcRRcRcRcRccRccRcRRcRRBRRcRcRRcRRcRRkRRcR&RcRRcRcRRcRRcRRcRRcRRcRRcRcRcRRcRcRcRcRRcRcRRcRcRRcRRcRRcRRcRcRcRcRRcRcRcRcRcRcRcRcRRcRRcRcRcRRcRcRRcRRcRRcRRcR RcRcRccRcRRcRcRRcRccsRocsRRcRRcRRcRcRRcRcRcRcRRcRcRccRcRcRcRRcRcRccoRoRoocssRcRRcRRcRRcRcRcRcRcRcRcRRcRRcRRcRcRcRccRccRcRRcRcRRkRRcRRcR RcRRcRRcRcRcRcRcRRcRRcRccRccRccRokckRcRcRRcRRcRcRcRcRcRcRccRccRccRcRcRcRRcRccRccRcRccRccRcRRcRcRcRcRccRcRcRccRccRccRRccRRcRccRccRcRcRccRccoRcRcRcoRsccRcRRcRcRcRccRccRccRccRcRcRcoRccoRccRcRRcRccRcoRRcRcRRcRcRRcRccRRccRoccRccRcRocRRcRoccsRocRoccoRccRgRgRcgRcRccRccRsRRocRoccRoRoccRoccsRRccRcRRcRcRocRcokgccoccRgccoRoRcocoRcoccRccRcoRoRccRoRcRcoRRccRccRccRcoRcRccoRcoRccoRcRsRcoRcococcoRccoccRsccoRccoRcoRccoRoccococcRoRocRccsRocRoccRoccoRoccRocsRocRccRcRccRcRocoRoccRoccRccoccscRococcRocRccRcRccRRccRsRoccRsRoccRcRRcoRcRccoRRccRccRcRcocRccRccRcRcRRccRcRccocsccRsccoRcoRcRscRcoRsccoRccoRccoccsccRccggcoccscocoococcocRoccocRsRoccoccoccoccococ coccoccoccocsscscscoscsscoocoscsscoocossccoccococcocococococcoccococsocssocsscsscsscssosscssoscocscococscsoocscscscsscsscspssss0sssssss sssssssssssssՄssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss ssssssssssssssssss ssssssssssssꔄssssꭄsssssssޭssssssssssssssssss쌄sssssssssׄs씌딭񄭄󔭔 * ZggZggZgZgZgZgZggsggsgZZgZgZZggZZggZgZg*gsZggZggZgZgZggZZ$gsgscsgZggJZggZggZg%gsggsgssZggZg%gsggsgsgsggsgsggZg&gsgssgsggsgsg)gsgsgsggsgsscsgsg&gkggsgsgsss{g#gsksgssgsgsggs{skkgsgsksksksksgsgsg gsgsggsgsgss{s{cgcsksgsggsggsgssks sgsgssgsssssss{sssgssgsgsgkgssgsgsgsgsgssgssssss{ksssgssgssgsgsskgsssgssgsssssss{ sssskssgssgssksskss ssssssssssss sgssgsssss{{ssssssssksssssssss{sssssssssssssssksssssssss{{ss&ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss{sssssssss ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss{sssss{sssss sssssssssss{sssss{{sssssssssssssssssssssss{sss{sssssssssss{sssss{{s{ssssssss{{{{s{s{sss{ss{sssssssss{s{s{ssssssssssss{ssssssssssssssss{{ssssssssssss{ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss蘄sssssssss񔄘sss 󘄔ꄘ󘄘蘔 '0+ 򔘔ݘ뜘٘򔘔՜񥜘襭蘜֘񥘭񽥽򵽵阽񘽽򵽭𥭽 {{{{*{{{{${{1),){&$ {{{匜{{{{{{{{{{ 򌜌{{{{ 􌜌{{ {{{{{{{{ {{{{{{{{{{{{{{쌜猜 򌜌ꌜ蜌 󌜜𜌌󌜌򜌌ߜ蜌񩜌䔜뜌񜩜윩詌񔌩 󩌔ꌩ󩌩詔 '0+ 򔩔ݩ넩٩򔩔Մ{񭄩譔{{詄{{{{뭩{ʭ{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{s{{򽌽{{{{{{{{{{{{{{驌񩌌{򽌔{{플 Rks޽Rkos 󭔥ީcRkRkoosssossssssokcococsooss򥭵שRRkRRcRcoR RcRRkRsocos޵BRRcRRcR RcRRcRRcRRcRRkRokssRBRZBBRBRRBRRBRRBRBBRRBRRcRRcRRcRkRRkRocsBRBRRBRRBRBRBRRBRRBRBRRBRcRRBRBRBRRcRRcokRkss⭥skcRcRRcRRcRBRBRZRcRRcRRcRRcRcRcRRccssR딄RRssckRcRRkRkRcRRcRRcRcRcRcRRkRossRss sckocRocRcRkRRkRRoksRkossssssRsoskRcskokcckRRcRkRksRosssokoRsococskoossssssoRsoRckRRkRRkosssRssssoossoBokoossRskssRosokcRoccRoss RcsRoRRkRkosskoscsRoosksRsRRRssRsskocoBkRckkoRRoRRssRsssosRsR RcRkRskoosscsscoccRcRRcRoRksRosשRkRkRoRRcRRcRcRoRokoossީR RcRcRccRcoRcoksRs޵RccRcRRcRcRRccsoosoksssץޥccRocsccoccRkRkRoRsީcosssssss答ֵsokokRs ss饭׵׽ֵ޵RkoRoRockRccocoRsokscssЩֵֵccRcRckRokocRcRogRRkRosRococssssRcRoccRcRRcRcRcRcsRokokocokoscoossssccRcRcRccRccRcoRccRcRcRcookooscssoosoossosssoRccRcRRcRRcRcRRccRRcoRccsoRcoRsokokokcocsokssssssssRcococcRccRcRccRRccRokRkcossksosssscococssoscoccoRcsRocRRcsRcocoss┄Rckokokkskssocokococcsococosss觔ocoRcooscssosossocscssssssscRccockosscssossossosossossossssssoccsccocockkccRokocsosckoscscosccokccoccocoos sosccokcskoccoococcgoccRckckRcoRocoocsccoccococcococscsoccoccsccscocococcocsococsccRcckocoRcocococcocscsscsscoccscococscscoccoc cscococcsccoccscssssockscsccocsccoscooccsosscscscscscscoccossssscsscsscscsscscsosoccsscsscsccscscsscssssssssss sosscscsscsscsscssssossocsoscsscssoscscsscocsscocsosocscscs sssscsscsscscosscosscscscsscosscos)scsscssssssss*sssssssssssssss&sssssssssssssssssssssssssss 򌄧ssssssssss񭄔ssssssssڌssssssssssssssssssssҭssssτssssssssssssssss֔sssssss𔭄ҽ ֽֽֽ򄭭ννννν   νڧν ννƽννs{{cs{ s{{씘{򽵽ss{ssss s{s{{c޽gsssss ssssssss{{s{sgscggsgssgssgssgsggssgssssss{{s{{sgsgssgssgsgsgssgssgsgssgsssgsgsgssss{{{c{ssssssgsgscsssssssssss{뵘{{{sss{s{ssssssssss{s{ c{sss{ss{ss{{{{{{{{{sss{{{{sc{c{{{ss{ss{c{k{cs{ccccsc{s{c {csss{c{s{{{{{{{k{s{{sss{c{ { ss{s{c sssss{c{νν{{sssssss{cs sss{s{{޽sssssss{Ƚ޽s{s{s{߽ڽބc{{{ccc齵Ƚνν޽s{ss{{sc{ڽ׵ڵνss{{{{ss{{scs{s{ssssss{{{sssssss{{{ᔘsssssss{s{sssהss{{{{sssssss{{c{攥sss{{ⵘs{{{{{c{觵sߔc㵧s{cccҥ{{s{c{{ {{수s{{{s򘄘s{s {ᘔꔘ鄔cc򄔔󄘄 )*蘔&֜ͭΧΧνΧ ν쭽νΧ觽θθ굥 ν 󭽥νννν٧νννννννννννθޭννννθθޥʜ 씩ƽޜ ތ Ȝ{{ƽƌ猜{ε{󌜌뽩޵ ƽΩ񭔭𵔩􌜄󄩩󵩩䥩 ޵ƽ􄩌 ƽΜ 􌜄ΥΥȵʵʜ ޜʌƵތƽ޵ꔩƽȥΥεȜƽεενΌƽƽ霌쩜ᔩ򌜌ה圌攭⽩觽ߔ㽧ҭ 숩򩌩Ԝ ᩔꔩ錔 򌔔󌩌 )*詔&􄔔ք{{{{{{{{ᩄ{{{멄{੔{{{{{{{{{{{{{{{{{{{{{{섩{{挔{{{{{{ބ{ҥ{{{ 씌{{{觌{{{{{ {{s {{{٧{kk׵ީ޵޵ֵscsoo޵שscskoRkRkRީשsocscssoRkRoRRkRkRRީީsoRoRkRoRoRRkcRRkRRcRcީ׵skokRkRkRRkR Rީ޵׵soRsooRcckRcRcRRcRcRR ޵שsoRokRkRkRcRcRRcR׵ש׵׵ץ׵sssosocRccRcRR ׵sRoskooRsRoccץsRsRsookRssssssokossss׵޵׵׵שީ޵ީ޵޵שש׵ީީ޵֩׵޵ީ޵ީֵ׵ީֵֵ׵ֵֵֵֵ֭׵ބ ݥ׵שֽ׵ֵֵ֥s޵޵򵥵׵ֵֵֵֵ鄔򽥭sssssssossssssssssoscssossosssssossssssococcskocoocococsoocscocoocookocsssssss skokocsocookocoocsoococskocococoo ssssssssssscoococokocosRkookokossssssssssss sksoscosossokokokocoossssssssssss sossosskoocsoscocsscsssssssssoscssosscsskossokssoscscosossssssossosssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssߧsss픭ꭄs󧔭ssʭs˭έֽ֭sssssֽֽҽֽssssֽֽֽ֭諒ֽֽ孽ֽֽֽ ֽֽֽֽֽֽֽ޽ֽֽ νֽֽֽֽֽ ֽֽֽֽֽνֽֽֽνֽνֽؽֽֽֽνֽƽֽֽֽν ֽ޽ֽֽֽνƽƽνֽν罽νֽֽֽƽֽֽֽνֽ νֽȽ޽޽ڽ޽յν{s{s{sڽ򘄔s{ss{{sڽs{{ssss{{{ss{sssڽȽڽ{{s{s{{ss{s s޽Ƚc{s{ss{sssss ޽ڽc{{{s{sssssȽȽȽڽȽڽνȽ{sssȽcs{{sȽ{s{{ {Ƚ޽νȽȽ޽޽޽ڽȽ޽Ƚ޽޽罵νȽȽڵڵڽȽޘ 콵νȽȽ罽޽޽Ƚڽ ڽνڵ阵νε쥘䥔Ք{{cܥc{{{{񥔥ᥘc{{{{{٘c{{{{򔘔┘ccc{򄥘cccc{{󥔥ccccژcc 옔۵ߧ赽䭵εΧν콵εεΧΧΧݵΘ𵽵ܵννε絵νεενεννεεενεΧνεεεννΧΧΧεΧννΧΧν ΧεΧΧΧ ν  Χθενθν޸θθνθ θνννν ƽƽενƽ޵ƽ詌ƽΥ νƽ򵭩 ƽΥνƽƽνƩƽƽƽƽνƽƩΥ޵ενƽƽƽεεȵʩƽƽƽƥ絽Ƶ޵ީ ƽεε絥εεεʩƧȵΩƵεεƽƧν驽ƽƽννƽƽ쭩䭔֔ܭ񭔭᭩٩򔩔┩󌭩᭔󭔭ک 쩔۽{ߧ{{轌䔽ƥƧ쌽{ƽƥĽ{ƌƽƧƌƥνƩ{ƌƥеΥ{{ȵΥ{{{ƌƥƌƥƥյƥƥƥƥ彥ƽƧƌ{  ƌ s ﵄{إk 󵥔kkkڔkss s𵔥scoccRRkR RBRBRBRocRkR RBRRBBRBRBRBRRcRBRBRBRRZRRcRcRcRRcRBRRcRRcRcRckooRRcRRcRcRcRRcRRosRossRRcRRcRossssRcRRcRcRRcRckoRsRss RkRRckocosoRssRcRRcRcRcRRcRcRkRRcRcRRcRcRcRRoRkRkokssoRsskocskokokoRokRcoosRsRsRoRkRkRkRoRokRssRssRs޵ ޵שީ޵ީ޵ޙީީ׵ש㩵ޥީש֥׵ֵ׵׵׵𔭔׵֩󄔔ssso sRsoRssssoksssssRssRcRoRoosoogoosRsRoocosRkooksRcokoRooRcRcRkokoRoRcooRcRoRoRocoRoosooRookocoRcocococssosscscskoRoocscRooRososskRksRsosooscRsRssRocokooskokookRosskooscscocRsoscsoRsoossooRsokosssscssossokocookossoosRssssssssssRsosokssssss񧭔s锭sssoossssssssssssᄔ脭쭔ֽֽֽ֭󭽥ֽ ֽֽֽֽֽֽֽֽֽֽֽֽֽֽ ֽֽs{{s sgsgsks{{s sgssggsgsgsgsssgsgsgsscsssssssgssssss{ssssssssss{cssssscsssssss{ssc s{s{c{sssssssss{{ssssss{sss{{{c{{{{{s{{{ss{{s{{{{޽ ޽ڽڽ޽޽սڽȽڽڽ޽ڽ罽ȽȽȽȽȽڵ󘵵 {{{{{{{ۥssc{{{s{ss{{{{s{{{{{s{{{{{{{c{{{s򔥄{{s{c{{{{쥄{{{{{{{{{cc񧵵ν浭νε菱ΧΧ󥘘Χ씥Χ菱νεΧ蘭νεεΧεεΧνεΧννννεΧν ε ε  {{ 脵ԌƩƽƽ ενƽεƽƽε󩽽ƽƽƽ ۭٵ𵩭򔭌쭌صƽƽ񧽽ƧƧ潔ƧƥƧƧ{ﭩ󭩩씭{ﭩƥƥƥ詔ƥƧƽƥƥƥƽƥƧƥƥ  cssosoocooRoRoRoRoRRooRooRoRooRoRooRooRooRoRooRoRoRooscscocooRoRooRoRooRoRoRoRoRRoRoRooRooRocooRooRoRRooRoRoRRoRooRooRooRoRo ocococoRoRRoRRoRRooRooRRoRRoRooRooRRoRRoRooRo oRoocooRooRooRooRoRoRooRooRoRRoRRooRooRoRooRoRooRo oRoRcRRoRoRooRooRooRoRoRoRooRooRooRoRooRooRooRoocRooRoocoococooRoocoocococoRoRoococoocoocoococoocoocoocoocoocooco oRooRcooRoocoocoocoocoocoocoocoocoocoocoosoRooRocooRoRoocoocoococoococooscocoocoocoocoocoocoosscssosocsosoossoocoocoococsoscoocoocoocsooscssoos ssssRoRoocoocoocococoocoocoocoocoococoocscoos㔄soRoocRoRooRoRooRooRooRoocooco os댄ssssooRoRococooRooRoocoocoococoocoocoocs ssssscoocooRocococoocoocoocoosoos ssssssoocooRococoocoocoocoocococooooossssጄsssssssoRooRcocoocoocoocoocoooocococoossssssscocoRooococococooRocoooooossssssssocoRocoRocoRooocooooooosƄsssooRoRocoRccococoocooosssۄcccJsRRooooocooss򄔄ssccoRooooossssss׵֥os oss鄽sRRRooooss֥ ooss𭔔שosss彄֩֩sssڽsss֩׵׵oss܄ss׵ֵԔs֥֔ ㄽ֩֩凜𔭽ֽ֭֩֩􄽭驽ֽ֥֥֭֔􄽄󽔽ֽֽ֭֭֩֩֔֔魽ֵֽֽֽֽֽֽֽֽ֥֭֩֩֔७ֵֵֵֵֵֵֵֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֥֭֭֭֭֭֭֭֭֭֭֩ ֵֵֵֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֭֭֭֭֭֭֭֭֩֩ ֵֵֽֽֽֽֽֽֽֽֽֽ֥֥֭֭֭֭ ֽֽֽֽֽֽֽֽνֵֵֵֽֽֽֽֽֽֽֽֽֽ֭֭ޥֽֽֽֽ֥֥֭֔֔ƽֽֽֽֽֽֽ֔֔֔νֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֥֭֭֭֩򽭽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֥֥ ֽֽֽֽֽֽֽƽֽֽֽֽֽֽֽ֥֔ƽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֭ ƽֽƽֽֽֽֽֽֽֽֽֽֽֽֽ֥ƽֽֽֽֽֽֽֽֽֽֽֽƽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽνֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽνֽֽֽֽֽֽ򌘌{{{{{{{{{{{{{{{{{{{{{{{{{{{ 㜘{{{{{{ 񌘘{{{{{{{{{{{ {{{{{{{{{ {􌘘 쌘󜘘㵘{  򌘜 𘥘𜘜᭘ߜƘۘΘs{򘵘ΘΥνսսΘΥȽڽڽεεεڽս εεεεεڵڽս{򘵵εε 𽵵ڽڵڽΥΘΘΘΘΘεΘΥΥεΥΘεȽȽڵεܘεεεεΥενڽȽԵεεεεεεΘΘεν罽յ εεεεΘΘΘΘεڽڵڵڽڵオνννεεεενսڽεεενεսννεεΘΘενڵڽεεεενεεεεڽ絵ν絵ννννڽννཱུε罽ڽ罵ννε ν 絵εεν θνεεεεεννθνεενεννννν θνννενν ννννννννννν θξ筭ީީީީީީީީީީީީީ޵ީީީީ޵ީ޵ީީ ީީ޵ީީ޵޵ީ޵޵ީީ ީީީީީީީީ ީީ򵩩ީީީީީީީީީ絩ީީީީ穩穩穩穩穩 ީީ穩穩穩穩ީީ穩ީީ穩穩穩穩筩穩筩穩筩穭 ީީ穩穩穩穩穩穩㽩ީ絩ީީީީީީ 穭ީީީީ穩穩穩 穩ީ穩穩穭 𩭩穩ީ穩穩罩穭ީ޽穩穩穩穽穽罩筽罽罩ީ穽罩穽穩޽罩޽޽穽޽罩ƩƩ޽ƩƩ罩޽罩穽穽罽۩罽ƭ޽ƩƩ罩򩽩ƽ޽ƽ੽ƽƽƽƽƽƽƽ 驥޽޽ƵƩ򩽽 ƽ޵ƽ奩޵ʵȵڥ޵ʵܩεεԽƽƽƽƵν ƥƥ㩥ενƽƽƽƽƥƽ𽌥ƽƵƵƵƽƽƽƵƵƥƽ󥽥ƥʵʵεƵƽƽƵ錥絵絽Ƶ𥵵εƽε祽εε絥޵ƵΥ絽絵ενƵƥε 絵εεΥ꽵 ߵȵεƵƵ浥εε Ƶ񵥵εεεε𵄵k쵽ƵƵƵkƵƥƥ絵ƵƵ󵥵񔵥オƵ񥵵򥽥ƥƥkkkƽƥƥƵƥƵ ƥƥƥƥk𵥵ƥƥkƥ굄ƵƵ kkƥƥƵƥƥƥƥƥkƥ󵥵k뵥Ƶڵƥƥ ܵk򵥥oRooRooRoo ssssssssso sssssssssssoossssssssssss osossosssssssssss so o sssssssssssssssssoosoo ssssssssssssssssoosos ssssssssssssssos ssssssssssssssssssssssss ssꭄssssssssss sss佄ssssss׽ssssssss씄ssssss񔭔ssssssՔssssssssssssssssss󭔭sssʽossssssssss݄ssǔssssss􄔄sssꄽڔsss꽔򧽭sǔsssބs픭sss什΄󧭽ℽحssᄽ ㄽ 攭 󭔭씭ֽֽֽ񭽽 ֽֽֽֽֽֽ֔罽ֽֽ.ֽֽֽֽֽֽ)ֽֽֽֽֽֽֽ ֽ ֽֽֽֽ޽ֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽ޽ֽֽֽֽƽֽֽֽƽֽֽֽֽ޽޽޽޽ ׽޽ֽֽֽֽֽֽֽֽ ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ׽νֽֽֽ޽ֽ ֽֽֽֽֽֽֽֽ ֽνֽֽֽֽֽֽֽֽֽ ֽֽֽνֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽֽ޽ֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽ׽ֽ޽׽׽׽ֽֽֽֽֽֽ ׽ֵֵֵֵֵֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ׵ֵֵֽֽ ׽ֵֵֵֽ֭֩ ֵֽ焌ssֵֽֽֽ{{{{{k{{{딥딥딥򥜥 򘥘 襘 󜘥  굜 Θ꽘 ΘΥΘ쵘ΥΥΥ񵽵յΘΘΘΘ㽵ΘΘΘݘΘννǵεΥεΘΘΘΘΘΘΘνڵΥΘΘΥΘΘενννΧΥǵΘΥνεΧννΧޘΥΘΘνΘΘεΧΧννΧννΘεεΘΘνεΧΧννΧννΧΥΘνΘΘΘΘνΘνΧνενννΧΘΘΘΘΘΘΘΘννεννΧνννΧεΘΘΘνΧννενΧννννεΘεεΧνΧνΧνΧννؽΥΘεΥνννεεννννννΘεεννννΧνΧ νεεεννΧνννννν 浽νννννΧΧν νν󽵽εεννννννννννννΧ쵽εεεννΧΧνννενννν ννννν.) ννννννθθννν θν θνννθν νν  νννννν νȽ 뵽ε絭Χ Υ{{{{{{딭딭딭򭄭 򩭩 譩 󄩭  꽄 ꌩ 䥩ץ콩񽌽ս􌽭步㌽ʥݩǽꩥڽ꥽򧥌ǽީ痢Ω੥󧌥⩥،ᩥ 㩥 潌 󌽌콌񌥥 񵥵.) ᵥ񥵭䔥sks󥵥鵔sk򵥥k󔵥s ȥs 굥ȵ𔥵sȵȥȵȵ޵𵥵򥜵ȵ k ȵȵȵȵȵȵsȵȵȵȵ祜ȵȵȵȵȵȵȵȵȵȵȵ ȵȵȵȵȵȵȵȵȵ쥵 ȵȵȵȵȵȥ ȥȥȥȵȵȵȵȵȵȵ ȵȥȵȵȵȵȵʥ򥵥ȵȵȵεεεεεȵεȵεȵȵȵȵεȵȵεεεε ȵȥεεȵȵʵȵȵεε뽌ʵεΥ ȵȵȵȵεε{{{{k{Zȵ ȵȵεε{{skkkk{s{ssssܭsssssssssssssss⭄sהss񄭄ss딄鄭프sss񌔭ؔs 넔씭픭뽧򔭔󭧽𧔭𭽭轧᭽𽭭حԭح  %ֽ+ֽ֭%ֽֽ޽ֽֽ&ֽֽֽֽֽֽֽ!ֽֽ޽޽ֽֽֽֽֽֽֽֽ޽޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ޽޽޽ֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ ֽֽֽֽ ֽֽֽֽ ֽֽ ֽֽ    ֳ׫ֵֵֵֵֵֵֵ֥֩שֵֵֵֵ֭֭֩֩׵ֵ֭׵ֵޭֽsܽ𜵜׽׵ҭ阭뵽୽쵽ΧΧεΧνﵽ򵽵νΧνν𧵭ΧννννΧννΧννννΧννΧνΧΧΧνΧΧΧννννννεൽΧνννννΧννννννؽννννννννννννννԽΧΧννΧΧνΧνΧννννؽννΧνΧνΧννννν νννννννΧνν Χνννν%ννννν+%νν&!ννννν        ȫȽ罽罜Ƚ޵Δ܌{{{{{{쌭{{׌׽{Ҕ{{{{驔{{{{뽌콌{㥧l򽌽󌧥𧽔ƌ襧ƌ쌥ጥ𥌌ཌ،Ԍ،  %+%&󵥥!ﵥ 赥ᵥ굥ݵﵥ𥵵嵥񥵥ȵȵȵ񥵥ȵȵȵȵȵȵȵȵ ȵ޵ȵȵȵȵȵȵ޵޵޵޵ȵ ȵ޵޵޵޵޵ ȵȵȵȵ ȵȵ ޵޵޵޵޵ȵȵȵ޵޵޵޵޵޵޵ʵ ȵȵȵȵ޵޵޵޵ ʵޥ޵ȵ ȵȵ޵޵޵޵޵޵޵޵޵ȵȵȵ޵޵޵޵޵޵޵޵޵޵ʵȵȵ޵޵޵޵޵޵޵ʵ޵ʵ޵ʵ޵޵޵ȵ޵޵޵޵޵ʵʵ޵޵޵޵޵޵޵޵޵ȵ޵޵޵޵޵޵޵޵޵޵ʵ޵޵ʵ޵޵ʵ޵޵޵޵޵޵޵޵޵޵޵޵޵޵ȵ޵޵޵޵޵ʵ޵޵ܵ޵ʵʵ޵޵ʵʵ޵޵ʵ޵޵޵޵޵޵޵޵ʵʵ޵޵޵޵ʵ޵ʵ޵޵޵޵ȵ޵޵޵޵޵޵޵޵޵ʵ޵޵޵޵޵޵޵޵޵޵޵޵޵޵޵ʵ޵޵޵޵ʵ޵ʵ޵޵޵޵޵޵޵޵޵޵ϵ޵ʵ޵ʵ޵޵޵ʵȵȵȵȵȵ޵޵޵޵޵޵޵޵ʵ޵ȵȵȵ޵ȵ޵޵޵ʵ޵޵ʵеȵʵȵȵ޵ʵ޵޵޵޵޵޵޵ȵʵȫȵȵ޵ȵ޵޵޵޵ȵ޵޵ȵʵȵʵ޵޵ʵʵʵȵȵεε޵ȵʵȵεʵȵεĵȵʵεȵȵȵȵʵȵ޵εεȵʵȵεʵε{εεε޽ʵ{{ȵε޵򄭄 䔭 秭 Ӕ맭཭뽭󽭽뭽񭽭 ννν ννννννν+ννν+ֽֽ罽ֽֽֽֽֽֽֽ罽罽ֽֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽֽ޽ֽֽֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ޽ֽֽ޽ֽֽ޽ֽֽֽֽֽֽֽ޽ֽֽֽ޽ֽֽֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽ۽ֽֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ ֽֽֽֽֽֽ  րޢޖހޢ嘽񭽵㵽䵽 󧽭秽ν ΧΧνννΧννννӵνννννννΧννννν맽νΧννννννννννννννννΧΧνννννΧνννννννννννΧννννννννννΧνννννννννννννννννννννννν ννννννννθ ννννθθθ+θ+νννννννννννννννννννννννν   ޢޖހޢ婌{{񔌽플{㽌佌{{{{s 󧌔秌 ӽ만ौ륌󥌥􌥥댥񌥌  ++򵥜޵륵󵥵쵥󥵭省奵譵ȵ$ȵȵȵ(ȵȵȵȵȵȵȵȵȵȵȵ ȵȵȵ޵ȵȵ ȵ޵޵޵޵ȵȵȵȵȵȵȵȵ޵ȵȵȵ޵޵޵޵ȵ޵ȵȵȵȵ޵޵޵޵ޭ޵޵ޥ޵޵޵޵ȵȵ޵޵޵޵޵޵޵޵޵޵޵޵ʵ޵޵޵޵޵޵޵޵޵޵޵޵޵޵ʵʵʵʵ޵޵޵޵޵޵޵޵޵޵ʵʵ޵޵޵ʵ޵ʵ޵޵޵޵޵޵޵޵޵޵޵޵ʵ޵޵޵޵޵ʵ޵޵޵޵޵޵ʵ޵޵޵޵޵ʵ޵޵޵ʵ޵ʵʵޥ޵޵޵ʵʵ޵޵յ޵޵ʵʵ޵ʵʵʵޥʵʵ޵޵޵ʵʵʵʵʵʵ޵ʵ޵ʵ޵޵޵޵޵޵޵޵޵ʵʵ޵޵޵ʵ޵޵ʵ޵޵޵޵޵޵޵޵޵޵޵ʵʵ޵޵޵޵ʵ޵ʵʵʵ޵޵ʵ޵ʵʵ޵޵ʵޢʵ޵޵޵޵޵ʵ޵޵޵ʵʵ޵޵޵ʵ޵޵޵ص޵޵޵޵޵޵ޖ޵޵޵޵޵޵޵޵޵ʵ޵޵ʵ޵ʵ޵ހ޵ʵ޵ʵʵ޵ʵ޵޵޵޵޵ʵޝ  󽭭𽭽𭽽𽭭񽭭ﭽνννννννννννννννν ννννννννννννννννν罽罽ֽννννֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ罽罽罽ֽֽ罽ֽֽֽ޽ֽֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽ޽ֽ޽޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽ ֽֽֽֽֽֽֽ?    ր޷ޞ  󵽵νννννννΧννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννννθθθθθθθθ θθθθθθθθνννθθθνννννννννννννννννγν ?    ޷ޞ  󽌽󥌌𥌥팥􌥌𥌌񥌌 쵥쵥𜵵쵥񥵥뜥굥ҵ񥵭𭵭 Mȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵȵ޵ȵ޵ȵȵȵȵȵȵȵ ȵ ȵ޵޵޵ȵ޵޵޵ ޵޵ȵȵȵȵȵȵ޵޵ȵ޵޵޵޵޵޵޵޵޵޵޵޵޵޵޵޵ ޵޵޵޵ʵ޵޵޵޵ʵ޵ʵʵ޵ʵ޵ʵʵʵޥʵʵʵʵʵȵ޵޵޵޵޵޵ʵʵ޵ʵ޵޵޵޵޵޵޵޵޵ʵʵ޵ʵ޵޵޵޵޵޵ʵ޵ȵʵʵ޵޵޵޵ޥޥ޵޵޵ʵʵ޵ʵʵ޵޵޵޵޵޵޵ʵޥ޵޵޵ʵ޵޵޵ʵ޵ʵ޵޵޵޵ʵʵʵʵʵʵʵ޵ʵʵʵ޵ʵ޵޵޵޵޵޵޵޷޵޵޵޵޵޵޵޵޵ʵ޵޵޵ʵ޵޵ʵ޵ʵʵޞʵʵ޵ʵ޵޵޵޵ހ ννƽνƽ4<׭&񽭭νννννννν佭νννννένν ννννννέννννννννννννννννννννννƽνƽννννέννννƽƽƽƽƽƽνƽƽνννννννƽƽνƽνƽƽƽƽƽƽνƽν ֽֽνννֽֽֽƽƽֽֽ罽罽ֽֽֽֽνֽֽνֽֽννֽֽֽֽֽֽ罽ֽνֽ νֽֽֽֽνֽֽֽֽֽֽνֽֽֽνֽֽֽֽֽֽֽֽ޽ֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽνֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ޽ֽ޽ֽֽֽֽ޽޽ֽֽֽֽֽֽֽֽ    " ֲր޿޼   6Bννθνε νννν<νννν׽ννννννννννννννννννννννννν&ννννννννννννννννννννννννννννννννννθθθθθνννννθννννθθθθθθθνθ θθθθθθνθθθθθθθθθθθθθθνθθθθθθθθθθθθθ θθνννθνθθνθ ννννννν羽νννννν νννν    " ޿޼   6Bkk <׌&񥌌􌥥䥌 kk넥kkkkkkkkkkkkkkkkkk s󄥥kkss𔥜넥 s圵䵔kssssssﵥsss򥵵򥵵 s 򥵵ȵ ȵȵȵ  ȵȵȵ 省ȵ޵ȵ޵ȵȵȵȵ"޵޵ȵ޵ȵ޵ȵȵȵ ȵ ʵʵ޵޵޵޵ȵȵ޵޵ȵȵȵȵʵ޵ʵ޵޵޵޵޵޵޵ȵ޵޵ȵޭȵޭȵȵ޵޵޵޵޵޵޵޵޵޵޵ޭ޵޵޵޵޵޵ȵ޵ʵ޵޵޵޵޵޵޵޵޵޵ʵ޵޵޵޵޵ʵ޵޵ʵ޵ʵ޵ޥʵޥ޵ʵޥ޵޵ʵʵʵʵʵʵ޵ʵ޵ʵʵʵʵʵޥʵʵ޵޵޵޵޵޵ʵ޵޵޵޵޵޵ʵ޵޵޵޵ʵ޵޵޵޵޵޵޵޵޵ʵ޵޵޵ʵ޵ʵʵʵ޵޵ʵ޵ʵʵ޵޿޵޵޵޵ʵʵ޵ʵ޵޼޵޵޵޵޵ހ6&ƽνννννννֽֽֽֽֽֽνƽννννֽֽֽֽֽֽֽνέ  ννƽνﭽֽֽέννν歽έννܽ򽭽ܭννένν轭έέέννέννννννένννννννννννννννν歽ννννένννέ𽭽νννƽνƽννννένέννƽƽƽƽνƽƽνννένννννννƽν ένννֽֽννƽννννƽννννννννֽֽֽνƽƽƽƽƽƽƽνƽֽֽֽֽֽνֽֽֽֽֽƽֽ޽ֽֽֽνֽֽֽֽֽֽνֽֽֽֽֽֽֽƽֽֽ罽ֽֽֽ罽ֽֽֽֽス޽޽ֽֽ޽ֽ罽ֽֽֽֽֽ޽ֽ޽޽ֽֽֽֽֽֽֽֽֽֽֽֽ罽ֽֽֽֽֽνֽֽ޽ֽ޽ֽֽֽֽ޽޽ֽ޽ֽ޽ֽֽ罽ֽֽֽֽֽֽֽֽֽֽֽֽ޽޽ֽֽֽֽ$ֽ޽ֽֽֽ    ֿހθθظθθθθθθνννννθννννν νννννν޽νν θν޸νννννννθννννθννθνννννννννννννννννθνννννννννννννννννννννννννννννννννννܽνννννννννννννννννθθνννννννννννννννθθθθθƸννθνννθθνθνννννννννννννθθθθνθθθννννννθθθννθνννννννθθθθθθνθνθθνννθθν轸νννννθννθ νθνθνθθθθθθθθνθθθθθθθνθνθλθννθνννννννννννννν$ν    ހk؄{kkkk焵{kk턌  kk挥ܥ򥌥܌ㄥ襌Ƅ􌥄挥𥌥kk􌥄kkkkkk茄k kk܄ssskkkkkkkk锥ss嵄ks﵄ss딥sskssssеks{sss𜵥嵥ss򥵜ss㜥sssss奵sܭȵȵ$޵޵޵ȵȵ޵޵޵޵޵ȵȵȵȵȵ޵޵޵ ȵ޵ȵȵȵ޵ʵޥޥ޵޵޵޵޵޵޵޵޵ȵȵȵ ޵޵޵޵ʵʵ޵޵޵ȵȵ ȵ޵޵ʵ޵ޥ޵޵޵޵޵޵޵޵޵ȵȵ ʵ޵޵޵޵޵ʵʵޥ޵ޥޥʵ޵޵޵ȵȵʵʵʵʵ޵޵ʵ޵ʵ޵ʵʵޥ޵޵޵ȵȵ޵޵޵޵ʵ޵޵޵޵޵޵޵޵޵޵޵޵޵޵޵޵ʵ޵ʵ޵޵޵޵޵ʵ޵ȵ޵޵ʵ޵ʵʵʵ޵ʵʵʵ޵޵ʵ޵ʵʥʵ޵޵ʵ޵ʵʵʵʵ޵ʵ޵е޵޵޵޵޵޵޵ʵ޵ʵ޵޵޵޵ʵ޵޵޵޵ʵʵ޵ʵʵʵ޵޵ހʵʵʵ޵ʵʵ޵޵޵޵޵޵޵ʵʵʵ޵ʵʵ޵޵ʵֽֽֽֽֽֽνֽֽ޽ֽֽνֽֽֽνֽֽֽֽƽ ֽƽν ƽνƽνƽν ֽννƽƽƽνννƽֽν轭ννννν뽭ννƽνέƽƽƽνέέννƽƽννέƽνƽ νννννένƽνννֽƽννννένֽƽƽνƽƽƽֽֽֽֽννֽֽֽֽֽνֽνֽֽֽννֽֽֽֽֽֽνֽֽֽֽֽֽνֽֽ޽ֽֽֽֽֽֽֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽ޽ֽֽֽֽֽֽֽֽֽ ֽ  ހθθ θ νθ νθθθθ޽θθνννννννννννννννννννννννννννννννννννθνννννθθθνθννθθθθθν νθθθννθθθθθθθνθνθθθθθθθθννθθννθννθθνννν   ހ鵥sssk{k k kkk ﵥkkkkk襌륌kkkkkk턥kk 񄥥kߵkkkkkkk䔥ꔥ赥s뵔Ԕ􄵜 ȵ ޵ȵȵȵȵ޵ȵȵ ʵʵ޵ȵȵ޵޵޵޵޵޵޵޵޵޵޵ȵȵ޵޵ޥ޵޵޵޵ȵʵʵ޵ʥ޵޵ʵ޵޵ʵ޵޵޵ޥ޵޵޵޵޵޵޵޵޵޵޵ʵʵ޵޵ʵ޵ʵʵʵ޵޵޵޵޵޵ʵ޵޵޵޵޵޵޵ހ޵޵޵޵޵޵޵޵ʵ޵ʵʵ޵޵޵޵ʵ޵ʵʵ޵޵޵޵޵ʵ޵޵޵޵޵޵޵޵ʵʵ޵ʵ޵ʵ޵ʵ޵޵ȵֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽսֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֭֭۽ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֭ ֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽֽ֥֭֭֭֭֭׽ֽ֭cRֵֵֵ֥֥֭֭֭Rckc齭ֵֵֽֽֽ֭֭ ֽ֥ckZksccsֽ֭sֽosss魧ֽ֥֥֥kcZRkZkcc{֔ssgsosos{{s{{sosss{ssg{{scZZcZcRckkRRZscc{sRs{c{ssosoos{os{oosoosos{{cs{ֵ֥֭֭R{kZRZZcZkccZZc{ccscc{c{{ss{{s{{ss{ss{c{{cckc֥֭֭RZkRZJZZcZRZccRRcckkc{cc{{c{c{cck{cc֔ZscJJZcZZJZZcJZRcZZJZkcsZZcRscc{ccRccRcckccscRccJJZJJ9JJ1JJ1JJRRJJRZ9RccRRcckRcRcRRsRRkRcRRcRFcRJ9ZJ1J J1JJZRZJJ>JJRFRRFkRRFRFRR9JJ7>>J>>1>17>JJ1J>1JR1J1J1JJRcRRJZJRcRJJRJFRFRRJ7>>1>1>1>>1>7>N17>1J1JcZJJ7JJ1J1JRJRRJRJJ1ZJJ9J9JZJJRJJ9J9JJ>>1>1>>7>>71>>J1>917>7JZ771>771J1J9JJ9JJ9>1J19JJR9JJ9J1JJ>1711>1>11>1Z1Z1JJ71171JJ791717J1>7>Z9JJRJJ711>Z)119JJ7J>717J1>7177>1177J11Z11>>7Z7717717JJ1J117977%71171JJ)17177197717>779779179717717797J97177199717%1JJ71%%91%%1)JJ771991>97717%9171911!91%J711117!71771197!7111N)J1%7%%717%!!%%!!!111!7Z79!111!!%1!!!!9%!!!!1NJ11117!!1!!!%1!1!1!1711!!1!!!%%!%!!!!!!!%%!!1!7!1%1!!%!1!!7!77!!!!!!!!!!!!!!!!%!9!!!!!!!!7!1!!!!!!!!!!1!!!!!1!!711!!!!!!!!!!!!!!!!!!1!!!!!!!!!%!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!7!!!!!!!!!!!!!!!!!!!!))7)1)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!>ννίε εεεεεΜ{ss{kενεν {kZksZ{so魧Χεένյk{ZskZkZ{ZΥνsoo{{k{o{ZZs{kkssZ{{ss{ooooooooo{罵skZsZZkZZ{{{sZZ{{߄{{{{k{罵絵sZksRRZZsZZsk{Zkk{{{{{{{k{{絽kRRZZRZZcZsZRZcZk{sZZ{s{{{s{{s{{k{{{s{{cRRZRRJRRJRcssRRskZRs{{ss{{ks{k{sskssks{ss{s_{scRRJRRBRR9RRZsRRFRRskss_skssks_kss_s_ssRRZ7FFRFF9F97FRZZ9BF9RsJR9R9RRsZsscZcsZsccsc_s_ksscR7FF9F9F9FF9F7FgJ7F9RJRZJRB7RR9R9cscsscsccJZccRcRcZccsccRcRcRFF9F9FF7FF79FFR9F9J7F7RZ779F779B9BRccRccRF9ZJRccRRcsRcRcRRJRRF97J9F9F9J9F9RJRJRR7JJ7JRR79J7J7B9F7FZRccscZ7JJFZ1JJRRcR7RF7J7R9F7J77F9J77BJJR99FF7R77)77J7RccJRJJ797757J)7JRc1J7J77J977J7F779779J797)7797797R97)77)997)75J)Rcc7)559))5J1cc77)99F977)759)7)9))!9))5Z7))7!7)7)7JJ97)!7))g1Z)57)557)75!!5)5)!!)!))!)7J79!))!)!5))!!)!)!95)!!)!!JgZ))7!!))!)!!5))!))!)!))7))!!)!)!!5)5!5!)!)!!)!!)!)5)5!!))!7!)5))!)!5!))!!)7!7)7!!)!)!!)!!)!!)!!)!!)!))!!)5!)9))!!)!)!!)!)!!7!))!)!!)!)!!)!!)! !)!!)B!!)!)!!)!7))!)!!!!)!)!!!!)!!!!)!))!!)!!))!))!!)!!))!!)!!)5)!!)! !!!!)!!!!)!!)!!)!!)!!!)!)!)!!)!!!)!!))!!! !)!!!!)!!)!!!)!)!!)!!!)!)!!))!!)!!)!!!!!!!!!!!!)!!!!!!!!)!!)!)!!!)!!)!))!))!!!!!!!!!!!)!!!!)!!!!!!!!)!!)!!!)!!!!!!!!!!!!!!!!!!!!))!!)!!!!)7!)!)!!!!!!!!!!)!!!!!))!117191)!))!!!!!!)!!!!!!!!!!!!!!!!)!))!!!)!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!)))!!!!!!!!!!!!!))))!!!!!!!!!!!!!!)!))!11))!!!!!!!!!!!!!!!!!))!))))!!!!!!!!!!)!!)!)!!))!!!!!!!!!!!!!!!!!)!))!!!!!!!!!!!!!))!))!)!!!!!!!!!!!)!!)!!!!!!!!!)!!!)!!!!!!!!!!!!)!!)!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!5!!!!!!!!!!!!!!FƵƥ掠񵥥饵ʵ絥襵󵥵եȵ極ۥȵ쥵 ȵȵȵȵȵȵƵ{򽵥ȥȵ򥵵kRBεεεƵƵkBRJ{{J饽εεε ƵƵƵRJBJZ{JRRZZ{oZZZꧥkƵƵƵƵsJRBBJBJRRc{{ZZZoZoZkkskcZoZkZZkZZccZRBBRBRBRccBBZRRcZBZcRcZZoZooZcoZcooZooZoZccRZcƵƽBcJBBRBcRRBBRcRRZRRcRccZZccZccZZcZZcRccRRcRƽBJBB9BBRBRBsRRJJcRRcRRccRcRcRRcR{ss{J99BRBB9BBR9BBRBB9BcRZBBRBZRRcRRBRRBRRcRRZRRBRR99B99R99J99J99BB99BsBRBRRBBRRcBRsRBBZBsBBcBRBBRBgRB9RB9)99)99B99B9%99BsBBgBsBBsBgJBBgBgBBR917%%9%%B%B7%911B)%B9BJ9B9B99BRBB9B9BRB99B9gBgsBB97%%B%B%B%%B%7%1)7%B9)9R99)799B9B9B9BB9B99)B99R9R9B99B99R9R99%%B%B%%7%%7B%%9B%%)7%79B77B%77B)B)R99R99R%B1)R99BR99R9)99%B7)B%B%B)B%BBJBJ997))7)997%)7)7)B%7%BR99B917))%B9))R9979%7)79B%7)77%B)77)JJB%7B7777)799J9))7%777)7)99)7)77)%77)7%77%77%)7%777B77%79%777%%77)1997%11)997%%B%%777%7%11%117111177717))%71711119171771111111797%1111111%11)11111117111117111111111171111771711111111111%1111117111111 11117111!11!!!11111!11111!11!111!11 !!1!1!1191!1!1!1!1!11!1! 1!!1!!19!111!1111!!11!!!!!19!!1!11911111!1!!!!!!!1!!!1!!!!!!191991!!!!!!!!!!!!!!1!11!!!17!1!!!!!!!1!!!!1!!19979B91!11!1!!!!!!!!!!!!111!!!1!!!!!!!!!!!!!!!!!!1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1!!!!!!!!!!!!!!!!!!!1!!!!!B!!!!!!!!!!!!B!!!!!!!BBB!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1!11!1!!!!!!!!!!!!!!!!!!!!!11911!!B!!!!!!!!!!!!!!!11199911!!!!B!!!!!!!!!!!!1111!191!!!!!!!!!!!!!!!!1!11!11!!!!!!B!!!!!!!!!1!!119!B!!!!!B!!!!!!1!11!11!!!!!!!!BB!!!!1!!!1!!!!!!!!!!!!!!!!!!!!!!1!!!!!1!!!!!!!!!!!!!!!!!1!!1!!!B!!B!!!B!!!!!!!!!1!!!!!!!!!!!!!!!!1!!!!!!!!!!!B!!!!!!!!!!!!!!!!!1!!!!!!!!!!!!!!!!!BB!!!!!!!!!!!!!!!!!!% {{{{s{s{ ֵ֭{ss{s{{s{{ss{kss ֭{{s{sso{{oo{oososo{{s ֵք{{{ossso{co{{k{kco{co{kֽ׽ֵ{ss{ssoo{{cRkccRkRkc{cc{csֽ׽s{{{{o{cs{cckRckRRkRRccҵֵֵ{{{ss{scscc{{RccRRcRRZRkFRkRkRk {sso{{cckRcR{RckRcRR9cRRcRR׽ֵֵք{{{s{{oc{ccRkRRcRFRR9JZZ99J9JJRFc׽ֵֵֽֽֽossos{{cscckRJcRRcRFR9Z99J9Z9ZFJRcRksksss{soccRcRkccRFJFJRRJJR9JJ9R9J9ZJJFR9ߵ֭{s{s{{os{{{sRZckRRc9RJ9Z119J9JZ99JJ9J1199JJ9Jֵֵ֌ssss{s{soccsccRFRRJJRZZJZZJZJ911J)JJ)JJ1J1Zքs{s{ks{s{so{{ccRRcRRcFRZ911J)JJ1JJ)JJ))J)J))Jֵsksg{{o{os{{s{o{{ccRcJcJJ9RJ9JJ9JJ)N)J))J)JJ)J)J))gg{s{{s{{s{{s{sosccRc9R9RJJZ9JJ9JJ)N)J)NJJNN1)J)Js{{sss{{cgs{{cRcRcRRJJ9J99JJ9JJ)J)J)J)1))JJNcc{{oso{{s{ccRcRRJR9JZ99Z9J11JZ9J9JJ)J)JNJNJJNJNNN{cc{cscsccRsRJZ9R9R99JJ)JJNJ)JJ)N1JJ11111NNcc{ccRccFRRckRRJRRJRJ9JJ1JJ)J)J)J)J)N1J1)J)1)NN1JNNZccRFcckRRcRccRkJcJZ9Z99R1J)J)JJ)JJNN11N1J1JNJccRRcRJRJRRcRRcJRRcJR91J9JJ)R)JJ)JJ)N111J1)111J1J)JRRJFRJFJ9J9J9J9JJ9J91JJ9J1J1))J)1N1N11J111JJN)1JJZZR9JR9RJZJJ9JJ9J9J19J)JJ)JJN1NNN1111JJ)NJJN9J9JJ9J9J9JZ99JJN)J1JJ1NJ11111J11J1 1JN9J17J9J9JJ1JJ)JJ1N)1)JNJJJJ11111111111111J17%1%7JJ)NJ)NJJNJJNN1111111>199191111J17!%1)NN)N1)JJNNN1J11111111 19>>1>9>9919!%7!71JJ)N)JJN111111111111>99>>%91%!%!JNNN11N111111111!>>119199>199%911>9!!!7!11NJ11F1>1>9%>%!!1191>99>J19>19>>!%!!%1 1119>%%1>119%!!%>9>>1>>sJ!%)!!9!!!! 19119>>91>19>>9>>%%!%11>>11R19!!!!%1>11911!199>1>>9>>9>9%!%!!1>>9>99>RJ!Z7!!!!!%1911>>%!!91>9>9%!%%>1!!!19919%>1cJ!!Z7!!!!!!!)sg1!!!)FRF!!!!!%1%9%1>1s7!11!!!!!!91RoG!!)!G1!)!gR)J1!!7!!!)!!!os)!!!gsG!!!!!!Rss91!!!!!!!!!!)!!!!!)!!!!!!)!!!!!!!!!!!!!!!!!!9%!!!!!)!!!!!!!))7)7!!!!!!9%1!!!!!!!!1!!!!!!!!>1!!1%!%%!!!!!!!!!!!!!!!!!!9%%!%%!!9!!!!!!!!%!!!!!!!!!!11!!!%!!!!!!!!1!!!!!!!!!!!!1!!>!!!!J!!!!!!!%>!!!!!!!!!!!!19!!!!!!!1%!!!!!!!!1!!!!!!!!!%1%!!!!!!!!!!!!!!%!!!!!!!1!k!!!!!!!!!%!!9!!!!!%!!!%!!!!!k>!!!!!!!!!!!!%!!!!!1!!!!1J!!!!!!!!!!!!!!!!1!!!>!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!!7!!!!7!!!!!!!!!!!!!!!!1Z7!!)!!)!)!!!!!!!!!!!!!!!!!J!!)1!)!!)!)!!)!!!!!!!!!!!!!!)!!!!!)!!!)!!!!!!!!!!!!%!!11!!!!!!!!!!!!!!!!!!!!!!9k!!!!!!!!!!!!!!!!!!>sZ1!!!!!!!!!!!!!!1!1!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!! ν{{{{k{k{ ν{{{{{{kk{{k 罥{꜔{kooooooo{ {{{oo{okk{o{o{έ{oo{{kk{{sksk{{{{{{{{oo{{{k{kksksk{{ҽΥ{{{{{{s{{ks{skZsk_sksksk Μ{ko{{ks{ss{ksZssRZssZskss眜{{{o{{{skskssk{s_ssRcZZRRcRccs_ZΥoko{{{kscZskss{s_sRZRRcRZRZ_csZsε{{k{o{{s{sk{{s_c_cssccsRccRsRRZcc_sR߽筜{{{{o{sk{kss{RscRZJJRcRRZRRJRc祜{{o{{s{{ks_ssccsZZRZZcZcRJJR9RR1RRJRJZ眜{{{{{o{{sks{ssZ_sZRJJc9cRJZRR1Rc11R1R119RR罽{oo{{o{{sZcZccRscRccRcR9g1c11c1cc1c1R11{so{{sksZRsRsccZRccRccRcc1g1Z1gZZg)g)J1Z1ck{{s{sZssccRcRRccRcc9c1c1Z1J11)c)Z)g){{oo{{skskcsRcZRRZRRJJRZRcRcc9c1c)g))Zg)Z)ZgZg)g)g{{{{{{sksscZRsRsRRcR1RRgR1ccRZ1gJZ)Z)JJ)J)J)J))g)g){{{{s{{_sk{kskckscscRcRRJRcc1c1c1c1Z1g))JZJ)1Z1J1g)g)JZ)g)gk{{s_{{kssZs{{ZskcZcZRZRRsJc1c1cc1cc)g)gJ))Jg)J)Z))JZ))g)Z){{ss{scscsksZssZcssZcsRJRRcc9s1cc1cc1)g)J)J)JZJ)1J)J)J))ZJ)Z1ckskcc_sc_cRcRcRcRccRcRJcRRJZJ11cZ1Jg)JgJ)J))Z)J)J)J)ZZ)g1J)ccZZsRcsRscZccRccRcRZJRR9ccRR1cZZgJ)g)g))gJ)J)JJ)Z)Z1g)c)Z)g))RcRccRcRcRcZRRcRg1RJZZJ)g)ZJ))J)JJ)JZJJ)Z)J J)ZgRZJ7RRcRJcc1ZZJg1J1Zg)Z)ZZ)Z))J)JJ)JJ)J))J)JJ)J)JJ)JJRJ75J57ZRc1gZ1gZ)c)gZZ))g)g))JJ)J)J)JJ)JFJ)99J9J)J)JJcJ)7!5)J1gg1gJ1ZZg))g)gJZJ)JJ)JJ)JJ)J J)9FFJF9F99J9!57!7JZc1g1c)c))g)JJ)JJ)JJ)JJ)JJ)JJF99FF)59)J)5!)5!)Z)g)g)gJJgJJ)J)JJ)JJ)JJ)!F)FJJ9J99F)J99)59JJF9!)!!)7!JJ)gZJJVJFJF)95)F5!JJ9J)F)99FcJ9)F)J9)FF)!5)!!)5J J)JJ9F5)5JFJJ95!5)F9FFJFFZ)!51)9!!)!! J9JJ)9FF9JFJ9FF9FF555JBFFJ)JsJ)R!!!)!)5JFJJ9JJB!)J99FJFF9FF9F95!5!!JFF9F99FsZ)!Z7!!)!)!!5JRJJF)F5!!!9JF9F95!55FB!!!J99B95FJR!!Z7)!!!)!!!)!!)1սJ!!!9_k_)!!9)!!5B595JFJZ7!J))!!!)!!)!9Jkd)!!1սյ)!dJ!)99Zs9R9!!7)!))!)1))!))!!9!!!!d!!!!!k),RJ!!!!!!!!!!9))!!1)!!!!)))99!!!!)!!!)!))!!!!!!!)!95!!!!)1!!!!!!)1171)7)!)!!!!!95B!!!!!!!)))!!)!!!!!)FB!B5)!55!!!!!!!)!!!!)!!)!!!!955!55!!9!!!!!!5!!!)!!!!!!!JB!!!5!!)!!!!J)!!)!!!)!!!!!B)!!F!!!!Z)!!!!!!)5F!!)!!!!!!!!!!J9)))!)!!)!!!)!B5!!!!!)!!)J!)!))!!)!!!!5B5!!)!)!!!!)!)!)!!)5!!!)!!9)))!k!!)!!!)!!!!5!!9!!5!!!)5)!!))))!kF!)!!))!!!!)!!!5!!!)!9!!!!JR!!!!!!!!!!!!!!!))!)!!!)F!!!!)!))!5!!!!!!!!!!!!)!!!!7!!!!7!!))))!)!!!!!!!!!!!!!!9Z7!!)1)!1))1)!!!!)!!!!!!!!!!!!)R)!)191))1))1))!)9))!))!!!!!!!!!!!)!))1))!)!)1)!))1))!)!!!!!!!!!!)5!99!!!))))))!)!))!!)!!!!!!!!!!!!Rk!)))))!))))!)!!!)!!!!!!!!!FcZ)!!!!!!!!!!!!!J!J)!!!!!))!!!!5)!!!!!!)!!!!!! ȵȵȵȵΥs{kskkkksskskk{ȵȵȵεȵ{kkZkZkk{kZkkZkksskZsȵȵȵε{{kkZkZsZoccoocooZoZockZ ȵȵεȵεȵk{{k{koZZZocRoccRocRocȵȥεεskk{{kZZcZZoockRscRRBcBcRcRRcRZȵȥȵȵȵZkkkcooccRZcRRJsRcssBcBsRRȵȵȵȵεεΥ{{kkkkZcZRZRRccBRRsBRBsBBcgBcBcBc εεȵ{kkZsZoccRRcBRBcBRJBRBBRRBBRBsBBȵȥȵεε{kkZccoRcRRBcBsBBsRBgBBR9BBRR9R99BgRȥȵεε{oksZZoZccRZRRcB9RBsBBRBgBRBRR9RBRBg9BRBεॽkkZZkZZskZoRRBRBcRRBg9g9BB99BR99RBR9RB99gBRεεkkZkZkkoZkkccZBsRcBBRRB9RBJJR9R9BRR99R9JJRR99R9εεε{ZZkZZkkZkkZoRRZRRsBgBB99BB9BB9B9RJ)9B99J9JBε彵ZkZkZkZkZoccRRBsBRBBRgBBRJJ9B99J19 9B99ΌZZkccocoZkkZcoccRRBR9R99RB9R99R99B199kcZkcZccZccZcZoZRRBsBRRBRB99BR99R99191911)9199ZccZksZccRZccRBRBRBB99R9RR99R99B9919)991911RcoZoccZcRRBJsBs9BR9BRRBR9JJ9BR9R99B991cRRcRZRZRRBsBZB9BRBRBRR99199191)11)1)1)1)11RcRRBRRgBsRcBs9sB9B9R99J9 91911)1)1919)911)11sRRBgRRcBBRBRRBc9R9BRBRRBJ991)11)11)11)11RBRB9B9BsBRBBR9BBR9BRJ9R99B91)1)1)1)19)1)1)11)1199sBs99gB9g9R9R9R9R99R9R)99R9J1)9919)11)1)1)11)1)1)119)199BBR9BRB9B99R99R9R1)R9B991)11)1)1))11911911R9R99R9R9R9BRR99199)11)11)11)1))1)1))1 )1R1)79R9R99J991)19)91 1)1))1))1)11)1))1)1))1))9)7)7199191191 1)1)1)1))1)%)1%%)%)11))9)171)91191)91 1)1)1))1))1))1))))1%%)%%)%77)1991991911)1))1))1))1))1)%%1%1)1111)1))1)1))1))1))1%1%))%)%%1)%%1%))%%117))11)%)%)%1%1%)%)1%1%%9)%1%1)%1%%111) )1)))%%1)%))%%1%%%%Z1191%1 )%)1%%)%)%%!%%1)B!1R!11!)%))%)))1%%%%)%%B11!B71!1!)RJ))%1%%%%%!)%%%%)J9!B7!1!!19119ƽJBgsg1R1!%%)J7!J1!11%)sƽj1!!91!jJ!!1ZRs{B9B!71!!119191111ZB!j!!!s1MR)!!!!!!!!B1!!91!!111RB!!!1!!!19119!!!!!1!%!!!!!!!19!!1997917911!!%!!!!!!!!!11!19!!1!!!1%1!!!!!!!!1!!!1!1!%%!B!!!!!!!!!!!1!B!!!!1!!!)!!B1!1!!1!!!!%!!!!11!!1!%!1!!!!!!)%1111!1!!B!!!1!!!!1!!1)1119!!1B!!!!1!B!B!11!1!1!!!!!1!!B1!11!c1!!91!!!!%!!!!!11!!1!1911!!c%!11!1!!!!!!!!!1B!!!!!!)9!!!!!!!!!11!!!!1%!!!!!!!!!!1!1!1!!!!!!!!!!!!!!1!!!!!!!!!!!!!!!!7!!7B!1!11!1!1!!!!!!!!!!BB7191991191!!1!!!!B!!!!!!191!919B9919919119911!19B111!1!!!!!!!!1s9119191991191199199111!!!!1!B{B99991!1!11!1919919191!!1!!!!!!!RcJ!1!1!119111!119!!1!!!!1!!!!!!!!!%BB!!!!!!!!B!!!!!!!!!!))!1!!!!!BB!!!!!!!!!B!!!!!!!!!!!!!!!!!!!B!1!!!!!!!!!!!!!𭥽{{ֽީֵששs{{ل{kkkֵֵ֥ש֩֩שsk{{sk{ss{ss׽sשש {܌o{{ok{ss{s{{{k{{{ֽީs{{oc{osoossss{{{s{sש cRccoc{{osoosookkss{{{sRcckccRc{{sg{o{co{sk{osk{{s{{{RFRRckscc{cosZ{{osss{{{{RcR9RcRRcJRFRR{occRcckccs{{ososoo{ss{s{{{{{s֭RR9ccRFcRRcocckcFsRckcc{{c{c{{s{ssksks{ss{{kss{s{ssJRc9J9ZR9RRcRRccRJRR cZc{co{oosk{{ss{s{s{9JJ9J9JJ9RJRRJ9JFRRcRRFRRcsRcc{c{{osooko{{ss{{sJ191J1J99RR9JJ9JRJRRcRFJRcRFsRRckRsRRkccRcck{{ckc{oksssks1JJ1J9JRJ9RJ9JJFcRcRJRRcJcRRcJJRRkRRcRRscscc{c{oZ{skJ))JJ1JJ9JJ)9JR9JJ9J9J9Z9JRJ9RJRRFRRcRRcRFRRFJRRkRcRkRRc{cc)JJ)JN)JJ)JJ)JJ199JZJ9JJRJ9R9R9J9RRcRFcRRcsRsRcckcNNN)NJ)JJN)N)N)J))J)J)NJJ9J99J9J9JRJJZZ9ZFRkRRsRRkRRckNJJ)J)J)J)JJN)N)N))J)J)JJ9JJ9J99R9JcRcRcJFJcFRJRRFsNN1NNJJN1)NNJNJ)J)J1)JJ1JJ9JJZ1Z9R9J99ZR9RZ9R9J9RJN)J)JNNNJJN1)NJNJJJJ))JJ)JJ)JJ9J9JJ9JZ1JJ9JJ9JJJN)NNJNN)N))11J111J)11N)1JJ)J)J)J11JJ9JZ9ZJJJ)JJJJNNJJ111JJ)11J)11)1J)1N)1J)JJ)J))J)J)JJ9NNJNJNJ1111111JNJ1)NJJJ)J)JJ1)J1)JJ)J)JJ))JJN)NJ1111111111J1)NJ1JNJJJN)NNJJNJJ)NJN11111>1111J1J1NJ11NNJNNNNNJJNJ111>11>11111111JJN111111NN1NJJNNF199%>%1%>19111 1111111111J1>%%>91>111F>1 1111111%9>%9>11>1111111111>>>1>111>9>>11111>91>11111111>111>91191911>1>>9>19919>>1>11>>91>1>11>19911>11199>199%>>19>>9>119>>1>9>1>1>>1>>1>1111>11>1>9911%%>99>999%99%9911>>9>9>>9%>9>199%99%1%99>11>>1>>1%%>%%!!%99>%%>99>1>%>%>119%>%%9>1>>9199>9>99>>9>911!%>%%91991919%9%%9>1991>9%9>1>>%>%91>9%>%9>%>>1>>9>!!!%!%99%>%>1>1%%19>%>919%>>1>91>>%99)119))!!!!!!99%%1RFF)GGgsRFFGsosF)RgR)ssR99))!!!!!!RRggssR))gsssoc9)F!9RRRR9gZsss!!!!!%!!9!99))RG9FR!GgcssssZg!!!!%G!!!!!!1cF99!)9))!1F)9Rsss!!!!!!19)!!!!!!1GFR9!!G))s))R!!R!!!!)!!)g!J)!)!!RIF1R!!RsR9!!!!!!!!!1!!cI!RRG!!%!I9)9!!)!%!!!!%!!!!!!!!!1G)!!!)!!!!!!!!)!FRG!!1!!!!1!%!!!!!!!!!)!!))!1!!!!1)!!!!!!!!!!!RR)!9FR1!!)GG)!!!G!!!!!!!)!!)!1!!!!!%!!%%!!!1R)7!!!!GG)G!!!!%!!!!!!ZJ1>1J!G)!!!!!%!!!!!!!!!)!c!11!!!!!%!!!!%!!!9!)9I)!7!!7)Z1!!1%!!!%!!!!!!)!1%%!Z!!!1ZJ7!!!!Z))!!!%!!!!!!!!F%%!!9%!!!1ck>!!!!!!!!!!!!!%%!!!!!ZJ!!!!!!!!!!!)1!%!!!!1J!!!!!!!!!!!!!!!!19!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!%!!!!!!!!!!!%!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!Υ{{νޔ{{ٜ{{{{{{{{kk{{Δ {o{o{{kk{{{{{{{o{oookkk{{{k{ {k{{o{oooook{k{{{s{{k{{ksk{򔈄o{o{{{o{{k{{{ksks_sksk{ks{{{osk{{ookkk{{{{νsZsRsZssZcs_skso{{s{{k{{oooo{{{{{{{ksRZZs_Zsskss{{o{{k{_sk{k{{{{k{{{k{{k{k{csZRcRZsRssZss{{scskssk{{k{{ooo{{kk{{{{RRccRcRccRsckscRc_ssks{ss_ssksk{{sk{{{ooo{o{k{{딜cJRJRJcRRssRccRcscssZs_cs{s_sks{kssk{k{{k{k{o{k{JRRJRRcscRscRcc_ZsZsRssZcZssZccskskss{kss{s{{{ok{R11cRJccRcc1RcsRccRcRcRZRcscRscss_ssZssZs_ss_cksks{kksk{{{{1cc1cg1cc1cZZRcR1cRRcRRcJRRcZcRccscRsRsRRsZs_ZssZss{k{gg)g1gc1ZZg1g1g1c11c1c1gZRRcRRcRcRcsccZZR_skssksksks{kg)Zcc11)c)1Z1c1ZZg1g1g11c1Z1RZRccRcRRsRcZsZsZc_cZ_scss_s)g)g)J)g)gZ)c)g))J1g)gZgZ1Z1RJ1ZRJRRcZJZRsRcRRZsRsZRsRcRsc)g1)c1Z)g)g)g)ZZ)gJ1gZ)g))Z)Z)Z)R11cZ1cRR1RRcRRcZJccRRccRcZ)Zg1g)g)Z)g)g)1g11J))J)ZJ)JJ)Z1JJg1Jc)Z1c1c1RJJcRRcRcRRZRZcc)c)1c)c)Z)Z)g)g)Z)Z)JJ)J)Z)Z1JJ)Z1)JJ1JZ1Jg1Jc1Rc1c11c1c1RRcRcRRg)gZ)g)Z)g))ZJJ)JJ)J)J)JZ)gZJ1gZ)ZZ1Z1ZZJ1ZJ1cc1c1cc11cRZ)g1g)ZJJ)J)JJ)JJ)J)JJ)Z)J1)g))ZJ)Z))g)Z)Z)Z)g1g)gZZgZZcZ1g)Z))g))J)JJ)J)JF))J)J))JJZ)JZ)Jg)ZJJ)g)g)Zg)g)g)g))g)Z))Zg)Z)JJ)J))F)J)J)FJJ)JJ)JJ)JJ)Z)ZgJJ)J)JJ)Jg)gJg)Z)Zg)g)VJ)9)9)5)F5J5))F)J)9)JJ)J J)JJ)JJ)JJ)JJ)JZJF5)5)F9J)F)J)JJVFJ J)JJ)JJ)JJ5)9)F)59FJJF)JJ)JJ)JJ)JJ)JJF)FF)JF)J)JJF9FF)JJ)JJ)JF)9)JFJJ)JJ)JJ)JJFJ)JJF9JJ9J9JJFJ)FF9FJ99J9FFJ)FJJF)F9JFJFJJFJ99JJFJ)JB99FJ995FFJ9FF9FJJ9FFJF9FJ)FJFFJFFJFJJ)JJFJJF)JF99JB55F99F9)99599599JJFF9F9FF95F9FB99599)5J599FJJFFJFFB)55F55!!599F)5)5F99FBF5F5FJB95F5)59FBFF9J99F9F99FF9F9JJ!)5F559B99B9B959559FJ99JF959FBFF5F59JF95F59F5FFBFF9F!!)5!5995F5FBFB55J9F5F9B95FFBF9BFF5991JJ9)Z9Z99!!!!)!9955ZJk__9)),dd),s_Z_,d,յ_9kk1եsRR91!!!!)9s)sk99ՔؘR9_9))Rs),ssskRkڵ!!!!!5!,R,)9RR911))sd)),R_s),))d⽵k!!!!5d)))),),),,))9J_RRJR))1)1)))J_9Rk!!!!!JRJ,,),)9,)))Jd_k)R99dJ9,J)Jk))))k!!!J))))9)),)))9Z)9J9kY_J))s,99skR!!!!!!)),,)),))J9)9Ykkd)9)5)))YR9R)995!!!!5!!!9)1)),))99)),),)Jd1!!)))),9))))!))!!!!!!)9),)),)),))_sd)),)),J)!),))))J,5!!!!))))))))))9,))99)J!!))1))9J9))!))!!)!)!!)!!)))9,,),ss))99R_sJ!!)9dd99),9d))!!)!!!)),)))9))))9))!))))!!!5)!55!)))Jk9)),),)7!!)!!)dd))9d!!)5!!)!)))))))R)R9F9R)!))d9))!!!5!!!!)))19)!!)1!)Z!)9J9!!!)!!5!!!5!!)R)9RY))1)9,)7!!)71R)))!!J5)!)!5!!!!!)9!))J55)))R!!9RR7!!!!)R1))9!5!!!!!!))!V55R5!!!9ZkF)!))!))!!!!)!!)))!!55!!!!RB!!!!!!!!!),1B!5!!!JR!!!!!!!!)!!!!!!J9!!!!!!!!!!!!))!!!!!!5!!!!!!5!!!!55!!!!!!!!5!!!!!!!!!!!!!!!!!!ƥ{kskssεεȵZk{kkk{{ʵƵʵʵZkkZkssZkkkk{ȥʵ kckokcokkskskZkk{kkk{{ʵZccoRcoZooZssZksZkkkskkkƧ{{ RsRRoRccoZooZoocZsZkkk{kBRRcRRsBsRccZcocRokZkoZkkskk{ksBsBgBsBsRcZRRcRoZskkcooZsZskZskkkksƥBRBRBRBBR9BgBsBcoRRBRRcRRZccoZoZookZZkZkkkkk޵sBRRBgRBBsBBRRoRRcRgZsRcRRccRcRccZcZZsZZkZskkZsksk{9BRR9RBBRBBRBBRRB9BsBBsRRsRcRocooZkkssZsZkkk{{kR99R9R99RB9sB9R9gBBsBRBBgBBsBsRRZsRRcRccoZoookcZskkZ9JRJ9J9RRBBR99R9B9BBRBg9BRBgZsBRcBZBBscRRsRRccRcRcoZZksZJ99J9R9B9RB9R99gRBRB9BBR9RBBR99BsBcBBRsBZRZRRcRcoscZ99J99R99R9BR99R9R9RBR9B9RB9BBgBBRBBRBgBBg9sBcBRscsBsRRcRR991991 9JRR9B9R99B9RBRBR9RBBRBgRBBRZBZBRRcR1191991191919919R9RR9R9R9B99BBRBgBcBBZBBsBcBsBRc119191919919191991991R99R9RRBR9RBRBR9g9RgB9BBgZ11)11911)9119199)919J99R99BJBRBR9RRBRBBRBR9RB91191991 1)91 19199R9R99R9BJ99R99R9119119199)11)11)1))119))19)91199)9R9BRB9919199191 1)1)119))1191))9)19)19)99R1 1)1))1)1)1)11)91191911)91)9 91911)1)1))1))1)1))11)911)1 191191911)1))1)1)%11)1)11))11)11)11)1)1)11%11)1%))1))1))1))1)1)1))1)11)11%)1%1%11%)11%11%1))1) )1))1))1))1))1)1)%11%%)1%1)1))% )1))1))1))1%1%1%%))%1))1))1))1))1))%1%%1)%11))%1))1))1)%1%1)%))1))1))1)))%)1)%%))%)%))%)1%%%%%%)1%)))%1%%)%)%))%)%%)))%)1)%%)%%%%%%%)%%1%)%%%%)%))1)%)%1)%%%1%%%%%%)% %%%%%%%1)%%)%%)%%1%%%11%%%%%%%1%%%%% %))1%%%%%%%%%%%%%%%%%%%%%%%%%%%%!!!1%%%%%)%%%%%%%%%%%%9JJ)%1sBsBR!!1!%%sJsggZ11Mjj1M{gsgMjM㽩gZss9㭩{RRZ9!!!!1R{1{sZZ㔭ةRZgR11R{1M{{{sRs罭!!!MRM1RRZ9911{j11MRg{1BM911jƽs!!!!!j911911M19M19M9M11RJgRR9sR119191191JgZRs!!!!!JRs9MM91M1R9M9191B1BJjgs1RRjsBMs1ss911911s!!!!!s911911Z11M1B11R{1Z9s9RsjgJ11{MR9R{sR!!!!!!!11M99M1B91M11JR1BRj9ssj1R19!911B1jRZR919ZR!!!!!BR1Z11M19199RR911M19M1Jj9911911MB11!11!11!!B1B1MB11M191M11g{j11M9191M)11M9119119JM9!9!!B!11119911B11911BM9911BZZ91)!11Z191RJB1!111!111!!!B1191RM9M1M{{11BRg{)!1ZjjZR19MRj1!1!!1!91B1M11B1B9911B11Z911!!!11B!11!!1!!B11919JsZ11M1M1!7!191jj11Zj!1!1991B11!B1B1B19B19B%B91!11jB!11!!911B1BZR1B19!1R!!BJB!1!!!!!!!!1BR19BRj11Z1BM197!179B1!1!J11!!!!!!1Z!!1!1!11B!!9BB97!!1B911B!!!!!!11%!R!!BRJ%111!1!!1!!!!!!1!!1B11!B)!!!!!!!!!!!1M9!B!!!)9!!!!!!!!!1!!!B!!)%!!!!!!!!!!B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!B!!!!!!!!!B!!!!!!!!!!!!!!B!!!!!!!!BB!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!!!!!!!!!! ޽{{{{s{ss{s{k{ss{so{kkssoss{kss{{ {{scco{{Zsks{oss{{s{{cc{cc{cc{c{{so{{ ccRkcRRcRcc{oo{go{{{{sRRcRcRsRkZc{{c{ssooks{ks{{֭9cRJRJ9RJcRRcRRckkcco{ssoososs{{J9JJ9RZ9R9JcRRsRRcRRcc{gs{os{{ֵ 9Z9JJ9JJ9R9JJRcRRcRRcRRckRRsc{{kss{{ssֵ֭֔JJZJJZRJJFJRRcRRkccRc{ooss{{{񌄄J)JJ1JJ1JJ9Z9J9Z9JJ9ZRJRRkRcskcoc{{cossskss{)J)JN)JJ)J)JJ9Z9ZJ9JJRZZJcJccRRkRkRRcs{osZ{s{ssk{{s{{NJN)1J1JNJJN))J)JJ1ZJJ99J9JJR9JccFcRcRskR{occZ{okso{ss{NN1111JJN)N))J9ZJJ9JJ99J9JRRJkRRsRcckskcc{{oso{{koosN111)J11)J1)J)NJ)J)JJ)9J99JJ9RJ9RJJcJRRcRRckcc{c{ckc{{1111JJ11NNN1)N)NJJ9JJZ9J9RJRcRRccRRkccRRc11111JJ11JN)N))NJJ1JJR9JJR9ZRcRRsRRkRsR11111111NN111JN)1J)JJ9J9ZJZ99JJRJcR R1>11111 1J1J11JJNJ1)N1JJ1JJR9JJ9R9JZ9JJFRR119>>111JJNJJ1J1)JJ9J9JRJZJJ9JJRZ9>>%99>1911111J1JJ)11JNJJ9J9JJ>>9>>1F>>>>9>1 1J1JJNN)J1)1J)N)J)JJN9J9JJ9>>1>>99>911>>1R99119RF1FGRRGsssss֩!9!!RRgogFRRooogRR)ssg))Rssssosss֥FGssgRggRg)ssoRBRRFgss愔sRRssggkccskgksskssڔossRs֭֩cFckgoF9ֵs֭֙֩R99ssss쥩9ggR٥ggsZZggsg))R9!FZgRRs왥sgZZ9)9GZgg֥sssg))))I)GGF9cgggg9FgR9csgg֩sgR֩gggkc))cggkc!!!9F9))Rs!)9R99IRcgIRZc9cRFcg)!)!!1!G)!c9!!GRs91)) )cG!RRRR))!)1!I!)!!!!!9R9!!)!!II9!R!91))I!!9!!c1R)!!!9IGkR!1!9R!!99)!!!1R) !sII!99kG!!RGRR!!19)1))!R1)9)RI!)G1!))1IkR))!G11!1F!I)!I1)1)!9FG)!)1)! 111!!FF1GR91G)!!!)9))!!!Fg)G!)))!)!9G)!!!!G)!!!!1))!GR!)R1)G!!!!!!GG)!19)G!!!!!!)sG)!!%GJ!!)!9)!!!!)9>%)1!I!ZGFG)G!c!!!)!!%!!!!)!RJ)RcRG)BGBJ))RB)%J!!)9!!RF)!!!!)1!!1))G!!!!G)!!)R))R)RG!)J)!!!!!!!FJJR!FF)BBR))!!F)!g-1)-!JRBc%RoBB!!!!!%RoR))B%%!)JB))J)GGG!)!!IF)RJG)))%R!!!!!!%Bg)GRJ!!!!)JBB1RG-G-FF!!!!!!!!1R))!c9!9!B!)!))-)-BB)!!!)-JBRG)!!R!!!!!!!)coRBB1BR1BBR)c!!)-BR)RBBRBRBRooB!G--B!!!!!!!B-%F!1cRGFB))G)RRF!!)FR9FRG9RGJ--)GRRooRc νν􄥜{{{{kk{{{k{ok{ok{{k{{ {{ok{{ok{{k{{{{{{{{{o{{ {{sk{ksks{s{{ooo{{{{sskskssZ{sZkskk{{򄔔oo{{{k{{RZscscRscZss{sks{kk{{oooo{{cRccRsZRsRcZskss{ss{{sok{{ν RZRccRccRsRccsZsskssZks{sk{kss{{k{{罽RccZccZscc_cssks{ssk{{k{ook{{{祜c1cRJRcJRRcRZRcRZRccRZscksksksks{sk{o{ok{kk{1c1Zg1cZ1c1cZcRccRRZRZcRccsZZcZcZZkskskk{sok{{k{{k{{gZg1JcJZgZcg11R1RRcJZccRRcRccsRcZ{_Zs{sskso{{ko{o{k{)g)gJJ)J)J)ZZg1g11RZRRcRcRcskckskssk{{ksk{{oo{oogJ)J)J1ZJJ1Z))J1Z1gR1c1RR1RRscRsRcZckssk{sks{k{{{{k{J)JJ)JZZJJg)ggJ1g1gZRZRRZRcRscsZssZ{skskskssksk{{sk{JJ)JJ)J)Z)ZJJZg1g11gRRJccsRccsRZsZssksskssJ)JJ)JJ)JJg)g)J)JJZg1Jc1RRZcZRRccscZsskssJFJJ)JJ)J JZJZ)JJZZ)gZJ1gJZZcJccsRccRsRcZRcc_ss)JJ9FFJ)JJZ)Z)g)ZZJRJ1ZZRcRRcRcscZccRccsZRFF)599FJ9JJ)JJ)J)ZJZZ1JJZgZZRcRccRRccRccFF9FFJV)FF)FF9FJ JZJZ)Z)gg1ZJ1JZ1g1Z1ZZgRRZcRFFBFF99F9JJFFJsRRJJRk_J_dkkdڵ9R99ss_ssss9991k罵_dڽss1sgsk_昵sk{{{{ڽsڽڽڽ組_{o_R罜祵kRRڵսڜRՈsٽkkژ)1)1sR)_kksսڵkkR9)Rdk罔))1)11))1)Y))Jdd_R))ڄR_sR)ڥsژ){11{{)),),R_R)11))s)))91RkRRYkYskRs)_))1)))J),Jd9))R)),)9d))kRJ991))9))d)ks)ss99))),)9)),J9Y),))),)9))))RkR)99)Y))YR))k))9R)J91Y1)9)9R))))J)),))s9,)),)))))RY)d{))k)9J)Rs))))RR9))))))))9Js9) ),)9YY))9RR{d))9s)dsk),))))),))))JR))9)))J99))sJ9)R)9sY9))))9))dJ))))))))))1)))9JY{s)))))))99)9d))J)J)!)))J_))Y1))1)!))))Y))J)))))9J1))!R)))))_)d))1))))!))9J)99) )J))))))J)))J))!!)))1_1))_Jd)),sRJd))91)9))))9))9R99),))9))))_,),))))))9d9))))99,)9))9)))),)),)))R)),))d99)))),)9d9))))9J99))))1))))))ds))))!9sJ9d))))))9,))))dd99JR9d))))))))))))!!,99,))9))),dJ)FdZ,99,)))19)R))),)),9)))!!!!1RF5)),)))))9J91,,)Y)9cd_))d9d)),99J1))!5)99),9s,,))Z,Jssd9kdgZJJsk)1JFZ,99R99sk_J))!!9J991J9JJd,9)))9dJ99J1s)1))1))1sJsd9))JZJ1!!!!!_ZZ1s)),9)__JkgsZ199J99_J9ZZ,9Z,ZsgF)){kk))!!!!!)FssJJ9kFF9ZgJJZJddd9J99Y_)),9sZd1)1),JJ)Fs!!)!!!FgJdsZ)1)1))99))))JZg))gkkZ{d,))Zd,),Z__))9!!!!!!!JsJ9),9R)R,9g19J119JJZJZkkJ9199JZZksdJ1199s!!!!!!1J{ggZksZgkgg{J99ZgsJsgkksskgkg{gsk9dZZg!!!!!!kZF_19Jsd,_1gJJdJss_99_sR_kd)RkdZZ9dsss ޵ޥ{{{{{{{{{{kskkk{{sckskkkssks{{{{ZoccZZoksZkZskkk ccZRRoccsZZkoZskkskkk{{RRcRRcRRcRccZkokk{ RRBcRsBsBRBRRcoockokksBBsBsBBRRBRsZscsRccRcZZooZkkskk{RRB9B9RB9RBBRBsBRccRRocZZooZoZkk{9R99RBBRBR9RBsBBZBBRBBRRcZcokskk{ RBR99R99RBR99BRBBsBBRsBRBsRcBBZRccZskkε99B99B 9g9BBsBRBBcRRsRcoosZkk{{99J99J99RBR9RBR99RBB9sBsBsBcBRZcRoRccoZskZskskk919199199RBRB9R99BB9R9RRsBcBcssRZcoZskZkZZsZkkskk19)9)119199JB99RR9R99BR9RRgRBRBZcBcoRRscoZokZsZZZkk1)1)1)119199RB99R99RR9R9Bs9cBsBZsRRcZcRRccoZoccooZ1)1)1)91))911)919199R9RR99RB9RB99R9sBBsRBsBRcRRcRcRcRcc)1))1)11))1)91911919R99BR9RB9BRBBRRBsBsBsBBsBcRRBsR))1))1)11)19199199J99BR99BRBBRBBsBZBBcBZB))1))1))1))1)1))119)99R9RB9BRR99B9RBBsBB)%))1))1) )1)11))11)91)119J99BR99RBR9BR99gBB1)%%)1))1)9)91199R9R9B9B99R99BBR%%1%%))%)1))1)11)119))119R9R99% %)%1%%1%%)1)1191)9)19191911R9R19R%%% %%JBRRJJRsgJgjssjε罽RR{g{Ʃ{{BBB9sƽƽgjέ{{9{{sg橽{sΩ{㵽gogR΄齵Ƶ㵽sRR罭R{ƈssƽ1ƽ919{R19gss{ƽƭssRB1RjsƔ1191991191j11sjjgR11猈Rg{R1絵筈{穈199R191M91M9RgR19911{1911B9RsRRjsj{sR{1gƩ1191911s199MJ9jZ191R911M1Rj11sRJBB911B11j19s{1{{ZZ1911M1B11MJRj1M1191M1B119919919RsR919BR19j11jR191s11RR1JB9jZ1R1RR191911J11M11{BM11M11919191Rj1j11s1RJ19R{911911RRZ911B1B11B911!B1RJ{Z1 1M1Rjj11RRj911R{1j{s91M1B1B1B119M11B11JR11B1B11BJZB911{JB1R1Z{jR11B11B11jJ11B1B11B11B1191B91B11ZJj{11B11B1!11BZBB1Rj11BJB1J1B1!B11JgB119jZ1191!1!B1B11j11J1!B11!B11BJ9!1!1R11!B1B1!1g1j1191!1!B111!1BJ1BR1 1J11!11!11J11!1J!1B1!!11B1BZgZ11gJj1B1M{RJj11ZZ!1R1!11B19R1B!1ZRBZ19M191R11B11gM1M11B11!11ZjR11B1B1BBM1Z11B9B11B11M119M1B11BR11!M!11jBR1B1B1BB19M1B99RjZ1B99191B1BRJZBB1191B1Z1B1B1B11!B1j{11B11B{JZj911911B1B1RM919911B1jjBRJRZj991B11!B11!1B11B1B11B1!MR99R9MB11Z11B1MBjs919sj{MRRM11B1B9R1R1B11M11MB1B11BB9R%11M1B11B!B11ZJBRZMM1jB1R{jg11jZj11B9M9BRRsZ11!!9RRBB1MR{MM11{MsjZj{ssB!B1Zss{MRRZRR{sgs11!!BJRRZJZssj!M99R11991RjsRRsZ{1911911Z{s{jR11s{sZ!!!!g{{Z11MR1ggs{sZZcsRRgsRMZM9{{s1111!!!!1sssZssRZ{ss{sjjjRsRRjg11MB{{jZ1B91Mss1s!!1!ssj{1Z1Z11RR191191s{11挜jM11jM1Mgg11R!!!!J{sZ1MRR91RMRZRsZZRssssRZRRs{jsZZRR{!!!!!Zs쥜sRRZsRj!!!!sgZRJjMgZssjs{{gRRZg{Rgsj1Rsj{Zj{)   $  %'3ֵ֥׵ֵ s֭ s 挄 {{{ 𭄭׽׽soo{ss{s{{{ˌososos{coo{Zsosk{ooss{k{s{{{{󄌄c{cc{cc{cRc{{cogs{gssk{skss{s{{s{{{RcRRkcRRscRcRckcscssc{c{o{oo{g{{ossoss{{s{{{{{{kRRcFJRsRRkRRsRcRsRRckcc{c{cc{{s{kksosskssk{s{kssks{kssRcRRc9RFRJRFRRsRRsRRcRcc{cco{oo{{oosckoos{{k{ssRJZZ9RJRRJRcR RsRRcRRFscckccRccZscs{{cR{c{{o{JJZ9J9JJ9JJRJJZRJJRRcRRcZskskssksRRos{Zc{F{IcRc{c{skss씥sZJR{Zk֩oscJJsJJ1ssssoss֩𔥭ZJ1>1JkNJJk֥֔oso֩sㄌsZ1>7717J1719Jg)csssooss֭sss֔֩kZZ19711>1171ք))RsggsRssskssssgFFRsssgscZJ9771JJ117179Zsskg))s֩ssggRggRRIcRkRgscZ71!!7119%!%!%9cR9R9FFG%kscgkkggsgsֵ֧֔ssss11!!71>1!99%%Is))sR))ggkRs)ssRkccskkcFs71!91>%!!RgRcIc)Rsgk)gRcccs{sZ1!!1!c919I9I)RZI9F999gckZ)FZsgsZ!!F11!9!IR)!9F)))9RI9F91{{cZ!!11%!!)I99Ik9GR9RR!ss)!)9!))))II!{sJ!!7>1%!!!!9I99)9I9R9k{sZZ1!!71%!!!)91)19IRRI)91ssZZ!!%%!!!!N%%1GR9!9RG1!)!99!!Z!%!!!!!!J%!))11)!!)G)!)G1)%>>1%%!!99!!%!!>1!)9k)!)!11R111)!9>1919%!!%!!!!%!!)ZR)1)GGsgF!!)%%)JJ!>1!!!!%!11!c11G!1G111!!sJ!9>%!!))!))%J!!!RG)))%%Rνk!1%%!!!!ssRs9)Js!)BR!BcBRgRJJ)G)1!k79%%!!%!!!!%!))R))F!)!GJc)Bc))Bg))RooBFR9!!%%%%!!!F!!RRJ!F!%!!GFRRG!!!)F9g)!JR)B1׌s7!%%!%%!!!F!))csIRIoIFFGBBoG))-ocoRRG1Nε1%%!%%!!!!!)-BocogB)RR!)G))BR11-))-J!!RRcB91Rcss!!%%!%%!!!)!GBBs-Ro1ocoBo)oRos))GRB)R)N9ZZ991!!!!!RJR!R!))%c%1)R))%JoccoBG)-BB1J9!!%!%%!!%!!G)!)G)!%%)R-R)BR-RRGRBRBB-cooBRR1Z11!!%%!RsRoGF!BoRcBooޔcoBsRoRRoogRcRoRocJJssZ!!1%!BBJ))RBJBBRBRo!ooBRo!RB-RsoBBRFJJs!%%1!!)   $  %'3Ƚ 孔ε 楜ε {{{ 𽜭εεkoo{{k{{{˥ooo{ooko{oo{{{{{{{󜥜{{{{{{k{{oss{{{kk{{{k{{{s{sksk{kss{s{k{k{s{ss{{ooookokk{{k{{{{{{kssks{_cssks{ssks{k{{{{{{{o{ܜ{{{{k{{{kksskssZssZRs_scs_ssksskssk{s{{{{ooooo{{oo{{{kscZZRscsscsZssksskssk{ks_s{{k{{k{{ks{{s{occZRcRccRccsccZsccss{ssks{k{{{ssoZ_Y{k{{{쵽ڽڽڽsZRsZkڽڵڽڵսڽRRcRJڵڽڵ𵽭RR9F9Z{gRR{ڵڽssR9F77J7ZJ7JRc1𘥵絽ڽژ{ZR997JJFJJ7J眽)11ks{Δ__kν{JB977))BZJJ)7)79k{11ڵڜssskYs{sZJ7)!!7)JJ995!5!59kRkR__d5)){{{秵kZZ9)!!7JFB)!9)9)55Y1)1)k91{s))1s{씘{{_ks7))!9JF5!!)s))sY))1))k{))1s){{ZR)!!JB!)RJ))RYRY))1)skYR_RR))R{k1_kZR!!VJJB!!)R9)Yk))1)R))_)9))99)RsYR_))R))J{{ZJ!!)JJB5!!!)9YRRY)){R))dkRss))99R)))99)9)9)YY)){ZB)!7FB5!!!))RYRR9))RYR)kR)){sRR)!!7B5!!!))9))))R))J)9JRYss))Y9)R))9ZZRR!!55!g55Jd)sR))!))))RsdJ9)9))))))))R))9!!J!5!!Z5!91JJ))99))!)9d))191dJ)))))15FFB55!!99!!5FJ!)9R{))1)!)),1)!)JJsJ)JJ1))!))9FJ9B95!!55)!!5!)Jkk)))))9J9dd)))_))!!,9,55)1ZZ!FJ!5)),J)J9)JJdJdJ,)JJ1)9)),))9)!)))sZ9F5!!)99J9FZ,,)99,)sd))9))1))9FFsk!J55!!!sR)1Z9)9gs99g)gssZZJ),)11d1)J9{7955!!!5)))9F9JJsJ9_1)99dZJgJJ))g1J1)sk)_ss9!5555,)99_99ssZ9_9F919d_{d9,)9_RJ9)ZkJ)gJȄs7!5555!!!))_))919JYkYY,__dgkdZJJZssd)Jgs)5555)!!!,JZkgJss9dJJgsZZJZ9)ss)kRJsZsZ!!)5555!!J9dg)kZ){Z))k))9sڔJ9dsg)Js9g9RR99B)!!)sZs))!)k99J9F))FZJsJJFZZkd9ZgkJZ9!!555!5!!d99JdJ9,)FF)1sZsJgsZs{{dskskkZk{kJJ))!55!skd_9gsk޵k{{{,ss{ZBZZJ!!B5kkZJskZgksksks{kZsggkks_BBZ!55B    $  %'3εƵε {{ȵ {{{{{k {{{{ kkk {{ƥȥȥZsZokokZkkskkk{{{{{{{{{{{oZoZoZcRoocsZoZcooZkkkZkkkk{{{{{{RcRRcRRcRsRccRoZcZZkZZsZskkkskkkkBRBsBcRsBZRBRsRcRZRZZRcRcocoocccosZZoksskkskkkkkks{cBBsBRg9BZBBcsBZBRBZsBRcRRcRcRRccZcZoZZZZkkkZkZsZkZssBBsBBRBBRRBgB9BgBBsBBZBBsZBsRBRRcRRocooccooZRooZkcckZsZZB9BBRB9BB9BRBBsBBsBZBsRsBgZRRcRRsRRsZRZccRBcRccoc99BR9R99R99B99B9BRBBsBRsZZZkZBBocBcgcjRsRcRcƽƽƧZB9BcBJƵƩƽ{J9999)ƽƽƽƽƔkB9B%B1199ƵƩ絵ƽRZBB%77)71)7)R9Ƅ9𩭽Ƶν穽組BB%7))%))7)Ʃ199s{ggsR9)%771)1))77%s99焭驭{{{sj{{R977)%%%sRsRggj11㵄΄εscJJB7)%1%1%1jƽ9191sZ9{119{gssR71%%1{11{j11911s119ƽ{1RƔ{kJB)1RJ11RjRj1191{sjRgRR11Rs9gsssJB!%1RR1js11919R11g1B11BB1R{jRg11R11JkkR9!)1BjRRj11R11jsR{{911BRBR1191BB1B1B1jj119skJ)17%11RjRRB11RjR1sR11kZBB7!11B1B!1B!11R11J1BJRj{{11jB1R11BJJBB!1JBj1{R1111!B11R{jJR1B11911B11!11R11%91B9JJ11BR1B!1!1!BBj119R9jJB11!1!119%%%%!%1BR11B9111M911JJ{J1JJ9111!1%%%%!1ss1B11B11BJZjj!!1B!11g11B!MBM1911%)!11M9J1JR1JJj9JjJM1JJZ1RB11M!B11c11!11Zkkc1%%B1BBRssZs{MM1RRM19{j11Z1191!B1Bss{{J)B!{R1B9{R1BB{cR1{{s1M1ZZj91JRc7!%11RsRsssZgZ19ZRj{sss11ꌈZs911g{{R%!!M1RRgRR{{RgRsRZRjg޵jR9M91BgRsR1{ss1JȌkZ7!11g11RZsjsjjMggjjss脩{j1J1cR!!9Ms穈s{{9Zjss{ss{RR11B{{1R)BRsZJ1!sRj1111穜11Z{ƩsZj{1s{B1%BB%%!1{{11!1!sRZscs11ssss{jZ)1%!!!!jZRsjsRM1ss19{{s{j鄌s)9!{sjgR޽穥M{1)JJ9!!!!!{ss{{g)){J!!!8H:. %)׽׽2֭׽*ν׽*׽קޭ(֭֭"޽!Χs ׽{s{{{{{{ss{{{k{{s{{k{{sޭ{{sk{sk{koo{oo{s{{{k{{o{kokskkck{{o{ss{k{k{{ksook{koks{okss{k{k{{ޭk{s{sookskRcckkokkZkskkoco{o{sk{ks{ooskkccFcJ9cZ9ccRkkckk{ ތ{kskokscFc9Fc9c9Z9J9Z9JJ9Z9cFckkֵޭs{kokkRkkcZ9Z9Z9ccFccRkʭsockRcckRcZkFcc9cc9c9ZFcc99c9cFcc s{k{{okccJFccF9cF99Z99c9Z9Z99c {{{{s{sok{okcckFcc9J991J1J1J1J1J11J1Z19Z9JZ9{{s{{s{{s{s{s{ks{oskckcFc9J11J1>1)771>J1>11J1J19Jk{oskossssskokssks{o{{cokk9JJ91ZJ1>117>11J)11J19s{{s{osZk{{Z{skks{ck{{kc{{J91ZJ11>1177)11)1J771J11J11J1׵ֵck{skk{{kkc{cZ11J1>771JJ71177777)771)J֩֩֩ccJc{{眭{kk{cJ11J177)171%777)%7717171RkF9ckc{sJcZ117%)%%7!%%%7%7%7ꔌ991c9c9{{ZRc9ZJ177)7%)7!1%7!7%)֔kZJZ1Z1{{J{1c11717%)%%!1!%!%!%!%7֥RJ11JccJss11J71111%!!!!%!%֥֩֩RJ19J1>J9JZkc{J11Z1%111RJJ!!!!!!!!!!sgscJJ)7JJ7)71)J)JJ717711J11>!>1J1!!!!!!!%%J)11))R)JNJ77)JJ1J1%JsJ1711%99!!!!!!!%>%9!9!%%17JJ1J117%JJ1)%7JR77J11>1!!!!!!%%19%!!!9!11J1111JJ%7>17>>119%!!!!!!%%!!!%%!!%11J11711111911>%11F111%%!!!!!!1!9!!!!%%!!JFF11999%11%%911%%!!!!!!>1!%%%!11%!!%>>%9!!%%11>F!!%1>>%!!!!!!11%%%9%>%!!!!%%!!%!1>1F11>!191%%9%!!!%%!!9!19>!!%9%%!!!9%!!!%>F19%9%1>19!%!!!9%!%%!!!!9>!%%!!!!!9!!9!!%1>>%>9!!>F9!%>9!%%!!!!%!!%!!!!!9%>!%%!!!!%9>>%!!1>>%%91%%!99>1%99%99%!!!!!!!%%99!!!!%>%99%19%9919!!%1191>%99>!!!!!!!!%9%!%!%%!99!!!!>1>19>%%!%>9!!%9%9%>!!%1>9!!%!!!!!!%%99%%!%1>9%!!%!!%>1%!!%9%%9%!!!%!!%%>19%%>!99!!!!!%!!!%%!9%>>%!!%%%!9!!%!%1%91%%%!!!!!!!!!%!!!%!%1%%!%!%%!9!%%>1>!%9%%!9!!9%%!!%>9>1>1%%!9%%!%!!%9%%!%!!!!!%%999!!!!!!%!!!%%!!!!!))1)%9!%%>!!!!!%!%%!!%!!!!!!1)1R)))1%!!!!!%%!%!!!!!!%!11R))1)11>)!!!!!!!!!!)11)!)N1>))1)!!!!))!1J))19!!!!!)11)))1!!!!199!9FF9G)))8H:. %)2ν*ε*ȧε޵(ε"޵ε!Υ脜{έ{{{{{{Χ{{{{k{{ޭ{{k{{k{koo{oo{k{{{΄{{{o{kokskk{k{o{kk{{Μ{{koo{kokk{o{kk{ޭ{{k{kooksksZZkkokko{oo{k{{k{ooskkZZ_ZcRZZRZZkZkk{k{ ޥ{{kkoksZ_ZR_ZRZRZRRZRRZRZ_ZkkΧενޭk{kokkZRZ_ZZkʭνΧko{kkZZkkZkk_ZZRZZRZRk_ZZRRZRZ_ZZ k{{{okZZc_ZZ_RZ_R RZRZRRZ {{{{{ok{okZZk_ZZRR9R9R9R9R9R99R9RJRRZR{{k{{k{{{k{{{oskZkZ_ZRRJJ9RR9F91779FB9F99RJRJRR{o{okk{o{{o{{{okkRJRR9F997F99R199R9Rޔok{k{{{{k{{kZ{RRJRRJ99F9J7719919R779R99R99R9Ƚڵ罽{{{skk{{kkZ{ZRJ99R9F779RR7J977)77)717791Rڵڽս{ZcZ{{{kk{ZR99R9771J79)57))77157797J79εsk_RZkZscZZ99751)55)7)!5))5)5)75))757յڵ굥RRJZRZRZsZRZR977)1751)7))!))5)7))!))75)1){ZRRJRJ{{RJZJJ977)J75)155)!))!))5)!5!)5)!))57罵sRJJ99RZ{css99R7JJ)JJ)5))!)!))!))!55ڥsRJRZ9FRRcZkZ{R99ZJ5)JJ)JsRR)!!)!!)!!))!!)!!)){cR17ZZ717J1R1RR7J77)JR))JJF!)FJZJ)!)))!!))!))))!)!)!55c1JJ11s1cgZ)7)7)1RRJZJ)5))RsRJ7JJ599)!)!!)!!)!!)5F59))!9!55J7))ZRJZJ))J75RRcRZ)J157)Rs7)7ZJJFJ)!!)!)!))!!)5)5J9)5!))!!9!)JJZJ))JJ)JZZ))5)7)FJ7FFJJ)95)!)!)!)!)!)!5)5))!))!))!55!)5JJR)JJ7JJ)J)JJ9)JJF5JJVJJ)J5)5!!!!!!))J)!)9)!!)!!55!!)ZVVJJ9)9))9))5)JJ)5)59JJ)5)5!!)!!)!!FJ)!55)5)!)BB5!!5FF)59))!)!)5)5))JJFV)!!5))JFF5!)!)!))!!)JJ55))59)5)F5)!!!!)5)5)!)!5!)BFJ)VJJF!)J9B5595)!)!!55!!9))B9F)!!)5)955!!)9))5!!)!)5FVJ95)9))5)J))FJ9!5!!)!95!55!!)!!)9F!55!!!!9!!9)!!5BFF)5F9!!FV9!5F9!55!!!!5)!!5)!!!)!!95F!55!!59FF5!!JFF559J55!99FJ599599)5)!!))!!)!!))!5)599)!)5F5995)B9599J9)!!5BB9BF599F!!)!!)!!!!595!5!)55!99!!FJFJ9F55!5F9!!)59595F!!5BF9!!5!!)!!)!!)559955!5JF95)!!)5)!!5FJ5)!!595595!)!!5)!!55FJ955F)!99!!5!!)!55!95FF5)!!5)55)!9!!5!5B59B55)5!!!!!5!!)!))5)!5)B55)!5)!55)!9!55FBF)!595)5)!9!)955)!!5F9FJFB55!9)55!)5)!!5955!5)!!!)5))5)99))9)!)!!)!!))!)5!)!)!)55)!!!)919JJ91)5))9)!55F!)!))!))!!5!)5)5)!)!)5)!!!!J9Js911)1))B))5!!)!)))!)!)5)5)!5)!!!!)5JJs11)J1J))J))F))1)!))!))!!!!!)9JJ1))1)g)JF))1)1))J)),1)9)9J))c))1))1)J))9)!!)9))J))J)9)1)1))J!!!)JRR9R__Rd))119),1))5A:6 %)ȥȥ2򵽥ȥ*ȥ*ȥȧ޽({"ޥ{{!絧{{{ȥ{sks{{󥔔{kkkkkks{{kskkk{kskkkk{{{ޔskksksccookookskkk{skkokcocZccRckcoksskkkksookcocskosskkkkޔsksksoocZcBRRccoccscsccoRocokskskooZccRRgR9RRBRRsccRccck {kscocZRgRRgRRBR9RBR99RBRRgRccƵΥޔskcoccsccRBRBRBRRgRRsc{{{ܔ{ƥ{soRcsRRcsRscgRRsgRRgRR{ {ZsZkkkocRR9gRRgRRgRRBRRBRBRR{{ kkkkZkkockocRRcgRR9RRB9B9B9B9B9BB9BBJRBR9BRkkskkskkZkskkZcoZcRcRgRR9JJB99B%B977B%)B%BB9J9JR9coZoZskZZskZoZZZcokskRoccR99RJB9B%BB7%BB9B9BRZccZcoZsccscZkZkRckkcRkc9RJB9JBB%B)779BB9B977B9BB9BB9BνRkZcckkccR{kRBJBB9B%77B997)B7717717977B99΄RR9Rkck{kcck{R9BB9B779)7B171177977B7)7BƽƽƽBcgRRcRs{{cZ9RBB791171111171177{RRJRRsRc{scBBRRB9B771979171111711117191B9BJBJkk9csJRJJB771)71911111111117ƽƵƽB9JJBB9RR9Z{{ZBB97))1))111111119Ƶ{B9)R1B%9R9BcRk9BB)1))1)B9911111111ZƌR99711797)997)77)911))%1%)1)111!111!11!111199))99B9911717199)1)1119Z9)7))%%1111!1!%%11%)7119)1)11)7991)9719B7171))%)1111!111%11!1%1))1)11))1)11171%)7%%))11%11111111111111)J91))7))11))%1))%))%))11!!!!!11)11%111%)%1%11%111))11%))11111!%)1111%%1%1111111)%%111)%%11!111))11%11%11111%1%))%1)%%11!%1%%11!1%!1%1111%%)%1%11111%)%!!1%1!1!%%%%1%%1%%%%%!1!!1!1%%!%%)%%%)%%)%%%%1!1!111!1!11%%!%%%1%%%%1%%%%11!%1%%%%%%%%1%%%%%111%%!%%111%1%%11%%%1%%!!!!!1%!%%111%!%111111111%!%%1%11%!!!!1%1!%%)%%111%1!!!!!1111%%11%1111!1!111!11!!1B9BJJB9111%1%1!1!11111!1111!!!!JB)BB9919111111!1111111!!!!!)JB991)9)11)11%1191B1111!!!1BJJ91911)%1191911)11M91!!!!!B1B)1191191191)11%1!!!!1B11)11)1B191911J!!!!!1JRRgRj1199B1M911     "  *=6=:ޭ1ք,׽֭{׽sk{ތ׽׽ ֭׽眭sks{ޭ޽skkokssss {{{{ss{k{Rkkok{sk{{{k{{k{k{{{{s{ss{ssk{{gkccRkkooko{kss{{ksk{{k{{skkk{{{{ss{c{sk{skkoo{c{cck{ZZFcckkock{ksoks{{o{ss{sk{{ss{os{{{ooso{ksoc{{soc{cscs{cFccRR99Zc9FcFcRckkckckocZ{oo{{oo{ockookocc{cg{cc{{ccRsRcRFRcRRcRc9cFZccRcRkkFkRckkRcksoskcokskccFcFccRkRccRcRkcRRcRcRRJ1J119FcFcJcFccJccFcIkkkskccRckckkRcFcRRcRRcRR9RRJJRJR11Z1c99J99Z99cF9ZFckcRko{cRFJkc9kJZ9cZRRFcRRFJRJRJ9R9JJ1Z11J11Z9c9c99Z9JZ9Z9J{{c9cJskc9c9J9Rc99J117)1J11J11J1J99J9J9kcJJ9Rs9J11J1J1J1JJ11J֔֔g7%)711J1J1J11c1Zs9ko{k9ZZ1J1J1ZZ1Z1J177Rs֔)771J11csJJ1J1Z1Z1c9sF9oFoocF99Z11J1JRJ117)ss7%7))11{c1>11Z11kk19c11919Z11ZJ1ZJ)777Rgsss%)771)7kc11J11Z1))11))7>)1)1711119sgsg))s77%1JcsZ777711J>1c1c117Z11J1%%11Fg1gssR7!%7JJ17%711J))J7)>71>JJ1>s17)J1%1!%!%1I1ggRg17!{ZJZN9J7%J7717711797171171J1N117%)%%>%>>)1)J{c%J11J1J1J777%1%171%11>1%%!!!1!!!sJ)1Z17%117177%%111%9!!%19>!!!!%%!17ZRZZ9J711!997%1!1!%911>%!!!!1%!!9J7J!111JJ%%!11>9%1%%%!!!%1!!!!!%%%%!11J19!%%!!1J1!>9!%19%!9!%!1!!!!!!%>%%9911JJ1!%117!%%!9%!!%%!!!%%9%!!!!!!1171J7%!!1!!91%!!!!!!%!%1%!!!!!!!1!>199>1!!!11!!%>%!!!!!%!!!!%!!%!!%!!!%%1>>%>%!!!1!!%11%!!!!%!!!!!%9!!!!!!!9!%!!%%%!!!!%99%%!%%!!!!!!!!!!%9!!!!%!%%9!!!!9%!!!%9!!9%%!!!!!%!%!!!!!!9%!!99%9!!>%>%99%%1>!!%1%%%%!!%!!!!9%%91%%19!!!!!%>%%>9!!!%!!%!!!!!!!!!))!!%%%%9%!!!%!%9%%!!>%%!!%%!!)1))9%!!!!!!!%!%9%1!!%%%>%%9!%!!1)!!!9)%!!!!)!11!!11)J11!!!%1!%%9%!%!%!!!!!%)!!!!91)11F%11%)1%!!!!!!!!19)1!RocgF)RRIRcRcsR)1!)1)1!!11!))97%)1!11)!)1))kRFoF)IsscRccsssc!R11191)1)!99>!%>!!))11G9))1!!!99ZRosRG))9)199F)1)1))!11))!!)9)1ZFRgsgRsssgcsgsRcR9))G)))9F9119R11RFssGFGG!9RccIZoRZFF1)ccRss9R1GR91kc9cgR19911g991)9))1%9ZZR91%RooooRI1s     "  *=6=:ޭ1,{εέ{ޥε εεεέ甭s{k{޵εε kko{kkkΧ {{{{kk{{kkok{k{{{{{{{{{{{{{{{{Zkkoko{{k{{k{{k{{{{{{{{{{oo{{{kZZ_ZZkko{k{ko{k{{o{kk{k{{k{ok{{{ooko{o{o{{{{_{{ssRRZZR_Z_ZkZkk{k{ko{koo{{ooo{kooko{{{{{{{sk{s_s{ss{kZRZ_ZZkZkk_kkZkks{ksok{okskZZ_Z_Z{skk{{k{sk{ssZs{ssksc9RJJR_Z_ZcZ_ZZcZZ_ZYkkkkZ{kZk{kksZ_Zss{ss{sskssksRssccscs99JRRJZRRZRRZ_RZ_ZkZkko{Zs_ckZRkcZRZksks_Zss_cscscRsRcc9RJJRJJRRZRZRRZRZRR{{ZRZcskZRZRRsZRRJεڽڽ719RJ99R99RJRRkZRRsRJRJRJRJRRJJRڵڵ絵ε751799R9R9R99JZZJJRkRkokRRJR9RJZZ9Z9R977kڽ)1779R99ZsRR9R9RJRJZRk_Ro_ooZ_RRJRJcscJ9J771Θ)7))57119JZ9F99JRJJkkJRZJJR9RR99J9RRJZR177)7)sε)517)7917kZ99R99R91199117F1J1J7J)J)JJ)R11))7)7)59RZsZ77)7799RFJZ9Z997Z9)JRJ)5))5))JJ_Js7)!))57RRJ75))7JJZ11Z71F7JFRR9FsJ71RJ5)J)5!))5)JYJ)k))7)!ZRZgRR)75Z77J77)J)J)7)97)J7JJ79RJgJJ7))5)155)F))5F)F1J1))))R{Z5)RJJ)RJZJR)7)775)J)5J)7J))5)JJFJ5)5))!))!)!J))!))!))!sR1JZ975)JJ7J)775))5))9))J)5)9)!!5J9F!!)!5)5!J7)ZsZZ9))R7JJ))!)9)975J!))!)59JJF)5)!)!!)!)J5))!)!)9))Z7Z))!))9RR5)5!JJF95J)5)5)5)!!)!)5J)!!))!!!))5)55)5!JJcJ9!55)!)!)JRJ)!))F9)!)5J95)!)9)!5)!))J))!!)!))!!!5)F55)99JJcRJ))!)5)JJ7!)55)!95)!))!)55!))!!5)59))5!)!!)!)!))!)JJ7JZ75!)!))J)!)!9)J5!)!))!)!)!!)5))!5J5)!!!!!!)B!FJ99FJ)!)!!)JJ)!)!)5F5))!!!))!)!)5!!!!5!!)5)!!5!)!!)55)JFF5F5!!)!B)!)!5JJ)5)!)!!!5)!!))!!)!59!!)!!!!!9!5!!5))55!!!!5995)5)!55!!)!!!!!!!!59!!)!!5!)559!!)!!95!)!!59)!!9)55!!!)!!)5!5)!!!!!!9)5!!9959!!)F5F599)55)J)F!!)5B5)55)5!!5!!!)!95)59B55J9)!!)!!)!5))F5)5)F9!!)!5)!!5!!!!!)!)!!!,99)!!555)595!!)!5!5955!)!F5)5!!55)!!9J995)!)!!)!!)!!))5!)595)J)!)!)5))5)5)F559!5!!)J9)!)!)!9))9)5!)!!)!9,!)JJ!!B)J9cJJ)!)!!5)J)!)559)5))!)5)!5!!!)!)!59)!!!!RJ9JJ_))5JJ)5))1))J))5))!)!!))!)!!))!)!,JR9J9ko_9kkYkss)1J9))9J9J!1JJ!)1)1R759J!)JJ9)!1J99kk_o_1Ys!kJJ))J))RJ9))J1!)9)9)F!))5))F)!))!19JJdR9119J))!!!RRkssd)919))9JRR_))1J9J1)19JJ99))!)!))9R19k_kkskR99d11)1R_R)J))J)RsJJk_dd)_dd9RkYkokk__JJs)RkJdkRJ{RkJRRJJRRJ9R1))1)J))5))RkkRJ))5sk))YJ  *=2=:ޔ1ȵ,ȥ޵{kȥ{{{{{{k{ȥȥ ȵȥ{{{{Zskƌ{޽ޥ{{{{{kkZsccossΔƔ{{ k{kksZskccsccockskskkkksk{s{skkkkkZkZkZZccJRRsccoocoksZkkskkkkㄌsskskkkkZZkkcZkZJoocRcRRccBBgRRccoRccsoskkoksskskksskosk{kkoosZocZoRccZoRcRZRZcRgRRBBRRBRRgRgRsRccRcRcoRscookkoocoRcoocoRRcRcRRccRRBZsRBgBRBBRsRRgBRRsRsccgcsRccBR{cZoZcRocZcRRgRgRRBcsRRsRBcRBBRBRBBsB9B9JJRgRgR9RgRR9RRgRjc{ccscRRsRcRccBRgRBBRBBRBBsBBsBRBB99B9BBJBBJRR9RRBRRgRBgRcRscsokRBg9cRRc9BRRsBsBgRBBg9B9B9RBR99BJ9JJBRRBR9BRBR9kkRR9ZcRR9RBRR9JJ{ƽ79B9JBB9BB9J9RR9R9RcR99RBZR9JJ9J9J9J99JJ9罽罵ƽ797BB9B9B9BBJRRJJB{{sRcoccRBBJ9B9JBB9B77sƽ1977B9BBRZ99B9BBJBJRRsgRogooRgRRBJJ9J9B9)B)779٩1711799BJscRB%BBJBJJc{{cJRRJJRBRBBJBB9)B9977171BƔƽƭ19717B97J{{RBB9BB9B97%9)9)7)1)1))1R99117171B9RZB77177BB9%JRBRBB7B1)9)11111))gJƭ{7111799)7117))199179%7J%99B%Z)799)1)19111)jJ1s1171cB9B1R917177)771)1)171%71)7))7B9)1))711191%11%1%9J91!11!19kR19))19)1)9171771)1)17)111))%)111111)111111Zc99)BB71))7)1771111B11)))11%1)%%191)71BB%1197))111%1%7)1111%))%11111)1111!%1171111B991))%%111111)11!1!1111))9)%111)9)111%%11)%11%1111)111!11!1%1%%))99)1111))711%11111!11%111!11111)7)17111)11%1)11!11!1!111)1!!!1%%%11!1)111%11!111!!11!!1!1!1%%%!1!1!1))11!1!1!1!11!%!1!!!%11!!%%11!1!!!%!1!1%1%1%1!%1!1!11!!!!%1%%%!1%%%%11)1%111!!1%1%)%11111%11%%!11!!!!11!MBB1!1%!1%1%1!!!1BJBB%111!1!!111%1)1111111%!%1JB1!11%11B11!1!BM1JJ1JB9JJ111)1!1%11!1!11!1!1B1!RJBJJg1!1))111911)11111111111MJRBJRsogBssjs{{19JR!11BJBJZJJ1919R7!BJ!1JJB19JBBcsgog9j{!s)11)11RJB11J91%1%1%!1111%11!19BJJjRB99BJ11!RRs{j1Z9%11BJRRg119JBJ919RJJBB11111BR9Bsgss{sRBBj9919RgR1)11J1R{JJsgjj1gjjRRsjsossggJsƭ1Rs)jsRJRsJRRJJRRJBR91191J1111RssRJ11{Ʃs11j)ީ֩ީש֭קֽ֭{޽{s޽{{ssoֽ{{ssoss{{sksso{{cֽs{so{sccFsRR⌄{{soss{{RRkRcRRJ{s{{ksoos{ocRRsRRFJc팄{sk{o{{cgcc{ccRkRRZJJR{ss{{cRsccRRcFRRJFRJ{ss{k{gcRccRcsRJRFRcJ99J99gsocscckRkcRRFJJ9J9JJc{ccRkRccRRJ9Z9J9JJ9JJccRccRRFRJFRRJFR9JJ9JJ)JRRFRRJZJ1JJ)J)J)1RcRRJJ9J1JJ)N)N)J1NJJRJJFJ9J9JJ)N)N1)NN9J9RJJ9J1JJ)J)NJNJNZJ9J9JJ1JJ)J)JNJNJN111sggggcs99c9c9cJ11sֵ֩sssR99gs֔gsg))ssosssssg))gcgs99))))IsssRcg))))Ics9!G)))19RF9F!9)!!!!!cG!99!!!!)19!9!!!!!1!c99kI9!!!9!)s1!!!)!!)!!9)!G!!9cgR1!!G!%99%)!!)!!!!!1!!%!%!!!9!!RF9%!!%%!!9!1!!)!)!!%!!%!!%!)!))!!!!%!!%!!9RR)!!)!!!!%!!!)9F))9))I9!!!)F9FI)FF9!1GG9FRF9!!RFRFGFFRRF))99)19)RR!!1%)F!R%)!11ssGFcքIFF911)!RsgRJGJsckRkoIZ))!cssRR)!1F19)1))911F1)911)!!RcRgcGRFgF))99I9gIZgcI)GZgRFGJggsscskRIRRIGRRkR!RIZocZcR99F11)FZRgss99)!1R9!!>1F1)99IGggR1))1)1coggsscRsoFR{I9RRososggosooogooc)IgRgcRs)1RGRooJ)1)RRG)RR9gRosZRFJȧν罜{Μ{Υ{{koν{koΧ{{{o{Μ{o{{_ssk祜{{oskks{skc{{{{ooo{kssks_cZ{{{o{{{{{sksksZccs{k{ks{{ss{_ssc_sc{k{{k{{s{skcs_sZcRRo{{{ksk{kss_ccRcRccRc{{{{sks{{sscRZRcRcRRcR{{k{{ks_sc_sksc_sRccRcRRZ1cksskss_sscRZcJRRc1c1c1JsZssccRcJcR1g1g1cJg)ZZcscc_cRcRccRc1g1g)J1g)gRcRsccRJcc1Z1gZ)gZ)g))ZcRcRccJRcc1c1cgZg)Z)g))J)JJ{RR{R{R{ZJJڵڽյսڥڽյڽڵڵڽ罘ΥΥsRRνε絈1911)11)RR1)191))1,))Ys11)11)Y))R)9))d1),11)JRk_R_)R99))1)),)9))9)9d)9RR9))))9))9J))R))9R)))))),)9)JRR{YR))))9R),))9J))))9)9))9))9)R9)d),))9Rk))J9)))d)))5995))19),)9),1,),99),9)9J!!)5!5!!)),))9))R9)9k_)95!!)5))5!))9R9J99))9!5!!)5!!5!1!1)9))!))!!!5)!!5)!!9))kk1))99)!!)!!5)!!)!,19_11R99YR9))!!)9_R_Y9__R9JddR_k_R)!!k_k_d__kk_9))9RR9JR9))sk)!!J59_!k519JJd_瘧Y__9)JJ1!ssZdZ{k{Yk11!sk9!))J_J))R1J19RJJ_J9RJJ199k{kds__91RRYRYkY9dkk_dZ{kYkkYdkk{k!kYko{kkRR_JJ1_kk)9R99JkR99FJ_J9RRYdsJ11J9Js_kYRksᄵ,1Y)s{k9))JkdkZ1J9sksd9ssRsks_c)ʵʵʵȵƌ{ȧ{{޵s{޵{{{kkޥ{{{{kZޥ{{ksZo޵{kksZZoZ{kkZZZoccRkZkZocZRRgZBs{{kkZoZZccBscBRBs9{{kkZkkcZooZcoRsBZBsBg9RkkZkoccRRRcRRBcBsBB99B{{skZsccRsZRRBBRgBB9gB9ksZccRsRRBRZs9BgBR9RR9RRZoRZRRcBcRsBBg99R9R99RcRRBcBRRBB9RBR9R99R99RRsRRsBgB9gBsB9gBR99R99199sBBsBBgBB9B9J99)BRBB99R9J9919199)119B99g9R9R991911)911R9RB99R9J991911B9R9R99J991)1)){{RZRR1))罽ƽν㽽ƵΩ{RR絔絽9B991ƭƭ991RR919B9119M11j{991991j11R1R11j91M991JRsgRg19RBR191Z11M1R11RB1Rj1RR911911R11BJ11R11RR1919191911M1R1J9RRjR1919119RR19M11BJ911911R1Z191R11BR91RZ91j91M11R9Rs11JR1911j1911%%119R1M1R1M9M19MRR1MR1R1!!11M11R11R1Rsg1%11!1!11RJ99BR11B9!!1!!991B11B11!!11!%11ss911RRB!11!!1!!1M9%g99RBBjRR1!1!1BgRgjZggRJjjRgsgR1sgsgjggssgB11BRRBJRB11{s1!JBgs9RJJjgjgg!%!1!JJ9{{{j{sjs99!{sZ11JgJ11R99BRJJgJBRJJ9RRsRsj{ggB9RRjRjsjBjssgj{sjssjjssssjsoRssRRgJJ9gss1%RZRJsRR%JgJBRRjj{J99)B)穽{gscjRs{ጽM9j1{RsZ11Jsjs{9JZ{s{jZ{{R{s{g91!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!%!!!!%!!!!!!!!!!!!119!!%%!1%!!!!!!!!!!!!%!!%!!!!!%!1!!!!!!!!!!!!!!%!!!>!!!!!!!!!!!!!!!!%%!!!!!!!!!!!!!!!!!!!!!1%1!!!7!!!!!!!!!!!!!!!!!11!!99!!!!!!!!!!!!!!!!!!!!!!!!J!!!!!!!!!!!!1%!%!!%%!!!!J!!!!!!!!!!!%!!1%117!!o!!1%!!!!!9!!!!!!!!!!!!1%!!J9!!!%!!s!!7!!!!!7!!!!!!!!!!!11%!!!Nc1!!!!!!!!!7!!!!!!!!!!!ZJ1!!!!!Jc!7!!!!!JJ!!!!!!!!!!!!Jk7!!!%!!!!!!!!!7k1!!!!!!!!!!!!!!Z1!!!!!!!!!%s7!!!!!!!!!!!!!7!!!!!!!)!!!!1Z!!!!!!!!!!!!!!!!!!!!%!!))!!!c9!!!!!!!!!!!!71!!!!!!)!!!!ZZ9!!!!!!!1!!!!!)!!!!!!!!!!Z1!!!!!!!11!!!!!!!!!)!!!!!!!!11%!!!!!7!!!!!!!!!)!7!!!!!!!!1!!!!!!!!!!!!k!!)!!!!)1!!!!!!7!!!!!)!!s!!!!!))!!!!!!)!!Z!11!!7!!!!!!!!!!9!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!)!!!!!1)1!!!!!!!)!!!!! !!!!))9!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!1)!!!!!!!)9)!!%R1-))!!!)Z!9))!!-R1BB1B1)-%91BB%B1R!9!!9)!!RB1J19!)!!!!!%!!!!!!!!!JRBsRR%!!1!9!!)!!))!!!!!!%))!)G)JBRRB)-BBsZ)!!)%))!)!))))!!!!!!9))!!!!!!!!))B!!!%))-BBRB))!!!!!)-RRBB-J))!)%B)!))!-BBRsRR1R1B))!!JG)!!)R-BBR)RoBRRJBJRRZRJ-B1B{oRRsB1BRRBRRBB1BRRBBB1B1RZJBcBJsRRBJJ))!!!!)9-1RBB1BB1BRBB1BZBB1))!)!)19!!!!)%RBBRsRBRBBRB!!)9!991-BB-!BBRRsBB1BBR1B)JJBRBB1BB1)!!!!!!)RBRRRR-BB)9)!!!!!!)!RR!!))9)!!!)!!J))BB)!!!!)IGBsoocB!!!!9J)9BBRZB11))!)1!)!RZo{RRRBoRBRB-11BJBBZBJBBR9!!!)!)9BJBBc1JJ!!!!!))RB!!!!!!!!!!!!!)F9F)!!!!%J)11B!!!!!!!!!!!%RBJJ)%JRJ-11B1cBB1ZBJBBJ!)%-R1BRBB1!!!!BJBBRJBRRRJZJ11J1JJBJZRJJRRJBJJRRJ{R))!)BRZBZJZRoJBB1BZJJRJRJRJJccJRJJBJBRRJZRJJ!!9!!)!)BBZRRR-%)!!!1ZRoRRJRRB1-%))!))%%!!!!!!!!!!!)!!!!!!!!)!5!!!!!!!5!!!)5!!!!!!!!!!!!!J)J9!!55!J5!!!!!!!!!5!!5!!!!)5!)J!!!!!!!!!!!!!5!!F!!!!!!!!!!)!!))!!)!!55!!)!!!!!!!!!!!)!!)!!)J5J)!!!7!!)!!!!!!!!!!!!J)))!)9)9!!)!!!!!!!)!)!!)!!)!!!!!)!R!!!!!!!!!!!!!J)55!!5))5!!)!!R)!!!!)!!))!!!!!!)5!!)B5JJ7!!)o!!)95!!!!!9!!!)!!)!!!!!!!J5!!R9!!!5!!k))!!7!!!)!!7!!!)!)!!!)!!!!JJ5)!!)gZJ)!!)!!!!!)7!!!!))!)!!!!!)!ZZJ!!)!!RZ!7)!!!!)RR!!!!)!)!!!!)!!!Rk7)!5!!!))!)!!!)7k)!!!!)!)!)!!!)!!!)!)R))!!!!)!!!!!5Z7!!)!!)!)!!!)!)!!)77)!))!!!!!!)1!!!!JR)!!!!)!!)!!!)!)!!!!!!!5!!1)1)!!!)Z9!!)!)!)!!!!!!)!)!7))!!!!))!!))1)!!!RR9!)!!)!!)!!J!)!!)!!))1!!)!!!))!)!!!RJ!!!!)!))!!)JJ!))!!))!!!)!!)!)9))!)!!)!!)))!!!JJ5))!!)!!7!!!!!)!)))1)7!)!!!!!))!!J!)!)!!!)!)!!))!)!))))!!k!11)))99)!!)!))7)))!!!9k!,,),))))11)))))))))))))9))k))99)))))))7)!),))),)),)))))))1))),)))))!))),,)))))1,,))),))),),)),,),,,))),))))))))))))))99))9)))))))9)!))!))!)99!,!1 ,))))))!))))))9))9J,9,))))))))))!),)))!)))9)))))))))))))))))9))))))))))))))!)))!))!!!!!))))))))))))))))))))J1))!!!))!)))))))9)9,911,,99FJZZJJ)))))!,1,,1,9Jc!,1999ZsZkkZkZJZF)ZkkFkZJ!)!!9J9!))))JkZ1JZ)!J9))))))))))))))5))))))))!!)!))))))))))!)))))11sk{sJF)))))))))))!)9))))9)99!9!!9JJ!9))))))))!),1919F9J9,99dJZ)k{skJ,)ZggccJ9,)!)),,)11)FJ9!9,9,9,JJ9))))!)))999))))))9))))))!)))))))))))))!)))!)))))),)))))))))!),))11J9g))))!)))))))))))))!1),,1F9JZkksgJJ!))))))))!9,),,1)))))ZsskkZ1J99,9,)))Fk99J,991!Zggs{ssZJZk9999,,Zd9))))))))9999JZkkgkJJkJssks{{Z{ZZgZgJ{{ckZk{{gssgkZk{{skkkZkZZsk9ksJZ{sg1199))))9J)ZZ{kkZkkZk{kkZgZkkZJJ91!9,999))99FJgks{kskksk!!9!))ZZkkZ))))!))gkks{Z{ckkZkkJZgJZZk{kkgZgkZJ!!)))),)),9JJks{{{ZgkJ)9!))9{{)))99R99)))))99ZJ9gkkgJ,)))))9Ydgg))))))9!9)ZJ)gkk{ZkZZJJ!9))))))99{ZR{{sk{ksgZZkskkZkskkgkJ9)))))))))9)9)gZZέZskk9Z11!1))))91JJg))),19)),))))),J_)_91)19!FZJZZk))))))991FJ91gZZ1JFZJ1ZZkZ9kkZZkskks,1JFZJZkskgZ9,kskk{sk{ZZ{sZsZZsZssksZ{ss{sskss{ڭ{sRsJJ9,,1Jk{ZkZsZZ{sggZkZsss{s{sss{ssksk{{s1cJZ1!!9)9,,9!9gkZZ{{sZZFFJ,!ZZ{{{s{{kZZF99,1J9FF!!!!!!!1!!!B!!BB!!!!!!!1!!!!!!!!!!)1)%!)B!!!!!!!!!!11)B!!!!!B!!B!!!!%!!B!!!!!!1!11!!1!!1!!!!!!!!!!!111))171!!!!!!!!!!!!!!!)11B1%1%!1!!!!!1!1!1!1!!!19!!!!!!!)1!111!91!!!!!!!1!11!!!!1!1!))7!1o!1B!!!%!1!!1!9%!!s1179!1!!7!!!11!!!1!!!!)!111RJ!119!!!17!!!1!11!!!1!B1)!19R719!!1!99!11!!!!1!9J7!1!!!!1191!!1!7J!!1!191!!1!1!!1B111!!199!!!J7!1!!!191!!11!17711!1!!!199!!JB1!!!191!!1!!919!!!99191!!!1R%!1!11!!!!1!171!!!!11!1191!BB%1!1!!!1!)!1!1!!1191!11!!!19!!!B)!111!1)!11!!1!19!!11!!1B1111!1!11!))!11!!!17!!!!!1119199197B1!!11!)!11!!11!1!!111!1!1!1!!!cB991B119B9B9BB9BB919!!1!117!1!11!!!99B9sM9BBM19BB9B9M1B11B1991B111B1191191B11B199199B91B1B9sBB191BB11B119911!B171BB99B19BBM9!BB1B1B19BBM1B99B99R11B9MB9B91B1B191B!1B11991B11M991B1B1191!!1B1991MM9B91B199191B!1B99B99ZBMBB9M1BB1B1B99M9B911B!1B99B9MB9919B1BB99BBM911B9BB9B9M99MBB1BB9BBM9BBMBB9B9BB9BBM1B1B9B9BB9BB19B99B99MB1B991B1B1B1B119B9B1BB1!B1B11B1B199RB9B1BB1B99B11B199199B9B1B!11B B91B!!1111B199B9BBRcMcZ99B BMBB1BB1B!1!!1911!1B1B1BB1BB1B1R191BsBMRRBMBB1B1BB9191191B9191B1!1BB19M91BB9B91BB1B!B1!B11BB99B9BZ1B1B1B11!B11991!B119B1B99B9BB99B1B1BB1BB9BB191B19R1!1!!1991B1!11B1B11B9BB1B1B!11B!1!11!11B!!!!1!11!1B11B91991B1BB9BB1B1B11B11B1!1!!1B!1B1J911BB!B!B99B1BB1!1!11B1B1BB19B1ZkZMBBRZBZMMRccsss1B11B11!BBMZMMZBB9MRsBB{cMBBZRZZ9RsskB!BBsckccRBBZsZc9B91B1BB1BB1B{kcsBR99BB9B1BB1BB1BB9BB1B11B!B1BB1BB!1!!1!1!91B!11B11!B!B!BB1B1!B11B1991!!B1!11!!BB1!BB991911!11!B!B!11!BB11!11B!BB1BZ{sB1BB1B1B11!B1!1!1!B1!!111BB1BB1BB1B19ckRRcZccscRB1BB1B!1B191911B1BB1MZRZcscsZBB!MRZjs{1BsMBB1BB섌{sRM!1B!!BB11MM!1B9Z1ssZcZ9MBMBBMssZRBB1!B1!BB1!B1!B!B1!1199B9RRB1!B1BB1B11!B1BZBB!B!B!B1B11B1!B11!111!B1!B1191B1BB1!BB1BB191B1!11B1!1!!B!1B!1BB!BB1B1B1BBMB99B1!1B!BB1B1BB!!B1B!1B11B1B!1MBB11ZZsZ!1!1B!11!!!11B!11!B!1BB11B1B1BB!191B11BBB!Z1MMZsZsssB1!11BB1991B1B11BBcRM1MM9!BB1B1B11B1!!B!B{sZRMBM1B!1!B1sccsMRZZcZZBRRMM{jZ1BB1B11!1!B1B11!BRR9ZZ茜sƵ{ƩƽΩε{{ZZRR1B91B!119RskƜssZZcZMRZBRR!BB91BB199RZsc9cBBZRckkBB!1!1!1!!1!1B1!B眵Ωs{{scc9BB9B1B1191B!9MBB1BB1MRsskZc9BB1B1B9BB99BB9BB9BBB9BB!1B!1B!1BB9ZZRZR991BB191B11ZRR{sZsM9B9B11B119B91BZjjB1B1B1B1!1991RcRk{skƥsscZB1B!B1!11!!1B1BB9B9Ʃ穵ƥRRB1!B!9B!1!1!B1!11!B11B19B19BBkΩ䜥{{cZ9B9BB11B!B11B99ZZs99B1BB199B1BMZR11B9MBB9B9BB19BB1BB199B1BB199BBMsgkgZZB991ZRcs{sB9B99BB9B99!BB1B11991B911RRZscZ{{s{{Όƥ9BMZsscM99B9BB9޵ƽ팽Ƶ޽ssRMBMBZsƥƽƵΥƽ޽罵{{{{ccRkRM9MBBZcZ޵ss9M9cƵsZZM9ZsZss%!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!7!9!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%F!!!!!!!!!!!!!!!R!!!!!!!!!!!!!!!!!!9Z!!!!!!!!!!!!!!!!!!!!7!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!%!!!!!!!!!!!!!!!!!!!Z7!!!!!!!!!!!!!!!!!!!!!1s7!!!!!!!!!!!!!!!!7sZ1!)!!!!!!!!!!!!!!%!!!!!!!)s1!!!!!!!!!!!!!!!!!!!!!k{Z)!7!!!!!))!!!!!!!!!!!!c!)!))!7))!)1!))!))!!!!!!!k7!!!!!!!!)!1!)7!!!!!!!!!!c!!!!!!!!!)!!!!!s!!!!!! !)!!II)!99!))!!!!!!!!!!!!IsJ!!!!!!!!!!!!!!!!!!99)!!!!!!!!!!!!!)!!!!!!!!!!!!9)!!!!!!!!FJ)!!!!!!!!J)!!!!)!!!!!!!!!!!!!%!!1!!!!!!!!!!!!!1)!!!!!)!!!!!1!!!!!!!!!!)!!!!)9!-))B%%-!!!)!!JJcF)%!!1B11%J-B)J)J)RR)!))!!!!!)!G!!!!!!!!!!)!!!!!!!!!11!!))!!!!!))F)!!!1!!!!!!!!)!%)1BBo11RBB!!!!!!!-R))G))R-1)1BB1J)%))!))!!))%!1F%RB))--)JRJ!!!!!)1B1RJ))-B11B-))-))RRBBJ11JBG)))!!!!!)!!!!!-)--B11B)%!!!!!!!!!!!!!)!)9--!))1--)!BB11B)!!)%J-BJ1BRRoBG!)!!!!))!))-)1B1BB1B11B)!))-J-1BkoRoocRoRcRRBRsR-B11B1B11RB1R-)9)!))!)11B1BB1B1BB1B)B))-1BB)1))G)9)!1BB1R-RBB9!!!!BB11-))-)BRBBRRsRJ)))!!!!!)!!)-)!!!!!)!!%BB11BBRJ-RBBR1BRB1-!))-!!!!!!)%-BBRB1B1BB1RBB1)R-1JBRJ))B)BB!!!)!RBBRBBRBBR--))BB11B-9)J)B-J%!!)))))%))J9!!!)BB)!!!!)!!!!!)-B-!!!)FRJ--F!!!!)!))--))B!))!)J)JJB11R-%1JBsRsBB1BBR-J)!!!))!))%)%!))J1BBRBB1)R--J)1BB11J)B1BB!))%)BBRBooR1BBJRBB1BBRBB1-))RsRRB1B􄔭RcRBRRJJRJJZ1cBB1c1c1cB11BB1BBRRBRsBRBBRBB1BRBBRBJRJRJJRJRJJZZJBZ1B1BJBcB1cBBRBZBRsZoBB1B1BBRBBRRBB1-BJB1B1BBJBBJRB1B1B11BB1BB1)9!!1B1BRk1BB-RB%!%!!!!)!!!%11)%!!)!BB1B1BBRc5!!!!!!))!)!!!!!!!!5)!!!!!!)!!!!!!!!!7!9!!!!!!!!!!!!!!!!!!!!!!!!!))))!!!!!!!!!5V!!!))!)!!))!!)!!!!!!s)!)!)))!!!)!))))!!))!))!!!!!)!!RR!!!!!!!!))!!)!)!!!!!!)!!!7)))!!!!!!))!)))!!))!!!!!!!))!)))!)!!))))!)!))!!)!!!)!!!!)!)!)1!)!)!!)!!!!)!!)!!)!!!!!!)!!)!!!))!))!)!!!!!!!)))F!!!!!!!!!!!!))!!))!))!)!!!!!)!!!!!!!!!!!!)!!)))!)!)!)!!))!)!!!!!!!))!))!)!)!)!!)!!!!)!!)!)!!)!!!)!!)!)))))!)!)!)!)!!)!!))!))!1!!5!!!)!)!!)!!)!)))!))))!))!!))!!!)Z7!))!)!!!))!!)!)))!!))!!)))))!))!)!)!)!!!)9Z7!!))!))))!))!))!)!!)!)!))!)!)!))7ZR9)))1)!)!))!))!!!!)!!)))!)5)!)!!)!!!!)1s9!)))!!!!!)!!!!)!)!)!!!!!)k{R1)7))))))))11!))!!!!))!!!!!!))Z1)117)19))99))19919991))!!!!)!))))))))))k7!!!)!))))1))917!!))))))))Z))))))!)))!))))1)))))))))))k)),999))))))))))))))YY919,9,),),9,))))))))))))))))Yk),,,,!,,))))))))9,))),))9)))))))))))))))))))))))))))))))))!)),9)))))))))))))))))_)19,)))))))))!!)))!))))))))1,9)))))))))))))))!))!))9))))))!)F)!))))J))))))))))))))1)!)9),)!)99))))),)))!))))))199))99))!)))9)))))!)!)!)))))))!))))!))))!)!))J1!9!91,,11,1!J)!ZJJgFF)Z),99Z_9,)))9F99ZgZZF1ZgJ1J1JJ9!J99!9!9))9,,),))d9,)))))!))))))))))))))))))!!!!))91)!)!!!)!)))))!))9)99JJ))))!))!11)))))!)!!))!)))))))!J9_,)9))!!))!)9))))!!))))9,))))))))!!))!)))9))))),11,1FJZggkZZskk))))))))!))))!)9!))9ZJJ99JdJ9JJZZJZkkZZJF199,9 9JF)9J1_FsgJJZZJZsZ)))!))))!JZkZsZJJZkZZgZJJZJJsskkggZZgd99))9),!)))!))91)911))))))))))!!!)ZJZZgZZkJF))9,9)))!)!))!)!!!)!)!),191))9ZZ!99J9ZZJ,))))kgZZk)))),9)),)),),),11FZZgZZgsskd))99,99!9JJZJZkZkgkkZkZZkJ9199ZZk{sssssg{sZ)kZZgkZkZZskZJZJ)J!9J!JZZkZkkZkZgkgZgJg9J99ZZkk9JZJJd9R9!)ZgkkZJZJkk)))))))1kkZZJZJkskksssZ99)9!)!!,99J))))),9919J9Z9),)))))))!!))!!))1))!)FkkZZkkgJZZJgkksZksgZZ99,919Z191)!))!!11,911,1FZkkskZkZkkZskgkZJJZZgsZJJg9kg)!!)!)9,991{kkskk{kkgJZZ99kgZZkZ)JZJ))))gkZZF))!)!))1))9)9)JJFJJ19)9!9))JgkkgJJ9),))!)))!9J1)!!)))99ZgkkgZ9)))))))1J_kZZ_)))!)!)))))9JZZJJ9J9k99!J1JZZgZZsZFZZk{gkZggsZZJ91)!!),99!919F99F9JJ1Zgkk{kkZJJZZJZgkZZ9gZgk)))199FJggsgsZkks{kkZkkJkkZ9JJssskZgkgksskssssZ9kkZ9Z9Z9kZZkkZkkssksksggskgkgkgZZgskggssggks{s{ss{sssZZskZZkZksk9kZ9kkJkZk{cZkkZgkkZgkkskgsskggZkskZkZkkskks{kZkZkZZkkZkkZJ9),)ZkZgs{ZggZJgF!F19,99),11))9FZZJF1)))))19)9kkZkZkggss!!!!!!11B!!1!B!!!!!!!1!!!!!!!1!!!!!!!!!!!!!!7%!B!!!!!! !!!!!!!!!!!!!!!1!11!1!!!!!!!BB%!!!!!!111911!!!!1!!!!!!!!B1!1!11!1!B!111911!9!1111!!!!!!1!!!RB9!!!!!1!!!11!1!!!!!!1!71!1!1!!!!!!!!!!!!!1!1!11!1!11!!!!111!111!!911911!1!1!1!!1!!!!1!!1!1!!1991!!1!1!!!1!1!1!!!B!!1!1!!!191911!!1!!!!!!11!1%!!!!!!!11991111!1!!!1!!!!!1!!1!11!!!11!1!1199!1!!!!!!!!111!191!!911!!!!1!!!91!11!1!1!11!111!1!11!1!1!1!11119!!!!!11!1B!111!111!1!1!1!!1!!11!!91B7!!111!11!!11!1111!91!11!1!1111!!11!!!1BJ711!11!119111191!!!1!1!1!1!!!1!91!117JBB1911919!1!119!!!191!!111911!11!!1!!19ZB91199!1!!!!!!!1!!!!!1!1!1!!!!!!1ckB9197119191191911911!11!!!!1!1{R99199719B119BB9119BB9B9BB911!!!!11911!1!B11B11191c799!9!199991191919911B997911B19919B9B1B11B991BB99R11!11!11191191919911991B1B9B99B11!1B!1!11!1!19!s9919199M99R99R99B911!!1!B1B1!!B1!11B11B191B11jjZ9ZRR9BMBM91B9M199M9R99M991B1B!1B191991B1!B11B11!1!B1!1B191BjsZM9MM9M99c9B99BM9M99B91991B1199BB!1BB!BB1BB199B!99B1RRB9B99B9B9M199B199B19BM99B9B1B!!B1B919911!11!1B!1BB1B1B1!119BB1BB991BB191B1B1B91BB1B1191!11991B11!11!11!1!!!11!RMB911B1991!B99199!119B1B1B!B11BB1B1BB1!BB1B1B1B!BgZ99R9M99B!1B1B1B1B1B1191!1!!!!!11!B!!1!1!1!B1!!1!1B1!1BZ99M99B991B11!1!919!911911!19911B!11!1B11!!1!1R991B1B1!B1B1!B!BB1Bc1sBB9B!BB1!B!B!!!BB1!B!B1!1!!1!J1191B11!9911!!1B1B9B9B9B1!B99B91B1!!1!1Z1BB!B1RB1M!1B!!1!!9BB9B!1B11B!1!BB!B1M1B11B91B!11B1B!11ZR9R9B!11ZR911B!B11B!1B99B11B11B1B1!1B1191!!191!!11!!B1B1!11B1B11!!1!1!!119sZBB9cRBcRZMMZZMZcskcssss1BBB1B!9M9RZRR!!{{gBM!B1!11csRRs{s{s{sZcsZRcRcR9B!BB9!1991BM9M1M11jRM911!1!!B1199B!B!1B1BB!1B119191!11!1!11B11B1!1!1!!BB!1!!!!B!!11B9B!!1!1B!1!BB1B1B!B!1!!1!!1!B1B!1R1RRJJ11!1111!!!991!11!11!1!B!!1!11!11!11B!1B1sZgM1B11!!!B!111B11!11!!!!11!119RM91!B!911!11!!B1!!1!B1!11!11!1Z1911B1BB1MZZMZss1991B11B!11111B!11!!1!!1!!RcB1B1B!RsZZsjsZss{ssZBBMRBBRRcZZs1RJZgs{sss{{B1911B1!B1B1B!9B91cs{ssssss{{jZZ11B1!M!1!!B11!!1919RZ1ZZ191!B9!11!11B!B1!!B1!!B!1!1!!!!B1!!sssB1B9919RMRB1!11BB1!!111!!1!1!1M9R911!%!ccZsZsM11B!191Bߜ11!B11MB911M11M19M1M9Zs{{j119BRRMRRZZcZssssRZZ{B1B✌skscZscssZsZZcsssjZRBB!!!1k1B1!119911B199Zsss{ZZB1B!!!1!!MRRsBB!B1BB1!11B1BMRRZcscZ1M91B!1!B1!!1!1!11!11B!11911!!!9B!1s{cRMBZZZRZ!!B1B1!1B!!BcZZ9B9MZZMZsڥs{{ssZ1!B1!!!1BMRcZZks{s1!1!11{s11!1!11911B1B1ss{ckRcRB1B19sތssR1M1!1B!!11!1B!BR91!!1!!9B1B!B199RRZZꜥR91!1!1!B1!91B119sgs{g1B1!1!11911911BRZsssZsZRZZcs{s{{s{{sRZ1!!1!!MZZcZZscZsRss{s{s{Z11199ZZss{Zss޽ƌ팜޽ƽƌƥƩ󄥽񥽽sZkM99B!B!B1scsZRBMRRB1BM99Z1B19B9R9sssZ991B!1B11B!1ZZ1R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!))1)!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!))!))!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!7!!!!!!!!!!!!!!!!!!)1))!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!)!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!)F)G!)F!!!!!!!!))!!!!!!)%!!!!)F)!))!!!!!!!!!!))!!!!!!!!!!!!!)!)JR)G)91!%))J))F)-!!!!!!))!!!)))!!!!!!!!!!!)!!!-)JBJ)BG)!))-B1BRBBRooRBJ)!!F9)-J%-1BccBcsc-)GBG!))!!G))!1F!)!))JJIF!!F)BRJFF)9F1))BB)9!!!))!!!!!)!!!!!)1!)1))!!!!!!!))!!!)!!)J-J-RRgRGJJBRF9!!!!!1RccRgRBB1BoRRoR-B-B1ssooRBBcRBJG)19!)!!)%)GFJcJZ9!!!)!!1B))-BBJ%!JBRRB1!!!!!!--))%!)!!!!)%1BB!!!!!!!!!!%%-11BB!!)%)R-%-1-%!!!!1)!)!B%)1BB1))!%!)!JR-RocRssRZJ)11!!)!F)BRsRRocRBB)11)!!BB)JF!!F)R!)BR1))J)FF!1!!!%)BRsscRBo1B11B1BB1BBJ)9!!-BRRBRRokRRoossssc1BB1BB-B!!!!)!)%JGs1BocsRsRRJ-))BB1BB1BkssRBG)!R!))F1)1F)))R)1))B1BB1B11B1BsooRc-c!!!!)!)%))JBBRB11RRB1)19G))BRRBB-!!)JBBRBB11BBRRccBcRcccRBBRBR11BB-BBB)!G!1)GIIRJRRBBRRccBB--RccBRBRBRBB1BB)J)JRoRcRRccRRBRBRR!!))BB1BB!!!)7!!!!))J-)!!!!%!))B1)--B)!!BB!!))!)!!!!!!!!!!!!G)B))!)--B1BBR)!!!!!!!!!!!-BB1-))1)GBBG))!!)!!)!)%!))))!!)!!!!B)-!R)%))G-J--!!-1B11BBRRgBBgsB1BB1BBB1BB1BB1BBRococscBRBB-BB1%%!!)1BBsRoRRBF))B1BB1BB1BB1BB1-B%)B11B1)!))GJRcRgRoogRRoRBRR1sRcRR--11BB1BRBRRB1BB)JJ)JJ%BB1RsoosssRB)-J-BRssB B1BcRB11RRBRkRsRRcRsss--RkRRkB-BsBRBZRcskBBRRcRsBBkRBBRRssRksBB-BRkcRB-BsRRRksRJBBoRkksRsBBRBRRssRBB-R-R1B1BoRRkRsRskRRcRR1RRsRBcosRsRRBRRBBRRB-BRBRRsoRoRRBRBBRkRsB-)JBssRcRRBRRcRZJBcJJ-B1BB!!))RBRBB-RRsRsB!!!!)!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!)!!!!!!!!!!!!!!!!!)!)!))!!!!!!)!)))))!!!!!!!!!!!!!!))!))11))!!!!!!!!!!!!!!)1991)))!)!!!!!!!!!5!!!!!)))!!!)!!!!!!)!!!!!)!)!!!!!!!!!!!!!!!))9))1)!!!!!!!!!!!!!!)11)11))!!!!!!!!!!!!!!!)))1))!))!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!)))))!!!!!!!)!)!!!!!!!))9!7))!)!!!!!!!!!!!!!!)!)99119))))!!!!)!!!)!)!)!)!!!!!!!!)))!!)))!)!!!!!)!!!!)!!!))!))5))!)))!!!!!!!)))))!!!!!!)9)))99)))))))!!!!!!!))9))),)))))))!)))!))))))))))!!!!!)!!!!!!)))))))!!!)!!)!)!!!))),)!!)))))))))))1))!)!!!)))))!)!!)),9_9d,9,9)),_9))!))))!!!),99J9!!!9),))9)5!))!))))))!))9_999)))!!!!!!))))!))!)!!199!!))!!!!)!)))))!))!)!!!,191!JZkJdJRJ)!),)FJ9ZJ9J_JZ))!))))!)!))),99))!))919!!)!,)9)11))9)!))))!!!)1))!!!!))1)!!))99ZJZgZJkd)))))99JZkZkskgsskZ99_RJZZFZZgkZJdkd!))1,99!9dJ99J_99JZY_99_9JgsZ__9R_J919kkJR)!)),1)),99)!!))!!!9)!!!)!!)))1J99J99))!))11))!)!)!!!)1)1),99)9J199Zs{sdZZgk_R1!!1))!!))!JkssggZgsssZgZgZsgg􄘘skZdJJR9))),99FJ)))d_ZZkR))!!))9)Zg)1))9ZggZF!)9ZgsskgZ))!)!!!)!!)ZZJ95!9))!!)!!1)))FZkk))))))))!!!!!!)9)19FFZkg9)))))!,1,1FJkZFZZF1)!!,)),!))J1!19gFJZgkZJJ99F!)99ZsZssscZJJ9)1))9_9gs{ssggkJJ9!!kkJZ_99_Jk!)JksZJJZJ__99,!!9FJksskZgZZgZggZgkkgZJR1))!)))))!))1Zksskss{ss󔘥ZgkZkkgZg!)!)99FZdZksssZZ99kkZkkgZk{ssgkkd99)s))!))99_J9J_9J99)),9{9J9JJgkZkggZkZZkZg޵sZ)!!)!)!))199F9JZkksgZZssgkZJJRd9JgsskkZ)!))!19ZggsgkZZgkssgkggsskggsgsZZggZggg9d!JJdYYsZssggssggZZ{ksksksgkkgkggZgkkJZJZs{ssssgsgss))))!))!))199kkggkZkk9)))!17!!))!99JZZJ9))!!!5)),99JJkgkZJZZkJ!!kk1!!))1)1)99!))),))))!!!!!)!!!)d9k),199JZZkZkk{9))))))!))!)!!!!!!)!!!ZgkkZ91JJdkkdJJ99))1))!!)),1,11F1)!,1,1,1Z11,)!!)),19)!!1kJZ9sJFJJdZZ!)!),ZZgZZkgsskkkZkkgZkkkZkkZkkZkgsgskgZggZ55!))JZkggsssg_9J9kkZkgkkZkkgZkggkgkZggZk),11FJkZZgZJ9))))199dZs{sssskssZ{ssZZgZgsgsskgZggkgJZZJZZFkkgZs򵘥sgJZZgsckkggkgZgsgZZssks{sss{ZZs{ss{kZgcgsgcsc{ggsssgg{sggss{{ckggZZkggs浘{skZkcss{{sZgk{{csckksksscsggZJZJZgZkss{ss{ssssZss{kscssgssggsskggZZgsgss{ssksggs{{gZJZkssskssscZgZZgZgkgk))99)9{kskkggkggZssscg!B!!!!!!!!1!!!!!!!!!!!!!!!!!!!!!!!!!!!!1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!!!!!!1!1!!!!!!!!!!!!!!!!!!!1!!1!11!!!!!!!!!!!!111911!1!!!!!!!!!11911991!1!!!!!!!!!!!!!!19BB99191!11!!!!!!!!!!!!!91911!!!1!!!!!!!!!!!!!!1!!1!!!!!!!!!!!1!!19B1191!!!!!!!!B!!!199199191!!!!!!!!!!!!!11919199191!1!!!!!!!!!!B!!!!!1!!!!!!!!B!B!!!!!!!!!B!1!11!11!!!!!!!11!!!!!!!119B7111!!!!!!!!!!!!!!!!11BB99B91191!1!!!1!!!!B!!!B!1!!991!1!!!1!!!!!!!!!!1!!1BB1!!!1!1!11!!!!!!!!!1!!!!1!!B!!!!1B!1B!91111!B11!1!!!1!B1!1!B11BBBB!!!!!199B91!!191RB!11!1!!B1!1!B1!1B!!!!B119R11B1BM9B9!11B!11!!1B1!!1!B!!1B!1B!1!B!!1!!1!!1!9BB1B11B1!11B!B1!!!!!!!!1!!!!!!!1!11!1!B1!11!!B!!1!1!!1!!!!!!1B119M91!!!B991B11!11BB!1B11!B11!B1BB9!1!!1!!B1!B!!!!!!B1BB99BB1BB1!1B!B!1!!BB!!1!!B!!19B1MZgZj!!MRMB11MgR11!B1!1!1991!B!!!1MBRZsZ!!B!R199M191B1!!!!11B1!BB1B1!B19B1!B1BB1!B1ZgZ9BB11!1!!!!!!!!B!!!!!!BB!!1!B11BB1B!!B!!1!!1!!!!1!!9BR11!1!1!1B!1191BBB11BB!1!!!!!M9cZ!!!s{ssjsRJ1!!1!M1ssZ{sZsgs11B1!!1!!11!!1!!!11!1MRR11!11B9B1M1B19911R1!!B!!1!111!!!!!!1Z11!!!B1199!1!11RRs{{sj!B1BB1!1B!!B!BB1!1BRBs{ZRRgRs{s✌sjj!B!!119MBR!cjsZZRJgRZRss{{jgRRgZs{{ggZRgJBZZsR!1!11MZ11BMRRBB1B!1!1!!!B1!1!1!1!1!9JRZJZB11!11ZZ191!!!1!!1!!B1Z191MBRR1RsZRRZ{{j{{sgRZ!Z11!!!B1!1!!Js𩜜{jsJRR11!1MBRRZcss111jg{{sR9!11!!!!11ZB1991911Z{s1!!c{!1!1!!!!1!1!!!!1sZB11!1!!!9111s11911911B11!!!B!!B!!B!!!1!R1ZcssR11!1!1!!1!!!!M9MZssssZ1!!M191M11J99RssssZRRs!!!1BR{{{{{sJJR199!11RgZ{sJJB!s{gRRgss1sss{sggRBM!!!!!!Rss {sRZ1!1!!!11!1!1!1!1!1Zք!B!1!B19BRZs{j{ZZjZR11!!1B!!11BBZgJZJgZsBB11MBZJZss޽B1!1!!1B!!119RZsZs{ sJRjZs1B11!ZZ{BRj!Jsjj{s{s{11B!!1!111!11ZZϥR191!1!9711RZs{sR11!!!!1!1MRZssssBZ!!!119191RZ!!1!11M11911B!!1!!1jZ1M9BBRsB1!11!1B1!1!11!1!!!!!!!1!BB9JJsjjssRR11911!!!!11M99M9ZZsZ1M9M9M9sZ9M111M9R1ZsRssj{!!!11M순쌜!1B91s{{gZsZ1MZZsssc191!!119Zcj{s{{s{{s轩s{󄜭􄜜{޽{𜩜Ʃ霄s{{{{{911RB1Z!!!!!-)ogBgRcRB)G)RG)G))F))!-gJRBBRBBR))-RBRRJ!!!)R)!)BoB))!RRcRR-o-BcR1o!RoRRB-oBoRoBB%GBRB!!!!9)R%-BBRBBRcB-c)%GRB-sco-G)R-RBBRBBRoo!!!!!!!!!-)!)F)%%F)!)R)!BBRoB-!RRRooRRBoocRR!!!!)))%%B))GgoRo!oRG%oo1RBoJoBBRoRR!ooo!!!!!!!)G))1GG)FRcoBRRBg1RR-RRBRBRBB1cgG9B!!!!!BB))BRRoRJBRBBRBB-RsJGRBBRG-BRBBR!!!!!!!RR9))F)!!)G)GssgBBRgBoBRoBBooBooGR!!!!)-BsRoJ%!)1!oRB1BBRBBRoog))G)GRBRooBoB!!!)J)-BBJ-B-JRRBBRBRBRBoRBB!!!!!!!!!sG)JBBRBBo-B%RgBsJBRRgBB)BRooBBoRR)s!!!!!!!!)G))FJBBRBB1--BBRBJ1BoRBBRB!!!!!!--R)%))9cRRBBR-RBBoJF)BoRBRBB1BBcBBR!!!!!!!!%)GB%))B-)-BRRoBRJRR1cRoG9soBBsBBoR!!!!!!)R)-JJBRRB))RRB)BRgo%-J%%B1Go-BBg1-J!!!!!RBRRB!9RB!)!G)BBoRRB-))goRoRG1BJRsoRRcR-!!!!!!BBRBJ-oR)!FBBRBRB-B-))BB-BB1RR!!!!)!!RBRRBRBRRBBRRBRRB))RRBRBBRBG-JB!!!!!!!BB)G-cRG))sR!11RcRcB)FJs))GRR!!!!!!BJ))!JBB)-Boc)GBsJGJggRRBJ-)BRBBR!!!RRBGF)F))J-GRRB1BRBRBRRoRBRBsccBJGJRoR! !)1oBFF%%GB)%))!)GJ)GBBRRBoBBR-B1BB-1-BB!!!!!%BBRB)))-RBBgRRsB-B Bg!!!!1B1))G))RBB)RBBRBRBG-gBG-JBGGRBBRB)-J-JB1!!!)!))BB1BB1BB)RBRBR%J)RG)RRBRRBoBoRRBBR!!)!-G)BB-G)!)s))%G)G)-G))G-BRBcRRBR)RcBRBRR)!!1!-BBR11BBRB BRBcRBBRB B1BBcBo!!!!!))J))1RBRB BRB--cBcgsGckRGRogR11FsRRcBB!!!!!!1oBBRoRF>F))G)G%)FsZssgcRB-RBRBBRBgc%cRssooR!!!!!FBR!))GGBRRBcGGgBRRB-G99FFooRBRRBRR-RBB)B11B%))--BBRG-GgR--R-RB1BBFRG-JBgoBcgBG)sRBRBRBB-BJR))1B-BBJBB1--B--J-BB--1B-J)B1--1B--J)JB--BBRBJ-BB1B-BBRB-BBRoRRB1BB1BBRBBJRcRJG)GGRRoRoo!)RBB1BBgBoBoRBoRR)!1991)!19ooBRBooRBBRgB)JBGRgBo))!!)!))!)1BRBBRBBRBBRBBRBRBBRB-)-)!!-)%)F))RBB-B--1BRBB-BBJBBRgBF))1BB-J-BBR!%)BB-JB!GRBBR)G))GBBJ-)JB)BBoBB)-%%)BBcBBJ-BB--BRBRBRRgBBRBBRBBRBRRogogRBRBB-J-)BB1BRRB-J--J-J--))G-BJ%1)!GG)GJF!!)9GRGocBBoBJRBRRBBRBBRBRBBJG))!!)-RBRG-RBRBBRBBRs)sscsgcRoosc)oGcsRgBJJ)!!))%%G)1)RBBR-oBgRBBGR1991soooRRBRRosocBcRoBoG!B-BBR-R-F))J-J-RR))BB1BBRBRR1B11BBJB-1-1BB)GJJR)JBB-BB1B-BB-)B-J-JJ)BJ-))JBR-JBRJRBRJ-)JJ)JJ-JG1B11BB1B-B--JB-BB-B1B--BRBB-B-J)-JR))RJJ-G-B B1-1-1-BB1B BRBBcBB-B B1BB--J)JJ-BB1JJ-JBJBJB-BJBJB-BB-BBRRBB1BBRBRBBRBRBRRBBcRGJB1JcRRBJBBJBJB-B1BBRBB1BB1BBRBBRocGgcoJ-oRBcBcBRBRBRBRBBRB-RBBRBBRBBRRB-GRooBoosGGRBRBRBBRJ-BgRBcRRBBRBJ1RBR-GR))R11BRBoRoRBRBB-JBRJ-J-JRBJG))!!!))-BBRBBcJRsocRRJ))-J-)11BBJBJJ-J))JG)BJRJJBGJ!!))-)1R1B--J)J--BBRBB1B1--JB))J-))J-G)-))J)JBB)-BB-)G)J!)!))BRBRRBBRBBRBRcRBBJBRBRB1BBgGRoo!)!)BRB!!-G-R-JRBBRRBgogG-J)cR)1I11RsJcBBRc)JR))R!!))!)9F)J-G--GBBRGGgJGGBBGRFRRooscBcBcBRJRRBR--RBBRBB-BR-BBRBcBBJ-B11B-1B1BB1BB-BB-BBRBRGRBB-B-BG-R--J))-J1BRBoccgRoRRBRRB BsRcBBJRcRccB-J-J--J--B-1BB-11-)-J-R-B-BB-BBckRBBRRBJ-BB-JBB1RBB-B-BJBRJ))-JJBJ))BRBR))F)JB B1BB11-11B1BB-BJBJBRBBRB-BJ-B-BBcRooRgRBB--G-J--B--)--R)-R-JBR-J-)J-JJ)J)-BB-BB1BJBJBkJccRRBJ-BB--1J--R)RBJRJJRZRZBJ-J))J)-BB-BBJ-BJcssZJZsBRB1BRBB1J--JBBJRBJJBJBJRZB-))R)-B--1J-JBRRssssRkBBcRBG)JJBBZBcsRckcRZZRRJBJJ-BB-BB-J)JJcksscRBBJBBcosRF19cJBJsRBsRRcRRsZRBJ1BB1BB1BBRBgRRoRRBRBB!!!))9Z9gssgJdJsdJdJJZ_99Zs{kkgskks9JZsk{s!)!9s1JkgJJ9ssssZZgsZ{{{kgkZk{ggFdksk!!))!9R9k)FZgk{kkskZJFdsgZZdJkZskksgks!!!!!!!)Z9)99_15)5_99kJ9kk{gZ)919ss{skss1!)!!!J199FFk91,d,{{dFZskskgk{{{!)!!!!!1d9,9Jdd9_sk{{sskkшZssZssksksggZdRk!!!!)kgJJgss{ZgskksgkkgZsZdskgsdZg{kks!!!!!ssR19_))J99d9dkggssgksgkkds!!!!9ZksZF99J9{gZggskksӈJJZd9dsk{kg!!1ZJZkgkkZgZZs{kk{skksk{kskk!!!!!!!d9ZkkskkZgFkgZg{sgg9g{kk{sJ!!!!!!9dJJ_ZggkskkgkZZgks{kZZg{kksg!!!!!ZZk9F9)9Rs{gksZskkZ_Jg{kskkgkZgkgkks!!!!!!F9dgF9JgZJZkss{ksZssZ{dRgggkk{!!!!)Js9ZZ))ZgssgJ)Js{kJgsFZZFFkZdZgkkZZ)!)!!!!,sk{sg91Rsg99dJgg{{gZJ9{sdZgZs{{sZ!!!!!9kksgZZs99_gkkgsksgZgZJJggkZggZss))!))!!J99kgssksk{skksskssgJJssksgkgsgdZZk!!!,)9199kkg9dZkdJJ۔s9)JJssgJ_Z99d{ss))!))!!199)9gZ99ZkkgJJ9ZgJdkZdZssgZZJgskks!!!)s{kd_J_JJZZds{skkZksksk{s{sk{ggZdZss! 991)Zg__FFdg9FJ99dZJdkk{skkkgsZkZggZZgkk!!!)!)!)FkksgkJ1199JZskkgssgZggk!!!,911ZgZJJdJJskkg99ksksgdZkdZZgddskggsgJZZkZ!!!)9))9J9)gkkZgkkZgkgJkksks)5Z)JsdJs{{sksskk{skks)),),!!)))9ZdJkkZd99JJJFdJdJZdJJdZgskssgsJskskss9J9ZgkgksZZkksk kgksk{gkkgksggkgZgg݄k!!!!!)9JZ991)J{kskkggkggkksgZZgd{kdskJJ_kkskk!!!!!!)Zkg{k_F_JJdJd)5)1_ksgZskskkskFss!!))),!!)_k{91)1,d,dgs{gddgsskggZdRR__sg{sk{sZskkJgZZk9FJJZZkksdZdsZZsZsgZkg_sZdZZggkd9JskskskkgZgZs11ZgkggZggZggkggZZgZZgZgZZJgZZgZZJZgZZggsgZZggkkgZZkgZggsgZggkgkk{s{{kggZggZgkkgkkskkgkgZssZd9ddsss9JskkgkZgkkkkskss99))JRRJ99JRkskskgkgkksg9Zkdsg)11919ZkskkskkgskkskkgsgskgkkskgkgZZJZJ!Z19F9_J9JskkgkZZgZZgsggZggZgksk_99JggZgkss)F9kkgZZg9dkggkgsJdJJdgkgZZJZgJggkkkgkkggkggkggkJJZFFJggkggZZggZZksksks{{kkskkskksk{{skskggkggZZJggZgssgZZJdZgZFJ19ddJdZ_99RdkdgggZsg{skkgskksgskkZdJJ9)))19ZsksdZsk{kkskggsJs쵄9dsgZZ)1!))9Fd1JJkksZkskkdkJRRJ{{k{{g{kd19)gZkksZsZ_9JZZsJkZgkkskssZkZZkkggZgZZgJdZZkJZkkgkggZggZgZggZJgZZJgZZJJZgsZZgsZsgsZZJZZJZZdZkZZggZgZgZZgZggkZZkgZgZZgsgkkgkgZgZZJZZsJJsZZdZggkgZgkZkgkggkggkskkkkgZggkgkkggZggZZJZZkgkggZZgZgZgZgZgZgZggZgkssggkgkkZggskskksksksskkggsdZgZZssgZggZgZgZgZggsggZggZggkskggksdZZskkkskskskskkgkkskZskkskggsggs{sskZdskddkskskksZZgsgsskgkkggkgkskZ)JsksZdsJJsZZksksskskkgZgsZZsgZdJ99)))9JZkggsggZsssZJJZJZZggZgZZJZdJgZsZZgdZ)!9)9ZJZsZgZZJZZgkskkZgZZgJJZZJJZZdJZJJZJZggkJZkkZJdJZ99gsksskkskkgssksskkgkggkZgsksgZggds99!JgkkskZdZkZZskksskdZZJk))9JYJJkZkgsJZs9911kk)!99R_9ZZdZZdkksddZddkkds_ksgkgsZssksZZskk{kkgZgsZkkgkgkksskkkgkggZZgZZgZZgZkkgZggZggZggkgkksksdskggkgZgZgdZsZZJZksgsssksskkgsggZssg ZgZZggkZZJZZsZgZggZgg{sggssgZZgkkgkggZZgZsggkZZgZgZgsZJJZZgZJJksksJ9_JZgkkggZggZZgkggkggZggZgZgZgsggsgZgZZgZggsssggZZdZZgZZJZZJZJZZgJZZJZZJZJZggZggZgZgZg{ZsskggZZggZZJgZJZZscscgZZJZJZggZggZZgZcccZZccksgZgsggZgZJgZZgZgZscgZJJZgZZgsss{ggskdJZZkgcgcs{sccssZgZZgZggZJZZ҄{csggZgkks_JRZgZsgcssssccsgZZggZggZggkgkgkskssss{{kskkB!!!11RBsjsjsjssgZZR{Zs{޵!!!!1!B{9sssR{{{{樓sj!!!!!1!1!!RBs1sssj{Ʃjss{{!!!!!1Z1RBg91gBRZssR1RZc{ީ{Z!1!!!!BsZBBssB9MjMjs{՜!1!B!!!9jBMBJjjBg{ὈjR!!!!!!!!!!1ss{Х{{jj!B!!!!{R9Zg11sRRBjZj{j{!!!B!Z{sRZJRssjZj{!!!!!!!!!9{s{{!!B!!!!jZ{ꥩss{Z{s!!!!Bjssg{팜{ʜ!!B!!B!sZsZ1BR{gs!!!sZjsZss𵩥{jRꔌ!!!!!!1!sZ{11{{{s1sss{ssj{!1!!1!!!!!!!MRZR{RBRjssZj{{!!!!!!BR{ZRgss1!B!1B1!B1!!!!!9sRRsssj{!B!!M1RZRRZjsjss۔{R1JJsg{ZBj1B!1BB1B1BBZRR19R{ZZR{ssZsj{j{{{s!!!!!1{jgsgss{j{{j{{!! !9RZZ1ggssjZssZRZj{sj!!!!111s {s9ZZs{!MRZZsjssZZsjj{jj{s{{!!!!1B11RsZ1霌ss1{B1sjs{쩥11M1M!!1!11BRjsjZRsssjsjsjssjsZRRJR  楩!!!!1Bs{ZZ91Jjsj{sJJgss{!!!!!!1sg%gssjsj119gs{s!1191M!1gR919MjMjjjjRRgg{scssjj{{{g{sj{jcs{{99{{{s{s{{{{{{jZjjRs݈BR11JRRJBRJRZ{j{199R9ZRZZRZssZZsZgsZs{gZZJ{1!sZ{Rjssjssj{s{sssss{ {s݌{{{ssj{sJ9Rjjsj{gRRBRjsj{{{jssR19119Z{j{{s콌Bj{{{19!11RZZss!j9JssjsJRRJ񵩥jZR1!{{gZs{{ss{sj{{ss{s{{{s{ss{{{{{{{s{{s{{{j򄌄{񌜌{s{ss{{j{s{{{{{{{{j{{{{{{{j{{樂{jjjs{{{1!J{jss{{{{{{{jsZR91119Zs{{{{ss{s{{{{ss{js{{j{1B1Zs{s{{ss{ss{jsss{s{ssjs{RZRZZ {j{RZ!sjs{{j{ss11BJjJJs{s{{ZZ99ss1BBRBRgZ{jj{jj{jjj{gs{{{{󜌌{{jj{{ss{{{{{򥄌s{{{{ {{{ss{{{ss񜥜{sZgs{ {{{{{򜩩j{ss{{s{{{s{s{{{{{s{{{{{{{ss{s{{{{{{{{ތ{{{sss{{{✥js{{{{{{{{{{s{{ތ{{gJR{{{{RBoRRRBBR-Roo-BRRoRRoBocBR-ooJ7Z11>%!!!BoBBRBBRBRJRoBoR11BBoocRRBgBBRRF99Z޽111Z1!!!!!soBJRooBBRog-cBRBRoogsccso1!7cל77Z9!!!!!!!!g!RJJJ!RR)-!!RR!R-1R!oo!JJ!!ڔs!7JJ!!!!RRo!RJocoJsoocoBooRRssBRoR%!!Z{J19!!!!oo-gBBcoBBG-sBBcoBRRBRRo9!77!71!!!!oRR1RooBoBoBBsooBoRBBRooRooBoR9!!JZ!!)sooBB!Rs-g))coosoRocBBc1!79191!1!!!-R--R)GgoRB-oBooBoc-oog-BBRg!Bg199>!11%!!oBBsBBRBBGRRBBRBBRoB-BooRoRoRo9!99!!!9!sBcRBRooRJ-JR1BBcBBgBcGJ)!>!!!9ZZ7!)GRBRooBR-B%))R-RBBoBoBBoR91!!!%99J7!!!!!!!!RBRRBBcRBcBs-RRooRoBB1R-R)JJJ!!%>J79J!!!!!!RBRRsBgBBoRGoRBRooBooRBRRoR9Zk171!9JJ7Z!!!!!)!BJ)gRoo-B-BBRoBJRRsooRRoB1J991!!1J>JJZk9!!!!!!!cB1BRBJBccBcRBRcRBR-gRRBBJZ!7!!!997JZks1!!!!!!RBRBRRBBoBGRsIRRosRooggoRBRk7!!%9!!JZs!!!!!!!BRBBRBRRB-BR--RBB!!s7!!!1!!9J7J!!!!!!!!RBRBRFRBF)FBgssRGBoRBRR)!%J!J!!%191!!BRBBg-RBRBRBBRBoBoo-1!9%%!!9!!BRRc--RRoBRBBgBRR-1RRJ119!%!!!!%!oR-RoosRsRooRoRBRo-oBRRBcssZZ7!!11!!!!BBRoBBRBBcƵ)!!1J!!%11!BB-BBJBB-BBcBc-JBRRB޽{c77!ZJ!!%F11!!!!ooRRB1B-BB-BR1RBBgRBBR޵kJ17!Js7!!1J9!!!!!!!!BRBRRBGF!cs-cRoRsRRBRBBJΌJ11!1!sZ9!!9JJZ7!!!!!!!!BoBR-G)BBRBRBoBRgGosΧs)71Z9sJ717JJkZ9!!!!!!!!))BRR)!)!RBBgc1!!ZsZZ9117ZsksJ!!!Z{Z!!!!!RgR9!!RBRGRssgJ{c1)77!ZssZJ97JZkZZ1!!!cZ1!7!!!!BR-1!1o)!o1F9J9!!!1J7JJZkZJZ7!!!7s7!!!RR1JJ)!!!))R)B--BB-9ZZ91!JsZZJZkZZc7!!!!{s!!!RRBB)%)BBJJ)JJBJ-kskk1!!17ZZJZskZZs1!!!1Z!!soR1))!JJ)RR))ksZ1JJ9JZkJJZssc!7J7!!!!oBcRJB))-JBGF))RBRRsέsZJZssJ!9ZJ79J9!!!B BRRBRBεsZsssZ19ZZ79!>9!!!!!ooRcR)9sRRcRcssZssZ!J!1ZZ7J917J!!!BRGBJJRJRR)RR-BRcksZJs1!1!ZZJ7J!!ZksZ!!!JJRBRcBBR)RJ))RBRRIcsosZJZ17)!7ZZJ979J!1ksZ1!!!!!!BRBJB9RoRgBRoBRBB-G!!1)7ZZJJ)771977ZsZZ1!!!RBRRJBBR1s-oRoBBRBB)!7JJZZ17ZZ179)!!7ZcZ)!!!!!!BBRBBRBB1R1BBJ)cZ!!971Zc1!JJ717)!!7ccZ1!!!!BgB B1BBcBIZccJ77JZZ97Z1JJ)!!7JJZ!!!!-JBB-B)JBJsc))J)JB))G-R9sJ1!77J797JJZ1s!771!!!!!B--J)-JJ))J-JJ-B))JBJJBB-Jo17!177!711JZ1c!717!!!!JJ-BBRBJJRJBBcgRRBB1B-BBo1)!7ZZJ1JZ7J!!!Z1!!!1c)GcsggRRJ)RBBcRRBRRFkoZ7ZZ71JZZ7!711!!!ccRRBB-)--%cBG--J-BBgBB)IF)1!1)79J1ZJ71!!!>1J7!!!!RBBcRRoRogRgBRBBRBBZI9)91!!1!!1JJ7!!JZZ!!!!J-J-BBcRRBRRBBRocs{cZJJZJZ1ZJJ7797JJ7!!!77J!BJ-BBRocBGGRGcsccIIk17!ZZJZ97JZZJ1!!!!7!!!!!RBoRooBRRBRR B1Bcc)7917JJ97JZZ7Z1!!!oRBRBBRB B-BB-)BJZJBk)!)!!%JJZ7!!!!BcgRRFG)soossoBRRBB-RJJBBJI))!!!!!!!!!!!!BR1RB1RBR-RJRgBBRRoBoscc1779!!!!19!!!!-BB1B BRcI1))17!!!!7!!!B-B BRBBJJBJJBJJBJJF91)!!!%!!!!!!!!-J--JB-J-J-J-J))JscsscckcJccJc))!!!)!!!J)J))J))JJ-G-)J)J))JBckcBJZccssgRRk!!77Z!!!!!!!!)BJ)JJRJJRJkJ)J)J)J-BBRBBJJRcRcZsscgkZ917%!!!!!!sskcccBJJ-))JBcZscZckksZsscZFII91J1Z!!!!!!!csBJJ))J))BZJBBJ-BJBBJJBBG)!)11!9!117!!77!!!!JGJRRBRgRoRooZ{FG911Js79)GR!!171!!7%!RRBJRRBRBRRBcBRBRoos1{IZJJ)GIc)J)1G)!!11!9J7J!!!--J-J-G-JG-J-RB1BBRoRJ911)1)11)1!771!71J7!!!{k{{kgsZsZg{{{{kksZR7J9)JF5!!kkkskk{ksk{ZZgk{skkg{{_9!R)))JJ!!ks{kgsZksgs)!7ZȔ77R9!!!!!!!{sss{{ZZJZ99ss9))sZZ{sZ!!ڄk!7BB!!{sssk{),{g{{5!!R{R)9!!!!Zkk윘kkdZkkk{sgss彘9!77!7)!!{{Z{kkkgkskks{k{R!!BBR)!!!)9gk{ZJJsggJ!79J9)!)!!!!ZsZZs9dskZkkZZkk{k9J99F!))J5!!kgkkskkdsskkskkskZk{s{R!99!!!9)!g{gssZZsZgg݄kkkdZ9!F!!!9JZ7!Jdsksk{ZgF99sZskgkkggk{RJ!!599R7!!)!)!!!!!sksskkskkZssskkZsZsJRRB!!5FB79R!))!)))!)!)!!skkgkksdsg{gsks{{RZkJ7J!9RBB7R)!!!!!1))!))gZJ{ZgZkksgZ{ss{{gJsR99)!!JBFBRJk9!!!)!))!!kkZZkkskZggsgssksZ{skk)BZ!7!!!997ZRks)!!!)!!!sksgsskgkkdsY{sssgs)k7!!59!BZss!!!!)!)!!))kskkskssgZksZZskk!Z7!!!J!9B7B!!!!!!)!)!skskk_sg_9_gsdgskssk95B!Z)5J9)!!kskkZsgskskkskkZJ)955)!!9!!kssZZsskskkgkkkssZZssRJB9!5))!5!sZsssssgsZkssgZZZRJ7!!JJ!))kkskkskkgkggߥs1!!JB!!5JJkgkZggZggZggkZZgsskֽ޽{Z77!ZR!!5VJJ)!!!!ssgkZgZggZgsZsgkskggsޜk))7!BZ7!!JZ9!)!)!!!!!))ksk{skd_!ZssssksgkgZ)99)!9!ZJ9!!9ZZJ7!!!)!!)!)!kksZd)Jgkskskksdk1)7))R9ZB7)7ZRkZ9!))!)!!!!!)!11ksk1)19skkgkkgψZ9)JsRJ9))7cckZR)!!)!ZR!!)!)!{sR!sksdsR{Z9177!RssJR97ZJkRR9!)!!)ZR)!7!)!)!ksZJ!)ZJ9J_RJ9!9sB7BBJkRBJ7!!!7Z7!)!)!ssZZJ)99JsJgZZggZRZZ9)!BZsRJJRJkRJZ7!!!!Z!!!sskkggJFJggZZJZZgZZ{Zksk)!!)7JJRRZkJJRZs)!!!9R!sJ1)99ZZJssJJ{ssR9RBBR!BJkBBJZZsZ)!)7B7!!!ksZkJJZZgd_11sksssRJBRZZR!9JB79B9!ggkgkgkssksk޵ZRZZsZR)9JRJ79!F9!!!ss9R))sssZZRB!)RR7B!97ZRBR!!!ksdgZZsZkkJssZgsZkZJRZ)!)!JJB7B!!!RkZJ)!!!ZZsgsgksJkZ99skssYZkosRRJ971!7JJR!7!B!)kZsR)!!!!!!ksgZgR))ksgskskggZd)17JR)BR177))977RZRR)!)!!skssZkkZZskkskk9)!7BRR)7JJ)7!1!!7ZZJ1!!!!!!kkskkskkgZsZggZJk!979RZ)!RR7)71!!7ZZR9))!)!!!gg gZgkgkgkgYRZZR77RJRRJ)97J9RR1)!!7RRJ)!!)!!ZZggZgJZgZJJZJZgJJdZkRk)977R797BRR9Z))!77)!!!!!gZZJZZJZgJJZgZZggZZo97!)977!7)9RR9Z)797!!!!ZZgsgZZsZggssggZgZggo917JRJRB9BR7B)!!!R9!!!ZJdsskZJskksskss_koR7JJRJJ7)BJRR7!7)J)!!!!!sskgZJZZFgdZZgkkkggJY_99!))179R9JB7)!!!FJR7!!!!skkggsss{kskksggcYRJR9!)!!JZR7)!!RJJ!!!)!ZZgkssk{skks{ZRBBRJRZ9ZBB7797BR7!!!77R)gZZggksƘkddsdYYk97)RRJRJ97BRJB9!!!!7!!!!!)skskssksskgkgZgZ179)7RB97BJR7R9)!!!))s{kskkskggkggkggZggZJgZcZg{J99!!5ZBR7)!!!!gssk_d9ksskgZJZZggZY9JJ!!!)!!!!!!!!))!gsZsgZsgsZsZ{kkss{skZZ9779!!)!!J9)!!))))!)ZkgkkZgkkggkgksYJ19J7!!!!!!))7)!!)gZggkggsggZZgZZgZZgZZ_RJ9)!!))5!)!!!!!!)!ZZgZZJZc{ZZ91!))!!1))!!!)ZJZJJZJJZZdZJZJZJJZg{gZc߈ssk)!!77R))!!!!)!!!)JgZJZZsZZsZ{ZJZJZJZZggsggZZssc{kRJ75)!!)!)!)))!!)c{gZZJZgcc{{ck_YYRJR9J!!)!!!!cgZZJJZJJgcZggZgZggZZggd99)!9!))7!!)77!!!ZdZssgkggks͈ssk{_dRJJ9BZ7R9dk!!)7)!)!)75))))skgZsskgsgssgksksJYcZZJdYZ1R1JdJ!!))!9B7B!)!!ZZdZZdZZsgZggkssZRJJ9911919J91J!77)!7)R7!))굥޽{{ƵҜ{Ʃ979B1)%!!!B!!޽ީڜ絜g%B9)!!!!Ʃƌ{ƈƩ7R{!77B%!!!!!ssRR{{R11{{ss7))!!!!!ީ{穽穥1M佌!Bk9!%!!!!!Ƅ穜Ɯjƭ{{Ʃ%7s779!!!!񵩩򜩵R))B1!!!1ZssƩƽƌ)7%)%!!!!!{{ZjcJ!%%!1)!!!jߩR%%%1!!!!{{{j{Z!%!!%9B7!!!!!sj񥵄sZZ{R)!!%%97!1!1!!!{Ü{{s99)!%)7%91!111!111!!ssj֌{RBJ)7)!!%9))7B1!!91111{s{{)R9%%!!))%)99J%!!!1!9119{ք{1)B7!%%71BJZ!!!!!1!99!Ōj{j{1J7!!!%)BRZ!!!1!1!11J7!)%)7)!!!11!!sg{gZg{jsZ)!!1)%!!!!!{{J1%!%!B!!{{{{9)%!!! ҩ{{{{sJJB97!!)) !!!scR9!!))!!{{ޥkR7!7!B9%))1!!!!!ތ{{ޔcZ17)J7)1%!!11!!11jg{{{ZBB1BJ9%%1197!!!1!11!9{j1sϥ{js9171B%J)7719BB%!!1!11!!199s919RΧRB199ZB9%71BJJ9!11!BcB!1!19R{{j9kRB977BZZ99%719BB1!1RB719!1J!!1sRJgR!%9!9BccR)7))9BB)97!!!7J7!!11!!{{{s91RRZssRBB%!)JRB99B9R7!!cJ!s{s{{{JJRB!799BJB99B9JZ!!BkB!!!!!{J91BR{{sss{sZRBB9))9)9B))9JJZR1!1!7)7!!!{ss{jg99{{R99)BJJ9%9)7!!%)%!!䥜޵sJBJJRcJB%9B97%!%%!!!{ZR11{{{νcJBJJB9)BB7)B7!!19)9!!!j{{s{{RcJ99J9)7)BBJ91!!!!{{ss{ZZ{jRsosZB99B797997)!BJRB!!!{R11sj9!9979B1)99771%77BJBB!!!!1!{sB!!17)9BB79979!!7BR99!!!!{{ss9!%7BBR997797RRBB11!!1!! 県jBRR97799BB91%79B9917991!!!1!!{܌s{{ss{s{ssjsRsZB9!7797%7)9BBJ1177!!!!!!{s{{ss{{{ss{{{{{oB71B777B9BBR9!!17B7!!!!{{{{oB9979B99)B)B7)1!BB!!!B!sj{{s{s{gcoB799B997)9BB7!!7)1!{ssj{sjgZB197%9B9)7!%)97!!{jRsRB!9)1971!!99!1!!{{𵜥kRB))99B)7%7)97!7791!!!!!{멌jj{jjjcB719BB99%7)B9)B!!!7!!!!1!R97%79)%7)9B7BB1!!1!1s{{茄sRB1)B7!!1!!!!!B!{{sgjZ{{{jZss!!1!!!!!11!B!{{{{{{RRB77%1)%1!!111!!11꜌jJ9BJ7!!!!!1!171!!1{{{{{{{{{gRJZ1111!!!!!1!!{{{{{{ss{{{B9119!11!!!!!1{s{ss{ss{{js{s{ss{{{߈{{c177B11!1!!s{s{{{s{s{s{{{{Ì{sRJ71!11!1!11!1{{ss{{{{sgjjRJ9B9!!1B!{{ss{ss{{{{{{jZRBB%7!!1!77!{j{͈skgjRJJB)J7RZjs7117!11!!119s{)cj{{sjjR99Jjss!%)7)1!!!{{j{j{{{{RJJBB99B9BJB9J77!797!1!!!!)1)1)! %!!!!%!!Ig9{gR1R)9))9!91!!!!!!>19%1))FG!))11)1!!!!!!!)))))9R!ssscR!!!!!!!!!!1)7)!!!!!!!!!)1)%1%!!!!99!9FF991))!!))1)11!)1F1JIRkRRGRG!!!RRccRBcRZcF11!G-R!!))9R!!!!9)!)!1))!9!!!!!!!!!!!!!!!!!!)!1GBscsRR)RR!!!!!!!!!!!!!!9!F1))!!%7!)1!!!!!)!!!!!!191))!!%%!1))GJsg!!!!!!!!!!!!!RGkFsg!GgcJ!!F1)!!!!!!!!!!!!!!!!!!%!!!!!GR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!I9F9RRG)GRk!!!!!FF9))RJRJ!!!!!1!!!7kFFRFRckk!!!!!F19FF{99F!!!!!!)ZJ91!!!!%!!!!!!!!!!!!!!!)F11!7!!!!!!!!!!!1%%F11J7)k1)!!)!!!!1911JZ))!1)s)))1)!!!!!!!!!11JZZJ)!!c1!!!!!!!!!!!!771ZZ11!)s!!!!!!!!J11Z1!J!!!!>1JZ1)!!!!!!!1F17>1!s7ZJJZ!s{71%797!!!!117J99!!!!!!!!RsR)Z1)!!!!!!!!!!!!RR!JZ7!!!!!!!!!!!!cs!)k9!!!!!!!!!!)ccR!!)!!!!!!!!!!!)kckkR!!!!!!!!!!!!!!!skk)11!!!!!!!!1s1Z)!!!!!!ss!!!!!!!!!!!!!RRoR!!!!!!!!!!!!!199!!!!!!!1)F)IBk77>!!!!!!!!!!)9)911!1!!!!!!!!!!!!!!119)kRRJ!!9!!!!!!!!!!!!!kssRcR!!!!!!!!!!!BRkJJBB!!!!!!!!!!!)FZ9ZZkR1)119ksss)!!!!!!!!1gckIZZRkksRssckk!!!!!!!!!!119k77)1Jccss!)!!!!!!!!!!FccR!!!!!!!!!!!!!!!cBcsskcRc!)!!!!!!!!!)11%))1J991)!RRcRsss!1)!!)!!%!!!!ZRZgss!!!!!!!!)ksG)RRZRRZkksRJF1FRRBccssRR!!!!!))FRggRZkIZcRGRZsRRkksscss!!!!!!!1FFkZk)117171Gssssss!!)!!!!!!!!!)ccRcsgJBRJBgskksscs!!!!!!!!!!!!!!!!!)F9FGI!!!!9RcRZRGZZF)!!!!!!!!!!)!!!!!!!!!!!!!!)!!))1!!!!)G!!!!)9J1))J))1)!) )5))!!!5)YRkJ))k)1)R91R9R))J!!!!!FJR5J)1)1))_d9))1))1JJ9J!!!)11))1)1))1911Rs9)s!!!!!!!))J))1))7))1))!!!!!!!1))J))1))5)J))5))!)!!))9RR9R__RRJ911))!!99J))1JJ99J_JcYs{kkdkd!kssgkkZ_JJ)9dZs!!))1)1))Rk!!!)19))199J91))9R!!!!!!!!!!!!!!!!!))19Jdgss)1))ksk!!!)!)!)!)!)!!!!!!!)R9_J19!!)57))!))1J!!!!1)!)!!))!))!!JRJ11)!5)5!J11dZ)!!)!!)!!!!!!!!)sd{_)!dZ)!!_J1!!!)!!!!!!!!!!!)!!!)5!)!!!9dk!!!!!!!)))!!!!!!!!!!))!)!!!!!)!!!!!!!!!!!)YR_RkkdJds{!!!!)__R9JsZsZ!))!!)J!!9)7{__s_k{{!!!_JR__{RR_!!!!))1ccB!!!5!!!!!!!!!!!!!!!1)VJJBJ))!)7))!)!!)))!)!!!!!!J55VJJR71))k9))1)!)!)1!))!!!J9JJZJ11)91k)11)))191)!!)!!!)!!!JJRR1!Z9!!))!!)!)!)!)!)!!779RRJ9))!1k))))!!!!!!!B99R9!))!)))!)!F9RR91!!J_J7F97kRR!k{795797!!!JJ7B99!!!!!!!ss1J91!!!)!!!!!!!ks!)R7))!)!!))!)!!!!!!1k!!))!)!!!!!!Js!!1))!)!)))!!!!1{{{s!!)!!!!!!)!!!!!!!!{{9J9))))))!!!!J)9R1)))))))!!)!!!!!)!))!)!!)!!!!)9ssk!!!)!)!!!!!!!!))9JRR))!!!!!!JJ_9Yk{77F))!)!)!!!!!!9R9RJJ!)!!))!))!!!!!!!!!))JJR9{ssZ!!9)!!!!!!!!!!!!!!){ss!)!))!!!!!gs{ZZggk!)!!!)!))!)))!)!)!!9_kRkk{kJ9JJR{)))1!!)!!!!J{Yccs{{ޔk{{!)))))!!)!!)!!!!)JJRk77))99Zc))1!!)))!)!))!)!!!!)_s)!!))!)!!)!!!!!g{s!9!!!!)!!!)!99J59119JZRRJ)9))kssΔ!))J1!!)1)!!5)!!!!)Χkk!!))!!)!!!!1{dJskkskssk{{sZ_J_ssgss!!!!)!91_ksc{Ycsdkcss{{ε󔘔!!!!!!J__k9JJ)7)97)Jd!)!1!))!))!)!!!!!!JsZgsZg{{!!)!!!!!!)!!!!!!!!!19__R_dY99)!9Rkscsdcc_9))!!!!!)!)!!!)9)!!)!!)!!)!!!!!199J9)!!199d!!B!!!1BJ911)11911 111!!!!!!1jRcs11s191RB9RR1J!!!!!%JRJ191911gjR119119JJBJB!!!!!!19911919119B99R{R1{!!!!!!!!11)11911711911!!B!!!!911)119111)11111!!!!!!!!1RgRJB9911!! !!!!!BZJ119JJRBJgJ9j{ssjsj!!!!!!!s{{ssRgJJ1Rj{!!!!!!1191911Rs!!!!B!!!!!!!1Z%119RBRJB911R!!!!!!!!!!!!!119RJj{{1911s{s11!!111!!!!!!1RRgJ9B1711119J!!99111111!!!JRJ99!1)9!9j{!1!191999!!!!!!1{jg1j{1gJ9!!1!!!!9!!!!1!1!!1!!!Rjs!!!!11!1!!!B!!!1!11!!!1!!!!!!1jRgRssjsj{!!!!!!!!!1ggRZs{{!!!!!!!!1!1JR!!!!!! 7ggBgs!!!!!!gJRggkRRg!!!!!!!!!!!!!!!!11919!!!!!!!!!!!!!!!!9!1%))1117!!11!11!111!!!!!)%))97911cB1191!!119!11!!!!!!)%))1991B9s1991!1!19B919!199!1!!!!!!))9BB99!99RB999!1199!!11!111!!!!!!7BJB119s1!1!1!1!!!!!!!!!!!!!!!)BB!1Z1!1!1!1!!!!!!!!!!%B9BB9!!!!!!!!!!!!!!!!!Jg)7%B!!! !!!!!{!!!!!!!!!!!!!!!!7s99B!!! !!!!!!!!!sk7B7%7!!!B!!!!!!!!!!!!!!!!!J)7)%%!!!!!!!!!!!!!!!{99B9!!1!!!!!!!!!!!!!!!!!s{ZB7111!!1!11!!!!!!!!!!!!!9cR99111!!!!!!!!!!!s!!9919919911!!1!!!!!!!!!!9{!1!!!991!!!B!!!!!!!!s!BJB119911!11!!!!!!!!!!!!J1BB991191!11!1!1!!!!!1!!!!!!!!!!!!!!1!!1!1!!1!1!!!!!!B!!!!1Rs!11!!!!!!!!!11RJRR11!!!!!!!!!!!!!!!!JsgZj77%11!11!!!!!!!!!!!!!BRBRJJ!!1!111!!!!!!!!!11JJRZ{{!%1!!!!!!!!!!1{{{B!1!1!1!!!!!!!!Ȝ{{1!B!!!!1!11!!!1!111!1!BgsRsssJZJJR1!119!!1!!!Jj{{s!1!1!11!1!1!1!1JJRc77!11BB{199!!!!B!111!1!11!1 1g{!1!1111!!턽!!!B!B!!1!!1BBJ!B99BJ{RRJ1B911s!11J9!191!1!!!1ss111!9js{ss{s{{s{{gJg{{{B!1B9gs{{j{{js{{{{󔩔!!!JggcscBJJ171B71Jj{1!9111!11!s{{{{1!1!!!!!9ZggRgjjRR1RRs{{j{{gZ!11!!!!111RB11!!!!!1!1!1!!!ZBRRssJR19BBj11%1k{1F91RRFRZRRIZFF991%119RRIZscssgsossRGR)GI%RRRssR)9)191oJFRJ91F9gsRR9RRZF9g)%17)119117FRFF9%)FRkssogs֥sFssosRRgssgkksoossRGRcR%RRksscRR91FRosssoosoRIGZRZZIFFRRFZR)RgF1)%!199)ssskZkssR9))!1!19)GRR9199R911911)91)191IRGRcssoRZssoZRoFGRRJGBgsscgRossssgRRgsssoBRcsgssgssogZRF!11ZsggRcZZRZZgssss1ggosskssscRG99)919ZGsRFFGR11)RRF9F99RG1RRZZsggsgsscggsBgsssossg)GGcGGR9cRR)G9gsgsssssocRR֭sRR9ZZssosssRF1191kgsgJR9FRR9IgsssRkkRs׭gsss߄sgssZscBRssZcRcgRGRggoBsososoggsss1GgogFFZRcRGGRRGRssRgssggocZcRRGRR)GIgIsssssRRG9sgscsssossoss֔occkcRgcBRRossssss)911)RkJ9F)FFsIRcscRJJRsoRooBGRRgosRRogoggRosossosogcRZ))1GBckgccsRRJRRosR!RBgRGRBBsoR-RRZRR)FsooRoRRg))RRk19)1FRI9FG1!9FGJcR))99FccgRoosgssoosgooRssJgcIIJFZFRossRksZcscsssoossk919RgssoooooRRRsssscRssccsssgsssgss秔sBcRsooRR9!%))!!9IRF9))9kJZFFGssoԔsosok9ZggRgk9%%kckRgRsoossRkkRckkcgFgRZF19I9osgFgsskkssJ1!FFZcBGGRsscRRksksccsssIFRRs䥔ssFkJ!RBcRRgssF1J1J9)J9RFF)9FgoooRsggFRssosZkssg1Fg9)!))J9J)RFFcFJ9ssZk19FRooc9RFcss)99cssgssgg9!!!1)1F1FRks齔sssgssssssلsgscBscs!!!!!FJcssgccsssososRosgRssssccsRRsccs7!!!!9sRscogRkkFkFRRZkoocgsssRsssƽssckcg71!!)ssssssssZRsksRssso)%!1%%!)sssRkI91F9kkgkk{F9FskcsRkksskgZs7)!!%!!soogsc99RFFIss᧥ssgogcRsosssskgs1!!1)1FkgsRcsscsosccRssJcc9FZsssssskscRccscsggcs991)1)1kkckRRssRggsggRcGcs֥1!!!J91!!)cFFGGI))11cZFZkgRJRkRFsgքssks7!!)1kZIGFRZRkckkRRcoskI1ZcgsssgFggssssss)!)9RcsscsBRssssRssRcZkgkRsccssssgcssskF)9F9F9FFoFkJ)11RgRsssssgcsRcRRkRssRcRcssRZRZcsssskkssssRkkgscososscRRcRcssgkggsssscssRRFssgskgssBcsRR)RZkkZcRosZkF9>9o{{Z{JZ!ZoI11)9cgcgcgcgRkRgBBscskkR錄kgssRcssscRRssockRRgkssssskssاsskcgssssscssssssssssscssssssgcgZIskcGscsscscsccsskGRkksssgssssRkkRRgsgoosssscsJGk99F9FF9FFIccckkRRZR%!!91RkckkF119FRgRss߄sR9GRccg!719FFZRksRRccsksssgsssscsssoskcJoRsckR9F1))19FcZssccssosoRssZFFkIssskRscZcssssRcsoossgsgcscsssckcsssosRgscgss駽kccRccssgscscsossBBckssosoosgRkssscgssssssscsscccssRscssccsosgssssssgkccsssssӽscRsscgsgsscBJRcBccsscssgRssccssssssssRRcRccss򽭭ssssccBccskccssgscsscgsssRcoosssscsccRscRccsosggRgssgRJ1FsssssskRsRcksssgsss֧sssΧscssssgRRFsFRgssssssRRsskccRgscssۧsssssssgRksckskksZJZkcJ-ccBssssossRcsksgRRksssskskkssJkcRssscRksskRsssgsssssskckkcsssscgsssssssJcsss󄧧ssscRcssss؄sckk19FGFIZkRGR1Z91)11IZsggcssssssosccgFFoIZZssccFIF)cgscRsssgkckkcgkss1FFgsskkF9F1)!9F!!!ggsRckgsssssssRossgcRgssssF))JJ9RkkZ1RRssossossssJ))J5))Jk{J_RJ))s)k_skkYk__)9)RJ)5)JJRkkYkkkkdk))1dY)5ss))ss))1))91JRJoc_scRJ_R)kssRRskk_Rڽ1)5))J))7)1JJRJJ7)_s__R))5)9_s{_kk{{꽘sdkk5sk{))skkRJ_k񵽥ν))kYdkkY__sk_ks9k_))J9))5)!JRڽR9{k{sR1)99J9JR9dkssRJRRsRJJRJJ9RJ9JRJYkdkڵsk奔kk)_dksZdg{) ssgs숵kk_9JJ)kskkJ)){ڽsdRR1)RJRkdk)__dkJJ9ss_R_RRsdJkkИgJddddkRkk)1)dRss罧ksRkkڽs))_JJRJ{ZkR_kkRYs{{skȽڔkgkk){kkdkkJd__kskddkkskddsksokskdskss9dYYssdR絘鵄{kgss൥9RJJ9skRR_1__YksZZksgdksԥssskk191Jdg{ssZsss!))skkdkksZkkk1_sss11kss{{JR19_kYR_dJ!R_dZs99)RR_sյڽڽsZ)YYc_k_ks{k󘔔ε{RJRssks)ksӧksssR)!)5)911!!))RYk_R99R{ck__dԵ{Rks{R55k{sss{{s{{_kk_9RYRo_{{cJ!__kgddssks{{Y_kskk뽵_{Rsgss舔__JJR9RR9)RRk__1R_s_kεk{9)_R1!)9)1RR9k__{_RRkkJR_kRk_{19R9)!!!J9J_J_s{εεg)!!!!!_ZٔsΧsΘss7!!!!)Rss{k_k_skk{sΔ{7)!!)9ks{sΥ15!B55!1s{YRJ_R{{{k{_R_{s{{{k71!!5))􈔄RRk__Y᧽sν{)!!J1J_{s΄sZR_kνΥε{ΘsRR99{{ksss{dέJ!!!RRJ!!)1Z__ddY119JZk_k{sZs{s_瘥{7)!!1JkkYd_kks{{{ss{YJc_Θ91)Rsׄgsssk{{s󔈜Χ{_9R_R_R__o_{c1J9ksΔsss{sssskskν{{Υs{{νsss{ks_{ksk9sc{{kZkokk_R))FRo{{kRk!koYJ)91R{k{sgg{{s鄜{kss𔘧{ss{{ͧνν{ccc򄔔鈄cY{dc{ds{{甘s{{ks饘Zd{RR_R__R__Y儵{{sskk5!!)RJs{{{_JJR_ssΥߘkRds)!)7JR__cs{ss{赔ΘkZs{sR_J99R_Zcsk__kY{scs{k駵{sέgg{s{s{ΧΧsgZsg󧜜sεΥsssg픧{ۄΧsΘΘss{kcJ_ᥘΘ{ss{c֧ks_s_kss{ss{{{{cZc{ZZkڔs{ss{{{{Z{ss{{s딄cc{{{Z󘧧s똔{{JR_d_Yk{kdkJkRJ99YkΘ__oYkk_Y_9))s{{{{)9__{{_R_919R_9)!!))s{ss_11RRs{{kJskss)11)11JckJgR)11B1sg{ssjsgg1%1RJ11J)Rssjssssjs119jj1{{11{ƭ{{11911%9)RJo9gB9RJgR1s{{RRB{ssgRƽƽ9111)11719JJR)J71g{ggR111Bg{ƽgssƩ{jss{s11{ssRJgsƭƄ11sjjssjgg{sgs{Bsg11JB111JRRB㵄s{R91BRJRJRBjs{{RJRRBRJJRJJBRJBJRJjsjs罔ƽ{s孔ss1gjs{{j1ƽƭ Ɣ{{ƽƭƽ숽ssgRJJ1s{ss)11ƽ儔ƭ{jRR91RJRsjs1ggjsJJB{{gRgRR{jJssЩsjjjjsRss191jRƭ{{sBRssƩƽ{11gJJRJ{sRgssRjƭ{{sȌ甔ƭssƭs1RssjsƩƩνJjggs{sjjss{sjj{s{ƽos{sj{s{{Zjjjƽ{{jRƽ{νƽ齌s{ƽƽƽ齭ZRJJBBc9Rg9ggjs{{sjs{ԭƽss9B9Jj{{{11{sjs{sss9g穜99s{{JR9BgsjRgj)!Rgj{{ZB1RRg{ƽƭ{{1jj9gsgs{s󩔔RJR{Ʃ{s{!1s{ƧӧƩ{{R!111B99!11RjsgRBBR9sggjԽRs{Rc{{{gssgBRjRogƭƽƩ9ggsjj{{s{{jgs{ssƽƽg9!{舔ggJJ9B9RB19Rsgg9RggssB1!gR91B!199R9BsggRg9Rsc)RgsRsgR9%R%1!!JBJgJg{{1!!!g{ٔ{{{{{7!1R{cgcgBss{{7!1!!B𧔩s{{9!!9{jRJgRckgRg{s799􈔌RRsggjƽƽƭJ9Jg{{Rgsƽƥ饩RRBBҌs{{RjƥJ9R{J19Rggjj9BJRsgs{{{g!{{719Jcsjjgss{{{jJ{{gB991R{׌{{s{󔈄gZRgRgRggog99!JBs{{{s{sƌ{{Ɣ{{sBg{sZ{{sRsosscgR11%Rokksc9sƽsojJ1B9RRs{{錄s{{𔩧{{󈄔愌{{򌔔{鈌{jjj{甩{s{魩{{jRRgRggRggjڌ{{ss!1R){gJ)JRgB{ߩsRj{117JRgg{{{轔{c{{RgJBBRgR{sggcj{{{s駥{{{{{{{{{{䥧{{{󧄄{{{{{{{{ 픧ی{񵈭s9Jg᭩ƥ{{֧{s{gZgs𧔔⧽{{{{󄌌{ڔ{{{{턜{{󩧧메JRgjgjssjsJsRJBBjsggojssgjgB11{1BgggRgB9RRgR111{{{g99R{sJ{s{{{RJRsRosRsooGsGRgoosG!cFcGR9sooosgRgsRRcBgBRosgRosogRoRI99FF))RRgIG)GgssgsgssRG)1ooIGsG)IRRII))F99gF91googossRRgsossosGGRggssooRgooosssocBRooRgossoRR9FssogFGoggssRBRooRgRggRgRscosoosRRsososRoRossRcRgosRgocRgo!RsoossgocRF199)ssRoosossosFgsR{ccgsssssRRGRGRGsBoossgRoRosIssBoRosRRgRRsRoossRsBRsRRgBRoosRRgBBoocsossBosooooooososssoosocooooRssossosooRocRcRoosgsooRRsoRgF!)9gJ1FRgRR)1)ZsssRIRF11!FRRsssRFFssssossggcsssgsckgskgsssskcRkosJ9FssggoggRsggGFsgIGFFcossoggssgccsossgcRRkssRcsoogRRgssssssRckRcsssgZGGIIgksJIRGGFRssoogsgG9R1sgss򭔄ssRRgscsssssoscsgsgcRcsssgssgRgssssIGRoosogR%)IggssoogsooRosRRosososssogooRRgRsosoosssgcsRBcgsssossgsscssssRGRoR))FFoRcRBccssogsscssccssRcsosscsscssssRJcgkcRcs⭔sskRkFF1ssssFosZcFRsscRcRccRssscssgskgZcZRkscssscsRRsskRkgscscsssscZZJgZZsskRZRccsssscssڄskggRG91%!11)GFssosssssRFFRsosoggF)sssssossossooRoosskggssgkcksckRcBJgscggkgssGJssBccscckgRRkscRJGGJkccssssssssccsggRggcskssssRccssocgssssssRccsssgkRJGRckkZccsJssgBRBccBcRgssocsosgsRJGGRJRgcBsssF9sJRRcRcsRcssssgssssgcRcGGIscssssRFFsssoggooRssocscssssssgssccsssccskZksssocJscZsscRZGRsscsssBckGkksskRcRsRksscZcRJBccsscsssosssccsscsssogsoosoossRkcssocsosssZsssddsd9{_{dsRĈkssggskssYRR__99kssYdJdkd9JYdd1YksYY9))1_RR_RJssddksksskssR_예_dsks{kssߥskksեssssss9s{_JRR9s_kssdkdkdkژssYkssssssսsksssks۔kskkkյ潘{{ssksss_91RRJ_sskk9J9kkYk_J)J9_kkΥk__{{{s{ocR_sd_Yd__电ss{ssss{skddYY{cYsdd_kdRsJ򭵘ssٔssYds쥘{51Ysss𘈘ssssgkdss99__ssg񄔜s섔sZ{s㧵{s{__9ν_kk_ssss{kks{ss{s{cccZkk{skkژ{sdRJ)59JJ9d_k__s_9s{ה{{{sgZ{dZgޔ{ss{sZddZ{s{Χss{sZds{{cZgsggs䘄sZddkZsg_RZsssssddYs__菱s{c{ΘZcscdsg{d{{{sss{csZgΔs{{攜{jj{jRRgRj{RĈs{{{ƽsƭƩ{jRRggZZs{{jjsjƭsjZJjj9{js{jjZ119gRRgRJ{ƽ{jjsƽƩƭ{s{{Rg쩈gj{s{{߭{ss{㭩{{Ɣ㜈R{ƩƵgJRRZgscƭ{{jsjsjƽ穭ƽƽƭj{{{{۔s{罜ƽ㽽ƩƩƽƽƽƭƌ{{s{{gR9R9Jg{{ssBJBssjsgJ1)Rgsssgg{Ƅo9Rg{jgjjgg甽{{{{{{{sjj刄9j{jjgsjRBJ󽩩{{{ٔ{{ƭjj{쭩9j{Ƨ{{𩈩М{sj{{BBgg{񌔄쌔{{{㧽{ggBƔgssg{{՜ss{{{ꩄ{{{ss{ss{کƧ{jR)1RJJBjgsgg{gB㈄{{j{ߔ{{{{{{{jj{{{{{{j{{{{婌{{jjs{{gR{{{{jj{ggﭩ{{{{{j{j{{{{{ᔥ!!!!!J11J)%9)!!!!!1BJRRcRJJB!JRJBJ!!!!!!!!!!%G))BBRJRJRJJBB1-J-%%!!)!!))BR-R-BRBocsccsRRsRRJBZRRRRJ1)%%)!!))!)!)!!JB!RRRRJBJ1BBZJJRRsRoRcoRBRRBJB1BJ%GF!)B%1BBJJBRJJ1J1JJZJZccRRRccRRJRRcZJRcRRJRRJRRcJJZZJZRZRcRRcRRZRZRsRRJZRRJZRJJZRcRJJZJRJJRJRRcRRscRRRscoRJR RcRJBccRRB%)9%!!)BBRoscJJRJcsccRJB1))RRBB))!!))BRRJZJRRRJJRRJsRcRRJRBRRB1-))!!!!))!!!sccRRRBJR%J!%-1cB-BB-)!!!))%-BB!!!!!!)!!)!)!!!)11BBJ))%)%%1BJJRJJ1B!!!!)!!))!!!!!)))!G-BBJJRJRRJB1%%%%%1B-%!!!!!!)1BJsJJRJBB-)-)!)cZRJRRscsooRRBRJꄌRBJB11B11)%%!)))!cRRccRRcccRRJJRcJRRoRcRJ1%!!!!))!))BBJccRccRRJRRB)!!)!)%)-B1BBRRBB-))))91ZZJF)J9,,)1!Zks{{{{ssk19,,s{{skZ))9)9,,)9,9,,!1919FdJJkk{s{s{sskkgZZF1),99,99JgJZJZgsk{{c{{{skZ򭌌{sZJFF9,9!99!9199,9))99sk9Z{ZZխ{Z{sksZkkZssZks{skkskZkZF9d_!JgFZkksskνssZsZssZsZsƭZ{{{sZsssssZZsZZZ蜌ZZsZ{{{sZ{ssZ{ssZsss{s{{{{Z{Z{s{{{{{{{{ssk{sskFJ)F1!9kk{έss{{s{skZJJ{kgJJ,!1!9JJk{{sZs{ss{{s{{{s{k{{skZZ999,99,9J9!,1199119{{{kZJFZ!FZZkZkkgZZJJ9))19J9FFZkk)9,9)1199,999),),,9)99JZZkkgZJ9F9FFZkssssZk,),)))9)99)1),9))991991dZkkss{s{{skZF9F))F,99FFZgZF119119119!1,),)!11!,1JZksss{skkgZJZ9,9,))9)Z{sս{ss{{k{s꘭{kskZZkZZJ1FF19,9)9))19),),19{ssߌssZF99),)9119),19JJgksνέ孌{{s{{{{ssg991199FJZgZkk{{kkZ91B9B1B11B9BB9BR{{ssksR9MM9B19Zc޵޵絽ZRMM޵{911R1RMB99M1RMRMMcZRZRsjss󵽵{ssZ1M9RRZRRMZZs筵޵޽޵ssBMRcRRcZZRMB119BRRR޵εƽέީީޥ齥{scjgcss޽ƽε޵޵ƽ޽޽ޭ޽Ƶ޵ƵƵ޽ƽ޽޵ޭީޭΩ޵޵޵޵޽ީsksZ9cZ޵޵ssB県ssMcZcZssƽ޵޵񽵥ZZBRMRRMRsZcMZZRRZZc絵{s{csssZBB1B9919ZZsZss1RM9RBB9B19ZZ9BRRMBRBBR1M1MBMR91ccs{sZsZss޽M91M911919BB91RZZR1Z1M9R191RZZRZj祌scs1B1sMccsssZZRZZcZZRcZ9M1M1B9cZZcMZs筽sZMRM11B1Ƶޭ筩絥sZssZRMB1B119B1M1MZRީީީީ޽sRR1M91RZ9B1MZRssީ޵޵޵޵ޜZcZZ9BRZRZss-)!)!1!)))%))!)!!!)!)BBRosRRssF)1)!)!))%)!!%)!!!!!)%))%%)))%%))-BRoRRRBRZ))!))1BJRB)11B11RoJoRBRRBRRoRRBBRRBBRBJ))%)%JBBJJRJRJRJJBJBJBRRBRJBBJBRZBBssZRBB1BBZJRRcsRRcJJBBJJBRRocoRRBRBJJRRoRRZBB1BBJJRRcRRJ RoRoJRRBRRJRRoRoosRRBBRBJBB1JJ-J))B-BJJRJRcRRoRoRJJRRJJRRJRRoRoosRRZBBZRRZRRB!!)!!!!!)!%1BBJBB1-)%)%)BJJRJsRBZ)BR)G)G)!!!)!))!!!!%))BBRRcRRBRRB1)-)1-))BG1%%JBJJBBJB-BJJBB--BB1BJssRRB)%)!!)BB1J))9)))1--))!BJB B1-))%!)!))))9)!!)-J)F!))1J J1)!)!!))!!!%))J!)%)))1!))F!)!))JJRJJRJJRRJRBB)))!!))%1BRB9)!)11B-BBR!JJRJJRJRJJRBBRJRJRJJoRRBRcRJRRJRJBRRBRRJJRRcRoRoRRoRRJJRJJRRJoBBRRgBB1B11JRJJRJRRoJBJJRoccJJRJJRBRRJRJRoccRRJ!RJBBRBJZ9199,))11F9JJ9J9)1)))9))))),1Jkk{sss_)9999JFJ199F99))99JF99F1F99JFFJJZgs{{{kscJ91J9JZZkkss{kJZZkZZ{{sk{{kss{sskk{{kksk1J9JJF9Fskkss{{s{s{ssksksk{{{{k{skksk{ZkkcZZskkZkkZs{{sskkssk{{{{k{kss{{{sZkkZkkss{{՜{{ss{{s{{{k{{s{{{{kk{kskkZZ1JJ99JkZgss{s{s{{{ss{{ss{{s{{ؘ{{ZgkkZs{Zs{k999)))99FZkkskkZJ9F9FJgss{sڭ䥘{kZJgJJdJdJ,,911)9,,9,991)))9F9Jgg{{{{k{{gkZJZJZZJ9gdJ)5)5))sksskkskZgsskkZZkkZks{{sggJF919)JggZZJJR11)9))Z9J9JJ99ksk kZJF99),)1)919),))9))9)1))9)9ZZJ_991)Zs sZJ99)99),),))9FJJZ9),1)5))1,1)9)9,99_,99))99JZssssss{{s{kkJJ1)9))9)9JJFZk{kR),)1))9J9ZZgZgkk{ss{ss{s{ss{kksssss{skkss{s{{ss{{{sk{{k{{ss𜌘{{{ss{ss{{skk{{kgZkZZs{ss{s{{skssss{ss{k{{s{s{s{skk{sskksZRBRBM1919Z99ZsZssZsR19B919911BB1191BB1!B1MZs񵜩g1BB9BRZssZRRsZRR9191RRssZZsZsZcZssƽ{sZ9Z!sZss޵ޥ񥜜{sZssZs޵޵޵ƥέƜƽ޵޵罽穵ƥ޵޵޽ީ޵󽵵ީإ{{{ssZZs眵ީɩީ絵ƌƜƜRR9B1B919919RB9ssZsZss⭩ssjsjs9MBMcZZB1RMMRMZRZZRZ191B19RsZs絵茜sssZjJ1111޵sZR19s{ssR991B11ZsZss9RR ssRZRB11M1Z1BZB1M11B11%1911R19B{sgRBBZ1 sRB991BB1M1M9911Rss{R1M91119M91B1BMRBBgMRZ11RBss޽޽ssZ1BB191R1ZssR1M1911Rsc􄌥޵޽޽{޵޵ީީ޵ީ򽵽ީ޵cRB1))%)BB)1B!))!))G)JBB)!)BJBB1BB11-B!!!1JB B-G))BB)-JBB1BB1B1B!!!!BB)R-RcossccRRBB1BBRBB)B1BB1-!!)J))RRcRossRoR--RssRBB1BBR))!!!)%JBBRosRsRkRB)R)RRcskcRRBRcRRBB1-!BBRRBRBBRBRR-RRBB1BRcsRRcc-BJ-sscRBB)%1)!!!!B1R)-JJBJGIF)FF99RkoRZRFRFRF9FkgkRFGRJR)!!)!!)-ZksscZoRFFRRcBBRBRBRBRcgRRcRBRcRcB1BBJ-R-RRgRkIgJBcBBc-R!!!!!!!)BBF)F)%FRBB1B1BocRF99GJJZ-))!!--BB1!!!!))F1RRcBRsRkRBRRFRJB-BBJ!!)!!!B)!!%))!!)R-BRRc-RR)J-JB))B-RcRRBRFR--)-B))!-BB-GGJRGGFF1)9)GRBRscZZIRZIRgRgcBBRB1B1B1RFRBB1B)!)1F9FR991991)GGBcBBBB1BBR919)sgRRB1BB11)GRBBoBccBBcooRo11)-BBRBB1--RGGF-RBBcggBRJRssRJBRB%-R-)BoRJRRBRoRB1sRRB1BRRgRBB-GR-RRJRoJRRoRRosoRosRRoR11RsBB1BRFRBRcRR9FsgJ991FJkkgJJ9,Zk9)99JdJZggJ99))JgZkkZggZZgk!!!)))JZggkgkgkZdJ9kgkJ9JZZkkZkggZZgZgZ19!)!!))))))ggk99kZssskggkkZkkskkJgkZgkZZ9))!),9JZJJssscs{ZZssgkZkks{)JJ919,91)99FZkkggss{c{{sgJJss{ssksssggkkZ!g{ksggsgssZ{skggZgsssZgZZskgJFJ99),)!kkgZJJZZgZdY_J__RRk{okk_k_k_R_{{k_dsZs))199J99ZJZc{kok__sksggsgsgsgssssgsskZggZsZsss{YZgggZs))))!)9)))!!!1gg_9_9F_skkZkZgs_RRdZZcZ9)99)))!ZZkkgZZ9!)!!!)19_Zssلgs{{sgkk_kZgZggZ))9)),)99kJ99F991!)!,91sZgssZssJZZgJJgZsssgk_kZZJZg99)ZkkgZddZkdd__J))1R9dsgskkYkkYksggsgZgZgZk_kggZk)199J_R_sRRJRRJ9ddkkkkkZggksRJR9sksgkZkgZZJdskkggg{ZZJZkk{kkgkkgZZsdd_Zskkk{s{{sk{kF1ZkZJg{s{{ksskZs{skkZgskskkZdsZ{{s{s{{{{{JZZsgg kZkk_sgssskR_{JZZsssZMR1ZZRZZsjs{sZR911s{!!!!!!!1!11J{댜jsZsZs{ sZR111111B1!BZZssc1!!1BBBB1MRs{ss1!ssZRMRZ1RZs{ss휌{ssJBRR1M1!s{{{jjgsggRRsossgsgsgRgsgj{{19RRsRRss{sosggBs{{{{{{{{j{{11911!B9!!B1R1!B1!1!!9gZgZsg{{gRRj{{B1BR1B11!!R!!1!!19Bgۜssgs{{1B199B191M1RRsRRsZZ1!!MBZ{{{s{{sssgssBBR1jj{sjjggJ119RZj{{ssjssjs{sgs19RBJgRgBRRJRRJZjjRJRZ{s{sj{Ƶs{jjg{ߥsZss{sj{㽵ީީ򜌜sg{{sRgB1BB1BB1BB11B-BB1B BRBRBosooRB1BBRBRRB1J--BRBooRBB1BB))RRB&B1BR-BJ-BBJ-J-!)!J-RR BRBoBooRoBBRRB-BJBBRBRBBJ-B1BB-BBcBRBBRBB1BBRBRBoBBsBBRBB--J-JBRB1B1BBRBRBRRBo1RooBRBRBB1BB1B1R-JJ--BRJJ-BJBBRBJBRBRBooRBBRBRRBRoBoRBgBB1B1BB-JBJ-)-))J--1BBR)1)R!oRR9)9ooBRBRBRgBB-R--B-J)-))-BJ-BBRBRcG)911)G)-R-RRB B1B-JB))JGRJJ))G)JG-J-BBRRBgBBRRG91GBRBRRBB-BBJ-BJ--1BBJBB-BJ-BJ-BJB-B)-B B1BB-B--)-J-)J-JBB-BBcBB1BB1BB-BB-B)--RBJ))J)-)-)BJ)-BB-BB-J--JR-R-R-RBBcB1BBRBB1BB1BB-J-)--G)-G-))G)%))-JGJBgcRBRBB-B-BB--B)J)JJksccRssccJRJJGJJ)GJJRkckcsRJJB1B)BJ-))G)-BJ)J)J))J)G-JRBBJBZBZBRRJJG))J)ckccRkccBR--J-BB--JJ-))J)G)J-)--BJJ)J)J%)JJ-JJ-J))G)G)J)JJ)R1JJRBJRRJRJJRBJJ)J))-JBJ-))J-J))J)JJ)J-G)JJGJ)GJ)G)JR-))GkgkkggZggkggZggZggZZgZggZggkkgkskskskgkgZggksks{skk gZgkskskkZgkggkgg))9)9{{kkgkkgkgkgkggkZZgsZgZZggZ919ZZsskgkskk{kksskgkZgZggsgsggZZgZggZggkk{kkskkZkkskskkkkkggsggZZgsgZgZggkgkkskskssk)JkkskskkgZggZkZsZZgsZZgZggsgZgsgsgskksksskskskkkZkgZggZgZZJZJJZZgkgs9J1k!kkR19RkskskskggZsZZg ZJZJJZgZZggsksd9RJJ9dZJZkZssgkggkggkkgkgZZgZZgJJZdsZZJJdJZdZZgskkks{dRJdgsksskgkZggZgZZgZggZgZZgZZgZgZgJZggkkgkkgkZggZgZZJZZJZZgZggkkkgkkggkggZkkgZggZggZgJZZsgZJJZJZJZJgZJZggZggZZsZkZsZsggkkgkZkkskkgZkgZgg ZJZZdJZdZJJdJFJJZdZgskskkgZgZggZZgJZJZZ{csZsZZdZZJdZZs{{sZZgkZgJgZZJJdJZgZJZJZJJZJdZZsggZgcgcgssZZdJJZJ{s{gsZZgZJZJdJZZJZZgZZJZJZFJZZJdJdJZJZZJsZZsgZssZsZZsgZZJZJJZZgZZJJZZJZJZZJZZdJZZdZJdZJdJZsZJJd  {11B1B{{{{R9R{򜄌{{{{饜{{{{1Js{{{{{{{{{{{sss{{ZJ9sssRZBR{{sss{{jZRJJZjsss{ss{j{{sjs{j{jRJj{{{{{{{s󄌄s{s{{s{{ss{sss{s脌{{{s{{{sjsjssjss{j{s{s{{{{j{{sj{{{{s{ssjs{s{s{ss{sj{{{{{{{jss{s{{{{{ss{sjs{s{{s{s{ss{{{{{ssjsjs{s{{s{{{{{{{{s{ss{{ss{{ss{s{{s{js{{j{sj{sjs{{ssjRBBRBB-J--G-J-J-J-J-BJB1B--BJ-JJF))!>7JR!!!!!! BcRRoossoBB1BBI!!7!)!17!!!!!!!BBRoRsoogRRBRBRFJ1-1B)GFJ797!!!!!!BRRooBRB BJ-J-J)B)GJ)J)s7!!7!!!!%!!!!!ooBRBBcBB-)J))-J)J))J)!%!!!!!!1BB1BBRRBcBB-J))J))J))J)GJ)J--J--1!!!71!!!J!!!B--JBBJ-BB--kJRJJRJJ)-J)JJBZBkcc))G--I%!!!!1!!!JsscZcZkckIkckskcJJ-))JkRRZRBZBJJBJ))!%9!!!!!1>BJ)JJBcRJJ)JJ))-)J)J))-J-JB-JJBR-JJ-coZ)!!!!!!BBJ-BBJ--JJ)J-JJBJB--GJJRG)RcGG)9!1!!!cBBJ--G)-))J-G-G--G)GG)G-RRBJBB--J-)-)G!1J!!!!BkkRRcJG))G)G))G%)%))%)J-BB1)1GJBBG-G)9ZJ)!)!!!))97JRRscZkcc)F))G)GG)F))G-J)G)-JJBcRJJFFskssssJsscckssRZBJG))G)JG-J-)G))G)G))JRR-JBRJBRRc7!!ZkRZZcs) )G)G-J--JBcRoRBRBBk!!%9171R{ssksk9RFG)J-GJ-JJG-J-J)J-JB-BBcBgBRBBc-RBRRcJFJ!%%!!!!!sggsggkggZZdZZgZgZgZZgZZ_J99!!F7Rs!!!!)))!ggkggksskkgkggZggkY)!!71!))7!!)!)!!))!!ggksss{sskgssggksk_ZZgJd_R797!!!!)!ksskskk gZJgJdZJZJk7!!7))5)!)!!kskkkgkggZJZJJZJZJJZ9)!5!!!!!)))ZkkZggsskkggZJZJJZJJZJdZJZZJ!!)!7J)!!!R)!!)gZZgZgZ{ZsZZsZZJZZJZZgcg{JJdZZY5))!!!!))!)!Zcc{{Y{{{ZZJZ{sscsgcgZZgZ11))!5)9!!!!JFgZJZZgsZZJZZJJZJZJZJJZZgZZgsZZoZ1!!!))!!gkkggZgZJZZgZgZZdZZsdJsddJR!))!!!kggZdJZJJZdZdZZdJddJdZssgZggZZJZJd!9B!!!!g{{ssZdJJdJdJJdFJFJJFJZZggJ1JdZggdZdJRR1!1!!!99R7Zssc{J_JJdJddJ_JJdZZJdJZZgsZZ__k{Z{cscgZdJJdJZdZZJdJJdJdJJZssZZgsZgssZ7!!Z{skk{sJ JdJdZZgkssksggk!!559J7JskRs_dJZZdZZdZZJZZgZggkkkskgZsgssZ_R)55!{윌{j{{{{{{{{gsBB%79B!11!1!!j179!17!!!1111sg{sjg97%7!!!!1 {{{ssj{s{ss77B1s{ss{s{ss{Z1!!11!1{ss{ss{ss{sj{s{{J17)1!91!!1{{{s{s{{{ssjj!111!{{{j{{ss{{{{{{{99111%!)%{s{{{{s{{sss{s{ss{{{{{{{oB9!{{{{s{{{{j{{js{jjsR1{jsss{jjjsjjsj{{{{ssjB)!!!{{{jssjsjssjss{J9Jj{jjsRB99!!!9BBR7{{{sgssjsjjsgssj{sjs{{{gs{{{{{{jssjs{j{sjssjsjss{{{{{{R7!B{ssRZk{s sjsj{{c%)7JBcZZJZJRBgjs{j{{{j{{s{{{{{{g91!! !!!!!!!!!11)19199kRZRsgcgcc!!!!!!!%9Fkss᭽!!!!!!!!!!!!1RcssssgscBJRBccsss!!!!!)FkァgkRBJsscRRcsRs!!!!FkkgssZcsgssssRckkccRBJJccRJRcs!!!!!11Rs{s{kRoc17)BRJkskckRRcRZBRJcRRJkcs!!!!!!!!!cBccBJJB-J--BJBJBccss!!9kgsksR)!!!!!)!!GJBRcRcRBBJkRckssss!!!777!!!!!!!%)IksgkkBJssgssggRcc!!!!!!RI{{sscRR-BBss!!!!!!!!!!!19J99FZo{県kggRBRBJGBJ-RRgRc119RRJRRJJcJ11%!!!!!!%)RRoFJ%%9ssBRBRggsskk!!!!9FRccsRGNN9FRcBRRsss֭ssZRGGFBRBRccRcRgc{gcs9kR99ssssgss򌭭ZRRcgssgssgckkskZk!!!RRFRRJG-GFRss{ssosssss!!!!)!!!!!!))JJ9JRJRR{sks!!)!!)!)!!5)R_{̭Θ!!!!!!!!!!)Jk蘈gZsg!!)1))_{ﵧ{sgZsss!!!_{{􈔭Χks{{sgZZsZs!!!!JJss{k{koZ)J)7)9gsZ{{{ssscgsZssZ{!!)ggZZgZZgZgZg!!Rk{kk9!!!!)99dZgsssggZ{s{!7)77!!!))!!59Y{{{gZs!))!!!!!)sY{{蜔ssZgg!!!!!!!!JRcRR_ko{筥{sgsgZdgZZsssJ)JRsscsscc{cJJ5!!!!!5))1ss_Z55))Rgsgs{))!)R_sԔsdggR_sgssνkd_gsgsss{RkkRRɽkkss{{{k{!)kssk_k))kZdZd_s𜥄o!!1!!!!11JJBJRJRR{s{1!!1!11Rg͔!!!!1Js{{{!!!1911g{不{{{{{{!g􈔔ƌ{s{{{{{{!!)JBZks{csoR1)17!1B{{{{{{{{{{1{{{{ꥌ{RcZ{ssB!!1BRRj{{{{{{{71771!1!Zj{{{{{!1!11Bjk{팔{skk{{脔{{!!)R9RRgso{kks{{{{j{{{{)1)RBB9BB99R9))!119{g111R{{J111Rg{{j11Rg{{{Ɣs{sjg{{{{Rc{RcsRR{Ɍ{{{s{ss{{ss1s{{sgs11s{jjgBZZks{{{s{{k{cZZos{{cRccRogcRsRRccBccsgsccscsgksgssssssssssksskRZkksssscsss򌧄sskksgssssgkssssss܌kIZZkꭽssscsksssssgcBRJBRRckssgckssgssssssgsssgsssssBcssossssccggcgRcRsscRBgkssgssssksscgsssssgssgRRgRoRccssscRcRckssssۄsskcRRsssscgRgksssccksscRcgssF9)199RRIgsgss씄ssooscsccssccRRsgRRosoossssssgkkssgsccssgsgoskkcsskssscsgsccBRggsgsskcckscZksgsscscsssss{{RRFIRRZkksss𭔄sscggkcskcgssssgssossg-Rcgscsss§sRssccggssssccsssss󔽭scBRcsssssscBRcsssssssgԔ{Θc{”{sc{{έ򥧜{{񔈜𭘘ΧΜ{ɔ{Ykc{ꭵ{ƔgsZgss{舄{ֈΥg󔜄sssg{{󈔧ssssss{טksss{{՜s_R19RRkkYss甧ssΔ{{刔Δ{{{gsΈΧ{{k{{{sk_Ykk{𽵜ބ{{Zs§s򽵵gs񵥥gs񌜌{{Ԕߔ{{{匧{񔈔𔩩{ϧ{{js{{{ꔥƔ{{{{{舌{{{৩{{󔄌{󈔧{{{੔c{{{{{Մ{gR9BRRssjƩ{{甧{刔{{{{{{ߔs{{{kk{sgjss{{{䈄{{٧{{{{멄{{{񽭭{sgggsggskkssΌscscsgcsssssscFZIZkssssgkRskk݌gcsssgZJRckckRkscsskcssccscsscRgkssssccgkkFFcRRcssoosFcFF)1))9sssssggssssgggssssgksoscssssksssssgssggkssgcgssss秌ccJBscoococgRggcsscssscsooRcsssscssssskgscssssccsssssk৵sssJkgsssscgcskZ𔧵{{cӔc_cYc{{s{{݄cZs{{s{{s{{{__ss_{__9J99RΈ{{􈔔{凜Zgss{觔{ড়ΔZ{{c񔧽ה{g{j{{򌈧{{팄{{{gg{{gRggBJBBR{{焔{􈔔{ﭔ{{{{{{{򜌔{觔𽥥{{{wD;"freedink-108.4+dfsg/psp/icon1.png0000644000175000017500000013536212330466347014363 0ustar memePNG  IHDR6sRGB pHYs  tIME %4aCtEXtCommentCreated with GIMPW IDATxyfUu.9뫹zQAA8k׈7DH^hEM!C/M&Wql M]\t{9&c&T=M}oWkwe-kYZֲe-kYZjڂ{U.X `6ڝkڂP~9.p׫rjYZl5Gܶ^~o~υtZxU.S-k/tk ]sp>δeeR7 Ew9g bzz/}W>lکgccpǿSƦ+n!oꇾکgۿ}ٜlyׅtƘ掖?UZԲYiՉ A }(O߽ykڡl:;qlٗÆ,ⶹW>qd[;ԲYa:СCK/SO@fn_?@ Zֲ_tl!c6TޞW U1?<Ps%(TVazG~t/~O>s y睸ܿ) k~DyCC~{?s{uK-?yt뭷ַ5[hY CYd۷o{O'JoL;sE;-ش}|ImvD'Gw?7pP%=DsHl= PVԔݻ<@!"trgg'EġCggppei%H^t5kٿ\pT\ {/8%۟۷/]{ Z[h߾}*O>"{+8>3j=B099^@܉i0:6٩6m8#_,\.禦1ƅa֮]k{30;]UUU,Hk3U.c4a[M@i\,UXTbQ q>?%PcZ&&&lٴ{q{;z+gyrlj33+"2<<,i&;<omE8fi9h'|^uUKw}7oݺUYkr)RJq̾?g3QEDNOOGǏjPs=vZ89 h+`1?:c3'f&w:C{ps.ֆa|F<33c?avmxG\.=+1s"DR=[kEDDqלs8f7mdVzGy~.+,W!VJъ8L?||>_4\ͦ.&nӞ.{Wd ];X3RNDLǡs末FQ4_(cccg7PZk\eTKJsN?ks38cukmZ;q9nܸ V۲{.br̪@D J\P`f=g/|o/hh=г?k19opKg?yO,'s!"5qWssZf$8Y&|E\nT3\16'"ciXksQOY&QpiNW.ZvY.*̜[rE9ڙ0 ǭ<755zZyTEky^R DkB8Ej1ƌ7f9S()z' Rbz}v+5ιjYx* Ù\.WZlbPk׮sA|>_rεyW!@"Rb"D?ƽ7opx voi <'YU̒eE$s `Z;휛j6SιIkl TyfyꩧBPZ*rUJ2D$KX[k1#Q4 cj3ό2Vr1~:R=[ZwҤGd0(Nj fSi|OkN)SpnYi:fsqpHDr\u||<QZKR;>((REfw9!Z YxpZmvƍMl vN@:x+1s;]JN"ZH(;,>$"4W>0G!8fk_\ƥ"2s97GD 8EQg"0sEk `z+zXW%/'"M"P"b9Ԕ}uyuR7*QWʰ8c=KM6 gs|&+uYDzS`ۤZED%,vq)e>+" "$"HZ;&N,A0̋HJ JJweOBD""ȤsJ1f֚8@s\=@/uysss̫үDT!23&"""tuza7aY=h6"<~x/%u)cJЀ҃eE$TJUs3D!"Rĝ1[VTQ{ VD,X%ι:HyEQ-T*0 =T.UJu̼!?IqH3VꔫZcw<';/*zmǾ_n(:DD*1f sh'"y"*h5:^"ٔxtԆιX$ɤ2 V^GXgT5kmZB 9gJ|R{wlz+DL"6v (rI9'288 !3笵Z{hJ6kl|OL:kQ13iflY[+zcbkmCZx|0ww5~[$bk]c(mΨl>|"RXeږ}Ct );[mf8Hid7'(>8srg,޷\>X]5; EZYܸRjZ;)"l~b+|j"k\1ہ}ox_ED:RJU=ϛ'y((LPО"RZܲ=V x09)0Bo;v(eXU_AΝs]]{߫g/I"ӿaMDh4<03a 9_*#h<a0:" ゚PD)TdH~I Zv[{zzkm)vT7)D D$'"O>Rxɺ C|@ [ġ!  H=#crr>vn(]q+b(EQy$RVE!0qˋ6nd""ش "# Q'?N?~u;n~[bA'bfpcB#5DD90u\°#E[_߅=nfDd97y^K;4"-" }1 syE(s}3p˾QZf[K:bl֮@guDLEjK$K% 'o{)"mSZTxD۲}y붭9u2sֺ*"LcXwo:y5b E 8`]r8@#01x @KEO' hݻ=M"qk<ӿηRkp[zAܻ|#>-25;\|_˩S(h`AD 0;h Xp1Ae,Rzb'鶸Y ؞Ul+_ UUi |=v1sGi߾c̤_,& R$,?"[3|gbK`Y$mG?]LdZ`>^YhҔRήD%p tln}C{ T,*B 8qǁF@DO{r[`g1򙙜sab"q閃!7xga’g8 :meFP*%@hBfc3"@)c4vMvZ/z ^vS'ZϺ(ͬzMkݑNS~k'&NlY@(( &?/WA`9眱s=Wo]=TOMr(1sr11=3Qy[:=؁G}4W{p9DDĊ?XVԍڰa& - AT*raxwO\b"¡C7nq>cmιE"eIXRwp1$N^bK.!rIv43i " mzM,R⎎lLoN6i@ICC e?kEx_OEPcfq-\aumkOyu*-.(H%(@SSՎ'Z7gBAP.m(qiH6m47g}SriYQCعx>=Ww>{csaGVX[gl9& ιH)eD-e"\z0W;^ xCY,0O { "JwE})wv"U"2 BY\edƹ{K/^,rJQӁ5iw\'2s@cܲ23|_7:\sB(5^ It6zކcǎ1F{k Jyee"гC7>na!\*%nRif О]vS7|k֬9`97 `$H)1Kˑ @Deu[ggg{ggg*++SSij~k)JukafYLsZt$L,2'{B3(az~ yiJ)iϥLe\}5BI'$ nJ)Yʴ/K2J iFF>)Y2QQ֋ ޗC"_eu yѩKn-`;]k@GիV҅B!H˅ Yhxc(jdA.PzE΅^x[nj__0뜛':Sbc9$EkmRmZo}D1Na8 kmxoΥ.T$+O1?К0vET)W*_QQ *$usH3i,#_.;P,PA)2V̒"M@(J,0'`hO IY j6iכn"\y Zv6R .a Zvzw]Zf S"69(@Z@_9rqR.$i" |E ]f`[n:9B\s"<ϓ,9fvqb\@jιy3D3+˗51"2gio(ʲ֔*O̪j< ?ߣnn6}}"+r" 眹ov%\!,M  Y`o6nxHDƬ"2e;ⴛFK6fn#6eu1eBAs (W"T*Qcc<5av``)q{|_A) 3ڞf{@{g.miN*pH´NEYr6N Y3GL?@k \,eϿؽ;Y3҇4}$_^nek1+v.wuu13kT.elyfӑ#cU ǟ:֭[7k׮EdL\1Ley)Q+J$c]##{LLgҬ(-:?P.s)3flz`EĒDZ?QckC ؞ߏ0 8m_ZHw$c HH9+_y Q)[k=)2sz 3b2aEN+DDTcc:cA)h%!~ĸRLR<Ϥ8U ):Bx; +{J)Kp3cc s=J^IpX"!TO$+i[|]6RʲXJ00Z($+۲=;-n4vCͺjDD9;>>8EĄ1T2x[8_Z,5Y)ZH2;;10=- KQ.G .X[VfsFD(Z1J)0s;G)ջk׮-ļiKK"Y~Ŷ99 T[3ccccכI曁={\S#a^'w+y+[I)Fx <1;-38thvy \wݿ>/[ڊ$]E>`j*MplfBggq%BW+jbbR=( 7,{%y옺TΑdnn [KDTn4jan17(*%`vy0 x)2]9fK &&׽x $SG9|?-'15V0<|M5zB00=Mҗ_j"#s.}+ƌ. tPgɩ>? 4[.V!"J:@8P(?gܟ׼t + 0EwR8 b2Z(Ǐgd K,2E\tK:M}D#\iFDY߱ NZi*RN Klwe5j5_vJYeZg '&^01>H[ݲ_믿^0cS̖tZ^3KE gOz"Ϛ0ӄ7.=ޞ4T* rIw C-y%osXC>lY_,H2˒X$ 4ݻ:::Cj uv jSJC("}ajr1QDAmS3Ē"`ϥv'"򌌊QX\[vFx{"BNUgI?ͦxg1&$Q:%e8|>p \CyԒmscfSGQD"bM#EiA蜋5b Nas[F<\r)Y](ZkbZVvz%?xιP(K.h8jo1xåQ4/#kjUsj7~>ַ/yI粼=)EZ;J /bvvT0QXl6yvvjEQ#I4d JJewf[KWW !ip5E:;;Rwl.zjYH7s.V28kmhcDdVDfKD xǒK;:`]gqengFBIU֭K.##9t ^~E /L:ܷx ܃Bj , g %`6li(E(u O=Ew qQHiK2OD΄0$"jO''Z[xZ;IcP>)T*FQ,x+{ ji1&)&KfMZX YZ0cpMZjkn%;ͤf%;kx B35Rb .(t6OJ.aZZ-L*(v`re}ȋH!8ɊƘ)k coDHM#G,> 't]wI*$^ kVR , YZIVn}2{/BY`jǏw~8)'"j56qA1єr\@D$/"ڳJ,^t=mKckVDbkm윋s\.fv 7neDPP>wŽ&ai'dR9 O8v,#V)>(@+Jvu\uxCdMjW\Ar/-9,ZTǘZ9ZkCf1ZlUU5F#1f_]#c0Ng=,Fh6|fЉ-J-Z뭞mu<])gfή(b v ml@=*MDYO,@8ZalL%-2%QHDιqܰv${Fol)8ta|˜UZcM7P*["EY&TDAطz"$0>Ȱz]#H_fn|.7yZf^`=uJ $B^R=6ֻiXnmQy]|ҒOHV$5KnVDj۶0\&%C8~' & iwǎԠzY 5m}ROkݙQ>@ D瀶nM&G ۱6) ;9Z [[dlZ"yDc5ܴsnXֹѾ=CYkYp[e!&x0p,Hf 4V Z~_'TLOSO=PrJTy#""IB@%udA5L9 $\e-N @S{O S fQ)ژꟙdsYyž}Z;(A)Ԕ7%_)"u fq9 ? V{|U}m|e3cDU^u> DTy69r@Dp"XNpYY[60:yU%Tv4sEQZc쬻l7kV2EdlNZknj1"2u{T;:=-\"C\رΘvk'2fjij72ZfIG"Bq,7dAbl=v[2xrep%!Zzmu9 ȕW͛MKz ^JnHtx̉u=qx GzߕR}ԙyٟYJ`ysZ^BUV&R/b5JJ-̼E)|dZ2[KرQ,֌!s XD"2gs0 ggfL_k[ެH`^D&8UJuXk+Zz6$'K237W^I OC~wbb{pݺ3V|>/"z}8W?NlZ"‘#]w- 3^]pEvKXJ8|8q ,jW@ڵk'W8#c?zYC w?Q@E*k<`8΋toGq°ҵ-/^䪩fgVq]z{S8 #:t7YKG"~-I#| ٽ4EYkg1ι9*{ȑ dmr]w??lifUJ!ɸ9xk=C?/7t!IOOrRJxatömBW[ ØJ ~<bk lM(60JHr2y5p1e*tViIt97 /};;/ tE[ߚ!*/&DԴ3t[λlG|sVʔ}uu_wZKf:[k00lB(r W$]U;s='$1f97ixZ['hvvֽ8C֖\ӝ/G1fhq|"ƘڱR4~pbǎ1D}K.fEgn`xHwc UU5;;ܔ^nVwuΩzFB!#T I+noR娱IK 0:"Ж^Ex I|8R*b)k혈T*[nsپh4kF2q0/g;<!ӥDo!"Ick?زeKm! W^ɸA1U D1GLG~2 {cccznn^cls' T Jt`nwz}^Wn8s8'8u5||y[k۳K.Ǟՙy3Eё([k9FgwLsgt탂jMP MA IZ&Bxs@[PiJ%XLJ~?<#("x+$9ܬ%N:/|!cϞZgʤͦZ7h6mf9n{\* 40d<w(LNRuak]CZk'8Z_*Jޑ7#v\"cY8 )I;l]@GG jB[T"06w0gq<̉H8::jؼe>̲j*ў'fK; Ң뾾>]y= ͱ1N\f]u%eRA@  1=OgjD7Ip㍅Px1'ZkDZ 31sP]wնvIu>t緘Bιι1,3G` `̵'|h%K= ,-{-y Q8 YkyS#i֖վ2:[2񁮭[c瑖u^W;ޑt] "\t'|>Z*rǏW\qEmT*M(cEQt97j<}vw_ ZOvA]]]h6Šm*^NV4Y,VdÆ>;k9 %mfzbg.rb1~VP-*U,jyo_&KIǝscy%"1`rrIKA_hiQxD5"2ZͥeI|v5kZiw^LI'Qw`h ²~<5By'W[[ry9{s$1G8n4QFGG˞={\뤴:;\z@'OBD`Z%(Tu/~:>ޛFuU\kO[zUd5lɽp[2]K½2x1! ߐp HHB y8qoC0r-lIVI%?UZs{QI2@N1j=:g7#Hhq;o -hA/ ##T7Rɭ_>tK8by#If #sN)" Ee7ygإwNѣ H$"s.Z$IlСՎW .AAVV5MRTJʹ03\eg &&wufzҗRp[-}2\1\;}Y[nm~t>v֎Ir;^JMu@rW l?bŊHO.txֶ望5 +s=6}=uoju ߘ̆ $;oR6l^~s^x+gW3sQ7 KD::0sax04$8NQ:SpVe OH@#$ϻf-[kQUkPYMUL^O"xO7"[|\Ug$AKk76 FV6u[/'nM~;f9kt{GFx"ǫ.ڠҰ@Z9.ݗy\|Ufs3c8I<jZW|#K7_z@v-FFF 3Ƙ"yփYbRK*Z.T1IKO+G(SJM41(ϻz?,K~X-_\W*onn.o{(!"=ƘnT(J8 IDATR TJ{Qgֲk8MFY&ՙIDu5aМsv3$|>p||j)nCZZeJ_٩X9;dhZ{$4` ih;Ζ ">"*djNkCY-hUa0$1g׷Y\.|>4R.'"Z~zR]JDOkm:-$9CDYyfId97EѤsnV)Uð~rQCoo. r5 n|I588h0Z\V^PJ1 *Yj:Nj03QuhhH@Y&ңVՊr\h4l ;2\0tQ%b<]^g-\-1JDZA'cLsY5*Z0sCk]hZ;ODY?ê_|>;rJ`SF8-_Q: ]Dv\Kd^)5a-Zhll,V/Ri/zbaX*Z󼀙̜P}?Y9̢r"t\HDR*$HkHsq.K0nbbm޼~a\s5x礧yorR:Ȫ`<Hkvv6<,?z'_,y^BDqR^-m$ ( 1p `x5]w%7tpXaƹ\ y)h̜OOd]2 o%Ifǡ1&^|]{͵jK?s:Pccc}Mo^X8h11e8\.ZsnddDo޼z!,%IVZk lVivӶp$6I7<NlZfJZk16%a&qi Ԗ ֱSCt{c1X,s1tuu4 .ٵ^xw|L>Ç].͛7Êhes"iM֬Y#a9tMmr.K6oL"YBiHR̪U+瞓0 /;Cq~d<99ɾ'\.ZkfaJN@-I⺺".cvO>$:%@[blK n;WB7|3=tӾ}<:M|kժUo>Y~t&13.t19)O`i}K)}þ}ht}9ֶ~m ؖO~Wy cWs_xW=>n-@m ؖWgxﻝ^|n}?K-0|7j ? vZ%һ]zKҵt-]Kc[~8Ggx%`[.܏a9${ .%aZrwZ-.P;}6y*}>я4He1=w}_Zbp9vծ GСCZkM""ra(wBD|E'K/ڵk}bbgMYZu(>Iz^S{Ddt_v믗,^-O /7ꙙlyP%BM۵pkI$Z&GF_g 9pGjݔ@Z-R~i\$.IWmÇ~衇88y- /7ÇjCS^3<3Wرcjhh{9NWyB+SZOOA+j ̜}?pc<daI0 #"jabd  3??h}T$IN)gsNg7L-b9vIDqGZ( d||<^zkhvvW)j4X,~4 Ej r*͌#KvƀZ{yիN sj9縯Z9iZ$w;7X(ZwQ1kF:&IRw͆a8LٜjO^9kmSRJ*HQktD$9Zq7su0 ι`\.72qk}$i tNg̾s$. afj"f6닟y:n)CD7??_<.Ki:~8YD"TAl6]Tr`'&&@rc=Ɨ]vB[:|E܀RjRje6'; FD윳Z&Y":ٍف/Yݫ*[V1{^kmR/kK_Am8#AڨED5g$0sn&">2l۳ i΋U,Q"HBlPI1@H{vޭlj=<ꍢjP8)x0V)%IZ7(B:*Z1skZgp_|V^h4JJ'xbݻ/)J}1֊*ݠe"aqgUJ1~#dwztآڴiΚfh{s=cbP,T?21]@.`S}hi":禍1ι=E]]]T*ESSSc=կ&ax"SJu۫v{i &"s"2KD3wڗ8h4oZ$x~vv6ڱcalIid377}KD>Go'߽:Ra0+̓ι1k혵3֎'I2j8?|ZpG gFGD IӸT5VJM2sN)sZ-[\\vcm#?{۷i@1kl"} ٌBVɾ]6ákH9VJ"RZW1Ibg}ߟ&YfD8;;oڴ{iӦM433(2AcL{2=! Z HJY 9i4ZkM"L}_W>Yy-"35Msy Ak @DnCc3]!fS@@tzs#GΝ Ȁ>7N&"88XwG}ZR }[`}9A{5WsOZkc-k$_~ A)ɆZ(E&= fJ)( :+'[b E׷VR/pTcs0iljh,I)@׭[ݻՖ-[ڣf֪O&9 _H@D4i"2oVP. r/"}a]&&& 0T9] XA<As.cfZRR:L:_ )[DŽy@kS0 keh6j 3gƟR*hZ~EQwwwA|'c+*nittTwww{D'E9Ny'Z ^niʕh4ZAWJ²e ^ jQ oFڵAپ}c|!x}=S oQSٛ0+")[4~y8zT ? .RXjm6=)Nu]x!ʫ֒1Fq869/Ir,fN ziŊj߾}*u!RJr,njj8v˗/w;BtEQf599u^o\HkqzzzZ:ffkAĽhNumѮ]UZAe˖Fa=JJ)2y֚:ąBfٳ3;n;)9EJ)j616kMcdh6D;,"8\ueYh6D9Ν@vSWWM}[KXMS*%fVQBQ^GTjNOO1|_ci/ S#KϚ3O!+=j6rjϞ=(гl2Y6 2ƨua}>R222rY/_n^>xΝm6ٵkںu+\0<,CK[WEՕ~ߕzsAZki2Ѿ{k6=z=^tΉsN.bٹs'Ȼ.w[# &9l$# ej)}bt5Rya:8[uUW LE8 \0Z˙_(jallLh8sss=f6"Pffuy^T*bR PصkORIbZ-&{$ItvK""\-3[u~2>>qŢNmF˖-3Z(g FNkm^Ƭ012s$Iy^DDСCP($aڋ/OtΑ֚Y`{+j΀w[~ \ jkK_Ʃ K/D,=ԣ޾'lLA 1F zŢXkY)e!Tv~t$aj$jNg((A:x2h3oYf(m*EZ)"tERc<.p(X);k\R.ZY{|pZf 0 èT$. XX8/I@9E$>pι94 &5  u b宮.J%F*:1ik119Y(v_/FBN#s1'RN^)Aq!IM}<3'8sp$BDž `UD}JyxYQKD"Ro4$IZѣG%fi>3ι1&ODD-0hd$Iľ.-i)\."pbb"}?jZqDŽuз-500Kh4|9 ڂsd)((X (b|EQS)G###ܜR ,78s)_b4r]"\~9oOݿ6CK7`~7 7(&Ksz_ߥbq($c!"XZ\6cZ;MoW\y8*+rIb.kpDdYC @Hea0 j{4$"bivyDql g ${1\.Qn1sDTo6J[k]V4AfbjZ*I3|23WR]REf.QLDDB-Tkι1̇a(J7:6d'z0;[ uAP"t u(caTvYTޓiI̋H97'"DnݺP+x(":Ay "µ_Z !IBuh]41>G+\r w #D VK'OKKc,qD$ic$ cbqERY3~Ek]4˗$IE.ỈsΊ,Q2R% 02"DE9~[3'2ԬsZkLs|Ay^l6(9."qlRs. "?;u[DDbcL}ߏ9\Q((IJ5q\sM j aժ\w-w}6p'e PD37s cZLB1,'0DP0Eιy3OQPgfWռRX2m~OVW1Ɣ2jA).5k'Lh:y3L;禴SQr $S{QyrAyZ~"1Qֺ@ֺ Pg@Ȏl @$" fn0s]D}ߟTu>!"OǛ˖-KP/jf輮?_sr#<bb<sTo+?D~rr$IJ%'˗ r7MiM@DX,RjӯZwWhev~krHYplL (J%:s\sM6_yGR8MY ;О={TOO?77W( =JA"Z^RJIoNUGzՇ~ؘ_T$TYk^4iS c8qΕRAwwsVe9{scǎm#ɟ|2<_瞇+wkuW;&.ආ>޽jfyP;xz>﮻[KՍ0A%kCT6$ɋ`V)ZkM9Lgvq\yBxAA>cGwnVCh++Dc6"2`NDjgOr1DvQucVh^p;.{DTZx,H_ZQR`cDaDGkc i{٣>9Sf27XBDZk#.c1ƘeZ'|cX>E )`Z3ki.Y zꞵC۷K.yVYv333( M8rXkMߧZZ7Ƭd3;79f&'g@G˖, =hrorYY13eL>ժ;{2ɵvd)ɘy5+>RJ27s+ _Gٽ@Q |ipʆ$IB>`=﹵3XI@3eOD+gT0ÂK.Iw6qJ yDi=f&T.o_4@h+?Lk2Œ Vx>31_ =|zvۭ^2SYS3s-IIT{k.:ՙ *"BJ)ƹeZ@-4.l2'[k\D&䙨c;uY.MY2x$c#g4Z?B $cj(ug/Z$@__Z\҅|Egy&?=zTu2^e)jgx+Dd@)U}Qz(z}8ע| Pq8t$#ZkDBM忼l~p+?t"h~~YrEQo˵gi7z?ߕ 0Iҙ~šթ7ELr~nr9dEQy8Y kF[ncN3DbfnZkgGsjuƘ9WQZO_&fl~>< kYg?+8x,?En*cs/"\Z:3`);'dD MÞ@VaX~*c}AFGY} }sAV#P",_263NOu-_>رCRrbl=Xi4GJDp! O>xRO$YMmnlЇ~ 4er9`h}ւK.Y鏆V_gd6eN@aCj @^0?o fكrg&9'"ZkN53isJ"b&J)+"M!^!f,B= ̌}?n:: w ڵi͘6#twkqW1=QuɟI?U*O6)<:l SVSpن_m6+FC'I"ZbP6wzcgZXOK) {zP[6w^Zخm[HYpN=R~}w'DTֲ$I 4wB,H[w;N+-R*IyDd-R7\8 {0 ]xBw7#mHB gS"'UΚO}Skf>K`tYk1ͬYu5H1h~>w+l[| "&*c8ttcUQVɰvd;pOѲeY望3N=_* =A v/ʈ3.sEڴ? YkLG aHO /( c{ny"]+8 @eJ&hYUPS$OЊ‹i JDIacS*ؒḬ\s_>2˂`VCb8EQU8on~R*!A"gj|?oxK/\Q+Hk=jc̊[25͈vRgV./R^ju07>3Ghbh"oD䒚7p5u3s/A%; $DdO9KnUӣz 1J|;~wLZQVԋEA$spGwnd .sι0 `&əز"X03;)q':$LO ͥMo"LϤXFaf)f%efD#5ԐFkh(h NhO ܶ7rAI\/r6BqpyŬH]i'ƌի0LMi֋ص(~o}[X}vGFT=(j.ddLO???BDLKY`XkHz?K!xeDgSxk=q֏LcRYǸ]ܹr9`xYB89B?Nڝj{ǹ\0tk׮e<==ZkιfRJM幁djjt@*I(V[` ݖѴ[r)O4DŽGzNUǓfƴiY1f+8== -<&(4?e%XrUWPl4J'"~&Q$"sR!-oJL&$%kTO7QxP j /L=BAp?Jkc1ճ3&LȔsn9>Y Uu ϱI׾0Cڭ]x x`~ŏ"5`ϞA-ѵB4s={=!ik+$R˯z{JK,$>P}< NY# j4yϞ*0w%;Qo߾|pLeSٷߺ~ ôS+5k}qGTҰ["goΗJܯc||{'L;۽u[ n -xqExQ\9Վ w;;gy`߾_\zRP.X\Ƕ+W#o(&dk-" \v7N\84vH#KpɥhGEidGߟy&=Sr&S|>?!zSrֈ_=z~'[?3@.עVk.6)"2Qw*IV?p~dnЮӹO}{ݝS8rn7BaU""a&g,f:ۤvlY|!-$錩1 Z-CV 2 7DŽ(Ja}>z5M[cŴ85tqvx܄q6tQfؚtرֻ7~=?Κ2333;(|[)uu[k̜dY9K3hVxGktޱcޟ`bdu~7]"E L\{ѣ)̌kongRiKl9tEv=YXppPַj73 I2OM}cY@RYkַذA05u-Dh_p 'eԎa}ߔ|> /:˥m+U,"0LYi|HЈs%d@tbqUU>TU]Sus,oPQFGET1:(`L82言AW 96+׽u9;έ[UmEWk *HK_MGS(v;"HՃ`1~oL=`d2ݼya-?p0~Zhm:kƐbا4#LeFXu6MZ&+wq:58H_W((lp;t>PQ$p u9^㑍^. ޶!gL)gg\Ţoֆv (]ZNlc>Opҗ>A庺NDA9DJI!rJB.+,Y$fjTb2%Xkv(::K_j6GJvo*喸$Y\]ao/MDzV}Zm)@04%wOqLB,]*Vy")|J1RJa/.3pjHw떊=v\Mk]PS/ꦇa1f[$W~x*L&cժ&" 7jUd _^.FzX7lTW#&vk-9륻ϚbD3 K4Cѩa=+Wr(Tt 7T?z^*/DǞ:RIN975i{+VphVNRh׼F=' p'{ O>I('Ld;:$}`Ua]Qdݶmsgvp·sahGϜ9VX!8YZZ}; *Պt;vP=йnro{ p6I* SJEwyofWoU7p @k…m )E#BI%#~?[.K˗;qRwLvSFFZl+TCJIRJPwݝ1Ow>d!(=3IDT֖hZcz7!ֺ844T;P3(ŬȨ)HdP xk"/D[HWqFu끗hm8W"R{T"1{ s%rFMBzv@UkMQh5tFQ4ZJeܾ}(T˅3sDўj-5Wk|ꐔ\rq6ȉ*w2xM)MGw-1Fc儋/a(̡l 08^"*R"&",X~R u8~)}} CgҼcLÜE~% $c*Z%pE]@z%A+1pG1%G4,A рvPJ9h)f2r__e2dJp@RAvL !pޗ/EhQ uvpM ŐD0ʀkd yi!X囕RBZ6EZGAq\('aJ)0Z:?adW{TCC7< xS;OZ).\VDٳ ޽=?"+_Aokb /zWitJؿq&I"Rb9'RHM%1" J nLC@gggPȖ-[EZ9"h˖-K\ &`1[l[[(])ZKx)`xhwm4-v6,Y4d/W9K`s}JB59BT*+| ~l[/׿ÀǩΞDY\_ kmZ[XՊ Z)J_bя~ @=Ph c;K@ 1]Γ9猵V;/;V)Rz^F0X𒗠C=QjqoexJF5 *B،sJ)uJ%yoH_?s!=FXfy?'ڵE6_HӺd̶XM5pj ͎Rf}.yX4|{)>({WA%`vf n&9$ULJD mG>r4=.\7ɨb|Xkۤ' RJg Θ1#l<%.|pԈ6y׾65/Or^vsn$BP$9/G! EW}/1=k7uz5p>>IPښsOR*i[y`Z[V6ZI$f+8 3Y_FdzcꜫrE4VBXce5bAeO5䙎HKt(R }B,(1xEQ"0}}}Z+rQJyARO&N.0jDpszfvUp׭:߫ ~QnUO|Xg1(u$5O V?8z7 T8`X~#'7淵y k-(_ǻ9gun-OBTU(T& DPKRRjSѥlOZ%d2G1#X"1Ͳ-+fcCBu&! |3c#j\WRPHc61 ԄU\5 3̱Z#8%J!|DŽG,<]Ux>!9b9wK~0Ɖ?u˿\$O;;׮]"[@D!D3AA 1VXqM01' 8ҏ2#}97r+$ADL;C)&haC:fGQOƼ 7ŋ guZk\ ~Az8OPO^qw uaͫ ۶x4Jt;/|x䇔EQ.t$ЇXTF`F16>W.8~U'?LMH0u0{6m2ZkER* M\)o5JCi5d8ZZZT$9 s̗Rvo|楷~1zqǽX//SNY3f4AY!RRZy|K$+{Rǎ#D)U#EQZWWT*n[nY*jNX*is^B'h˾3 9GZ@HHDDԡlWNjf/#Fmnީ.#DaR$D\5=#"ꌑp҇/펫W }Lڎ3go9 ]rKZr΢pC)() {Xlfkm, Vi$ʕNy ʫۀ׿4}g8!#,l{;ѢE aGc%!I|nrVJa+R̘̂I1 q\PRVp!pkd:fp)" 8&dZR.9T(l-\T,nY\'Q-v+.ԗd>\l-[kK5w}}×/ZyW&&S@ Aㅂϓ<;pvYS!68!UNjE~>cpQFȇdIcEW?"e n3?Om^te;wlR sNg2XJcHkM'|\.`*kc7:wcsnH)5$I0RP)r„ayTjrc|ʮ.o '`4Ճ~xՄR:هRcj+`hKQMjjh^x ->Ӌ(RUZZs%Qè}/7Z[;d$I Yk+e/8lܘqZBЊaߗعS@*J;,1| b,$ə3)UJ[$IF%DDxZƘO5b^ER!Ph ðCk]ֶ !6Eƥ\~Ms3WVUV"zTsa)52s o|/"aoGj{E+*\GaHj .Lsh<0' QC$6o韀Jr$RL&IRU᧣0 ]2i&`BEW7\Qmfo]9GaZb@-Y::k;vTj|xEoGp,(;b.W::$C-B #A R3>r%DT֖s%!\gZ1e(W|;}x衇dXL2̨ve!DUJiU: _SoJD%"*q$d1,W{/v E8 DRʼR97O) @ !2J6]7޼{߻|ͯ~ŚjO?2|sn+o*lj^I._lf:I*c 3Y< L!$=d 28 Z8`m[lݒ%;wWa UnKO*TJc19⋁;ljxzNޗߺӢ{Wð5R !or׮ZS6j _ @d3f$'U ހ|El`].RJfִ qp%zU+X%wqP^R@XAJQn={6U2uZX B9s戕+Wܹ֬󺦙+I2kQ*ZPkLFιvRfDZ{u]}?v8 (V&>ڟ! Ƃ`SɥGp T/l)P&KщXsjB(km~_sK~4M ! 4R̗.hI}V,@snnY[C9 .Ovx?oܼ#Va,Z\ph7`YLDec̰vT:k)e7JsxLZ ޯcÐr"Bk[|sNX+' ˍ!Uc׬X!pi>p(;'_sg 9ȅwc=(DrEߝ}]# aY {ZߓtZlx0 "NJi.ˁOHFD`ZPwz | z"թx!ۆ?xvmXt-ˍQM"yu-.|-A{#]rGaapysð-[:Ӈl |7w[_튢(!~"3@vsO3 RZLD1&R c\ ##V>N>ghHʣa-,ι̤3@ ycYko?'|@-[J,]mB͓3 F{¢Ec&ؙ]W]EضMv:q[V[T*H%Kl{a xAļm ࢋ$-ZthG;K, sbvD'e"""y P&L)o] =~>E5"eJزe:c?MjcfPCH,^ |V8՜,ۿ񀗛"g3-SLtMG-Ɩ-^ \~oWl֭R8 V*sj6 C;/X[37_84h R)d'(ƤJU0`9%cLl֬YnNk(2RZ[5T (Q@ @)O=i^QٱCWO=շ۷ogu .tlGs( B@3gbon} |zӲR 5GYm]o qliT#sgsӑɜ+3l[qj++ͭs7nwj5B*BG Qׇ&J0>?N.i{-NzpCC~<4Nˁw ZTHΩZkZ~9h!PEJiE9{JŧYC7EG1 فDt'Oru6%B6BON91i9YkRw3molID+ y0$s={l8k}l6+GAPE %ci0cjwEO tdTL He)DQch (A=)Crr|wCmmmvͺ#VJrs@V)~l-ŁghI"P.\SFFF?o~#W+\"dFF6xM6뿊&nHH)Ha5^ιa"j"̬[g W_`y !RْTHdFFv],3<ȌxiӦB[[YzH"wzzN TjeJcKl^7}=Fcg鋍8"F)l˘"x[ ;%K>=[>"iEDιKQ&qDWW:*ᇽ bxFamDD&2=-0 kLm b*9qMk֊:lQdI`M5Z .v[ۈsZ[=9"8+l?t饗B).m}=eE!ZnŧL,'xDf/qز%-'6,,~cHlFsE"ֶIZ5`w޻߻߼;IՀ; ?@_xZniMOWWa/>px>bq IwĦ cL>xֻ7t kHUW %vUTXO>g֭ۂ˗VpהJ)bfXt04x%J_5.u /" }{u{2Z`ʕ_WZo7hw:熢(5Ƙ t<⮻D=0 Uя1jA/ ?$wN;:Qb*&mDfA8ƂL+BVrY\xHqŻmI)pfϞm>W\N8w3@>= }*w]x_j5u%ϙ3W1(с$sG35 <M,vEN'mV8;YkQ%ڈLa` =svʕ+T*bhj\*qXksCܠ1M׿B!pÄ[nzno cLo~[ΩsDdTl6&I#IƘ|>_G?:x1ǔS=>Wz*iхZ#͚]{,@>9@с$~U p4\#»B3ϕK yOdW|Iq/ LmzvsnֺWk="e21 JUgc$~+L:zjPzzJ%?7LY X)&2A{JD]dy3HM1BXK\ _2G<&%sM. }^xа_ZgF~};R9) !L)16" !rι!Œ-[FФ'xC"3Kr圔WYի Okb͚5ZkkƘ  !Flv>唋F򖷗|04s"S[p9(z >2o0\=#^Zq9Z9׷`+/~qeIG鱵FG37.䓓qΙl8#! ɹ.;qZ&"V]uo{{NkK>43[nv,Y"#9l`ٲ+KѰsng[1OqVm0.$˥Aᤔr9aSI };! O 9G8|@Ѡ.:ȃf22rRqQ:d )}cd֤"b@)%y'k c>Ǹ}>TJ0ЁvU8)/C>t>?8<ηSTcqZzuV*7w7Oo$gP.q Rz' 7֭k7q[`q9sNz9WdU1(ɰ!2T@V,Z"CoC4ZQ۶@t.^j@I$b\rv\w &GyI'Ek=UG1Ug<@AXgIAY:>q=BB F%IR1]}@##κV|QJEk(CRcviUmBr Y-fժUe3YDZU@8ĉD&S#",\Hi:X}5B޹NjB;8toVz>]Z8ٱ CeCG~IA$r:²eGBh;sAY@$·jk( ;VVJYI_'(&J/}wS9r/zU1k"Ėڌᇿzy.bYm*Qq|7n.ΕjZt__[xOF#P((Mt笄uT D.* CE ! fz,cҀRcѪUo 7: [mkkB7Db DtGDv .ozӛ6=)+0fPqI{ QN9s\žp¡CgmmA0{9Z)kh$T*ŅB^ D9rl8tkc>UնJG27@p។ࠨBV 3Cj"\Z]g!c뛧O{݂x֬Y%"Zo׉ZvcRm5qr*|{uUR:6t qR*w BgA>2d(ˡ:;;m{{e)GH)ϰ_kݛ$."کZ(W[jZ[!R8t\hڶZ-0 pQ9w^*=ZkmMZr{lٲeUPd2 3CZ.)0.;6aiR%SIƘ~oŹY(t-m|>g( ʽ0WeLCb̈́C6\BDg q6ҒZZZflޜoٰ!(dxzs.a"Rz3m\.ךfaF*\F(`Zf'inυY)e97jkRrΥDQ4$6dcl?5-liii `Ns]ڸ )QTXkKι>kmvf VynկNSĵ^+Ν.Z(Zr܌l6;3 lf :ma9'+1V&p ! i*4R(20 ׆aJ1O) ؆&ӝ,a~iF:[ 8$x3R,GR|>o"Q>7HD qj}yGD&_Q%DT&3:y9N 5NDgD&\~sfs>["P{\zSqp*|oy辽U!(x~|~t`|߰7v5 ϔ Mx]<S Y|%lÛ7ɹC,"]:cID7њckDtkˡ|^>]DODìڋ{Fs0D6v"f9ڧ%X"I%C)½|?gjv>(5#[iwrїP (jIѕӌ_>m-{0VnXM"LDOIxѩIX"Z2u N&2"(_7L_~㹹yu<6oh9+A&{t'2ٮ^2c'A?cDB" ">7f3ͳ'[RI ǎ'mZ?BX^xhtm-_:]~@D e۷k,wr o?_<籚D>yULr|k]-,y<1.DDo3tHD $D";a,Z3\*e* K4c/$W8aXz9}gµc5];x=<_gq'鼦aѾM8"i xqk` zb>nvofPfGq?׽1|6)"0_s)~_d^ X }XһeIv]: l_;MVϙdϤ]Ӯcwr|VGZY9wE{}lIk~ZA"|O؟3f %sT4rۏ,gek?7;!L,`33Fl)t {n#@3cj6&{`q5Ks߶x]IDt{@ ۏue"y?5x.1p~suv"M{}|vm5b&,y|db',`5|Xcg?kc5];X"wM`Fk&O"z߄c/d Q03$"f 6 ڠZ}md ݿ:>ED/ 3bt2A Vdʽhb"`h?5|x.1Xs`l͎B% &C &S簩ᇬwcY 1n^ck^DDXco:#pI%Ļ>L^Կv qNNOh&=[]<~<>ED+87|h_ 4Ks`;L":յ7Wc“.~6"~9/pmvߟ#ڎdLVz6؏rrBSRkҟeӕhRԤ&5IϘgwї}oIENDB`freedink-108.4+dfsg/psp/freedink.png0000644000175000017500000000115112330466347015125 0ustar memePNG  IHDR szz pHYs  tIME  3pQzIDATXíVm0x?UM53 Tx(ofnA(s @DO|aUQ@hVfk;qcNN2~d% y.rT`&#wQ6EDxR6%lrgiYE.yuwu݋J)/44ݮ&&*၏':,GT\_jjfqyRW21*Xx%>E߈z̛r%ܭgEɿYg0R)w.RJҍ4;].og :<On "H8=bo"0iɺDQ IENDB`freedink-108.4+dfsg/psp/splash.png0000644000175000017500000015412712330466347014644 0ustar memePNG  IHDR-W5sRGBPLTEsޔkR1J9}k-@@Ekέks{Z罜1c޽ޭޭZss֥֔Bθεε_s1kkƥƥRƔƌR1!ΥcJ{RRεJsw>g%{k9穌ƥJZJB>ssRR1s{kcZ)1s猥{kc{9sRsBZ9R!1JsZ΄RބB}{1{c{{k{s1{k){R{R){J{ssssZsssZsksscscBsZJsR9sJsB!s))sooookJk{kkckkJkkBk11gccc1ccJc{Rck)cZRcB)c9c{Z{1ZksZkZc{Zc1ZZZZBZRBZR!ZJ9Z1ZZRR{RsRs{RsBRksRZRJR-R!Ng1JsJc9JZ{JZ1JR9JJ!JB)J1{J)ZJcIYjGdjF_gFV%BkBkBgB>F%9c9RR9B99%919)k9!9R97771Z1JJ1J)1J1B19B1)1-Z)Z)Js)9Z)9B)19)1%Fs%5!!9R!)!!c!!!9!!J)1Zs9c1ZB,M) pHYs  ~tIME/D IDATxڴMk#iE~Hp r59YH!} EP\pF=0 hpq%ͅnm'ȕΪ.CeəY]CR("z_oRsh|>OdzyQTr^̋E|VTj{>|9mb3m63[:珉3]YQb\Sf*3:ޤY>/*1#?Jj<+!6z13-ĩv޲Dl;8$NEʗvb-Q=CSEQOf^wǑ}1#ZlL5wz\jLtddj2D/c#KҬjX:ط?@hh 2p`#-|}grGT_ "SCXSDkm 57h-m2aX1i V6^CZ5NV/TirnD0xm뷢^hL9٤0[AfdRR[!i͌Sڏ2UG94 5xbѶkU[<}vdXt56II{7l;+FҼk_:Ňېk"Mw'Z‹ĴvČDZ"'EqUL81LMoZ3Z;d8s]y6 ދY% S!bXqGyldIVBUL/O~_c:右sc e w|/(U@MC|^(NŻ*Zޱ1mP,V4`T;V0ZWP ̛6bje5o+vȶ0$8 '{O,q" `@J}"+g|nżHW:OvK,SȢId GmNcj>"yΜ񯷟9%6Ls8b&,YҦ. x+4&q.<ylMFw{/~tnCI|`96P"?5֧ddje?$b=cFF-r=F\!9{g# %3  Ps jjݯ\V9/l%=3T096J&ha8CIrGUy`UV~8BO?xp+vܰ)E:qJ@ߙqEN9sFҕl C;6$ϐq!Zgu;˒ 8#B\#V0IL{̖)aԼ rU3/ hwm5/,V_>;:j$AKDA 5-L&={GR,<+,c&;zrqQ>rq I\6+ڧ;|.VYI| ♱-uL#|IтH+ب֙j=i01Ok}:CH? S4 .yb4!B' rHAr0=d7|Ȋ<_Rn!`8Tb.~O6mS$ %[zTH,2)ZŚvZ`*^,M%̞S|Q׋\pHAôY/k1q-*3zl3= tѿїQx,/T"`j\b/sAhnO W&[ڣs҅њ \ #)u¹ \u?ʹֿa|tF1;$NȠ]z|rĸ'+d<׏wfB0]tϧPL;2leŸЪ,}Ǥ]1n:0556WF6^+k !| `xf]~OmAX-dz yƶ*bc;#)  Z@cQe^qsݩVeaè@J]ԒVT? Kڧf_%u^$;{Z3ؘ¶V,QӤB8S.Ҵ%`^BD EY9(ZzҼ鲒ʔ%{KӉlM5= }9OԣrtdCpv&VCa }mjpJmE_`sEo̤#=Dc* Iuk >^Ð?{L׊Jx@s^!76c͡:́WD%+H@z:t~i#Vb~P}܀-o-Z AQk 3V~|RmV~ #0h3Ȍ B>& u!xPͪ鬞=eJR۠ W9E;0$[\+V4:Ƕ0]xRZ4g4E>[~f3M6 R %޶7 FQG;|Dp*2p:>-&*ȡ.y=rBja.s13c-CD@D.#96pc'R;OAWsՋeIMk%A9FU2֊kAd |cx a.̀JP( foTF4Heh+@r/騕BBLKBau*S% 5jn0 )LiCgaȳ⇪zҫ9jꇺ.*Y ƵS7Sc?$ejhJX9iADm#[5=CvYl$Gsҳƹ֭g~>D9_"Ӌ;'^arZCi 3}vf㩱 (i `9$,j=?="PK(owaV6xCt5H|իsD̡MB!lؚ ̹ԅKkyUCDN:c~O,5mNf!O"f)\WF] Z.=z8p{?fmC-ed\זJT~SײH<=o3[׷UuusO# j݄綧鎉7/)xJsQo^ mIw(Z;mqٛ ˳>sF!l#[y_ XdC2z|5nhh+j6p'e[lB9& m#u;/1s.c!}֢ea>azWƋN憣rn+c^q 9t14U̦ͥ yd>fޗXdj{Ҧ"ц?j"qTL';hLȨ&g5/Y/;QS\N f^9юVz q'̵n6@''ɏW8RL.S8fl+ 3d>'Lj̫$.jůZZn>@0rxZyŠ&Yq}Rдd\k9x2N98ۣY\Fr]ts>]ވ5brj6jgU'f+SG*3%= k O+VMXq#l5,JW]i);\gEة Z 7qf5W#s&I_ͼ'fz5V *o%B%L ĕ 1ϩqpSXТT8&w6F7L']2,5T4 m2ǫMS}Yd6Xᒹ lȲ1ܗ mT#Æ>AG:G#ITIFJSC(m-tӲx-$#:3lT!PUT/esY \pr\(>Fa?eᅱEKtuʗG!e\=7qtXEq%ǹETJyU4U*IϹe|n۫?;s36c694!&WJ VX_8R%B6DHRV)N94/}lB0sڔcn?z|>U2HYO=;ˌG525ύɦ|z69lz/{L P VӉJ٥ ré#z\2/gT󥈧n>&V1ՕiE]56qcq|2v)ZσUtZT7i Lgs#1l^9Է*o(<`;UNm2mI,[㊭2Xr7=e9R&\Jkt8L2_G]b мz,%.ʻΏ_YEX/Ie[@EsjgGًS␸.PC(_ʝmdݛ(/G\ ;*e2# f Jg e?9 ydI epgLeb+bvlw*haKȲ#|rӡ9"|t޹gqkٙ:e;.~ZS]IsWFVZFHy+1lԦFJ`z$k߃7/}Bf%-w%Q#J˥P45I\_iȜn?î;n +:;Y2ɯ%`Pg]fYshfrZ $猹e;,q1݄ hT ff)>j)bjj,-|Wjqmn,[c#d[2WuƝy6<FA7A3>qݲ[ S1̳a#T.w~wf|H`Wn~2$[f2wYII:2m ~}6 ֔) K9@(gu"ZΘl9[tm`>wma.VF׸W %^VqJΙJ̴B: XlkB^iFh8w@2wэjuHUVAdCs7bӨz)EM-xyFABĜo8ԕ+F;–My*#m ] 4够b[_9h$I:IB<'|;lY^0 $ z ѴjEW2!Wk[ӱRj4s9Fjl2@C7!za4 ;27hsI.t/%D̭ y4yJF[:` -{?T683-aTbJәqg $96sT^w Ќi;J;z+%Kh,%9Hڿ>io&ej#6-@a&Cӿ:hڑgZR,3BKpzy2FCn9YWkhJZ{Ƶ *YR?ʖrB`%QiLgB` řTZݕJQ =pzMeZX` G3~YDŽ;ăò;!Q/qe@&,fl˥ImC&?p(fcCoN/хQ&[f#Î`7tik ;H}LͭAq |Lm%R#.t܅Glڔa Rd'̬Bk8wr*ʲT+Ku& fl} ɝIp\l{zR8V Vf䍥OVKͯ9iK| 5 :Y (ANF[p7dѝkEQ,S ĖR/ 3̺.AgvJ.WZ;Zg]@f-žZ=#b-Y&.9b5SΔ W(juy.&~bpZ厝 `Z0u7!Z%Z+s܂5Es7.B=-D S:RЌsdLDscuLB& _܃ 50JUhtcX2e,2}@gIx<%|c15N6n( K8IdM~ 뵺U@i reBki,jQ3LHs'<Ìfj'v Bka3媱 )÷"QT7!v5TAJQ6vc7bW,xV"`7<GxhzBX26 Fl@l.I{cQ0C_jɲ)Pg3XYspִV7e8%2Z#mYW(QRHHC`DHE Ph+49[>d(Rd3@wY~ '9L:#`  f661^|PYv -DØ)fkCŃ.m z2XdDz=gzKyY7zd<ܢέi8=:1#IJ7Nh04r!"]D|BTf&Z q@~nQ6yo kw8d:n)c& ZiA w`{Lr)o~]qҺ]&5Q{z{k|WaWc j/'=N|R='|u-:kņ3nc p*#vKlTr!DD[-!ɹƘ XH䔋.AkD]Wò%A[C#%uLU c6+$^WX.:h*3<4mYm@fj #Ǧ< D[\UMe$kX{ٿ3b p1rbM NC4 (il1"ґ Cb^vPla{2#f"W3vXXkq?6b QR\“G)ʤ7C[u˧);'5ՉI~pπ&@b.':6}VYZh5ȌR(Ͼmo%U_)dYEo\*қ4U%ciH,l;ɆHK3w̻>vؽap3}իT}Ka՚;Sbߏvc@d"&^V[1wKVrbaE^J)e &Y P.f53E5|rn ] U_u 3 A>ܷ1_Ҹ%q$M'I_368RR?u]dzI'o*CqfiEklXkn唕v 8x@wjamٿ\f2|770!XJiI&j#]e6GXjcvRx' ;K'3]~RU~hxa)s*q*XRLÝƫ\񲦿R$ŪgjVA4Y5YH3':Im2UϊSHfZBm]S YI/(k=zUBT>1 Xb{d^n$1y%>o&fl`skM1xi'Kɚ!9ּH8fk؊T&ɌFMgkl|=b{}_x~[vz6-|S-i>z?Gwto@Sd,K][GɂU+xrC*$N ۄcc+c1̸f/>5K2? H)oCK0ih6Ik{ֳ;Pi9ھŽF}v,q>۴Q65r$D~P6J-YBlAy Kr;̤NF]K2MѶQXleZ7iCt%0kԉbH-; '#hX7u-1QѼ?p%Jx"Ϊ-ĸRV EgK%(L8ɮu1^Ii2ξ %Yr@6e4ڨ'A'F7Z<\Q_o(i/v*u뮠i#LbC ^'U,FEs<&eSQnFS]&k|҄1er=&2fW4:2[9Ά24p&p}dЮ;QvSvX/ <<5ڌcN@SW?ZʌFغoJfA *W' MurF:a(kd+}uSrK$m ? =M #͗zՔ1^CX7uE\!HZ+xk@>qo53n t/tdM{TjCDZwjP"SK6|e /X{t}&r5hgӴ۱Y~ Y'uq6@XY+ gL2cm%,d94S)P{E0OL45B)Dkg~4U* U9U޲&kʃδ3\ c`iD֝]u﫱XwMk9@ǔ> [Wkvcv4Z~xYF2#fxFrXl&-r_(Op2g6g1l9NKU~*O 0fwMcڊ VVlEWDk5?̄ÈYY7yU3VW Z=an*/iIhtM1^P>7().t,Փ,9c5ձ$YY5oKq0碸> dAC13.,J؊jj G[X7a GOb uzv`Zy4JaSbUy~ZіaV,Ӛ@0`b"2-]iΚ4+MVdK X [et,aI|PT%ie<>uMC^$YՅMelEx!s+ ki S%nf5k vk`OW筪%O/CYKVYaRz5YINn%1R=nI^Y6%0+ XͶilJ̦r0u?WFhޥaV^?v,L(d'?`vbMNlbGEIͱz1S$-5JҒnڢ"[w񠶖_y!{֜_s1 >I1.J%Pr[7>'!׾y-r9x*A%5q$ tKcU&s] '[kJ=--Pim} 0o}T#2n\xtlh@ U쾩!Nc.KݓET1YpEjKs蔹 (8̎e\PQ.5{6ޏX.{ H*MjX}eo~ vY#2ߎK^dA-pnr,.t:D ,h sqs)ֺv*?ڽڂĢUs,U $[]L[꺌ttCm-o-mԽ ʪ@F R%LD^ɾ D.'*@5u ^`9|ҟWdLjk^@y;FC$ (Tnq,,ԙ>K^mE%2#?"x5{5rּ,3*MV`]N\xV ;fA E#ILw&$`K= .kuZTy%ںhġ@'o.2! D:_̹5pF%R"ժKpp$Zsl2`4:GFKV-=ilYV 'HX.bsO"0[1kCFnU"k!w#mƊ|zM)csPf ?B\j3GYQruռJ|O圾+44mzB6fۗ}X?&WƎ926E#sAg7CǻF8mDu muqX|}#b{H2WXcxVӷFu^_)>hm-)M96mC/P~/֟#~{>USn͕UBOn.Z*f^eLxFWk-Xf8w{EfC+C6xK@f́T'HbXV]_Zݰ%e?RT+;X㥧RR +"].m›=>#;<@By,;705%OumI$nWFqXK#G7]ʍ⸻ wy,dt,'T:kX˖Νzk;ZgцzGđk!bX娹50 2s,M)u\ֲ{9FqW$|D;8Ԅg@GQ<ČsꆃxYYezЖhmD^ tFBHx0j8WOy]2 Dy4th3́3 Hhv\(t^\?i-!č7wݜ(#jsKb΄12uYO+amLf)HҬ)EG)an̬e~r5hI"@_!EPfZmf5GY{%`2R$`]Zx`Lu`5-[lF~R[F6%'1l @)B D X4GF*VM{:0w ZH`;e6>]k&&+O4Tub=O.虅 xV׼Wf_wu6}lǛɪ;HO@4 uƵWAgI2ct 6f`vֻጇk?b?L(ZP p94(v] m_&YDqWxZ6*kMo 0z7]V? Q$cYk*+ #@mqѼC$4aw8F:0AXolF>h65Eu-F'9pg5rjn͈}u{-ǭ%3[M &Ien."W_BF5&!1;[E=AhU^$Uƀ6jj64EzA LڥL(vw`A4$qM, 8G>O[N: uKX+YՊUZm0H}b`Uu68mo`3܂ а4 ,Y ͮyvWߠtPkQ]Q=umN7ޢ17v]K]ǂ9e%G+&TM\oip6˨+.Xth櫵PJB~5¤ {@Q=naz[ D#ډ>g/2o /I#W˱M5BɁj`0ʶ@uϝ+6~ua^oC+)Xt)#eȆ~~.\<¡SLS7;'rUƺ^N5[c. }f=˫~L bIXyYg{9n❄^dv5롌f-ƿ$un3 n&+[+og-@;gMs-ll"#~a*,O.?yvN@0̘U{㴤 xbk$P9huU2c6OwY[ hVskO%YZ+B/9 Yv8j/P(+/Iǡh/:Hs!8.؝Z?QVTOd~5gێp[df 0qa^,V6hIY(RDǏMC I6'\n"*1*.0 m X=g1 I[0˙Ilc ]$;ODдdkFԴZ\p~EH :ĭI-=cz#_":~VC c&E5j}k!^9 W f9lTPoR7E2ɖ9^rkq=U5ob>۶l;)uq^68j/H!۬``mˉ=uuu٨jk_]UnE^pGOMC/V`%]]u.@r+fMj59I+HMnpL`8saa#_FP+3jvD]zd\@ ö|^Y8=>sy^~o?}y J9?׹å/ȉ %Iő3 I˭ݶFp 1D.[E@7rOF'M)جsKֆFMV1aVv7K7M]=a?ĉQ/vڸvv4na}9r0$í/G[_~9Ysvۂ.ަ䮁ciOr9NXf`.Q|tm2hMSJƕD)D$yrT?] omD f776[[>z5~1d࣭x =Ez L`jQ26dըæ`p?~Sr_=Ȗ6ZJ %u/[yK3FS%pv&nýã/].(m=ل#ށC vz%[PR9ך!=a>uaNa>CwB%Ʋ\&dEUn$wKOmsB<+P ^mnG1}(&{;fӳmlq8 2x\KS%@&}n\>0Ȏjuh?L m`Zrqfq> sf/MlF5Bޔ},<#4]\^_>'Ɨ̌iCi2)f0_(IʼnxA˦D. m ^Vz%|/E.ԭG&ƴxX YDtk/Di(~f?ˢ=%=ZQuB)Y;%v=;fxkI#u%+-gmxkUx1<|֢n%C۷~u1mFyb\ |PZI} .TP C3$ýC+(t{zzy5 &ю 7{xX1Ɛ64e➉@*ݚ|]2d;unI+G^%rKi:`8@MnFIG4Q- GP, VCCǗO:=9髃Wtw|yyȚ>&B$tC{wM޴K)I[~YnBkK磯> ِ^!2?AmEkjb[ngQ~Y5nXy4iJmvVz_\-ԮAXu]\oa‚XalP2 ʩClS]@<C; %Ysal]옮KWBo.#Kxuĉd6;~kx F쓁SL7Q7 Xٰ67 ݄Go-vu[J;G\dO%~pm+!{$l.ɲ3+ݍF:|;Jb% {yvsrkZx~rrz|JOv̘9 c@?Xj\܄gٰNx?B3 u.#OF5 ɸD. i jG\ @v~C⻿ q&v:=ޞ $WE 68ܞP2 U{P!^=eyrs ߞgtyFO Z)\c4ʎA]K0L#bwv6'O%.C:7VX}neT:)m#D~/?흠#YQpO ^$(@&wv8b1G[qC Kq1YW)B6l -f^b{Bj &|-D-5\VGE!Ը5=I1>eD*QGe8_p#yB0ΐ*MH9ysE7.XRwYctP6٢D}{CHş+B%Ɔd*$5iGAï;,|p 奻{N E` W(Ecczdp"_kt Q>Zph3f-|ai7p3k[dOQ98ZV-U}ygz(AH 4!0ÿatz΂_ l>$ItYZOc zxNVb|Ny;<icO$\dø+!U\+M? "]cO+k- 7״ H%2)Ң7:'T:9xt$Q+n#G)I;"-uȰ[GhlӍ"sDkC:j<'<ߜ^g~`di`\}1coK~* X1Ȑdz\`|Vt <ʌ=vz1dJ`$?Fvc꽇<`G#KNKtcN ʈQW(QjA${Kpw}DVMqCo%v-gl[(.LlRyru⇋.NON~2s>e'=2T)9dOp>^&i&tD@ǯ~7|َ (STMc6'ȤOxKw-dp8⍑?yK~Cb]H,\R8sKtxhBᴩEa(.6Gi԰k;JFJ#CGٌrI O|ų+B{}?N|:8t`ZVBC9Gxf{|-I"f,zbI*{14bּzs}M=I@wB=XQ0r[ MZL&c z(|ia$l\, -,q>2C0mwFFVԡ /?EcUG+Fd7ǛDd_Zep(\Dė _/ ?YˋH% 0)ᤃ}# GNVފVeG唍LreAm7|yZ〥BYG95Hr{cOK!<4.ay%K6i݊n BH./ :#;䁿|DjiЕ>j5&(D`'2}L4-]vȂs{hG_=9 aǮYMuá4 v<Ɣ/I;<74]"n;qplw?"D!noyy)v~F:rg v/w>';O{ E Aa-96ū?woXR84k0`D.$B>$;zp;PL־.^Ol BxZ~ͯ?1ņEÈP~ƅgt8O/7oO{M˲z^r!m<=qb_G{ͭϻw}V' [rzyE70Зd]nm1Kc0mڃ^[/5Ŭ@ 7 'doZ%]"fs%+6XB&JLt흅|NGx/__|U}Z˿{?NU+- # J{xaK 2"q^~- //_;::z_REi^M@\' +_3z:ϊ"_ȟã]yv͇?%<Onh9Rܜ.r4T.YCMgA6I>?>/M[߬oSF?+oIVp +矞=}K w?{=1{}q]{>?iÝ"/PAn L%|yJ& _4&ϟΫӧ?EO~((ʲ* wi֋a㊙32VlPcz,ɘritX3lH _nRuy^q}KoHW(3|ݝKQLql<ʼH^^N[eιoqݭÍ^^ /?ۛ/[߾_^wtO?~wEū/Hw?7oOʧߋ/c_>M}Q_鄮7EQ zO_<=z>ə[Qed2Nd\is\X={-c߬%t=x߆l|po_%q{ \-dȏC/?{r*l^#$0B }2!1٤tss 4r>T`0߱$qwO杄?"*GL/?]8 _\hjӛYe6$Pߥ1ŗdS+^u0` Uu…Q" bіJ$|UΘR"FՅ-gF`$k­L٪Hʑw1-˿ts_ 1&/BQ2M$fwɧk):js; CO&C>h{a5 4}n[3z|غϚվg|pJ-hQ.&m|me&)ID b%I:?o?3%KV\+V%,s1l'$ iqm8:=?IoMZn;bMh=ޣN^f۴LMwVMK,dɮr^\_5=MI^fKwMlJ- O1^.=-'hUnʠd58UmVJyN[dyHn i5@OI#ٶBtXŦiiĔJUmE%N^tF$%|2TW&Na?xۓY U@Ă8u|oONj }H̲"<?eLn8/)A t4 jr)),^,(5lCñ`! pEj5%-Ѯrh+mAz)YLo5gYߐE^BK{.KF"U+ҕ"*LT'k[j哔#PKaP3b_zPX8УEIt0?xb=lwh9=$xyIHPB{F7ߓj|I gƉGu/g'Ț_ΠlAVch&A''gӋ:BU/%㛑 5SWjhP۫VΝBjqUDW!,5\am0X)vgyAXiJ]m2[ehzAz]Nt# ՆdKTy:ybc*ve(='?̶I6PY 4Mώ~ͦj|<[- =:j=2>H5?$L[>A^?tgİse |O :MdId!JzœOfl_M=/ѵV$BIzV\l)tM/U\C_EV{tT@&E-Yf-5s<تeq^/WX!Jv:TdkmY$ [IЯc(p TW;#% 19}͗,P'wɷ$NLRTЫs  O&pm:#~q hvP3 m|UYZ)+bYհ" *D#;*a스cQ,9$ޝ>=Hx5Bk:l%hEeW#^0K#dpqo%0j]_.Q~ٲd0 KU/ef_} @,^|_ iw<* D"=Ò|ȥs`UA(rޅL1BaÞ' bJ#yn8+1Z|H|=9 G_&͗RytLqGN)HbfK _*KRYೳ+~NtxudƤo -3uRnm5#*9h}?ϝ@kƅlK$5)ry|)zLI\-y萜+֘\! ?9JdKDKޘ)K,kďoXU"V Gm1WhYg1 J6!Ǐg,Q5> u|jj2{9YEA8l$Ҥ³ĆhlmE+@G 2e\9;T,-lkuA J^K G8(O|RM 5sZZ63=ʛ5;{ݝ,讎R2'Jܮ-ۇ BɲBagiE hFBO3./^&KKKu%='- yaA9B}NZ%&sɒ R.:bc:?̷]~5}FjE:A<ڀe[C,cQ\[BG9? XD/SDcn:$÷: $/ avf)17tԑM7}Jwy]Ȳ/$!{ Q~;!WMA+`.m‚]H7ȉ Y+>皂(ߟ+9^;t4%`(^i(N 5 K}9Ϲ21B^! .w5A\+]+1Mzi ql#P5^$$cڱ'ld:\?zGV} T ;M^9gZ]LtbCȃQOb[2/?Kg2߾Q5YnϩfEXQ"/ڐ 60x>/$<19%%D$፳WR(*8v- R֪wEq88\T;Yaa%$y"o+bKpVl4i(_gYbm{la-[f7XKˀJf,E%x3ۑ  ZAtc΢_irW5ֺqr5lLdd"v6\8+\OyITdɈ"+,g\2u#^qXCd9,L.%<3zIS\#C.s=͂JڷJP% + Ob Vx]r&[ֺ` ˉ^Ȉ! n4 M0 a`m*/&_y ! U%a# 8q z d. ,ئ=Ĵ͍f? )p%8%o3. ]U,D&"߂-ke avH4LI K\GMT,,ۀW\L(2[C=+3HH,|cm+KjHDQ3I5wT%B|/o_|ָuB;Nj\&d-u ~&QlpQCgO/eZYU%('VI 8 ̛8Uv;Vhs ?r7k̺[;ضj+>WzY@1R-و0CrE\D0 9i1Lg VWd\Ugc5l`:Zb"rF F *BYŜm&,hhV@sqH@Bioi/yMH`ۖ%c/ƐM|ENBq5vd׾ǩddf |Bdn!?_s[,RGw F9_*M$xVhEG %s\Zb`O42 MCUJait[OAȻ&FrJ (J5i&GZWR,>:x"]DD!(DK(B*͸:nYhQkQ$ 2.90|Rdc F {$,sqMs|_a8 ػn븓x:dQ5W:(Ir*_↎c.T݊oVJق ~:,s+vЌ?ߚu)V~<$H~&oV'Hx̡x>~5qVǁ3N$A"8o~c1KtDٷ ](d!YG8ZKʓJ2+Dеpд $P5@X2z;tBG%k˷%=_OᾒPh9yāb k3I⹕7j=U.)D-z]q̸`ٮqJnꢻ+k%;bROHCH< WvysT){@.t<0s;?>:"P0m^m8Aoz}K3-3U(99(YG^N"*`xIYSrO\+? j͎au{nrKn{Ygrblty sIR}EU8 ÎRg#JdO\ Y qh֚T GǮ3Q[N i#w<'Qg8fIRjJ*kYQKxjbfLor"Q<춬' NyyI$/ 񐁳Bgba#/$S Y]EaE.3ăi:Q=4 %PC&Mb ;gMDn -@ʔbO޶-o3"wj- VZ{`62'dQhn-%;c%YLNyHU2s=ϭ.ɷΎ//Ix$\F|(]ToB-% [$,=u?HIq,u"L/}4LxtL0 t_wdIt;iv,G`˨' .*XN$K7v7>j`$7 ĭ J uҭ,Eo)xac7tdOqcm!-m9"kt%% =vAdr__\rvԑUY].7u|ӘQ aT/VJEO>~\9 &M%M2]hbVM6kJ/I1I^{:q[J~?_u Sj23P.rf#|dRZ{ .ʶ6kXVQt6s!˞2BfQ0wIW1)hdлݯ$?{Y^^ϊm-Zq 9ǮJ MTٺ$aF: I2,n% m?$60iW62MxVVh&l\;YE!fjv*+l9AH\jRB p]n3kD{h[{ӭB:Duh,\jdzV|Efn|Ml.i!;v#E6=hέ}A2/d*>;)|J=%l[u:!fQN{߻C=<<ERQ|s1AG ]g8F@f>>4WxIUh3gI:g5h"[bŭB9>*~b-an(,lq%[ fۚ;#5Tr[l-|}Ȝ:ܶ*&d5M/9k"Gx/1dzrɄ/W"y ۝ETRNVHw4iXLSF-(…L3!A'h6ZPF품IHMm&"i:cXt߭Cˡ##mw{N/qu3n"2 a$ZHDiJrYZtqT1I0.6łt 炮4mA7,i%e'x> |`rC>^zpDCti4l1| L6D:'{r-(ۺ&:nU]/n*tcϳHC) m2ɯAL^p  n~{y@Wqa[d r_3ʜ:Y0uQ!CgdzYARX )N#4١d"O2+Kf(nn-*%`#W:]X*BzGax`V;2!۩2#ىvvJMl(g\B>Rh":Zܖ(:jR+\CB %Xi)\xUtu>wD-B#@?PEؒ<Ɩ=al^SNN)>.N''XFdd]o[h4uCf~.8hby"E>@!:Dl_Ymv,%&dա%>n,!thxVW%󺖙$Td OWYgխvt sU &Dt#MqmBwɞ 0XC.!m{]t'si6:?9=SE}WɕnheMS nL oX<0d}|~(#ճ\ lO!GQ0ٴ8Hi7*uKIAGaXN4af^/knj*㼂3_K͟XaohUS%]jjAiykNו(jX'SEl'RqXdݫj< G9AlBƠH>9~>=9?\;vDg/p5W⨒Dj^C9^ϧ3Lk@G49 $S7ձ%iwaEbf M%NJn]Y S`&tH`h9hQ9ӥƸ6f?WGޗrRhJ##8^laR^1!' !WIޣu`YZrǷu4C0D-tXOi؈0e7zq81i0 b9st 5,+&m;3dӜO^K 񶫕^qu 5P\}rZ9X"%7lZ&46r\u FG3w.IԶImmn Ճ9#peOG5T!bA9"HZB+⨹Dx@i-lk4$b˸K#oִHfpLsYGxbTuH`޵"Kb HGc-="4"O7b1"Pcڒ*z|>P.- 8].sEuoM:')yRQ^0Yr CC"31ٮ3DSSW&A`[poODGJ;\k=γ`D 6+ZsF 7|˷Ga.`9wWJu% .e= %3z .ݸyY,sIfLB-q ks,2o>`\`%P8߮ؓNN/vS5'Mtk+bX r\׋=t cLk8?];=jZm u6 8nѹ(t8u9 5pAbm6r\*TS:c['J% YN]pJ"+Za$!WRFRUw0iaBl5ҕX쁷-UE^Vmwdky qP#7'ʁfTյbIF,Ա;]^ n.Os*^os۠G\#z.*nKD )N0a!:$M%1YA`ZnY퇍N}0vAofg}ew0bYe0Xs_"TGGu 1Hؾ~TZq(H BrOeBPਫ਼.(ɤ i՞9YJ5B1ʂr˫ d $kި3@ٶ퐱 F -<2#BRz\n
    IA4 &8].HZf. FB8{zv# StJO“ $DsdZ$oN3=N;}>o&csC* lDwǀd$T[`K!/V2:ގyГX*,ïgRh\W[Ue; M" E߬1}zZ,N1_KziR(bv}1jXI_aОsי:؄'ùN<_' QJAxck(R= yϖZ^N5("}DgAg]ŝFIȩh>l[@`}K?F7QlaHgOc=!(VWEAa-cpn~y,cy|3FUk4YV]epVCYbv&uYLq{X@F_09d.FhDŽ=?:s.XoK~?>/'eSuu5xr@Pkd0iub1N8? N@ɨKm; DNNh-$@Zxh9--zMO泳N{o,_c=rSqV_ll6`9[w*Qeh*쮌YUi7 UPW)?Wj{ y7~2Fؖ0NY@mf?+N[ 6;i|*"GO''~~.-} 'FW 1g褒p6o!XsrttNrjTh؆mZ]"=ٹK5Vh\7$  xA[IsW,--VǛj +-*ڈq/[U?XӴֲD, Ua#B;]m$ijVm,g'Б0*ST2-Yw* Yzߦ*^ڸ ,9]Ӎ"p]ƿnyi&l5?l<7=r˟)YKh:!zHz=3?ɫm%&{!0k,q Z1j$ >{˲ڊgT&WH+'BLϛJVQ퐕Jh/v߰UQG(Զ?$eE.2f䥮\׳(p c% YҍXg*=Y 2g}8Z@Ѷ(8ұW髋)x"qc`p߄0E_wM[].,d;͛{K Av>]Z~ vQ{MM\~8cA$ j' '*DE6ߊR0 gw+b3Q M (3M;oP n0u'8 ).8枉ƹ]2c]k&tA:>\b8%C"$ mUQ"PnZaF̖8}ƥtZLXDdi|N4gc @lh*{O|Io{9!=3>Rfru 1L`N. jַGH&w^)e%3vIS^EXfKL2?8ZCipLHA,̐dl++i̮zU%6؅Μq%@npLܑWuV1B3F>q1(-T0@y'?NMa]ti`[K< :tN"*;^TS,ULԕV8[Ffn-(26F sC4 @xвƴ7ؾ=S(!~m [F(?_~f ƞcݲc & e@̯{B番NS9 O`JD}*]{z^.bFY% R7sT뼜$WO*{\xi`+3&I{fk\ 'NIJc[Ǎ??~|:/&S<9=)L5]8.󒁚:ۺHȮRJ׻u}хK00NO~wYNd*sw`bݽTK|j#"cYYvsSl6ٻwW/0g-xUo1Hfs6-@|E@lkQ H0V.t媜 6UƙbdߓI#~xhKxHRy \QC ^9TTZS%a{~ONLn=@Y]A\ݮc#Գ9dcsh7w9xDGZ`k9G#I'&H2IDlr9ұMӿgo!՛dt4W?M ~^x-Aa 0YUKDl! @"(d]c+4:,Ј`9WY};GA`zG$#Tç_<ϏN/2}SD.LRR2oG˼U3y*vô'K]`IN jn hk42voA[# ڀwEyog`={eqM_۷?$NꐳMӟU&0x MU] zh^$j|Wu>?30O_к7\"xWgh P6+N 4^uI]bAa`0$ v gqA"Y.:_^ѥ,HAIg*)?n%V]elqYw'q~g<9w{$0q\3~ sz#^W-vSN#Xgᩖ::Q0ƪ(T8DES\"wi~>{`(XKۺ+E>DZ N=v3K eĝ$9v֢Yˤ`u0M:+ XquҶU}NJbxkKв*2u{a}(vG.RǓ:R LCl2HU*]~:\drq2?9\NRӧG^KTrŧDg8sqͶE[AcD.rnݻsNqmsν5= ~HA EJ#jh6Pc<oJQptd m\+A$9,+dڐ[W[U2Ubs-:θI77W;'ίn4pS6<2͂4&מ]y7*Xܙk:gNu&5w %ӧ'1㋓ՁcUŋBeﰖ*ok\! "ƗƗpa-^yLP|6${k0Zi6}޻5:FV~ʲ۷PBV&#zNy'8h/C}꧊OV/%R2D-q3|'cmzQQi1F%:p`0s)XdiܮV̉< gnwMf d7<2=1 `yqzlJb%^eOo6 ¬of>Ii<fE|RYt_91Q\c{CfW>]vb94bK.8 Yk9I9A&ν]b`->bB›L%28OWs& SO{-gTW4o)@ٖ*#JvC涠áռ߶8Bu.QhӾtBQMzG֘ aa- zeA{Ն6BBگbwnb)q,y!!ב>28)a!-U\)HBI=cŻf2KN6,>sBM C#&}W:mKj̄A_tp{*+SIW`B_Mumk%CdaNOUVE}.\`¹gLi$!#L=Ў%mLs6\_CԘC΁@ζ7 C`8;a |uTN>:>\=\ΔLvr=bSzzyrʳr~2XMA\uqOAf+nkLx:C24t=~jQFi}W骗byDyB( ux9̈"ys'ɾX$Op*T |-c\ҲJ6iD$_H(鹵~QĬlw>!Q]ۚ[AHe 9J}H=bI?F MbtQ\owlD\do>^AڈhP󠽫fDix'`.#G"L[ gFԒAd\BӣӓOO' г͛znuY\o`+ĵeF>po0GPՆt߻E4l3Y"LCGjlz{5Gؼ rkO_LIR6P㧺|GV$sPF ?L B8 N樆 {Ia/2//&[xj4c!l0zku4s3qAscHCD`yす O.&jE4${t|z')-gn>N4ڕh|L]ǒN\RIas} o HA B&eR`B f㡱*oC1saB/ w_oab$~?|Gև@I__Ж$'h,9toZsOpeU{XdRs]c#'ZDw Yt%7yHEqbP U4{NQ[gs_I/MMXc֣n/''$ŵ(cP[*tT @? {.a =D##K;v*i5ʒG`vF-Zwɬ!mFm&ۇ?vD2OpS|'Ya7e04Šu$v.~7OfMn-#JhuVXr:!Ovs$mE|Sw˅LjQ_OGM():d2HKnp|)l0_c5'Syp&uW/Sf#G6ٻ* xXHvKRSh r6۷\\E >":S#2EtLa| `ގa|L9Z1/ivq&5| Nt;g¾x5:4cȡ_g h$MxPT΃\\ɪSjft8a*S=b 8qq|Gò> $-SmR 4zzF/1 opڞ(w\튋%$Jm?FOUu[5[*X۸9 C5W2o]N[͍y>=/Ȳ"tt&?o gIs@f3;VMoi5aGFxRj麩1&#\imyOGʶQ&/ sEE'JNBR\zx}r^ 2Tm/W$0}bV mtQǀݶ~$փ;He2;pƾ[:[7ӝ$ QZA`lboQD`鉥û23U,Lm7^FT&[ZZ78SxD 7b/lzg۴(-9QF]1Hmx+`UnbtؾDu]00Jx't(zhRtxʱIѲ,dm04\*Hӏiщ4k d̆`M;(QCB%گ%ǀP{C/ veu4+O`4qLF:C ]F^T\pi";8g]~p&,X.ͯ0]:(Z'1PFߡu}UKog,)*[p6/Z^\h<Щȝ8]k\\@~G_#3ZH"EKv+QR񨒔O3APwCl5# dH8X|ka<-,k5 Sಭ}Do{!1Yzy&>);htĀژAth\?g\B]tQBQhMI$#sϞ_M#atrPl)AHV;G2+ȑ56Q\.lDM`cX0-1KvO a_@Q >9UTߥIz #%ฉ<:oCVhO^L'J_$h c4 *:4ɣt;D\ɀR=KSvN4KN1hv5U29D*۷mIDAT/] †eBHKL9`Ls2!V]ąu5 c 32{GӋz0s.9 oN1##֤z[:\I;߀@klM$[6DɓIwJ۰.R>EɐnFpAQRrAcRkfS:5'P2OC5&*;Pu>BI/k3_fMaMb "Ej gq4]Qoi--ŻRv[ '7(ć GϜOɷ35hQOap~zʱpyq|)6SrD- mVJlN0H a з;Nbwfi;~YZ(Ub;Ȳѓhj6At^8&L88揼8_$T"qʉ'Mx(hPՁ=6|՗X^Ɨc/%; ijshvyj~egCg{6fL~OwA<}Fk͒͘2yh*]ew2\)|9 ] j2HA/WkvUۣ0 (UOЙ\v5b)vPW|/%[_O:bgb.zMbdB&ͷx^bQtf" @@yXRcEnf!&AR`RHL~ERDYX,6$G>0 |TGoM#f8^W˫B̸s+3rnv#䓲k-7/3"Y6mt(Į|y+1<S}Wby]cyfv@ﺧkx5 [-9^va}E}.w-3vNv>g!r373Nfj7,ip^\q3 dܨaLDȖLH8{hT `Ua^zIBvP`KDЄ(hݡ&iCFC^!ŏۥ2ܬYb|Ugi/ $bf䡚7 33z}6_oEӼBoXx1K| WAЋ$gQLU/GcK|@j[ϝvl.{Fln@!9fRXzeGLjYxdc_#w#]' Ztu6_*HB X0«n rZ4M7% "`xN~JUgé]bL1 zRF@JG=^^'sO R%$S&L)xctSzLBJ?p1^h^,MfT=elKGnÕ~@^8@kpN 5PAEpJ%Pch$uY<T:Mn:,+OB|!v~ l; Z]07--%3xfIs#͚iZ4hA<$Kш2`Llq݆PO1#M&⿆`v80RΥÑ@3\LyDHVoL+3x?LHeo._V+!ϧ S>^P߁c*\Ke}YHKո,@'EǴ 9unݭW9,OqCı'ƁZ'&]mѵ+{.^OV/TNص]ahM5p 9ۘ-n\8\yv8/k^셞qvwM=?J|ׅ:.^^5`D /Fi#h< JP41̹^Uxv)Ɍ8A!]E 8jnfS7S(W_fW lLbp=gjSU'8Yz%u$mC˘ZeJV[55\.@$ǹ.7Eۯ0DDH*J[ybnmIs4{n{DQjqZgkYԷl'6{?![ݯذ(VxCHWڑr4dfp$pE( |Vk,%.PJbǚt 61={׹=:M<Ћ Ǜ7ܱUj!,%k8E?y4o8J2e} nNY2|),AVԛUn fzrv{[ɭbpH'ވT!1,oNJ 4á%Gk5幘X9O4"(w@f1i2dO6|OIPȲk V$K8dbJB9@~t=i;6Tg( Ԇlz#(=)E|A/^,|YZ,i( oزyTu+޹k,@g)ȵCX.1.D%}vm@|ze-g,Pzs{IT<䴳XW)1mN&pXNg̶3rFY7 ATn+!TҥĴ67yvHs,$TȈpe)y*G7U{ ̚UJƔLrQjݘDO_XUٗ_~yfGFt2p1"!*qJPev^?+0j;V^hr2Ө\ϔn cg̪JCm#[(U؈dq`3x9m7IfNS7˅8Ĺs;Jٓ4(b1/΢坞psCeL3tI Ce$(7 ] z&kdBUr~'ϫFKf~3~w}wHwBà;qN\hɭ:F/V ѬW-Y{z&ٶGBZJ7H*Vkzd2 ffZVc-v=(X,»OBrW쭎w)ُymk0pe[&qF6Kx{/_+ z~Tp|{Zw^$¼+SU|JT,8 U3lxꡱl#( 0ؕ/͘qax= LZ]E7l'"8c l,iGu1,KK<{^wHڲLAPOt<6m'{JP(D?5. ̃M}31Ŝb],L=jG4:(IO"hw)lGȺ2 |7)`k2HH<.9m!K KOFp xGN^) s[@Io#q S̑WkN {M[<4_YqoeEH`e'.R)QoQBۯ,׶%&-vXHPn`ncy.K%8U aRiLMr+C6}Lp W"! vpS<+ uVmv[dA %R%RF$T% 2-eD]RWxZ:Zl ?:"!nR)k=c!ʆhzLC!oXܚB,4Ij7r*`G䉕/˗_==~|ak&J,@@(<y:DJU@:.U]&*R%cd`ZFfS nn6^%zH[pJ.]TG8 sI۠\BBIENDB`freedink-108.4+dfsg/autotools/0000755000175000017500000000000012421730245014051 5ustar memefreedink-108.4+dfsg/autotools/install-reloc0000755000175000017500000002104012330466613016550 0ustar meme#!/bin/sh # install-reloc - install a program including a relocating wrapper # Copyright (C) 2003-2014 Free Software Foundation, Inc. # Written by Bruno Haible , 2003. # # 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 3 of the License, 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, see . # Usage 1: # install-reloc -- library_path_var library_path_value prefix destdir \ # compile_command srcdir builddir config_h_dir exeext \ # strip_command \ # install_command... destprog # where # - library_path_var is the platform dependent runtime library path variable # - library_path_value is a colon separated list of directories that contain # the libraries at installation time (use this instead of -rpath) # - prefix is the base directory at installation time # - destdir is a string that is prepended to all file names at installation # time; it is already prepended to destprog but not to library_path_value # and prefix # - compile_command is a C compiler compilation and linking command # - srcdir is the directory where to find relocwrapper.c and its dependencies # - builddir is the directory where to find built dependencies (namely, # alloca.h and stdbool.h) # - config_h_dir is the directory where to find config.h # - exeext is platform dependent suffix of executables # - strip_command is the command for stripping executables, or : if no # stripping is desired # - install_command is the install command line, excluding the final destprog # - destprog is the destination program name # Usage 2: # env RELOC_LIBRARY_PATH_VAR=library_path_var \ # RELOC_LIBRARY_PATH_VALUE=library_path_value \ # RELOC_PREFIX=prefix \ # RELOC_DESTDIR=destdir \ # RELOC_COMPILE_COMMAND=compile_command \ # RELOC_SRCDIR=srcdir \ # RELOC_BUILDDIR=builddir \ # RELOC_CONFIG_H_DIR=config_h_dir \ # RELOC_EXEEXT=exeext \ # RELOC_STRIP_PROG=strip_command \ # RELOC_INSTALL_PROG=install_command... \ # install-reloc prog1 ... destprog # where destprog is either the destination program name (when only one program # is specified) or the destination directory for all programs. # install-reloc renames destprog to destprog.bin and installs a relocating # wrapper in the place of destprog. progname=$0 if test $# -ge 12 && test "x$1" = "x--"; then # Get fixed position arguments. shift library_path_var=$1 library_path_value=$2 prefix=$3 destdir=$4 shift shift shift shift compile_command=$1 srcdir=$2 builddir=$3 config_h_dir=$4 exeext=$5 shift shift shift shift shift strip_prog=$1 shift install_prog=$1 # maybe not including the "-c" option shift else if test $# -ge 2; then # Get arguments from environment variables. library_path_var=$RELOC_LIBRARY_PATH_VAR library_path_value=$RELOC_LIBRARY_PATH_VALUE prefix=$RELOC_PREFIX destdir=$RELOC_DESTDIR compile_command=$RELOC_COMPILE_COMMAND srcdir=$RELOC_SRCDIR builddir=$RELOC_BUILDDIR config_h_dir=$RELOC_CONFIG_H_DIR exeext=$RELOC_EXEEXT strip_prog=$RELOC_STRIP_PROG install_prog=$RELOC_INSTALL_PROG # including the "-c" option else echo "Usage: $0 -- library_path_var library_path_value prefix destdir" \ "compile_command srcdir builddir config_h_dir exeext" \ "strip_command" \ "install_command... destprog" 1>&2 exit 1 fi fi # Get destprog, last argument. destprog= for arg do destprog=$arg done # Determine whether destprog is a program name or a directory name. if test -d "$destprog"; then sed_remove_trailing_slashes='s|//*$||' destprog_directory=`echo "$destprog" | sed -e "$sed_remove_trailing_slashes"` if test -z "$destprog_directory"; then destprog_directory='/' fi else destprog_directory= fi # Prepare for remove trailing $exeext, if present. if test -n "$exeext"; then sed_quote='s,\.,\\.,g' sed_remove_exeext='s|'`echo "$exeext" | sed -e "$sed_quote"`'$||' fi if test -z "$destprog_directory"; then # Remove trailing $exeext, if present. if test -n "$exeext"; then destprog=`echo "$destprog" | sed -e "$sed_remove_exeext"` fi fi # Outputs a command and runs it. func_verbose () { echo "$@" "$@" } # Run install_command. func_verbose $install_prog "$@" || exit $? # Iterate over all destination program names. # func_iterate f # applies f to each destination program names, after setting destprog. sed_basename_of_file='s|^.*/||' func_iterate () { if test -n "$destprog_directory"; then prev_arg= for arg do if test -n "prev_arg"; then destprog="$destprog_directory"/`echo "$prev_arg" | sed -e "$sed_basename_of_file"` $1 fi prev_arg="$arg" done else $1 fi } # Run strip_command. func_strip () { # Remove trailing $exeext, if present. if test -n "$exeext"; then destprog=`echo "$destprog" | sed -e "$sed_remove_exeext"` fi func_verbose "$strip_prog" "$destprog$exeext" || exit $? } if test "$strip_prog" != ':'; then func_iterate func_strip fi # If the platform doesn't support LD_LIBRARY_PATH or similar, we cannot build # a wrapper. test -n "$library_path_var" || exit 0 libdirs= save_IFS="$IFS"; IFS=":" for dir in $library_path_value; do IFS="$save_IFS" if test -n "$dir"; then case "$libdirs" in *"\"$dir\""*) ;; # remove duplicate *) libdirs="$libdirs\"$dir\"," ;; esac fi done IFS="$save_IFS" # If there are no library directories to add at runtime, we don't need a # wrapper. test -n "$libdirs" || exit 0 # Determine installdir from destprog, removing a leading destdir if present. if test -n "$destprog_directory"; then installdir="$destprog_directory" else installdir=`echo "$destprog" | sed -e 's,/[^/]*$,,'` fi if test -n "$destdir"; then sed_quote='s,\([|.\*^$[]\),\\\1,g' sed_remove_destdir='s|^'`echo "$destdir" | sed -e "$sed_quote"`'||' installdir=`echo "$installdir" | sed -e "$sed_remove_destdir"` fi # Compile and install wrapper. func_create_wrapper () { # Remove trailing $exeext, if present. if test -n "$exeext"; then destprog=`echo "$destprog" | sed -e "$sed_remove_exeext"` fi # Compile wrapper. func_verbose $compile_command \ -I"$builddir" -I"$srcdir" -I"$config_h_dir" \ -DHAVE_CONFIG_H -DIN_RELOCWRAPPER -DNO_XMALLOC \ -D"INSTALLPREFIX=\"$prefix\"" -D"INSTALLDIR=\"$installdir\"" \ -D"LIBPATHVAR=\"$library_path_var\"" -D"LIBDIRS=$libdirs" \ -D"EXEEXT=\"$exeext\"" \ "$srcdir"/relocwrapper.c \ "$srcdir"/progname.c \ "$srcdir"/progreloc.c \ "$srcdir"/areadlink.c \ "$srcdir"/careadlinkat.c \ "$srcdir"/allocator.c \ "$srcdir"/readlink.c \ "$srcdir"/canonicalize-lgpl.c \ "$srcdir"/malloca.c \ "$srcdir"/relocatable.c \ "$srcdir"/setenv.c \ "$srcdir"/strerror.c \ "$srcdir"/c-ctype.c \ -o "$destprog.wrapper$exeext" rc=$? # Clean up object files left over in the current directory by the native C # compilers on Solaris, HP-UX, OSF/1, IRIX. rm -f relocwrapper.o \ progname.o \ progreloc.o \ areadlink.o \ careadlinkat.o \ allocator.o \ readlink.o \ canonicalize-lgpl.o \ malloca.o \ relocatable.o \ setenv.o \ strerror.o \ c-ctype.o test $rc = 0 || exit $? # Clean up debugging information left over by the native C compiler on MacOS X. rm -rf "$destprog.wrapper$exeext.dSYM" test $rc = 0 || exit $? # Strip wrapper. test "$strip_prog" = ':' || func_verbose "$strip_prog" "$destprog.wrapper$exeext" || exit $? # Rename $destprog.wrapper -> $destprog -> $destprog.bin. ln -f "$destprog$exeext" "$destprog.bin$exeext" \ || { rm -f "$destprog.bin$exeext" \ && cp -p "$destprog$exeext" "$destprog.bin$exeext"; } \ || exit 1 mv "$destprog.wrapper$exeext" "$destprog$exeext" || exit 1 } func_iterate func_create_wrapper exit 0 freedink-108.4+dfsg/autotools/snippet/0000755000175000017500000000000012421730245015533 5ustar memefreedink-108.4+dfsg/autotools/snippet/c++defs.h0000644000175000017500000002700012330466613017121 0ustar meme/* C++ compatible function declaration macros. Copyright (C) 2010-2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef _GL_CXXDEFS_H #define _GL_CXXDEFS_H /* The three most frequent use cases of these macros are: * For providing a substitute for a function that is missing on some platforms, but is declared and works fine on the platforms on which it exists: #if @GNULIB_FOO@ # if !@HAVE_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on all platforms, but is broken/insufficient and needs to be replaced on some platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on some platforms but is broken/insufficient and needs to be replaced on some of them and is additionally either missing or undeclared on some other platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif */ /* _GL_EXTERN_C declaration; performs the declaration with C linkage. */ #if defined __cplusplus # define _GL_EXTERN_C extern "C" #else # define _GL_EXTERN_C extern #endif /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); declares a replacement function, named rpl_func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype rpl_func parameters_and_attributes /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); declares the system function, named func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype func parameters_and_attributes /* _GL_CXXALIAS_RPL (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to rpl_func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); */ #define _GL_CXXALIAS_RPL(func,rettype,parameters) \ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ rettype (*const func) parameters = ::rpl_func; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); except that the C function rpl_func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ rettype (*const func) parameters = \ reinterpret_cast(::rpl_func); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to the system provided function func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); */ #if defined __cplusplus && defined GNULIB_NAMESPACE /* If we were to write rettype (*const func) parameters = ::func; like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls better (remove an indirection through a 'static' pointer variable), but then the _GL_CXXALIASWARN macro below would cause a warning not only for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = ::func; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = \ reinterpret_cast(::func); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function is picked among a set of overloaded functions, namely the one with rettype2 and parameters2. Two consecutive casts are used to silence the "cannot find a match" and "invalid conversion" errors that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE /* The outer cast must be a reinterpret_cast. The inner cast: When the function is defined as a set of overloaded functions, it works as a static_cast<>, choosing the designated variant. When the function is defined as a single variant, it works as a reinterpret_cast<>. The parenthesized cast syntax works both ways. */ # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = \ reinterpret_cast( \ (rettype2(*)parameters2)(::func)); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN (func); causes a warning to be emitted when ::func is used but not when GNULIB_NAMESPACE::func is used. func must be defined without overloaded variants. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN(func) \ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) # define _GL_CXXALIASWARN_1(func,namespace) \ _GL_CXXALIASWARN_2 (func, namespace) /* To work around GCC bug , we enable the warning only when not optimizing. */ # if !__OPTIMIZE__ # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_WARN_ON_USE (func, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING # define _GL_CXXALIASWARN_2(func,namespace) \ extern __typeof__ (func) func # else # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN(func) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); causes a warning to be emitted when the given overloaded variant of ::func is used but not when GNULIB_NAMESPACE::func is used. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ GNULIB_NAMESPACE) # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) /* To work around GCC bug , we enable the warning only when not optimizing. */ # if !__OPTIMIZE__ # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ extern __typeof__ (func) func # else # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif #endif /* _GL_CXXDEFS_H */ freedink-108.4+dfsg/autotools/snippet/warn-on-use.h0000644000175000017500000001203412330466613020063 0ustar meme/* A C macro for emitting warnings if a function is used. Copyright (C) 2010-2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* _GL_WARN_ON_USE (function, "literal string") issues a declaration for FUNCTION which will then trigger a compiler warning containing the text of "literal string" anywhere that function is called, if supported by the compiler. If the compiler does not support this feature, the macro expands to an unused extern declaration. This macro is useful for marking a function as a potential portability trap, with the intent that "literal string" include instructions on the replacement function that should be used instead. However, one of the reasons that a function is a portability trap is if it has the wrong signature. Declaring FUNCTION with a different signature in C is a compilation error, so this macro must use the same type as any existing declaration so that programs that avoid the problematic FUNCTION do not fail to compile merely because they included a header that poisoned the function. But this implies that _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already have a declaration. Use of this macro implies that there must not be any other macro hiding the declaration of FUNCTION; but undefining FUNCTION first is part of the poisoning process anyway (although for symbols that are provided only via a macro, the result is a compilation error rather than a warning containing "literal string"). Also note that in C++, it is only safe to use if FUNCTION has no overloads. For an example, it is possible to poison 'getline' by: - adding a call to gl_WARN_ON_USE_PREPARE([[#include ]], [getline]) in configure.ac, which potentially defines HAVE_RAW_DECL_GETLINE - adding this code to a header that wraps the system : #undef getline #if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" "not universally present; use the gnulib module getline"); #endif It is not possible to directly poison global variables. But it is possible to write a wrapper accessor function, and poison that (less common usage, like &environ, will cause a compilation error rather than issue the nice warning, but the end result of informing the developer about their portability problem is still achieved): #if HAVE_RAW_DECL_ENVIRON static char ***rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); # undef environ # define environ (*rpl_environ ()) #endif */ #ifndef _GL_WARN_ON_USE # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) /* A compiler attribute is available in gcc versions 4.3.0 and later. */ # define _GL_WARN_ON_USE(function, message) \ extern __typeof__ (function) function __attribute__ ((__warning__ (message))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE(function, message) \ extern __typeof__ (function) function # else /* Unsupported. */ # define _GL_WARN_ON_USE(function, message) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif #endif /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") is like _GL_WARN_ON_USE (function, "string"), except that the function is declared with the given prototype, consisting of return type, parameters, and attributes. This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does not work in this case. */ #ifndef _GL_WARN_ON_USE_CXX # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ extern rettype function parameters_and_attributes \ __attribute__ ((__warning__ (msg))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ extern rettype function parameters_and_attributes # else /* Unsupported. */ # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif #endif /* _GL_WARN_EXTERN_C declaration; performs the declaration with C linkage. */ #ifndef _GL_WARN_EXTERN_C # if defined __cplusplus # define _GL_WARN_EXTERN_C extern "C" # else # define _GL_WARN_EXTERN_C extern # endif #endif freedink-108.4+dfsg/autotools/snippet/arg-nonnull.h0000644000175000017500000000232512330466613020146 0ustar meme/* A C macro for declaring that specific arguments must not be NULL. Copyright (C) 2009-2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools that the values passed as arguments n, ..., m must be non-NULL pointers. n = 1 stands for the first argument, n = 2 for the second argument etc. */ #ifndef _GL_ARG_NONNULL # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 # define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) # else # define _GL_ARG_NONNULL(params) # endif #endif freedink-108.4+dfsg/autotools/snippet/_Noreturn.h0000644000175000017500000000046212330466613017665 0ustar meme#if !defined _Noreturn && __STDC_VERSION__ < 201112 # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif freedink-108.4+dfsg/autotools/reloc-ldflags0000755000175000017500000000635212330466613016527 0ustar meme#! /bin/sh # Output a system dependent linker command for putting a relocatable library # search path into an executable. # # Copyright 2003-2014 Free Software Foundation, Inc. # Written by Bruno Haible , 2003. # # 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 3 of the License, 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variable LD should be set by the caller. # # The second argument is a colon separated list of directories that contain # the libraries at installation time. # # The third argument is the directory into which the executable is going to be # installed. host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` library_path_value=$2 installdir=$3 # Verify that installdir is absolute. case "$installdir" in /*) ;; *) echo "installdir is not absolute: $installdir" 1>&2 exit 1 ;; esac case "$host_os" in linux* | kfreebsd*) rpath= save_IFS="$IFS"; IFS=":" for dir in $library_path_value; do IFS="$save_IFS" case "$dir" in /*) # Make dir relative to installdir. (Works only if dir is absolute.) idir="$installdir" while true; do dfirst=`echo "$dir" | sed -n -e 's,^//*\([^/]*\).*$,/\1,p'` ifirst=`echo "$idir" | sed -n -e 's,^//*\([^/]*\).*$,/\1,p'` if test -z "$dfirst" || test -z "$ifirst"; then break fi if test "$dfirst" != "$ifirst"; then break fi dir=`echo "$dir" | sed -e 's,^//*[^/]*,,'` idir=`echo "$idir" | sed -e 's,^//*[^/]*,,'` done dir="\$ORIGIN"`echo "$idir" | sed -e 's,//*[^/]*,/..,g'`"$dir" # Add dir to rpath. rpath="${rpath}${rpath:+ }$dir" ;; *) if test -n "$dir"; then echo "libdir is not absolute: $dir" 1>&2 fi ;; esac done IFS="$save_IFS" # Output it. if test -n "$rpath"; then echo "-Wl,-rpath,$rpath" fi ;; *) echo "relocation via rpath not supported on this system: $host" 1>&2 exit 1 ;; esac exit 0 freedink-108.4+dfsg/autotools/missing0000755000175000017500000002415211777117217015467 0ustar meme#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: freedink-108.4+dfsg/autotools/config.guess0000755000175000017500000012743211764422452016411 0ustar meme#! /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, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # 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 # the Free Software Foundation; either version 2 of the License, 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # 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. # # 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,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ 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, 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." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # 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 # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # 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'` # 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 # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *: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:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; 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" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # 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} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # 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 ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *: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 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 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" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build 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); 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 fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 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 ;; 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}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-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 ;; *: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 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; 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 \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else 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 ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) 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 exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF 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 ${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 PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; 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 exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; 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 ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu 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 # sysname and nodename. 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, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi 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. # 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 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /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; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi 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 echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *: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} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) 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` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; 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 < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: freedink-108.4+dfsg/autotools/config.libpath0000755000175000017500000001004612330466613016673 0ustar meme#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable at run time. # # Copyright 1996-2014 Free Software Foundation, Inc. # Taken from GNU libtool, 2003 # Originally by Gordon Matzigkeit , 1996 # # 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 3 of the License, 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variable LD should be set by the caller. # # The set of defined variables is at the end of this script. host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` shlibpath_var= case $host_os in aix3*) shlibpath_var=LIBPATH ;; aix[4-9]*) if test "$host_cpu" = ia64; then # AIX 5 supports IA64 shlibpath_var=LD_LIBRARY_PATH else shlibpath_var=LIBPATH fi ;; beos*) shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) shlibpath_var=LD_LIBRARY_PATH ;; cygwin* | mingw* | pw32* | cegcc*) # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) shlibpath_var=DYLD_LIBRARY_PATH ;; dgux*) shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) shlibpath_var=LD_LIBRARY_PATH ;; gnu*) shlibpath_var=LD_LIBRARY_PATH ;; hpux9* | hpux10* | hpux11*) case "$host_cpu" in ia64* | hppa*64*) shlibpath_var=LD_LIBRARY_PATH ;; *) shlibpath_var=SHLIB_PATH ;; esac ;; interix[3-9]*) shlibpath_var=LD_LIBRARY_PATH ;; irix5* | irix6* | nonstopux*) case $host_os in irix5* | nonstopux*) shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") shlibsuff= ;; *-n32|*"-n32 ") shlibsuff=N32 ;; *-64|*"-64 ") shlibsuff=64 ;; *) shlibsuff= ;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu) shlibpath_var=LD_LIBRARY_PATH ;; netbsd*) shlibpath_var=LD_LIBRARY_PATH ;; newsos6) shlibpath_var=LD_LIBRARY_PATH ;; nto-qnx*) shlibpath_var=LD_LIBRARY_PATH ;; openbsd*) shlibpath_var=LD_LIBRARY_PATH ;; os2*) shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) shlibpath_var=LD_LIBRARY_PATH ;; rdos*) ;; solaris*) shlibpath_var=LD_LIBRARY_PATH ;; sunos4*) shlibpath_var=LD_LIBRARY_PATH ;; sysv4 | sysv4.3*) shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) shlibpath_var=LD_LIBRARY_PATH ;; uts4*) shlibpath_var=LD_LIBRARY_PATH ;; esac LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux* | k*bsd*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) library_names_spec='$libname.a' ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd1*) ;; freebsd* | dragonfly*) case "$host_os" in freebsd[123]*) library_names_spec='$libname$shrext$versuffix' ;; *) library_names_spec='$libname$shrext' ;; esac ;; gnu*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; nto-qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: freedink-108.4+dfsg/autotools/config.sub0000755000175000017500000010532711764422452016053 0ustar meme#! /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, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-04-18' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # 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 # the Free Software Foundation; either version 2 of the License, 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # 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. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) 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." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # 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-android* | linux-dietlibc | linux-newlib* | \ 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 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -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 | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # 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 \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | 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 \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; 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 ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) 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. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # 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-* \ | 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-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | 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-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) 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) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; 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 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; 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 ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # 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|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -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* | -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* \ | -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* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: freedink-108.4+dfsg/autotools/depcomp0000755000175000017500000005064311777117217015451 0ustar meme#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2012-03-27.16; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # A tabulation character. tab=' ' # A newline character. nl=' ' if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependent.h'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. # However on # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\': # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... # tcc 0.9.26 (FIXME still under development at the moment of writing) # will emit a similar output, but also prepend the continuation lines # with horizontal tabulation characters. "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form 'foo.o: dependent.h', # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ < "$tmpdepfile" > "$depfile" sed ' s/[ '"$tab"'][ '"$tab"']*/ /g s/^ *// s/ *\\*$// s/^[^:]*: *// /^$/d /:$/d s/$/ :/ ' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' "$nl" < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: freedink-108.4+dfsg/AUTHORS0000644000175000017500000000715312421721775013106 0ustar memeRecords of which significant portions were written by whom: Seth A. Robinson wrote the original engine, available at www.codedojo.com. The (missing) copyright info should be: Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson 1997: demo release, 1998-01-23: commercial release, 1998: patches, 1999-17-10: freeware release, 2002-12-15: v1.07 beta 3 patch release, 2003-07-16: source code release (packaging and documentation) Shawn Betts wrote the first version of fastfile.c. Moreover, code from his contribution to "The Dink Project" was reused, namely from load_palette_from_bmp(), setup_palette(), load_sprite_pak(), print_text(), print_text_wrap(), font_len(), process_text_for_wrapping(), strupper() -> strupr(). Dan Walma wrote improvements to the original engine as version "1.08". Most of these changes are included (see doc/v1.08.txt). 2005, 2006: first alpha versions, followed by beta versions (binary only) 2006-03-10: official release with source code Sylvain Beucler started from the official v1.07 source code release and wrote all the other changes: SDL re-port, autoconfiscation, separate reference and D-Mod directories, v1.08 adaptation, bugfixes, etc. He translated the engine strings to French. The zzip and libzip resource-loading code (SDL_rwops_libzip.c, SDL_rwops_libzip.h, SDL_rwops_zzip.c, SDL_rwops_zzip.h) are based on sample code from zzip author Guido Draheim, Copyright (c) 2001. Alexander Krivács Schrøder translated the engine strings to Norwegian Bokmål, public domain 2008. Jorma Karvonen translated the engine strings to Finnish, Copyright 2009, 2012. Fernando Carmona Varo translated the engine strings to Spanish, public domain 2009, 2010. Michał Trzebiatowski translated the engine strings to Polish, Copyright (C) 2009, 2012. Joe Hansen translated the engine strings to Danish, public domain 2009, 2010, 2012. Clytie Siddall translated the engine strings to Vietnamese, Copyright (C) 2009, 2010, 2012 Free Software Foundation. Koen Torfs translated the engine strings to Dutch, Copyright (C) 2010, 2012. Erwid M Jadied translated the engine strings to Indonesian, Copyright (C) 2009. Sarah Evans translated the engine strings in German, public domain 2010. Michael Kotsarinis translated the engine strings in Greek, Copyright (C) 2010. Vincenzo Campanella translated the engine strings in Italian, Copyright (C) 2010. Marek Černocký translated the engine strings in Czech, Copyright (C) 2010, 2013. Felipe Castro translated the engine strings in Esperanto, Copyright (C) 2011, 2012. Klemen Košir translated the engine strings in Slovenian, Copyright (C) 2011-2013. Мирослав Николић translated the engine strings in Serbian, Copyright (C) 2011,2013. Tomislav Krznar translated the engine strings to Croatian, Copyright (C) 2012. Johnny A. Solbu translated some of the engine strings to Norwegian Bokmål, Copyright (C) 2012. Jakob Kramer translated some of the engine strings to German, Copyright (C) 2012. Trần Ngọc Quân translated some of the engine strings to Vietnamese, Copyright (C) 2012. Àngel Mompó translated the engine strings to Catalan, Copyright (C) 2012. Gorka Azkarate Zubiaur translated the engine strings to Basque, Copyright (C) 2012. Enrico Nicoletto translated the engine strings in Brazilian Portuguese, Copyright (C) 2013. Yuri Kozlov translated the engine strings in Russian, Copyright (C) 2014. Balázs Úr translated the engine strings in Hungarian, Copyright (C) 2014. --- Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. freedink-108.4+dfsg/ABOUT-NLS0000644000175000017500000026713312353062715013267 0ustar meme1 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl' library and will decide to use it. If not, you may have to to use the `--with-libintl-prefix' option to tell `configure' where to look for it. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. If you happen to have the `LC_ALL' or some other `LC_xxx' environment variables set, you should unset them before setting `LANG', otherwise the setting of `LANG' will not have the desired effect. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of June 2010. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca +--------------------------------------------------+ a2ps | [] [] | aegis | | ant-phone | | anubis | | aspell | [] [] | bash | | bfd | | bibshelf | [] | binutils | | bison | | bison-runtime | [] | bluez-pin | [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | | dfarc | | dialog | [] [] | dico | | diffutils | [] | dink | | doodle | | e2fsprogs | [] | enscript | [] | exif | | fetchmail | [] | findutils | [] | flex | [] | freedink | | gas | | gawk | [] [] | gcal | [] | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] [] | gip | [] | gjay | | gliv | [] | glunarclock | [] [] | gnubiff | | gnucash | [] | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | | gold | | gpe-aerial | | gpe-beam | | gpe-bluetooth | | gpe-calendar | | gpe-clock | [] | gpe-conf | | gpe-contacts | | gpe-edit | | gpe-filemanager | | gpe-go | | gpe-login | | gpe-ownerinfo | [] | gpe-package | | gpe-sketchbook | | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] | gpe-today | [] | gpe-todo | | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | [] [] | gsasl | | gss | | gst-plugins-bad | [] | gst-plugins-base | [] | gst-plugins-good | [] | gst-plugins-ugly | [] | gstreamer | [] [] [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] [] | gutenprint | | hello | [] | help2man | | hylafax | | idutils | | indent | [] [] | iso_15924 | | iso_3166 | [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | | iso_639 | [] [] [] [] | iso_639_3 | | jwhois | | kbd | | keytouch | [] | keytouch-editor | | keytouch-keyboa... | [] | klavaro | [] | latrine | | ld | [] | leafpad | [] [] | libc | [] [] | libexif | () | libextractor | | libgnutls | | libgpewidget | | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | [] | libidn | | lifelines | | liferea | [] [] | lilypond | | linkdr | [] | lordsawar | | lprng | | lynx | [] | m4 | | mailfromd | | mailutils | | make | | man-db | | man-db-manpages | | minicom | | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | | psmisc | | pspp | [] | pwdutils | | radius | [] | recode | [] [] | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] [] | sed | [] [] | sharutils | [] [] | shishi | | skencil | | solfege | | solfege-manual | | soundtracker | | sp | | sysstat | | tar | [] | texinfo | | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] [] | wyslij-po | | xchat | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] | +--------------------------------------------------+ af am an ar as ast az be be@latin bg bn_IN bs ca 6 0 1 2 3 19 1 10 3 28 3 1 38 crh cs da de el en en_GB en_ZA eo es et eu fa +-------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] () | anubis | [] [] | aspell | [] [] [] [] [] | bash | [] [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] | bison | [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] [] [] | cflow | [] [] | clisp | [] [] [] [] | coreutils | [] [] [] [] | cpio | | cppi | | cpplib | [] [] [] | cryptsetup | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] | dink | [] [] [] | doodle | [] | e2fsprogs | [] [] [] | enscript | [] [] [] | exif | () [] [] | fetchmail | [] [] () [] [] [] | findutils | [] [] [] | flex | [] [] | freedink | [] [] [] | gas | [] | gawk | [] [] [] | gcal | [] | gcc | [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] [] | gip | [] [] [] [] | gjay | [] | gliv | [] [] [] | glunarclock | [] [] | gnubiff | () | gnucash | [] () () () () | gnuedu | [] [] | gnulib | [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] | gpe-contacts | [] [] [] | gpe-edit | [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] () [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] | grub | [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] () [] | gtkam | [] [] () [] [] | gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | [] [] [] | hello | [] [] [] [] | help2man | [] | hylafax | [] [] | idutils | [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] [] [] [] () [] [] [] () | iso_3166_2 | () | iso_4217 | [] [] [] () [] [] | iso_639 | [] [] [] [] () [] [] | iso_639_3 | [] | jwhois | [] | kbd | [] [] [] [] [] | keytouch | [] [] | keytouch-editor | [] [] | keytouch-keyboa... | [] | klavaro | [] [] [] [] | latrine | [] () | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | [] [] | libgphoto2 | [] () | libgphoto2_port | [] () [] | libgsasl | | libiconv | [] [] [] [] [] | libidn | [] [] [] | lifelines | [] () | liferea | [] [] [] [] [] | lilypond | [] [] [] | linkdr | [] [] [] | lordsawar | [] | lprng | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailfromd | | mailutils | [] | make | [] [] [] | man-db | | man-db-manpages | | minicom | [] [] [] [] | mkisofs | | myserver | | nano | [] [] [] | opcodes | [] [] | parted | [] [] | pies | | popt | [] [] [] [] [] | psmisc | [] [] [] | pspp | [] | pwdutils | [] | radius | [] | recode | [] [] [] [] [] [] | rosegarden | () () () | rpm | [] [] [] | rush | | sarg | | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | | skencil | [] () [] | solfege | [] [] [] | solfege-manual | [] [] | soundtracker | [] [] [] | sp | [] | sysstat | [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] | tin | [] [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] | vice | () () | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] | wyslij-po | | xchat | [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ crh cs da de el en en_GB en_ZA eo es et eu fa 5 64 105 117 18 1 8 0 28 89 18 19 0 fi fr ga gl gu he hi hr hu hy id is it ja ka kn +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] [] | ant-phone | [] [] | anubis | [] [] [] [] | aspell | [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | bibshelf | [] [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] | cppi | [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] [] [] [] | dink | [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] | freedink | [] [] [] | gas | [] [] | gawk | [] [] [] [] () [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] | gip | [] [] [] [] [] [] | gjay | [] | gliv | [] () | glunarclock | [] [] [] [] | gnubiff | () [] () | gnucash | () () () () () [] | gnuedu | [] [] | gnulib | [] [] [] [] [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] [] | gpe-aerial | [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] [] [] | gpe-calendar | [] [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] [] | gpe-go | [] [] [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | gutenprint | [] [] [] [] | hello | [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] [] | indent | [] [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | () [] [] [] | iso_4217 | [] () [] [] [] [] | iso_639 | [] () [] [] [] [] [] [] [] | iso_639_3 | () [] [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] [] [] [] [] [] | keytouch-editor | [] [] [] [] [] | keytouch-keyboa... | [] [] [] [] [] | klavaro | [] [] | latrine | [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] | libidn | [] [] [] [] | lifelines | () | liferea | [] [] [] [] | lilypond | [] [] | linkdr | [] [] [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | | mailutils | [] [] | make | [] [] [] [] [] [] [] [] [] | man-db | [] [] | man-db-manpages | [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] [] | myserver | | nano | [] [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pies | | popt | [] [] [] [] [] [] [] [] [] | psmisc | [] [] [] | pspp | | pwdutils | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () () () () | rpm | [] [] | rush | | sarg | [] | screem | [] [] | scrollkeeper | [] [] [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] | shishi | [] | skencil | [] | solfege | [] [] [] [] | solfege-manual | [] [] | soundtracker | [] [] | sp | [] () | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux-ng | [] [] [] [] [] [] | vice | () () () | vmm | [] | vorbis-tools | [] | wastesedge | () () | wdiff | [] | wget | [] [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +----------------------------------------------------+ fi fr ga gl gu he hi hr hu hy id is it ja ka kn 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne +-----------------------------------------------+ a2ps | [] | aegis | | ant-phone | | anubis | [] [] | aspell | [] | bash | | bfd | | bibshelf | [] [] | binutils | | bison | [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] | cpio | | cppi | | cpplib | | cryptsetup | | dfarc | [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] | dink | | doodle | | e2fsprogs | | enscript | | exif | [] | fetchmail | | findutils | | flex | | freedink | [] | gas | | gawk | | gcal | | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] | gettext-tools | [] | gip | [] [] | gjay | | gliv | | glunarclock | [] | gnubiff | | gnucash | () () () () | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | [] | gold | | gpe-aerial | [] | gpe-beam | [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] | gpe-timesheet | [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | | gsasl | | gss | | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | | gtick | | gtkam | [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | | hello | [] [] [] | help2man | | hylafax | | idutils | | indent | | iso_15924 | [] [] | iso_3166 | [] [] () [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] | iso_639 | [] [] | iso_639_3 | [] | jwhois | [] | kbd | | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | klavaro | [] | latrine | [] | ld | | leafpad | [] [] [] | libc | [] | libexif | | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | | libidn | | lifelines | | liferea | | lilypond | | linkdr | | lordsawar | | lprng | | lynx | | m4 | | mailfromd | | mailutils | | make | [] | man-db | | man-db-manpages | | minicom | [] | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | [] [] [] | psmisc | | pspp | | pwdutils | | radius | | recode | | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] | sed | | sharutils | | shishi | | skencil | | solfege | [] | solfege-manual | | soundtracker | | sp | | sysstat | [] | tar | [] | texinfo | [] | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] | wyslij-po | | xchat | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +-----------------------------------------------+ ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +---------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] | bash | [] [] | bfd | [] | bibshelf | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] () | buzztard | [] [] | cflow | [] | clisp | [] [] | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cppi | [] | cpplib | [] | cryptsetup | [] | dfarc | [] | dialog | [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] [] | dink | () | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | exif | [] [] [] () [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] | gas | | gawk | [] [] [] [] | gcal | | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] | gip | [] [] [] [] [] | gjay | | gliv | [] [] [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | [] () | gnucash | [] () () () | gnuedu | [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gnutls | [] [] | gold | | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] [] | gphoto2 | [] [] [] [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] | gramadoir | [] [] | grep | [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | gutenprint | [] [] | hello | [] [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] [] [] [] | iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] [] [] | keytouch-editor | [] [] [] | keytouch-keyboa... | [] [] [] | klavaro | [] [] | latrine | [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] | lifelines | [] [] | liferea | [] [] [] [] [] () () [] | lilypond | [] | linkdr | [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | | nano | [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | pies | [] | popt | [] [] [] [] | psmisc | [] [] [] | pspp | [] [] | pwdutils | [] | radius | [] [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () | rpm | [] [] [] | rush | [] [] | sarg | | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | skencil | [] [] | solfege | [] [] [] [] | solfege-manual | [] [] [] | soundtracker | [] | sp | | sysstat | [] [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] [] | vice | [] | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW +---------------------------------------------------+ a2ps | [] [] [] [] [] | 27 aegis | [] | 9 ant-phone | [] [] [] [] | 9 anubis | [] [] [] [] | 15 aspell | [] [] [] | 20 bash | [] [] [] | 12 bfd | [] | 6 bibshelf | [] [] [] | 16 binutils | [] [] | 8 bison | [] [] | 12 bison-runtime | [] [] [] [] [] [] | 29 bluez-pin | [] [] [] [] [] [] [] [] | 37 bombono-dvd | [] | 4 buzztard | [] | 7 cflow | [] [] [] | 9 clisp | | 10 coreutils | [] [] [] [] | 22 cpio | [] [] [] [] [] [] | 13 cppi | [] [] | 5 cpplib | [] [] [] [] [] [] | 14 cryptsetup | [] [] | 7 dfarc | [] | 9 dialog | [] [] [] [] [] [] [] | 30 dico | [] | 2 diffutils | [] [] [] [] [] [] | 30 dink | | 4 doodle | [] [] | 7 e2fsprogs | [] [] [] | 11 enscript | [] [] [] [] | 17 exif | [] [] [] | 16 fetchmail | [] [] [] | 17 findutils | [] [] [] [] [] | 20 flex | [] [] [] [] | 15 freedink | [] | 10 gas | [] | 4 gawk | [] [] [] [] | 18 gcal | [] [] | 5 gcc | [] [] [] | 7 gettext-examples | [] [] [] [] [] [] [] | 34 gettext-runtime | [] [] [] [] [] [] [] | 29 gettext-tools | [] [] [] [] [] [] | 22 gip | [] [] [] [] | 22 gjay | [] | 3 gliv | [] [] [] | 14 glunarclock | [] [] [] [] [] | 19 gnubiff | [] [] | 4 gnucash | () [] () [] () | 10 gnuedu | [] [] | 7 gnulib | [] [] [] [] | 16 gnunet | [] | 1 gnunet-gtk | [] [] [] | 5 gnutls | [] [] [] | 10 gold | [] | 4 gpe-aerial | [] [] [] | 18 gpe-beam | [] [] [] | 19 gpe-bluetooth | [] [] [] | 13 gpe-calendar | [] [] [] [] | 12 gpe-clock | [] [] [] [] [] | 28 gpe-conf | [] [] [] [] | 20 gpe-contacts | [] [] [] | 17 gpe-edit | [] [] [] | 12 gpe-filemanager | [] [] [] [] | 16 gpe-go | [] [] [] [] [] | 25 gpe-login | [] [] [] | 11 gpe-ownerinfo | [] [] [] [] [] | 25 gpe-package | [] [] [] | 13 gpe-sketchbook | [] [] [] | 20 gpe-su | [] [] [] [] [] | 30 gpe-taskmanager | [] [] [] [] [] | 29 gpe-timesheet | [] [] [] [] [] | 25 gpe-today | [] [] [] [] [] [] | 30 gpe-todo | [] [] [] [] | 17 gphoto2 | [] [] [] [] [] | 24 gprof | [] [] [] | 15 gpsdrive | [] [] [] | 11 gramadoir | [] [] [] | 11 grep | [] [] [] | 10 grub | [] [] [] | 14 gsasl | [] [] [] [] | 14 gss | [] [] [] | 11 gst-plugins-bad | [] [] [] [] | 26 gst-plugins-base | [] [] [] [] [] | 24 gst-plugins-good | [] [] [] [] | 24 gst-plugins-ugly | [] [] [] [] [] | 29 gstreamer | [] [] [] [] | 22 gtick | [] [] [] | 13 gtkam | [] [] [] | 20 gtkorphan | [] [] [] | 14 gtkspell | [] [] [] [] [] [] [] [] [] | 45 gutenprint | [] | 10 hello | [] [] [] [] [] [] | 21 help2man | [] [] | 7 hylafax | [] | 5 idutils | [] [] [] [] | 17 indent | [] [] [] [] [] [] | 30 iso_15924 | () [] () [] [] | 16 iso_3166 | [] [] () [] [] () [] [] [] () | 53 iso_3166_2 | () [] () [] | 9 iso_4217 | [] () [] [] () [] [] | 26 iso_639 | [] [] [] () [] () [] [] [] [] | 38 iso_639_3 | [] () | 8 jwhois | [] [] [] [] [] | 16 kbd | [] [] [] [] [] | 15 keytouch | [] [] [] | 16 keytouch-editor | [] [] [] | 14 keytouch-keyboa... | [] [] [] | 14 klavaro | [] | 11 latrine | [] [] [] | 10 ld | [] [] [] [] | 11 leafpad | [] [] [] [] [] [] | 33 libc | [] [] [] [] [] | 21 libexif | [] () | 7 libextractor | [] | 1 libgnutls | [] [] [] | 9 libgpewidget | [] [] [] | 14 libgpg-error | [] [] [] | 9 libgphoto2 | [] [] | 8 libgphoto2_port | [] [] [] [] | 14 libgsasl | [] [] [] | 13 libiconv | [] [] [] [] | 21 libidn | () [] [] | 11 lifelines | [] | 4 liferea | [] [] [] | 21 lilypond | [] | 7 linkdr | [] [] [] [] [] | 17 lordsawar | | 1 lprng | [] | 3 lynx | [] [] [] [] | 17 m4 | [] [] [] [] | 19 mailfromd | [] [] | 3 mailutils | [] | 5 make | [] [] [] [] | 21 man-db | [] [] [] | 8 man-db-manpages | | 4 minicom | [] [] | 16 mkisofs | [] [] | 9 myserver | | 0 nano | [] [] [] [] | 21 opcodes | [] [] [] | 11 parted | [] [] [] [] [] | 15 pies | [] [] | 3 popt | [] [] [] [] [] [] | 27 psmisc | [] [] | 11 pspp | | 4 pwdutils | [] [] | 6 radius | [] [] | 9 recode | [] [] [] [] | 28 rosegarden | () | 0 rpm | [] [] [] | 11 rush | [] [] | 4 sarg | | 1 screem | [] | 3 scrollkeeper | [] [] [] [] [] | 27 sed | [] [] [] [] [] | 30 sharutils | [] [] [] [] [] | 22 shishi | [] | 3 skencil | [] [] | 7 solfege | [] [] [] [] | 16 solfege-manual | [] | 8 soundtracker | [] [] [] | 9 sp | [] | 3 sysstat | [] [] | 15 tar | [] [] [] [] [] [] | 23 texinfo | [] [] [] [] [] | 17 tin | | 4 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux-ng | [] [] [] [] | 20 vice | () () | 1 vmm | [] | 4 vorbis-tools | [] | 6 wastesedge | | 2 wdiff | [] [] | 7 wget | [] [] [] [] [] | 26 wyslij-po | [] [] | 8 xchat | [] [] [] [] [] [] | 36 xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 xkeyboard-config | [] [] [] | 22 +---------------------------------------------------+ 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If June 2010 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://translationproject.org/extra/matrix.html'. 1.5 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `coordinator@translationproject.org' to make the `.pot' files available to the translation teams. freedink-108.4+dfsg/THANKS0000644000175000017500000000045212330466347012744 0ustar meme- Alexander Krivács Schrøder: alpha testing - José María Pavón Núñez: tracked big memory leaks (sound and graphics resources) on game reload and restart - Stefan Dirsch: OpenSUSE packaging fixes and x86_64 tests/fixes Beta testers: - cypry - DaVince - Someone - Your name here :) freedink-108.4+dfsg/gnulib/0000755000175000017500000000000012421730245013300 5ustar memefreedink-108.4+dfsg/gnulib/lib/0000755000175000017500000000000012421730245014046 5ustar memefreedink-108.4+dfsg/gnulib/lib/stdbool.in.h0000644000175000017500000001177212330466613016306 0ustar meme/* Copyright (C) 2001-2003, 2006-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2001. 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, see . */ #ifndef _GL_STDBOOL_H #define _GL_STDBOOL_H /* ISO C 99 for platforms that lack it. */ /* Usage suggestions: Programs that use should be aware of some limitations and standards compliance issues. Standards compliance: - must be #included before 'bool', 'false', 'true' can be used. - You cannot assume that sizeof (bool) == 1. - Programs should not undefine the macros bool, true, and false, as C99 lists that as an "obsolescent feature". Limitations of this substitute, when used in a C89 environment: - must be #included before the '_Bool' type can be used. - You cannot assume that _Bool is a typedef; it might be a macro. - Bit-fields of type 'bool' are not supported. Portable code should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. - In C99, casts and automatic conversions to '_Bool' or 'bool' are performed in such a way that every nonzero value gets converted to 'true', and zero gets converted to 'false'. This doesn't work with this substitute. With this substitute, only the values 0 and 1 give the expected result when converted to _Bool' or 'bool'. - C99 allows the use of (_Bool)0.0 in constant expressions, but this substitute cannot always provide this property. Also, it is suggested that programs use 'bool' rather than '_Bool'; this isn't required, but 'bool' is more common. */ /* 7.16. Boolean type and values */ /* BeOS already #defines false 0, true 1. We use the same definitions below, but temporarily we have to #undef them. */ #if defined __BEOS__ && !defined __HAIKU__ # include /* defines bool but not _Bool */ # undef false # undef true #endif #ifdef __cplusplus # define _Bool bool # define bool bool #else # if defined __BEOS__ && !defined __HAIKU__ /* A compiler known to have 'bool'. */ /* If the compiler already has both 'bool' and '_Bool', we can assume they are the same types. */ # if !@HAVE__BOOL@ typedef bool _Bool; # endif # else # if !defined __GNUC__ /* If @HAVE__BOOL@: Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when the built-in _Bool type is used. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html Similar bugs are likely with other compilers as well; this file wouldn't be used if was working. So we override the _Bool type. If !@HAVE__BOOL@: Need to define _Bool ourselves. As 'signed char' or as an enum type? Use of a typedef, with SunPRO C, leads to a stupid "warning: _Bool is a keyword in ISO C99". Use of an enum type, with IRIX cc, leads to a stupid "warning(1185): enumerated type mixed with another type". Even the existence of an enum type, without a typedef, "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. The only benefit of the enum, debuggability, is not important with these compilers. So use 'signed char' and no enum. */ # define _Bool signed char # else /* With this compiler, trust the _Bool type if the compiler has it. */ # if !@HAVE__BOOL@ /* For the sake of symbolic names in gdb, define true and false as enum constants, not only as macros. It is tempting to write typedef enum { false = 0, true = 1 } _Bool; so that gdb prints values of type 'bool' symbolically. But then values of type '_Bool' might promote to 'int' or 'unsigned int' (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' (see ISO C 99 6.3.1.1.(2)). So add a negative value to the enum; this ensures that '_Bool' promotes to 'int'. */ typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; # endif # endif # endif # define bool _Bool #endif /* The other macros must be usable in preprocessor directives. */ #ifdef __cplusplus # define false false # define true true #else # define false 0 # define true 1 #endif #define __bool_true_false_are_defined 1 #endif /* _GL_STDBOOL_H */ freedink-108.4+dfsg/gnulib/lib/error.c0000644000175000017500000002416112330466613015353 0ustar meme/* Error handler for noninteractive utilities Copyright (C) 1990-1998, 2000-2007, 2009-2014 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 3 of the License, 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, see . */ /* Written by David MacKenzie . */ #if !_LIBC # include #endif #include "error.h" #include #include #include #include #if !_LIBC && ENABLE_NLS # include "gettext.h" # define _(msgid) gettext (msgid) #endif #ifdef _LIBC # include # include # include # include # define mbsrtowcs __mbsrtowcs #endif #if USE_UNLOCKED_IO # include "unlocked-io.h" #endif #ifndef _ # define _(String) String #endif /* If NULL, error will flush stdout, then print on stderr the program name, a colon and a space. Otherwise, error will call this function without parameters instead. */ void (*error_print_progname) (void); /* This variable is incremented each time 'error' is called. */ unsigned int error_message_count; #ifdef _LIBC /* In the GNU C library, there is a predefined variable for this. */ # define program_name program_invocation_name # include # include # include /* In GNU libc we want do not want to use the common name 'error' directly. Instead make it a weak alias. */ extern void __error (int status, int errnum, const char *message, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern void __error_at_line (int status, int errnum, const char *file_name, unsigned int line_number, const char *message, ...) __attribute__ ((__format__ (__printf__, 5, 6)));; # define error __error # define error_at_line __error_at_line # include # define fflush(s) INTUSE(_IO_fflush) (s) # undef putc # define putc(c, fp) INTUSE(_IO_putc) (c, fp) # include #else /* not _LIBC */ # include # include # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include /* Get _get_osfhandle. */ # include "msvc-nothrow.h" # endif /* The gnulib override of fcntl is not needed in this file. */ # undef fcntl # if !HAVE_DECL_STRERROR_R # ifndef HAVE_DECL_STRERROR_R "this configure-time declaration test was not run" # endif # if STRERROR_R_CHAR_P char *strerror_r (); # else int strerror_r (); # endif # endif /* The calling program should define program_name and set it to the name of the executing program. */ extern char *program_name; # if HAVE_STRERROR_R || defined strerror_r # define __strerror_r strerror_r # endif /* HAVE_STRERROR_R || defined strerror_r */ #endif /* not _LIBC */ #if !_LIBC /* Return non-zero if FD is open. */ static int is_open (int fd) { # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* On native Windows: The initial state of unassigned standard file descriptors is that they are open but point to an INVALID_HANDLE_VALUE. There is no fcntl, and the gnulib replacement fcntl does not support F_GETFL. */ return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; # else # ifndef F_GETFL # error Please port fcntl to your platform # endif return 0 <= fcntl (fd, F_GETFL); # endif } #endif static void flush_stdout (void) { #if !_LIBC int stdout_fd; # if GNULIB_FREOPEN_SAFER /* Use of gnulib's freopen-safer module normally ensures that fileno (stdout) == 1 whenever stdout is open. */ stdout_fd = STDOUT_FILENO; # else /* POSIX states that fileno (stdout) after fclose is unspecified. But in practice it is not a problem, because stdout is statically allocated and the fd of a FILE stream is stored as a field in its allocated memory. */ stdout_fd = fileno (stdout); # endif /* POSIX states that fflush (stdout) after fclose is unspecified; it is safe in glibc, but not on all other platforms. fflush (NULL) is always defined, but too draconian. */ if (0 <= stdout_fd && is_open (stdout_fd)) #endif fflush (stdout); } static void print_errno_message (int errnum) { char const *s; #if defined HAVE_STRERROR_R || _LIBC char errbuf[1024]; # if STRERROR_R_CHAR_P || _LIBC s = __strerror_r (errnum, errbuf, sizeof errbuf); # else if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) s = errbuf; else s = 0; # endif #else s = strerror (errnum); #endif #if !_LIBC if (! s) s = _("Unknown system error"); #endif #if _LIBC __fxprintf (NULL, ": %s", s); #else fprintf (stderr, ": %s", s); #endif } static void _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3)) error_tail (int status, int errnum, const char *message, va_list args) { #if _LIBC if (_IO_fwide (stderr, 0) > 0) { # define ALLOCA_LIMIT 2000 size_t len = strlen (message) + 1; wchar_t *wmessage = NULL; mbstate_t st; size_t res; const char *tmp; bool use_malloc = false; while (1) { if (__libc_use_alloca (len * sizeof (wchar_t))) wmessage = (wchar_t *) alloca (len * sizeof (wchar_t)); else { if (!use_malloc) wmessage = NULL; wchar_t *p = (wchar_t *) realloc (wmessage, len * sizeof (wchar_t)); if (p == NULL) { free (wmessage); fputws_unlocked (L"out of memory\n", stderr); return; } wmessage = p; use_malloc = true; } memset (&st, '\0', sizeof (st)); tmp = message; res = mbsrtowcs (wmessage, &tmp, len, &st); if (res != len) break; if (__builtin_expect (len >= SIZE_MAX / 2, 0)) { /* This really should not happen if everything is fine. */ res = (size_t) -1; break; } len *= 2; } if (res == (size_t) -1) { /* The string cannot be converted. */ if (use_malloc) { free (wmessage); use_malloc = false; } wmessage = (wchar_t *) L"???"; } __vfwprintf (stderr, wmessage, args); if (use_malloc) free (wmessage); } else #endif vfprintf (stderr, message, args); va_end (args); ++error_message_count; if (errnum) print_errno_message (errnum); #if _LIBC __fxprintf (NULL, "\n"); #else putc ('\n', stderr); #endif fflush (stderr); if (status) exit (status); } /* Print the program name and error message MESSAGE, which is a printf-style format string with optional args. If ERRNUM is nonzero, print its corresponding system error message. Exit with status STATUS if it is nonzero. */ void error (int status, int errnum, const char *message, ...) { va_list args; #if defined _LIBC && defined __libc_ptf_call /* We do not want this call to be cut short by a thread cancellation. Therefore disable cancellation for now. */ int state = PTHREAD_CANCEL_ENABLE; __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), 0); #endif flush_stdout (); #ifdef _LIBC _IO_flockfile (stderr); #endif if (error_print_progname) (*error_print_progname) (); else { #if _LIBC __fxprintf (NULL, "%s: ", program_name); #else fprintf (stderr, "%s: ", program_name); #endif } va_start (args, message); error_tail (status, errnum, message, args); #ifdef _LIBC _IO_funlockfile (stderr); # ifdef __libc_ptf_call __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); # endif #endif } /* Sometimes we want to have at most one error per line. This variable controls whether this mode is selected or not. */ int error_one_per_line; void error_at_line (int status, int errnum, const char *file_name, unsigned int line_number, const char *message, ...) { va_list args; if (error_one_per_line) { static const char *old_file_name; static unsigned int old_line_number; if (old_line_number == line_number && (file_name == old_file_name || strcmp (old_file_name, file_name) == 0)) /* Simply return and print nothing. */ return; old_file_name = file_name; old_line_number = line_number; } #if defined _LIBC && defined __libc_ptf_call /* We do not want this call to be cut short by a thread cancellation. Therefore disable cancellation for now. */ int state = PTHREAD_CANCEL_ENABLE; __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), 0); #endif flush_stdout (); #ifdef _LIBC _IO_flockfile (stderr); #endif if (error_print_progname) (*error_print_progname) (); else { #if _LIBC __fxprintf (NULL, "%s:", program_name); #else fprintf (stderr, "%s:", program_name); #endif } #if _LIBC __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ", file_name, line_number); #else fprintf (stderr, file_name != NULL ? "%s:%d: " : " ", file_name, line_number); #endif va_start (args, message); error_tail (status, errnum, message, args); #ifdef _LIBC _IO_funlockfile (stderr); # ifdef __libc_ptf_call __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); # endif #endif } #ifdef _LIBC /* Make the weak alias. */ # undef error # undef error_at_line weak_alias (__error, error) weak_alias (__error_at_line, error_at_line) #endif freedink-108.4+dfsg/gnulib/lib/at-func.c0000644000175000017500000001046612330466613015562 0ustar meme/* Define at-style functions like fstatat, unlinkat, fchownat, etc. Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #include "dosname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */ #ifdef GNULIB_SUPPORT_ONLY_AT_FDCWD # include # ifndef ENOTSUP # define ENOTSUP EINVAL # endif #else # include "openat.h" # include "openat-priv.h" # include "save-cwd.h" #endif #ifdef AT_FUNC_USE_F1_COND # define CALL_FUNC(F) \ (flag == AT_FUNC_USE_F1_COND \ ? AT_FUNC_F1 (F AT_FUNC_POST_FILE_ARGS) \ : AT_FUNC_F2 (F AT_FUNC_POST_FILE_ARGS)) # define VALIDATE_FLAG(F) \ if (flag & ~AT_FUNC_USE_F1_COND) \ { \ errno = EINVAL; \ return FUNC_FAIL; \ } #else # define CALL_FUNC(F) (AT_FUNC_F1 (F AT_FUNC_POST_FILE_ARGS)) # define VALIDATE_FLAG(F) /* empty */ #endif #ifdef AT_FUNC_RESULT # define FUNC_RESULT AT_FUNC_RESULT #else # define FUNC_RESULT int #endif #ifdef AT_FUNC_FAIL # define FUNC_FAIL AT_FUNC_FAIL #else # define FUNC_FAIL -1 #endif /* Call AT_FUNC_F1 to operate on FILE, which is in the directory open on descriptor FD. If AT_FUNC_USE_F1_COND is defined to a value, AT_FUNC_POST_FILE_PARAM_DECLS must include a parameter named flag; call AT_FUNC_F2 if FLAG is 0 or fail if FLAG contains more bits than AT_FUNC_USE_F1_COND. Return int and fail with -1 unless AT_FUNC_RESULT or AT_FUNC_FAIL are defined. If possible, do it without changing the working directory. Otherwise, resort to using save_cwd/fchdir, then AT_FUNC_F?/restore_cwd. If either the save_cwd or the restore_cwd fails, then give a diagnostic and exit nonzero. */ FUNC_RESULT AT_FUNC_NAME (int fd, char const *file AT_FUNC_POST_FILE_PARAM_DECLS) { VALIDATE_FLAG (flag); if (fd == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file)) return CALL_FUNC (file); #ifdef GNULIB_SUPPORT_ONLY_AT_FDCWD errno = ENOTSUP; return FUNC_FAIL; #else { /* Be careful to choose names unlikely to conflict with AT_FUNC_POST_FILE_PARAM_DECLS. */ struct saved_cwd saved_cwd; int saved_errno; FUNC_RESULT err; { char proc_buf[OPENAT_BUFFER_SIZE]; char *proc_file = openat_proc_name (proc_buf, fd, file); if (proc_file) { FUNC_RESULT proc_result = CALL_FUNC (proc_file); int proc_errno = errno; if (proc_file != proc_buf) free (proc_file); /* If the syscall succeeds, or if it fails with an unexpected errno value, then return right away. Otherwise, fall through and resort to using save_cwd/restore_cwd. */ if (FUNC_FAIL != proc_result) return proc_result; if (! EXPECTED_ERRNO (proc_errno)) { errno = proc_errno; return proc_result; } } } if (save_cwd (&saved_cwd) != 0) openat_save_fail (errno); if (0 <= fd && fd == saved_cwd.desc) { /* If saving the working directory collides with the user's requested fd, then the user's fd must have been closed to begin with. */ free_cwd (&saved_cwd); errno = EBADF; return FUNC_FAIL; } if (fchdir (fd) != 0) { saved_errno = errno; free_cwd (&saved_cwd); errno = saved_errno; return FUNC_FAIL; } err = CALL_FUNC (file); saved_errno = (err == FUNC_FAIL ? errno : 0); if (restore_cwd (&saved_cwd) != 0) openat_restore_fail (errno); free_cwd (&saved_cwd); if (saved_errno) errno = saved_errno; return err; } #endif } #undef CALL_FUNC #undef FUNC_RESULT #undef FUNC_FAIL freedink-108.4+dfsg/gnulib/lib/readdir.c0000644000175000017500000000567612330466613015646 0ustar meme/* Read the next entry of a directory. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include #include "dirent-private.h" struct dirent * readdir (DIR *dirp) { char type; struct dirent *result; /* There is no need to add code to produce entries for "." and "..". According to the POSIX:2008 section "4.12 Pathname Resolution" "." and ".." are syntactic entities. POSIX also says: "If entries for dot or dot-dot exist, one entry shall be returned for dot and one entry shall be returned for dot-dot; otherwise, they shall not be returned." */ switch (dirp->status) { case -2: /* End of directory already reached. */ return NULL; case -1: break; case 0: if (!FindNextFile (dirp->current, &dirp->entry)) { switch (GetLastError ()) { case ERROR_NO_MORE_FILES: dirp->status = -2; return NULL; default: errno = EIO; return NULL; } } break; default: errno = dirp->status; return NULL; } dirp->status = 0; if (dirp->entry.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) type = DT_DIR; else if (dirp->entry.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) type = DT_LNK; else if ((dirp->entry.dwFileAttributes & ~(FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_TEMPORARY | FILE_ATTRIBUTE_SPARSE_FILE | FILE_ATTRIBUTE_COMPRESSED | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED | FILE_ATTRIBUTE_ENCRYPTED)) == 0) /* Devices like COM1, LPT1, NUL would also have the attributes 0x20 but they cannot occur here. */ type = DT_REG; else type = DT_UNKNOWN; /* Reuse the memory of dirp->entry for the result. */ result = (struct dirent *) ((char *) dirp->entry.cFileName - offsetof (struct dirent, d_name[0])); result->d_type = type; return result; } freedink-108.4+dfsg/gnulib/lib/open.c0000644000175000017500000001375512330466613015172 0ustar meme/* Open a descriptor to a file. Copyright (C) 2007-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Bruno Haible , 2007. */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_open doesn't recurse to rpl_open. */ #define __need_system_fcntl_h #include /* Get the original definition of open. It might be defined as a macro. */ #include #include #undef __need_system_fcntl_h static int orig_open (const char *filename, int flags, mode_t mode) { return open (filename, flags, mode); } /* Specification. */ /* Write "fcntl.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "fcntl.h" #include #include #include #include #include #include #ifndef REPLACE_OPEN_DIRECTORY # define REPLACE_OPEN_DIRECTORY 0 #endif int open (const char *filename, int flags, ...) { mode_t mode; int fd; mode = 0; if (flags & O_CREAT) { va_list arg; va_start (arg, flags); /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4 creates crashing code when 'mode_t' is smaller than 'int'. */ mode = va_arg (arg, PROMOTED_MODE_T); va_end (arg); } #if GNULIB_defined_O_NONBLOCK /* The only known platform that lacks O_NONBLOCK is mingw, but it also lacks named pipes and Unix sockets, which are the only two file types that require non-blocking handling in open(). Therefore, it is safe to ignore O_NONBLOCK here. It is handy that mingw also lacks openat(), so that is also covered here. */ flags &= ~O_NONBLOCK; #endif #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ if (strcmp (filename, "/dev/null") == 0) filename = "NUL"; #endif #if OPEN_TRAILING_SLASH_BUG /* If the filename ends in a slash and one of O_CREAT, O_WRONLY, O_RDWR is specified, then fail. Rationale: POSIX says that "A pathname that contains at least one non-slash character and that ends with one or more trailing slashes shall be resolved as if a single dot character ( '.' ) were appended to the pathname." and "The special filename dot shall refer to the directory specified by its predecessor." If the named file already exists as a directory, then - if O_CREAT is specified, open() must fail because of the semantics of O_CREAT, - if O_WRONLY or O_RDWR is specified, open() must fail because POSIX says that it fails with errno = EISDIR in this case. If the named file does not exist or does not name a directory, then - if O_CREAT is specified, open() must fail since open() cannot create directories, - if O_WRONLY or O_RDWR is specified, open() must fail because the file does not contain a '.' directory. */ if (flags & (O_CREAT | O_WRONLY | O_RDWR)) { size_t len = strlen (filename); if (len > 0 && filename[len - 1] == '/') { errno = EISDIR; return -1; } } #endif fd = orig_open (filename, flags, mode); #if REPLACE_FCHDIR /* Implementing fchdir and fdopendir requires the ability to open a directory file descriptor. If open doesn't support that (as on mingw), we use a dummy file that behaves the same as directories on Linux (ie. always reports EOF on attempts to read()), and override fstat() in fchdir.c to hide the fact that we have a dummy. */ if (REPLACE_OPEN_DIRECTORY && fd < 0 && errno == EACCES && ((flags & O_ACCMODE) == O_RDONLY || (O_SEARCH != O_RDONLY && (flags & O_ACCMODE) == O_SEARCH))) { struct stat statbuf; if (stat (filename, &statbuf) == 0 && S_ISDIR (statbuf.st_mode)) { /* Maximum recursion depth of 1. */ fd = open ("/dev/null", flags, mode); if (0 <= fd) fd = _gl_register_fd (fd, filename); } else errno = EACCES; } #endif #if OPEN_TRAILING_SLASH_BUG /* If the filename ends in a slash and fd does not refer to a directory, then fail. Rationale: POSIX says that "A pathname that contains at least one non-slash character and that ends with one or more trailing slashes shall be resolved as if a single dot character ( '.' ) were appended to the pathname." and "The special filename dot shall refer to the directory specified by its predecessor." If the named file without the slash is not a directory, open() must fail with ENOTDIR. */ if (fd >= 0) { /* We know len is positive, since open did not fail with ENOENT. */ size_t len = strlen (filename); if (filename[len - 1] == '/') { struct stat statbuf; if (fstat (fd, &statbuf) >= 0 && !S_ISDIR (statbuf.st_mode)) { close (fd); errno = ENOTDIR; return -1; } } } #endif #if REPLACE_FCHDIR if (!REPLACE_OPEN_DIRECTORY && 0 <= fd) fd = _gl_register_fd (fd, filename); #endif return fd; } freedink-108.4+dfsg/gnulib/lib/xreadlink.c0000644000175000017500000000270012330466613016176 0ustar meme/* xreadlink.c -- readlink wrapper to return the link name in malloc'd storage Copyright (C) 2001, 2003-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering and Bruno Haible . */ #include /* Specification. */ #include "xreadlink.h" #include #include "areadlink.h" #include "xalloc.h" /* Call readlink to get the symbolic link value of FILENAME. Return a pointer to that NUL-terminated string in malloc'd storage. If readlink fails, return NULL and set errno. If realloc fails, or if the link value is longer than SIZE_MAX :-), give a diagnostic and exit. */ char * xreadlink (char const *filename) { char *result = areadlink (filename); if (result == NULL && errno == ENOMEM) xalloc_die (); return result; } freedink-108.4+dfsg/gnulib/lib/areadlink.c0000644000175000017500000000372412330466613016156 0ustar meme/* areadlink.c -- readlink wrapper to return the link name in malloc'd storage Unlike xreadlink and xreadlink_with_size, don't ever call exit. Copyright (C) 2001, 2003-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering and Bruno Haible . */ #include /* Specification. */ #include "areadlink.h" #include "careadlinkat.h" #include #include /* Get the symbolic link value of FILENAME and put it into BUFFER, with size BUFFER_SIZE. This function acts like readlink but has readlinkat's signature. */ static ssize_t careadlinkatcwd (int fd, char const *filename, char *buffer, size_t buffer_size) { /* FD must be AT_FDCWD here, otherwise the caller is using this function in contexts it was not meant for. */ if (fd != AT_FDCWD) abort (); return readlink (filename, buffer, buffer_size); } /* Call readlink to get the symbolic link value of FILENAME. Return a pointer to that NUL-terminated string in malloc'd storage. If readlink fails, return NULL and set errno. If allocation fails, or if the link value is longer than SIZE_MAX :-), return NULL and set errno to ENOMEM. */ char * areadlink (char const *filename) { return careadlinkat (AT_FDCWD, filename, NULL, 0, NULL, careadlinkatcwd); } freedink-108.4+dfsg/gnulib/lib/asnprintf.c0000644000175000017500000000204612330466613016224 0ustar meme/* Formatted output to strings. Copyright (C) 1999, 2002, 2006, 2009-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #include "vasnprintf.h" #include char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) { va_list args; char *result; va_start (args, format); result = vasnprintf (resultbuf, lengthp, format, args); va_end (args); return result; } freedink-108.4+dfsg/gnulib/lib/fd-safer.c0000644000175000017500000000300212330466613015700 0ustar meme/* Return a safer copy of a file descriptor. Copyright (C) 2005-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert. */ #include #include "unistd-safer.h" #include #include /* Return FD, unless FD would be a copy of standard input, output, or error; in that case, return a duplicate of FD, closing FD. On failure to duplicate, close FD, set errno, and return -1. Preserve errno if FD is negative, so that the caller can always inspect errno when the returned value is negative. This function is usefully wrapped around functions that return file descriptors, e.g., fd_safer (open ("file", O_RDONLY)). */ int fd_safer (int fd) { if (STDIN_FILENO <= fd && fd <= STDERR_FILENO) { int f = dup_safer (fd); int e = errno; close (fd); errno = e; fd = f; } return fd; } freedink-108.4+dfsg/gnulib/lib/msvc-nothrow.c0000644000175000017500000000243412330466613016667 0ustar meme/* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #include "msvc-nothrow.h" /* Get declarations of the native Windows API functions. */ #define WIN32_LEAN_AND_MEAN #include #include "msvc-inval.h" #undef _get_osfhandle #if HAVE_MSVC_INVALID_PARAMETER_HANDLER intptr_t _gl_nothrow_get_osfhandle (int fd) { intptr_t result; TRY_MSVC_INVAL { result = _get_osfhandle (fd); } CATCH_MSVC_INVAL { result = (intptr_t) INVALID_HANDLE_VALUE; } DONE_MSVC_INVAL; return result; } #endif freedink-108.4+dfsg/gnulib/lib/unistd-safer.h0000644000175000017500000000203412330466613016626 0ustar meme/* Invoke unistd-like functions, but avoid some glitches. Copyright (C) 2001, 2003, 2005, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert and Eric Blake. */ int dup_safer (int); int fd_safer (int); int pipe_safer (int[2]); #if GNULIB_FD_SAFER_FLAG int dup_safer_flag (int, int); int fd_safer_flag (int, int); #endif #if GNULIB_PIPE2_SAFER int pipe2_safer (int[2], int); #endif freedink-108.4+dfsg/gnulib/lib/careadlinkat.c0000644000175000017500000001127712330466613016650 0ustar meme/* Read symbolic links into a buffer without size limitation, relative to fd. Copyright (C) 2001, 2003-2004, 2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ #include #include "careadlinkat.h" #include #include #include #include /* Define this independently so that stdint.h is not a prerequisite. */ #ifndef SIZE_MAX # define SIZE_MAX ((size_t) -1) #endif #ifndef SSIZE_MAX # define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2)) #endif #include "allocator.h" /* Assuming the current directory is FD, get the symbolic link value of FILENAME as a null-terminated string and put it into a buffer. If FD is AT_FDCWD, FILENAME is interpreted relative to the current working directory, as in openat. If the link is small enough to fit into BUFFER put it there. BUFFER's size is BUFFER_SIZE, and BUFFER can be null if BUFFER_SIZE is zero. If the link is not small, put it into a dynamically allocated buffer managed by ALLOC. It is the caller's responsibility to free the returned value if it is nonnull and is not BUFFER. A null ALLOC stands for the standard allocator. The PREADLINKAT function specifies how to read links. It operates like POSIX readlinkat() but can assume that its first argument is the same as FD. If successful, return the buffer address; otherwise return NULL and set errno. */ char * careadlinkat (int fd, char const *filename, char *buffer, size_t buffer_size, struct allocator const *alloc, ssize_t (*preadlinkat) (int, char const *, char *, size_t)) { char *buf; size_t buf_size; size_t buf_size_max = SSIZE_MAX < SIZE_MAX ? (size_t) SSIZE_MAX + 1 : SIZE_MAX; char stack_buf[1024]; if (! alloc) alloc = &stdlib_allocator; if (! buffer_size) { /* Allocate the initial buffer on the stack. This way, in the common case of a symlink of small size, we get away with a single small malloc() instead of a big malloc() followed by a shrinking realloc(). */ buffer = stack_buf; buffer_size = sizeof stack_buf; } buf = buffer; buf_size = buffer_size; do { /* Attempt to read the link into the current buffer. */ ssize_t link_length = preadlinkat (fd, filename, buf, buf_size); size_t link_size; if (link_length < 0) { /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1 with errno == ERANGE if the buffer is too small. */ int readlinkat_errno = errno; if (readlinkat_errno != ERANGE) { if (buf != buffer) { alloc->free (buf); errno = readlinkat_errno; } return NULL; } } link_size = link_length; if (link_size < buf_size) { buf[link_size++] = '\0'; if (buf == stack_buf) { char *b = (char *) alloc->allocate (link_size); buf_size = link_size; if (! b) break; memcpy (b, buf, link_size); buf = b; } else if (link_size < buf_size && buf != buffer && alloc->reallocate) { /* Shrink BUF before returning it. */ char *b = (char *) alloc->reallocate (buf, link_size); if (b) buf = b; } return buf; } if (buf != buffer) alloc->free (buf); if (buf_size <= buf_size_max / 2) buf_size *= 2; else if (buf_size < buf_size_max) buf_size = buf_size_max; else if (buf_size_max < SIZE_MAX) { errno = ENAMETOOLONG; return NULL; } else break; buf = (char *) alloc->allocate (buf_size); } while (buf); if (alloc->die) alloc->die (buf_size); errno = ENOMEM; return NULL; } freedink-108.4+dfsg/gnulib/lib/mempcpy.c0000644000175000017500000000200212330466613015662 0ustar meme/* Copy memory area and return pointer after last written byte. Copyright (C) 2003, 2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #include /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ void * mempcpy (void *dest, const void *src, size_t n) { return (char *) memcpy (dest, src, n) + n; } freedink-108.4+dfsg/gnulib/lib/intprops.h0000644000175000017500000003507112330466613016107 0ustar meme/* intprops.h -- properties of integer types Copyright (C) 2001-2005, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert. */ #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H #include /* Return an integer value, converted to the same type as the integer expression E after integer type promotion. V is the unconverted value. */ #define _GL_INT_CONVERT(e, v) (0 * (e) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see . */ #define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v)) /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ /* True if the arithmetic type T is an integer type. bool counts as an integer. */ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if negative values of the signed integer type T use two's complement, ones' complement, or signed magnitude representation, respectively. Much GNU code assumes two's complement, but some people like to be portable to all possible C hosts. */ #define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) #define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) #define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) /* True if the signed integer expression E uses two's complement. */ #define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1) /* True if the arithmetic type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) /* Return 1 if the integer expression E, after integer promotion, has a signed type. */ #define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) /* Minimum and maximum values for integer types and expressions. These macros have undefined behavior if T is signed and has padding bits. If this is a problem for you, please let us know how to fix it for your host. */ /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) 0 \ : TYPE_SIGNED_MAGNITUDE (t) \ ? ~ (t) 0 \ : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) /* The maximum and minimum values for the type of the expression E, after integer promotion. E should not have side effects. */ #define _GL_INT_MINIMUM(e) \ (_GL_INT_SIGNED (e) \ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_CONVERT (e, 0)) #define _GL_INT_MAXIMUM(e) \ (_GL_INT_SIGNED (e) \ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1) /* Return 1 if the __typeof__ keyword works. This could be done by 'configure', but for now it's easier to do it by hand. */ #if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \ || (0x5110 <= __SUNPRO_C && !__STDC__)) # define _GL_HAVE___TYPEOF__ 1 #else # define _GL_HAVE___TYPEOF__ 0 #endif /* Return 1 if the integer type or expression T might be signed. Return 0 if it is definitely unsigned. This macro does not evaluate its argument, and expands to an integer constant expression. */ #if _GL_HAVE___TYPEOF__ # define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) #else # define _GL_SIGNED_TYPE_OR_EXPR(t) 1 #endif /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ #define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) /* Bound on length of the string representing an integer type or expression T. Subtract 1 for the sign bit if T is signed, and then add 1 more for a minus sign if needed. Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is signed, this macro may overestimate the true bound by one byte when applied to unsigned types of size 2, 4, 16, ... bytes. */ #define INT_STRLEN_BOUND(t) \ (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \ - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + _GL_SIGNED_TYPE_OR_EXPR (t)) /* Bound on buffer size needed to represent an integer type or expression T, including the terminating null. */ #define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. They do not rely on undefined or implementation-defined behavior. Their implementations are simple and straightforward, but they are a bit harder to use than the INT__OVERFLOW macros described below. Example usage: long int i = ...; long int j = ...; if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX)) printf ("multiply would overflow"); else printf ("product is %ld", i * j); Restrictions on *_RANGE_OVERFLOW macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. The arithmetic arguments (including the MIN and MAX arguments) must be of the same integer type after the usual arithmetic conversions, and the type must have minimum value MIN and maximum MAX. Unsigned types should use a zero MIN of the proper type. These macros are tuned for constant MIN and MAX. For commutative operations such as A + B, they are also tuned for constant B. */ /* Return 1 if A + B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (a) < (min) - (b) \ : (max) - (b) < (a)) /* Return 1 if A - B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (max) + (b) < (a) \ : (a) < (min) + (b)) /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ ((min) < 0 \ ? (a) < - (max) \ : 0 < (a)) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle bugs in Sun C 5.11 2010/08/13 and other compilers; see . */ #define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? ((a) < 0 \ ? (a) < (max) / (b) \ : (b) == -1 \ ? 0 \ : (min) / (b) < (a)) \ : (b) == 0 \ ? 0 \ : ((a) < 0 \ ? (a) < (min) / (b) \ : (max) / (b) < (a))) /* Return 1 if A / B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. */ #define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \ ((min) < 0 && (b) == -1 && (a) < - (max)) /* Return 1 if A % B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. Mathematically, % should never overflow, but on x86-like hosts INT_MIN % -1 traps, and the C standard permits this, so treat this as an overflow too. */ #define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \ INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max) /* Return 1 if A << B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Here, MIN and MAX are for A only, and B need not be of the same type as the other arguments. The C standard says that behavior is undefined for shifts unless 0 <= B < wordwidth, and that when A is negative then A << B has undefined behavior and A >> B has implementation-defined behavior, but do not check these other restrictions. */ #define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \ ((a) < 0 \ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume that the result (e.g., A + B) has that type. */ #define _GL_ADD_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? (b) <= (a) + (b) \ : (b) < 0 ? (a) <= (a) + (b) \ : (a) + (b) < (b)) #define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? 1 \ : (b) < 0 ? (a) - (b) <= (a) \ : (a) < (b)) #define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) #define _GL_DIVIDE_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (b) <= (a) + (b) - 1 \ : (b) < 0 && (a) + (b) <= (a)) #define _GL_REMAINDER_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \ : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max)) /* Return a nonzero value if A is a mathematical multiple of B, where A is unsigned, B is negative, and MAX is the maximum value of A's type. A's type must be the same as (A % B)'s type. Normally (A % -B == 0) suffices, but things get tricky if -B would overflow. */ #define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \ (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \ ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \ ? (a) \ : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \ : (a) % - (b)) \ == 0) /* Integer overflow checks. The INT__OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. They work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. Example usage: long int i = ...; long int j = ...; if (INT_MULTIPLY_OVERFLOW (i, j)) printf ("multiply would overflow"); else printf ("product is %ld", i * j); These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. These macros are tuned for their last argument being a constant. Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ #define INT_ADD_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) #define INT_NEGATE_OVERFLOW(a) \ INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW) #define INT_REMAINDER_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW) #define INT_LEFT_SHIFT_OVERFLOW(a, b) \ INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \ _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) /* Return 1 if the expression A B would overflow, where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test, assuming MIN and MAX are the minimum and maximum for the result type. Arguments should be free of side effects. */ #define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \ op_result_overflow (a, b, \ _GL_INT_MINIMUM (0 * (b) + (a)), \ _GL_INT_MAXIMUM (0 * (b) + (a))) #endif /* _GL_INTPROPS_H */ freedink-108.4+dfsg/gnulib/lib/strnlen.c0000644000175000017500000000216412330466613015706 0ustar meme/* Find the length of STRING, but scan at most MAXLEN characters. Copyright (C) 2005-2007, 2009-2014 Free Software Foundation, Inc. Written by Simon Josefsson. 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, see . */ #include #include /* Find the length of STRING, but scan at most MAXLEN characters. If no '\0' terminator is found in that many characters, return MAXLEN. */ size_t strnlen (const char *string, size_t maxlen) { const char *end = memchr (string, '\0', maxlen); return end ? (size_t) (end - string) : maxlen; } freedink-108.4+dfsg/gnulib/lib/getopt_int.h0000644000175000017500000001174212330466613016404 0ustar meme/* Internal declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2014 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 3 of the License, 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, see . */ #ifndef _GETOPT_INT_H #define _GETOPT_INT_H 1 #include extern int _getopt_internal (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, int __posixly_correct); /* Reentrant versions which can handle parsing multiple argument vectors at the same time. */ /* 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, or by calling getopt. 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 __ord { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER }; /* 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; /* See __ord above. */ enum __ord __ordering; /* If the POSIXLY_CORRECT environment variable is set or getopt was called. */ 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 **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, struct _getopt_data *__data, int __posixly_correct); extern int _getopt_long_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); extern int _getopt_long_only_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); #endif /* getopt_int.h */ freedink-108.4+dfsg/gnulib/lib/progname.c0000644000175000017500000000615012330466613016030 0ustar meme/* Program name management. Copyright (C) 2001-2003, 2005-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2001. 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 3 of the License, 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, see . */ #include /* Specification. */ #undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */ #include "progname.h" #include /* get program_invocation_name declaration */ #include #include #include /* String containing name the program is called with. To be initialized by main(). */ const char *program_name = NULL; /* Set program_name, based on argv[0]. argv0 must be a string allocated with indefinite extent, and must not be modified after this call. */ void set_program_name (const char *argv0) { /* libtool creates a temporary executable whose name is sometimes prefixed with "lt-" (depends on the platform). It also makes argv[0] absolute. But the name of the temporary executable is a detail that should not be visible to the end user and to the test suite. Remove this "/.libs/" or "/.libs/lt-" prefix here. */ const char *slash; const char *base; /* Sanity check. POSIX requires the invoking process to pass a non-NULL argv[0]. */ if (argv0 == NULL) { /* It's a bug in the invoking program. Help diagnosing it. */ fputs ("A NULL argv[0] was passed through an exec system call.\n", stderr); abort (); } slash = strrchr (argv0, '/'); base = (slash != NULL ? slash + 1 : argv0); if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0) { argv0 = base; if (strncmp (base, "lt-", 3) == 0) { argv0 = base + 3; /* On glibc systems, remove the "lt-" prefix from the variable program_invocation_short_name. */ #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME program_invocation_short_name = (char *) argv0; #endif } } /* But don't strip off a leading / in general, because when the user runs /some/hidden/place/bin/cp foo foo he should get the error message /some/hidden/place/bin/cp: `foo' and `foo' are the same file not cp: `foo' and `foo' are the same file */ program_name = argv0; /* On glibc systems, the error() function comes from libc and uses the variable program_invocation_name, not program_name. So set this variable as well. */ #if HAVE_DECL_PROGRAM_INVOCATION_NAME program_invocation_name = (char *) argv0; #endif } freedink-108.4+dfsg/gnulib/lib/cloexec.h0000644000175000017500000000273412330466613015653 0ustar meme/* closexec.c - set or clear the close-on-exec descriptor flag Copyright (C) 2004, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Set the 'FD_CLOEXEC' flag of DESC if VALUE is true, or clear the flag if VALUE is false. Return 0 on success, or -1 on error with 'errno' set. Note that on MingW, this function does NOT protect DESC from being inherited into spawned children. Instead, either use dup_cloexec followed by closing the original DESC, or use interfaces such as open or pipe2 that accept flags like O_CLOEXEC to create DESC non-inheritable in the first place. */ int set_cloexec_flag (int desc, bool value); /* Duplicates a file handle FD, while marking the copy to be closed prior to exec or spawn. Returns -1 and sets errno if FD could not be duplicated. */ int dup_cloexec (int fd); freedink-108.4+dfsg/gnulib/lib/same.c0000644000175000017500000000720112330466613015143 0ustar meme/* Determine whether two file names refer to the same file. Copyright (C) 1997-2000, 2002-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #include #include #include #include #include #include #include #include #include #include #include #ifndef _POSIX_NAME_MAX # define _POSIX_NAME_MAX 14 #endif #include "same.h" #include "dirname.h" #include "error.h" #include "same-inode.h" #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif /* Return nonzero if SOURCE and DEST point to the same name in the same directory. */ bool same_name (const char *source, const char *dest) { /* Compare the basenames. */ char const *source_basename = last_component (source); char const *dest_basename = last_component (dest); size_t source_baselen = base_len (source_basename); size_t dest_baselen = base_len (dest_basename); bool identical_basenames = (source_baselen == dest_baselen && memcmp (source_basename, dest_basename, dest_baselen) == 0); bool compare_dirs = identical_basenames; bool same = false; #if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX /* This implementation silently truncates components of file names. If the base names might be truncated, check whether the truncated base names are the same, while checking the directories. */ size_t slen_max = HAVE_LONG_FILE_NAMES ? 255 : _POSIX_NAME_MAX; size_t min_baselen = MIN (source_baselen, dest_baselen); if (slen_max <= min_baselen && memcmp (source_basename, dest_basename, slen_max) == 0) compare_dirs = true; #endif if (compare_dirs) { struct stat source_dir_stats; struct stat dest_dir_stats; char *source_dirname, *dest_dirname; /* Compare the parent directories (via the device and inode numbers). */ source_dirname = dir_name (source); dest_dirname = dir_name (dest); if (stat (source_dirname, &source_dir_stats)) { /* Shouldn't happen. */ error (1, errno, "%s", source_dirname); } if (stat (dest_dirname, &dest_dir_stats)) { /* Shouldn't happen. */ error (1, errno, "%s", dest_dirname); } same = SAME_INODE (source_dir_stats, dest_dir_stats); #if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX if (same && ! identical_basenames) { long name_max = (errno = 0, pathconf (dest_dirname, _PC_NAME_MAX)); if (name_max < 0) { if (errno) { /* Shouldn't happen. */ error (1, errno, "%s", dest_dirname); } same = false; } else same = (name_max <= min_baselen && memcmp (source_basename, dest_basename, name_max) == 0); } #endif free (source_dirname); free (dest_dirname); } return same; } freedink-108.4+dfsg/gnulib/lib/memrchr.c0000644000175000017500000001310112330466613015647 0ustar meme/* memrchr -- find the last occurrence of a byte in a memory block Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2014 Free Software Foundation, Inc. Based on strlen implementation by Torbjorn Granlund (tege@sics.se), with help from Dan Sahlin (dan@sics.se) and commentary by Jim Blandy (jimb@ai.mit.edu); adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu), and implemented by Roland McGrath (roland@ai.mit.edu). 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 3 of the License, 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, see . */ #if defined _LIBC # include #else # include # define reg_char char #endif #include #include #undef __memrchr #ifdef _LIBC # undef memrchr #endif #ifndef weak_alias # define __memrchr memrchr #endif /* Search no more than N bytes of S for C. */ void * __memrchr (void const *s, int c_in, size_t n) { /* On 32-bit hardware, choosing longword to be a 32-bit unsigned long instead of a 64-bit uintmax_t tends to give better performance. On 64-bit hardware, unsigned long is generally 64 bits already. Change this typedef to experiment with performance. */ typedef unsigned long int longword; const unsigned char *char_ptr; const longword *longword_ptr; longword repeated_one; longword repeated_c; unsigned reg_char c; c = (unsigned char) c_in; /* Handle the last few bytes by reading one byte at a time. Do this until CHAR_PTR is aligned on a longword boundary. */ for (char_ptr = (const unsigned char *) s + n; n > 0 && (size_t) char_ptr % sizeof (longword) != 0; --n) if (*--char_ptr == c) return (void *) char_ptr; longword_ptr = (const longword *) char_ptr; /* All these elucidatory comments refer to 4-byte longwords, but the theory applies equally well to any size longwords. */ /* Compute auxiliary longword values: repeated_one is a value which has a 1 in every byte. repeated_c has c in every byte. */ repeated_one = 0x01010101; repeated_c = c | (c << 8); repeated_c |= repeated_c << 16; if (0xffffffffU < (longword) -1) { repeated_one |= repeated_one << 31 << 1; repeated_c |= repeated_c << 31 << 1; if (8 < sizeof (longword)) { size_t i; for (i = 64; i < sizeof (longword) * 8; i *= 2) { repeated_one |= repeated_one << i; repeated_c |= repeated_c << i; } } } /* Instead of the traditional loop which tests each byte, we will test a longword at a time. The tricky part is testing if *any of the four* bytes in the longword in question are equal to c. We first use an xor with repeated_c. This reduces the task to testing whether *any of the four* bytes in longword1 is zero. We compute tmp = ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7). That is, we perform the following operations: 1. Subtract repeated_one. 2. & ~longword1. 3. & a mask consisting of 0x80 in every byte. Consider what happens in each byte: - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff, and step 3 transforms it into 0x80. A carry can also be propagated to more significant bytes. - If a byte of longword1 is nonzero, let its lowest 1 bit be at position k (0 <= k <= 7); so the lowest k bits are 0. After step 1, the byte ends in a single bit of value 0 and k bits of value 1. After step 2, the result is just k bits of value 1: 2^k - 1. After step 3, the result is 0. And no carry is produced. So, if longword1 has only non-zero bytes, tmp is zero. Whereas if longword1 has a zero byte, call j the position of the least significant zero byte. Then the result has a zero at positions 0, ..., j-1 and a 0x80 at position j. We cannot predict the result at the more significant bytes (positions j+1..3), but it does not matter since we already have a non-zero bit at position 8*j+7. So, the test whether any byte in longword1 is zero is equivalent to testing whether tmp is nonzero. */ while (n >= sizeof (longword)) { longword longword1 = *--longword_ptr ^ repeated_c; if ((((longword1 - repeated_one) & ~longword1) & (repeated_one << 7)) != 0) { longword_ptr++; break; } n -= sizeof (longword); } char_ptr = (const unsigned char *) longword_ptr; /* At this point, we know that either n < sizeof (longword), or one of the sizeof (longword) bytes starting at char_ptr is == c. On little-endian machines, we could determine the first such byte without any further memory accesses, just by looking at the tmp result from the last loop iteration. But this does not work on big-endian machines. Choose code that works in both cases. */ while (n-- > 0) { if (*--char_ptr == c) return (void *) char_ptr; } return NULL; } #ifdef weak_alias weak_alias (__memrchr, memrchr) #endif freedink-108.4+dfsg/gnulib/lib/verify.h0000644000175000017500000002536412330466613015541 0ustar meme/* Compile-time assert-like macros. Copyright (C) 2005-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ #ifndef _GL_VERIFY_H #define _GL_VERIFY_H /* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per C11. This is supported by GCC 4.6.0 and later, in C mode, and its use here generates easier-to-read diagnostics when verify (R) fails. Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per C++11. This will likely be supported by future GCC versions, in C++ mode. Use this only with GCC. If we were willing to slow 'configure' down we could also use it with other compilers, but since this affects only the quality of diagnostics, why bother? */ #if (4 < __GNUC__ + (6 <= __GNUC_MINOR__) \ && (201112L <= __STDC_VERSION__ || !defined __STRICT_ANSI__) \ && !defined __cplusplus) # define _GL_HAVE__STATIC_ASSERT 1 #endif /* The condition (99 < __GNUC__) is temporary, until we know about the first G++ release that supports static_assert. */ #if (99 < __GNUC__) && defined __cplusplus # define _GL_HAVE_STATIC_ASSERT 1 #endif /* FreeBSD 9.1 , included by and lots of other system headers, defines a conflicting _Static_assert that is no better than ours; override it. */ #ifndef _GL_HAVE_STATIC_ASSERT # include # undef _Static_assert #endif /* Each of these macros verifies that its argument R is nonzero. To be portable, R should be an integer constant expression. Unlike assert (R), there is no run-time overhead. If _Static_assert works, verify (R) uses it directly. Similarly, _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct that is an operand of sizeof. The code below uses several ideas for C++ compilers, and for C compilers that do not support _Static_assert: * The first step is ((R) ? 1 : -1). Given an expression R, of integral or boolean or floating-point type, this yields an expression of integral type, whose value is later verified to be constant and nonnegative. * Next this expression W is wrapped in a type struct _gl_verify_type { unsigned int _gl_verify_error_if_negative: W; }. If W is negative, this yields a compile-time error. No compiler can deal with a bit-field of negative size. One might think that an array size check would have the same effect, that is, that the type struct { unsigned int dummy[W]; } would work as well. However, inside a function, some compilers (such as C++ compilers and GNU C) allow local parameters and variables inside array size expressions. With these compilers, an array size check would not properly diagnose this misuse of the verify macro: void function (int n) { verify (n < 0); } * For the verify macro, the struct _gl_verify_type will need to somehow be embedded into a declaration. To be portable, this declaration must declare an object, a constant, a function, or a typedef name. If the declared entity uses the type directly, such as in struct dummy {...}; typedef struct {...} dummy; extern struct {...} *dummy; extern void dummy (struct {...} *); extern struct {...} *dummy (void); two uses of the verify macro would yield colliding declarations if the entity names are not disambiguated. A workaround is to attach the current line number to the entity name: #define _GL_CONCAT0(x, y) x##y #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) extern struct {...} * _GL_CONCAT (dummy, __LINE__); But this has the problem that two invocations of verify from within the same macro would collide, since the __LINE__ value would be the same for both invocations. (The GCC __COUNTER__ macro solves this problem, but is not portable.) A solution is to use the sizeof operator. It yields a number, getting rid of the identity of the type. Declarations like extern int dummy [sizeof (struct {...})]; extern void dummy (int [sizeof (struct {...})]); extern int (*dummy (void)) [sizeof (struct {...})]; can be repeated. * Should the implementation use a named struct or an unnamed struct? Which of the following alternatives can be used? extern int dummy [sizeof (struct {...})]; extern int dummy [sizeof (struct _gl_verify_type {...})]; extern void dummy (int [sizeof (struct {...})]); extern void dummy (int [sizeof (struct _gl_verify_type {...})]); extern int (*dummy (void)) [sizeof (struct {...})]; extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})]; In the second and sixth case, the struct type is exported to the outer scope; two such declarations therefore collide. GCC warns about the first, third, and fourth cases. So the only remaining possibility is the fifth case: extern int (*dummy (void)) [sizeof (struct {...})]; * GCC warns about duplicate declarations of the dummy function if -Wredundant-decls is used. GCC 4.3 and later have a builtin __COUNTER__ macro that can let us generate unique identifiers for each dummy function, to suppress this warning. * This implementation exploits the fact that older versions of GCC, which do not support _Static_assert, also do not warn about the last declaration mentioned above. * GCC warns if -Wnested-externs is enabled and verify() is used within a function body; but inside a function, you can always arrange to use verify_expr() instead. * In C++, any struct definition inside sizeof is invalid. Use a template type to work around the problem. */ /* Concatenate two preprocessor tokens. */ #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) #define _GL_CONCAT0(x, y) x##y /* _GL_COUNTER is an integer, preferably one that changes each time we use it. Use __COUNTER__ if it works, falling back on __LINE__ otherwise. __LINE__ isn't perfect, but it's better than a constant. */ #if defined __COUNTER__ && __COUNTER__ != __COUNTER__ # define _GL_COUNTER __COUNTER__ #else # define _GL_COUNTER __LINE__ #endif /* Generate a symbol with the given prefix, making it unique if possible. */ #define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER) /* Verify requirement R at compile-time, as an integer constant expression that returns 1. If R is false, fail at compile-time, preferably with a diagnostic that includes the string-literal DIAGNOSTIC. */ #define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \ (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC))) #ifdef __cplusplus # if !GNULIB_defined_struct__gl_verify_type template struct _gl_verify_type { unsigned int _gl_verify_error_if_negative: w; }; # define GNULIB_defined_struct__gl_verify_type 1 # endif # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ _gl_verify_type<(R) ? 1 : -1> #elif defined _GL_HAVE__STATIC_ASSERT # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ struct { \ _Static_assert (R, DIAGNOSTIC); \ int _gl_dummy; \ } #else # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; } #endif /* Verify requirement R at compile-time, as a declaration without a trailing ';'. If R is false, fail at compile-time, preferably with a diagnostic that includes the string-literal DIAGNOSTIC. Unfortunately, unlike C11, this implementation must appear as an ordinary declaration, and cannot appear inside struct { ... }. */ #ifdef _GL_HAVE__STATIC_ASSERT # define _GL_VERIFY _Static_assert #else # define _GL_VERIFY(R, DIAGNOSTIC) \ extern int (*_GL_GENSYM (_gl_verify_function) (void)) \ [_GL_VERIFY_TRUE (R, DIAGNOSTIC)] #endif /* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */ #ifdef _GL_STATIC_ASSERT_H # if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert # define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC) # endif # if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert # define static_assert _Static_assert /* C11 requires this #define. */ # endif #endif /* @assert.h omit start@ */ /* Each of these macros verifies that its argument R is nonzero. To be portable, R should be an integer constant expression. Unlike assert (R), there is no run-time overhead. There are two macros, since no single macro can be used in all contexts in C. verify_true (R) is for scalar contexts, including integer constant expression contexts. verify (R) is for declaration contexts, e.g., the top level. */ /* Verify requirement R at compile-time, as an integer constant expression. Return 1. This is equivalent to verify_expr (R, 1). verify_true is obsolescent; please use verify_expr instead. */ #define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")") /* Verify requirement R at compile-time. Return the value of the expression E. */ #define verify_expr(R, E) \ (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E)) /* Verify requirement R at compile-time, as a declaration without a trailing ';'. */ #define verify(R) _GL_VERIFY (R, "verify (" #R ")") #ifndef __has_builtin # define __has_builtin(x) 0 #endif /* Assume that R always holds. This lets the compiler optimize accordingly. R should not have side-effects; it may or may not be evaluated. Behavior is undefined if R is false. */ #if (__has_builtin (__builtin_unreachable) \ || 4 < __GNUC__ + (5 <= __GNUC_MINOR__)) # define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) #elif 1200 <= _MSC_VER # define assume(R) __assume (R) #elif (defined lint \ && (__has_builtin (__builtin_trap) \ || 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)))) /* Doing it this way helps various packages when configured with --enable-gcc-warnings, which compiles with -Dlint. It's nicer when 'assume' silences warnings even with older GCCs. */ # define assume(R) ((R) ? (void) 0 : __builtin_trap ()) #else # define assume(R) ((void) (0 && (R))) #endif /* @assert.h omit end@ */ #endif freedink-108.4+dfsg/gnulib/lib/errno.in.h0000644000175000017500000001646312330466613015767 0ustar meme/* A POSIX-like . Copyright (C) 2008-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _@GUARD_PREFIX@_ERRNO_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_ERRNO_H@ #ifndef _@GUARD_PREFIX@_ERRNO_H #define _@GUARD_PREFIX@_ERRNO_H /* On native Windows platforms, many macros are not defined. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* These are the same values as defined by MSVC 10, for interoperability. */ # ifndef ENOMSG # define ENOMSG 122 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 111 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 121 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 134 # define GNULIB_defined_EPROTO 1 # endif # ifndef EBADMSG # define EBADMSG 104 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 132 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 129 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 117 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 106 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ECANCELED # define ECANCELED 105 # define GNULIB_defined_ECANCELED 1 # endif # ifndef EOWNERDEAD # define EOWNERDEAD 133 # define GNULIB_defined_EOWNERDEAD 1 # endif # ifndef ENOTRECOVERABLE # define ENOTRECOVERABLE 127 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EINPROGRESS # define EINPROGRESS 112 # define EALREADY 103 # define ENOTSOCK 128 # define EDESTADDRREQ 109 # define EMSGSIZE 115 # define EPROTOTYPE 136 # define ENOPROTOOPT 123 # define EPROTONOSUPPORT 135 # define EOPNOTSUPP 130 # define EAFNOSUPPORT 102 # define EADDRINUSE 100 # define EADDRNOTAVAIL 101 # define ENETDOWN 116 # define ENETUNREACH 118 # define ECONNRESET 108 # define ENOBUFS 119 # define EISCONN 113 # define ENOTCONN 126 # define ETIMEDOUT 138 # define ECONNREFUSED 107 # define ELOOP 114 # define EHOSTUNREACH 110 # define EWOULDBLOCK 140 # define GNULIB_defined_ESOCK 1 # endif # ifndef ETXTBSY # define ETXTBSY 139 # define ENODATA 120 /* not required by POSIX */ # define ENOSR 124 /* not required by POSIX */ # define ENOSTR 125 /* not required by POSIX */ # define ETIME 137 /* not required by POSIX */ # define EOTHER 131 /* not required by POSIX */ # define GNULIB_defined_ESTREAMS 1 # endif /* These are intentionally the same values as the WSA* error numbers, defined in . */ # define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ # define EPFNOSUPPORT 10046 /* not required by POSIX */ # define ESHUTDOWN 10058 /* not required by POSIX */ # define ETOOMANYREFS 10059 /* not required by POSIX */ # define EHOSTDOWN 10064 /* not required by POSIX */ # define EPROCLIM 10067 /* not required by POSIX */ # define EUSERS 10068 /* not required by POSIX */ # define EDQUOT 10069 # define ESTALE 10070 # define EREMOTE 10071 /* not required by POSIX */ # define GNULIB_defined_EWINSOCK 1 # endif /* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ # if @EMULTIHOP_HIDDEN@ # define EMULTIHOP @EMULTIHOP_VALUE@ # define GNULIB_defined_EMULTIHOP 1 # endif # if @ENOLINK_HIDDEN@ # define ENOLINK @ENOLINK_VALUE@ # define GNULIB_defined_ENOLINK 1 # endif # if @EOVERFLOW_HIDDEN@ # define EOVERFLOW @EOVERFLOW_VALUE@ # define GNULIB_defined_EOVERFLOW 1 # endif /* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. Likewise, on NonStop Kernel, EDQUOT is not defined. Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. Note: When one of these systems defines some of these macros some day, binaries will have to be recompiled so that they recognizes the new errno values from the system. */ # ifndef ENOMSG # define ENOMSG 2000 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 2001 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 2002 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 2003 # define GNULIB_defined_EPROTO 1 # endif # ifndef EMULTIHOP # define EMULTIHOP 2004 # define GNULIB_defined_EMULTIHOP 1 # endif # ifndef EBADMSG # define EBADMSG 2005 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 2006 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 2007 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 2011 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 2012 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ESTALE # define ESTALE 2009 # define GNULIB_defined_ESTALE 1 # endif # ifndef EDQUOT # define EDQUOT 2010 # define GNULIB_defined_EDQUOT 1 # endif # ifndef ECANCELED # define ECANCELED 2008 # define GNULIB_defined_ECANCELED 1 # endif /* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not defined. */ # ifndef EOWNERDEAD # if defined __sun /* Use the same values as defined for Solaris >= 8, for interoperability. */ # define EOWNERDEAD 58 # define ENOTRECOVERABLE 59 # elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* We have a conflict here: pthreads-win32 defines these values differently than MSVC 10. It's hairy to decide which one to use. */ # if defined __MINGW32__ && !defined USE_WINDOWS_THREADS /* Use the same values as defined by pthreads-win32, for interoperability. */ # define EOWNERDEAD 43 # define ENOTRECOVERABLE 44 # else /* Use the same values as defined by MSVC 10, for interoperability. */ # define EOWNERDEAD 133 # define ENOTRECOVERABLE 127 # endif # else # define EOWNERDEAD 2013 # define ENOTRECOVERABLE 2014 # endif # define GNULIB_defined_EOWNERDEAD 1 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EILSEQ # define EILSEQ 2015 # define GNULIB_defined_EILSEQ 1 # endif #endif /* _@GUARD_PREFIX@_ERRNO_H */ #endif /* _@GUARD_PREFIX@_ERRNO_H */ freedink-108.4+dfsg/gnulib/lib/malloca.c0000644000175000017500000001157612330466613015640 0ustar meme/* Safe automatic memory allocation. Copyright (C) 2003, 2006-2007, 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2003. 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, see . */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Specification. */ #include "malloca.h" #include #include "verify.h" /* The speed critical point in this file is freea() applied to an alloca() result: it must be fast, to match the speed of alloca(). The speed of mmalloca() and freea() in the other case are not critical, because they are only invoked for big memory sizes. */ #if HAVE_ALLOCA /* Store the mmalloca() results in a hash table. This is needed to reliably distinguish a mmalloca() result and an alloca() result. Although it is possible that the same pointer is returned by alloca() and by mmalloca() at different times in the same application, it does not lead to a bug in freea(), because: - Before a pointer returned by alloca() can point into malloc()ed memory, the function must return, and once this has happened the programmer must not call freea() on it anyway. - Before a pointer returned by mmalloca() can point into the stack, it must be freed. The only function that can free it is freea(), and when freea() frees it, it also removes it from the hash table. */ #define MAGIC_NUMBER 0x1415fb4a #define MAGIC_SIZE sizeof (int) /* This is how the header info would look like without any alignment considerations. */ struct preliminary_header { void *next; int magic; }; /* But the header's size must be a multiple of sa_alignment_max. */ #define HEADER_SIZE \ (((sizeof (struct preliminary_header) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max) union header { void *next; struct { char room[HEADER_SIZE - MAGIC_SIZE]; int word; } magic; }; verify (HEADER_SIZE == sizeof (union header)); /* We make the hash table quite big, so that during lookups the probability of empty hash buckets is quite high. There is no need to make the hash table resizable, because when the hash table gets filled so much that the lookup becomes slow, it means that the application has memory leaks. */ #define HASH_TABLE_SIZE 257 static void * mmalloca_results[HASH_TABLE_SIZE]; #endif void * mmalloca (size_t n) { #if HAVE_ALLOCA /* Allocate one more word, that serves as an indicator for malloc()ed memory, so that freea() of an alloca() result is fast. */ size_t nplus = n + HEADER_SIZE; if (nplus >= n) { void *p = malloc (nplus); if (p != NULL) { size_t slot; union header *h = p; p = h + 1; /* Put a magic number into the indicator word. */ h->magic.word = MAGIC_NUMBER; /* Enter p into the hash table. */ slot = (uintptr_t) p % HASH_TABLE_SIZE; h->next = mmalloca_results[slot]; mmalloca_results[slot] = p; return p; } } /* Out of memory. */ return NULL; #else # if !MALLOC_0_IS_NONNULL if (n == 0) n = 1; # endif return malloc (n); #endif } #if HAVE_ALLOCA void freea (void *p) { /* mmalloca() may have returned NULL. */ if (p != NULL) { /* Attempt to quickly distinguish the mmalloca() result - which has a magic indicator word - and the alloca() result - which has an uninitialized indicator word. It is for this test that sa_increment additional bytes are allocated in the alloca() case. */ if (((int *) p)[-1] == MAGIC_NUMBER) { /* Looks like a mmalloca() result. To see whether it really is one, perform a lookup in the hash table. */ size_t slot = (uintptr_t) p % HASH_TABLE_SIZE; void **chain = &mmalloca_results[slot]; for (; *chain != NULL;) { union header *h = p; if (*chain == p) { /* Found it. Remove it from the hash table and free it. */ union header *p_begin = h - 1; *chain = p_begin->next; free (p_begin); return; } h = *chain; chain = &h[-1].next; } } /* At this point, we know it was not a mmalloca() result. */ } } #endif freedink-108.4+dfsg/gnulib/lib/dirent-private.h0000644000175000017500000000275512330466613017171 0ustar meme/* Private details of the DIR type. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef _DIRENT_PRIVATE_H #define _DIRENT_PRIVATE_H 1 #define WIN32_LEAN_AND_MEAN #include struct gl_directory { /* Status, or error code to produce in next readdir() call. -2 means the end of the directory is already reached, -1 means the entry was already filled by FindFirstFile, 0 means the entry needs to be filled using FindNextFile. A positive value is an error code. */ int status; /* Handle, reading the directory, at current position. */ HANDLE current; /* Found directory entry. */ WIN32_FIND_DATA entry; /* Argument to pass to FindFirstFile. It consists of the absolutized directory name, followed by a directory separator and the wildcards. */ char dir_name_mask[1]; }; #endif /* _DIRENT_PRIVATE_H */ freedink-108.4+dfsg/gnulib/lib/strndup.c0000644000175000017500000000202412330466613015713 0ustar meme/* A replacement function, for systems that lack strndup. Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ #include #include #include char * strndup (char const *s, size_t n) { size_t len = strnlen (s, n); char *new = malloc (len + 1); if (new == NULL) return NULL; new[len] = '\0'; return memcpy (new, s, len); } freedink-108.4+dfsg/gnulib/lib/cloexec.c0000644000175000017500000000442712330466613015647 0ustar meme/* closexec.c - set or clear the close-on-exec descriptor flag Copyright (C) 1991, 2004-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . The code is taken from glibc/manual/llio.texi */ #include #include "cloexec.h" #include #include #include /* Set the 'FD_CLOEXEC' flag of DESC if VALUE is true, or clear the flag if VALUE is false. Return 0 on success, or -1 on error with 'errno' set. Note that on MingW, this function does NOT protect DESC from being inherited into spawned children. Instead, either use dup_cloexec followed by closing the original DESC, or use interfaces such as open or pipe2 that accept flags like O_CLOEXEC to create DESC non-inheritable in the first place. */ int set_cloexec_flag (int desc, bool value) { #ifdef F_SETFD int flags = fcntl (desc, F_GETFD, 0); if (0 <= flags) { int newflags = (value ? flags | FD_CLOEXEC : flags & ~FD_CLOEXEC); if (flags == newflags || fcntl (desc, F_SETFD, newflags) != -1) return 0; } return -1; #else /* !F_SETFD */ /* Use dup2 to reject invalid file descriptors; the cloexec flag will be unaffected. */ if (desc < 0) { errno = EBADF; return -1; } if (dup2 (desc, desc) < 0) /* errno is EBADF here. */ return -1; /* There is nothing we can do on this kind of platform. Punt. */ return 0; #endif /* !F_SETFD */ } /* Duplicates a file handle FD, while marking the copy to be closed prior to exec or spawn. Returns -1 and sets errno if FD could not be duplicated. */ int dup_cloexec (int fd) { return fcntl (fd, F_DUPFD_CLOEXEC, 0); } freedink-108.4+dfsg/gnulib/lib/sys_stat.in.h0000644000175000017500000004767112330466613016520 0ustar meme/* Provide a more complete sys/stat header file. Copyright (C) 2005-2014 Free Software Foundation, Inc. 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, see . */ /* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ /* This file is supposed to be used on platforms where is incomplete. It is intended to provide definitions and prototypes needed by an application. Start with what the system provides. */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_sys_stat_h /* Special invocation convention. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_SYS_STAT_H /* Get nlink_t. May also define off_t to a 64-bit type on native Windows. */ #include /* Get struct timespec. */ #include /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #ifndef _@GUARD_PREFIX@_SYS_STAT_H #define _@GUARD_PREFIX@_SYS_STAT_H /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Before doing "#define mkdir rpl_mkdir" below, we need to include all headers that may declare mkdir(). Native Windows platforms declare mkdir in and/or , not in . */ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include /* mingw32, mingw64 */ # include /* mingw64, MSVC 9 */ #endif /* Native Windows platforms declare umask() in . */ #if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif /* Large File Support on native Windows. */ #if @WINDOWS_64_BIT_ST_SIZE@ # define stat _stati64 #endif #ifndef S_IFIFO # ifdef _S_IFIFO # define S_IFIFO _S_IFIFO # endif #endif #ifndef S_IFMT # define S_IFMT 0170000 #endif #if STAT_MACROS_BROKEN # undef S_ISBLK # undef S_ISCHR # undef S_ISDIR # undef S_ISFIFO # undef S_ISLNK # undef S_ISNAM # undef S_ISMPB # undef S_ISMPC # undef S_ISNWK # undef S_ISREG # undef S_ISSOCK #endif #ifndef S_ISBLK # ifdef S_IFBLK # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) # else # define S_ISBLK(m) 0 # endif #endif #ifndef S_ISCHR # ifdef S_IFCHR # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) # else # define S_ISCHR(m) 0 # endif #endif #ifndef S_ISDIR # ifdef S_IFDIR # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) # else # define S_ISDIR(m) 0 # endif #endif #ifndef S_ISDOOR /* Solaris 2.5 and up */ # define S_ISDOOR(m) 0 #endif #ifndef S_ISFIFO # ifdef S_IFIFO # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) # else # define S_ISFIFO(m) 0 # endif #endif #ifndef S_ISLNK # ifdef S_IFLNK # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) # else # define S_ISLNK(m) 0 # endif #endif #ifndef S_ISMPB /* V7 */ # ifdef S_IFMPB # define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) # define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) # else # define S_ISMPB(m) 0 # define S_ISMPC(m) 0 # endif #endif #ifndef S_ISMPX /* AIX */ # define S_ISMPX(m) 0 #endif #ifndef S_ISNAM /* Xenix */ # ifdef S_IFNAM # define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) # else # define S_ISNAM(m) 0 # endif #endif #ifndef S_ISNWK /* HP/UX */ # ifdef S_IFNWK # define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) # else # define S_ISNWK(m) 0 # endif #endif #ifndef S_ISPORT /* Solaris 10 and up */ # define S_ISPORT(m) 0 #endif #ifndef S_ISREG # ifdef S_IFREG # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # else # define S_ISREG(m) 0 # endif #endif #ifndef S_ISSOCK # ifdef S_IFSOCK # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) # else # define S_ISSOCK(m) 0 # endif #endif #ifndef S_TYPEISMQ # define S_TYPEISMQ(p) 0 #endif #ifndef S_TYPEISTMO # define S_TYPEISTMO(p) 0 #endif #ifndef S_TYPEISSEM # ifdef S_INSEM # define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) # else # define S_TYPEISSEM(p) 0 # endif #endif #ifndef S_TYPEISSHM # ifdef S_INSHD # define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) # else # define S_TYPEISSHM(p) 0 # endif #endif /* high performance ("contiguous data") */ #ifndef S_ISCTG # define S_ISCTG(p) 0 #endif /* Cray DMF (data migration facility): off line, with data */ #ifndef S_ISOFD # define S_ISOFD(p) 0 #endif /* Cray DMF (data migration facility): off line, with no data */ #ifndef S_ISOFL # define S_ISOFL(p) 0 #endif /* 4.4BSD whiteout */ #ifndef S_ISWHT # define S_ISWHT(m) 0 #endif /* If any of the following are undefined, define them to their de facto standard values. */ #if !S_ISUID # define S_ISUID 04000 #endif #if !S_ISGID # define S_ISGID 02000 #endif /* S_ISVTX is a common extension to POSIX. */ #ifndef S_ISVTX # define S_ISVTX 01000 #endif #if !S_IRUSR && S_IREAD # define S_IRUSR S_IREAD #endif #if !S_IRUSR # define S_IRUSR 00400 #endif #if !S_IRGRP # define S_IRGRP (S_IRUSR >> 3) #endif #if !S_IROTH # define S_IROTH (S_IRUSR >> 6) #endif #if !S_IWUSR && S_IWRITE # define S_IWUSR S_IWRITE #endif #if !S_IWUSR # define S_IWUSR 00200 #endif #if !S_IWGRP # define S_IWGRP (S_IWUSR >> 3) #endif #if !S_IWOTH # define S_IWOTH (S_IWUSR >> 6) #endif #if !S_IXUSR && S_IEXEC # define S_IXUSR S_IEXEC #endif #if !S_IXUSR # define S_IXUSR 00100 #endif #if !S_IXGRP # define S_IXGRP (S_IXUSR >> 3) #endif #if !S_IXOTH # define S_IXOTH (S_IXUSR >> 6) #endif #if !S_IRWXU # define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) #endif #if !S_IRWXG # define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) #endif #if !S_IRWXO # define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) #endif /* S_IXUGO is a common extension to POSIX. */ #if !S_IXUGO # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) #endif #ifndef S_IRWXUGO # define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) #endif /* Macros for futimens and utimensat. */ #ifndef UTIME_NOW # define UTIME_NOW (-1) # define UTIME_OMIT (-2) #endif #if @GNULIB_FCHMODAT@ # if !@HAVE_FCHMODAT@ _GL_FUNCDECL_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag)); _GL_CXXALIASWARN (fchmodat); #elif defined GNULIB_POSIXCHECK # undef fchmodat # if HAVE_RAW_DECL_FCHMODAT _GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FSTAT@ # if @REPLACE_FSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstat # define fstat rpl_fstat # endif _GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); # else _GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); # endif _GL_CXXALIASWARN (fstat); #elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # define fstat _fstati64 #elif defined GNULIB_POSIXCHECK # undef fstat # if HAVE_RAW_DECL_FSTAT _GL_WARN_ON_USE (fstat, "fstat has portability problems - " "use gnulib module fstat for portability"); # endif #endif #if @GNULIB_FSTATAT@ # if @REPLACE_FSTATAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstatat # define fstatat rpl_fstatat # endif _GL_FUNCDECL_RPL (fstatat, int, (int fd, char const *name, struct stat *st, int flags) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (fstatat, int, (int fd, char const *name, struct stat *st, int flags)); # else # if !@HAVE_FSTATAT@ _GL_FUNCDECL_SYS (fstatat, int, (int fd, char const *name, struct stat *st, int flags) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (fstatat, int, (int fd, char const *name, struct stat *st, int flags)); # endif _GL_CXXALIASWARN (fstatat); #elif defined GNULIB_POSIXCHECK # undef fstatat # if HAVE_RAW_DECL_FSTATAT _GL_WARN_ON_USE (fstatat, "fstatat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FUTIMENS@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens implementation relies on futimesat, which on Solaris 10 makes an invocation to futimens that is meant to invoke the libc's futimens(), not gnulib's futimens(). */ # if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef futimens # define futimens rpl_futimens # endif _GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); _GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); # else # if !@HAVE_FUTIMENS@ _GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif _GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif # if @HAVE_FUTIMENS@ _GL_CXXALIASWARN (futimens); # endif #elif defined GNULIB_POSIXCHECK # undef futimens # if HAVE_RAW_DECL_FUTIMENS _GL_WARN_ON_USE (futimens, "futimens is not portable - " "use gnulib module futimens for portability"); # endif #endif #if @GNULIB_LCHMOD@ /* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME denotes a symbolic link. */ # if !@HAVE_LCHMOD@ /* The lchmod replacement follows symbolic links. Callers should take this into account; lchmod should be applied only to arguments that are known to not be symbolic links. On hosts that lack lchmod, this can lead to race conditions between the check and the invocation of lchmod, but we know of no workarounds that are reliable in general. You might try requesting support for lchmod from your operating system supplier. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lchmod chmod # endif /* Need to cast, because on mingw, the second parameter of chmod is int mode. */ _GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int, (const char *filename, mode_t mode)); # else # if 0 /* assume already declared */ _GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); # endif # if @HAVE_LCHMOD@ _GL_CXXALIASWARN (lchmod); # endif #elif defined GNULIB_POSIXCHECK # undef lchmod # if HAVE_RAW_DECL_LCHMOD _GL_WARN_ON_USE (lchmod, "lchmod is unportable - " "use gnulib module lchmod for portability"); # endif #endif #if @GNULIB_LSTAT@ # if ! @HAVE_LSTAT@ /* mingw does not support symlinks, therefore it does not have lstat. But without links, stat does just fine. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lstat stat # endif _GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf)); # elif @REPLACE_LSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lstat # define lstat rpl_lstat # endif _GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf)); # else _GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf)); # endif # if @HAVE_LSTAT@ _GL_CXXALIASWARN (lstat); # endif #elif defined GNULIB_POSIXCHECK # undef lstat # if HAVE_RAW_DECL_LSTAT _GL_WARN_ON_USE (lstat, "lstat is unportable - " "use gnulib module lstat for portability"); # endif #endif #if @REPLACE_MKDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkdir # define mkdir rpl_mkdir # endif _GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); #else /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. Additionally, it declares _mkdir (and depending on compile flags, an alias mkdir), only in the nonstandard includes and , which are included above. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # if !GNULIB_defined_rpl_mkdir static int rpl_mkdir (char const *name, mode_t mode) { return _mkdir (name); } # define GNULIB_defined_rpl_mkdir 1 # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mkdir rpl_mkdir # endif _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); # else _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); # endif #endif _GL_CXXALIASWARN (mkdir); #if @GNULIB_MKDIRAT@ # if !@HAVE_MKDIRAT@ _GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); _GL_CXXALIASWARN (mkdirat); #elif defined GNULIB_POSIXCHECK # undef mkdirat # if HAVE_RAW_DECL_MKDIRAT _GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_MKFIFO@ # if @REPLACE_MKFIFO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkfifo # define mkfifo rpl_mkfifo # endif _GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); # else # if !@HAVE_MKFIFO@ _GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); # endif _GL_CXXALIASWARN (mkfifo); #elif defined GNULIB_POSIXCHECK # undef mkfifo # if HAVE_RAW_DECL_MKFIFO _GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " "use gnulib module mkfifo for portability"); # endif #endif #if @GNULIB_MKFIFOAT@ # if !@HAVE_MKFIFOAT@ _GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); _GL_CXXALIASWARN (mkfifoat); #elif defined GNULIB_POSIXCHECK # undef mkfifoat # if HAVE_RAW_DECL_MKFIFOAT _GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_MKNOD@ # if @REPLACE_MKNOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mknod # define mknod rpl_mknod # endif _GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); # else # if !@HAVE_MKNOD@ _GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ _GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); # endif _GL_CXXALIASWARN (mknod); #elif defined GNULIB_POSIXCHECK # undef mknod # if HAVE_RAW_DECL_MKNOD _GL_WARN_ON_USE (mknod, "mknod is not portable - " "use gnulib module mknod for portability"); # endif #endif #if @GNULIB_MKNODAT@ # if !@HAVE_MKNODAT@ _GL_FUNCDECL_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev)); _GL_CXXALIASWARN (mknodat); #elif defined GNULIB_POSIXCHECK # undef mknodat # if HAVE_RAW_DECL_MKNODAT _GL_WARN_ON_USE (mknodat, "mknodat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_STAT@ # if @REPLACE_STAT@ /* We can't use the object-like #define stat rpl_stat, because of struct stat. This means that rpl_stat will not be used if the user does (stat)(a,b). Oh well. */ # if defined _AIX && defined stat && defined _LARGE_FILES /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, so we have to replace stat64() instead of stat(). */ # undef stat64 # define stat64(name, st) rpl_stat (name, st) # elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # if defined __MINGW32__ && defined _stati64 # ifndef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined _stati64 # ifdef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # else # undef _stati64 # define _stati64(name, st) rpl_stat (name, st) # endif # elif defined __MINGW32__ && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32. */ # undef _stat32 # define _stat32(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64i32. */ # undef _stat64i32 # define _stat64i32(name, st) rpl_stat (name, st) # endif # else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ # undef stat # define stat(name, st) rpl_stat (name, st) # endif /* !_LARGE_FILES */ _GL_EXTERN_C int stat (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2)); # endif #elif defined GNULIB_POSIXCHECK # undef stat # if HAVE_RAW_DECL_STAT _GL_WARN_ON_USE (stat, "stat is unportable - " "use gnulib module stat for portability"); # endif #endif #if @GNULIB_UTIMENSAT@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat implementation relies on futimesat, which on Solaris 10 makes an invocation to utimensat that is meant to invoke the libc's utimensat(), not gnulib's utimensat(). */ # if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef utimensat # define utimensat rpl_utimensat # endif _GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # else # if !@HAVE_UTIMENSAT@ _GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # endif # if @HAVE_UTIMENSAT@ _GL_CXXALIASWARN (utimensat); # endif #elif defined GNULIB_POSIXCHECK # undef utimensat # if HAVE_RAW_DECL_UTIMENSAT _GL_WARN_ON_USE (utimensat, "utimensat is not portable - " "use gnulib module utimensat for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif freedink-108.4+dfsg/gnulib/lib/areadlink-with-size.c0000644000175000017500000000627312330466613020101 0ustar meme/* readlink wrapper to return the link name in malloc'd storage. Unlike xreadlink and xreadlink_with_size, don't ever call exit. Copyright (C) 2001, 2003-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering */ #include #include "areadlink.h" #include #include #include #include #include #ifndef SSIZE_MAX # define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2)) #endif /* SYMLINK_MAX is used only for an initial memory-allocation sanity check, so it's OK to guess too small on hosts where there is no arbitrary limit to symbolic link length. */ #ifndef SYMLINK_MAX # define SYMLINK_MAX 1024 #endif #define MAXSIZE (SIZE_MAX < SSIZE_MAX ? SIZE_MAX : SSIZE_MAX) /* Call readlink to get the symbolic link value of FILE. SIZE is a hint as to how long the link is expected to be; typically it is taken from st_size. It need not be correct. Return a pointer to that NUL-terminated string in malloc'd storage. If readlink fails, malloc fails, or if the link value is longer than SSIZE_MAX, return NULL (caller may use errno to diagnose). */ char * areadlink_with_size (char const *file, size_t size) { /* Some buggy file systems report garbage in st_size. Defend against them by ignoring outlandish st_size values in the initial memory allocation. */ size_t symlink_max = SYMLINK_MAX; size_t INITIAL_LIMIT_BOUND = 8 * 1024; size_t initial_limit = (symlink_max < INITIAL_LIMIT_BOUND ? symlink_max + 1 : INITIAL_LIMIT_BOUND); /* The initial buffer size for the link value. */ size_t buf_size = size < initial_limit ? size + 1 : initial_limit; while (1) { ssize_t r; size_t link_length; char *buffer = malloc (buf_size); if (buffer == NULL) return NULL; r = readlink (file, buffer, buf_size); link_length = r; /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1 with errno == ERANGE if the buffer is too small. */ if (r < 0 && errno != ERANGE) { int saved_errno = errno; free (buffer); errno = saved_errno; return NULL; } if (link_length < buf_size) { buffer[link_length] = 0; return buffer; } free (buffer); if (buf_size <= MAXSIZE / 2) buf_size *= 2; else if (buf_size < MAXSIZE) buf_size = MAXSIZE; else { errno = ENOMEM; return NULL; } } } freedink-108.4+dfsg/gnulib/lib/dirfd.c0000644000175000017500000000173512330466613015314 0ustar meme/* dirfd.c -- return the file descriptor associated with an open DIR* Copyright (C) 2001, 2006, 2008-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #include #include #include int dirfd (DIR *dir_p) { int fd = DIR_TO_FD (dir_p); if (fd == -1) errno = ENOTSUP; return fd; } freedink-108.4+dfsg/gnulib/lib/dirname.h0000644000175000017500000000265112330466613015646 0ustar meme/* Take file names apart into directory and base names. Copyright (C) 1998, 2001, 2003-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef DIRNAME_H_ # define DIRNAME_H_ 1 # include # include # include "dosname.h" # ifndef DIRECTORY_SEPARATOR # define DIRECTORY_SEPARATOR '/' # endif # ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT # define DOUBLE_SLASH_IS_DISTINCT_ROOT 0 # endif # if GNULIB_DIRNAME char *base_name (char const *file); char *dir_name (char const *file); # endif char *mdir_name (char const *file); size_t base_len (char const *file) _GL_ATTRIBUTE_PURE; size_t dir_len (char const *file) _GL_ATTRIBUTE_PURE; char *last_component (char const *file) _GL_ATTRIBUTE_PURE; bool strip_trailing_slashes (char *file); #endif /* not DIRNAME_H_ */ freedink-108.4+dfsg/gnulib/lib/time.in.h0000644000175000017500000002343012330466613015570 0ustar meme/* A more-standard . Copyright (C) 2007-2014 Free Software Foundation, Inc. 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, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* Don't get in the way of glibc when it includes time.h merely to declare a few standard symbols, rather than to declare all the symbols. Also, Solaris 8 eventually includes itself recursively; if that is happening, just include the system without adding our own declarations. */ #if (defined __need_time_t || defined __need_clock_t \ || defined __need_timespec \ || defined _@GUARD_PREFIX@_TIME_H) # @INCLUDE_NEXT@ @NEXT_TIME_H@ #else # define _@GUARD_PREFIX@_TIME_H # @INCLUDE_NEXT@ @NEXT_TIME_H@ /* NetBSD 5.0 mis-defines NULL. */ # include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). Or they define it with the wrong member names or define it in (e.g., FreeBSD circa 1997). Stock Mingw prior to 3.0 does not define it, but the pthreads-win32 library defines it in . */ # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ # if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ # include # elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ # include # else # ifdef __cplusplus extern "C" { # endif # if !GNULIB_defined_struct_timespec # undef timespec # define timespec rpl_timespec struct timespec { time_t tv_sec; long int tv_nsec; }; # define GNULIB_defined_struct_timespec 1 # endif # ifdef __cplusplus } # endif # endif # endif # if !GNULIB_defined_struct_time_t_must_be_integral /* Per http://austingroupbugs.net/view.php?id=327, POSIX requires time_t to be an integer type, even though C99 permits floating point. We don't know of any implementation that uses floating point, and it is much easier to write code that doesn't have to worry about that corner case, so we force the issue. */ struct __time_t_must_be_integral { unsigned int __floating_time_t_unsupported : (time_t) 1; }; # define GNULIB_defined_struct_time_t_must_be_integral 1 # endif /* Sleep for at least RQTP seconds unless interrupted, If interrupted, return -1 and store the remaining time into RMTP. See . */ # if @GNULIB_NANOSLEEP@ # if @REPLACE_NANOSLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define nanosleep rpl_nanosleep # endif _GL_FUNCDECL_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # else # if ! @HAVE_NANOSLEEP@ _GL_FUNCDECL_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # endif _GL_CXXALIASWARN (nanosleep); # endif /* Return the 'time_t' representation of TP and normalize TP. */ # if @GNULIB_MKTIME@ # if @REPLACE_MKTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mktime rpl_mktime # endif _GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); # else _GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); # endif _GL_CXXALIASWARN (mktime); # endif /* Convert TIMER to RESULT, assuming local time and UTC respectively. See and . */ # if @GNULIB_TIME_R@ # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localtime_r # define localtime_r rpl_localtime_r # endif _GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (localtime_r); # endif # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gmtime_r # define gmtime_r rpl_gmtime_r # endif _GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (gmtime_r); # endif # endif /* Convert TIMER to RESULT, assuming local time and UTC respectively. See and . */ # if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_LOCALTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localtime # define localtime rpl_localtime # endif _GL_FUNCDECL_RPL (localtime, struct tm *, (time_t const *__timer) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (localtime, struct tm *, (time_t const *__timer)); # else _GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer)); # endif _GL_CXXALIASWARN (localtime); # endif # if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_GMTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gmtime # define gmtime rpl_gmtime # endif _GL_FUNCDECL_RPL (gmtime, struct tm *, (time_t const *__timer) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gmtime, struct tm *, (time_t const *__timer)); # else _GL_CXXALIAS_SYS (gmtime, struct tm *, (time_t const *__timer)); # endif _GL_CXXALIASWARN (gmtime); # endif /* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store the resulting broken-down time into TM. See . */ # if @GNULIB_STRPTIME@ # if ! @HAVE_STRPTIME@ _GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm)); _GL_CXXALIASWARN (strptime); # endif /* Convert TM to a time_t value, assuming UTC. */ # if @GNULIB_TIMEGM@ # if @REPLACE_TIMEGM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef timegm # define timegm rpl_timegm # endif _GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); # else # if ! @HAVE_TIMEGM@ _GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); # endif _GL_CXXALIASWARN (timegm); # endif /* Encourage applications to avoid unsafe functions that can overrun buffers when given outlandish struct tm values. Portable applications should use strftime (or even sprintf) instead. */ # if defined GNULIB_POSIXCHECK # undef asctime _GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef asctime_r _GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef ctime _GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef ctime_r _GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif #endif freedink-108.4+dfsg/gnulib/lib/progname.h0000644000175000017500000000373712330466613016045 0ustar meme/* Program name management. Copyright (C) 2001-2004, 2006, 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2001. 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 3 of the License, 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, see . */ #ifndef _PROGNAME_H #define _PROGNAME_H /* Programs using this file should do the following in main(): set_program_name (argv[0]); */ #ifdef __cplusplus extern "C" { #endif /* String containing name the program is called with. */ extern const char *program_name; /* Set program_name, based on argv[0]. argv0 must be a string allocated with indefinite extent, and must not be modified after this call. */ extern void set_program_name (const char *argv0); #if ENABLE_RELOCATABLE /* Set program_name, based on argv[0], and original installation prefix and directory, for relocatability. */ extern void set_program_name_and_installdir (const char *argv0, const char *orig_installprefix, const char *orig_installdir); #undef set_program_name #define set_program_name(ARG0) \ set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR) /* Return the full pathname of the current executable, based on the earlier call to set_program_name_and_installdir. Return NULL if unknown. */ extern char *get_full_program_name (void); #endif #ifdef __cplusplus } #endif #endif /* _PROGNAME_H */ freedink-108.4+dfsg/gnulib/lib/stdio.in.h0000644000175000017500000014221112330466613015753 0ustar meme/* A GNU-like . Copyright (C) 2004, 2007-2014 Free Software Foundation, Inc. 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, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H /* Special invocation convention: - Inside glibc header files. - On OSF/1 5.1 we have a sequence of nested includes -> -> -> -> -> -> -> . In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDIO_H #define _GL_ALREADY_INCLUDING_STDIO_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #undef _GL_ALREADY_INCLUDING_STDIO_H #ifndef _@GUARD_PREFIX@_STDIO_H #define _@GUARD_PREFIX@_STDIO_H /* Get va_list. Needed on many systems, including glibc 2.8. */ #include #include /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 and eglibc 2.11.2. May also define off_t to a 64-bit type on native Windows. */ #include /* The __attribute__ feature is available in gcc versions 2.5 and later. The __-protected variants of the attributes 'format' and 'printf' are accepted by gcc versions 2.6.4 (effectively 2.7) and later. We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because gnulib and libintl do '#define printf __printf__' when they override the 'printf' function. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) #else # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ #endif /* _GL_ATTRIBUTE_FORMAT_PRINTF indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) #else # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) #endif /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, except that it indicates to GCC that the supported format string directives are the ones of the system printf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) /* _GL_ATTRIBUTE_FORMAT_SCANF indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) #else # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) #endif /* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, except that it indicates to GCC that the supported format string directives are the ones of the system scanf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) /* Solaris 10 declares renameat in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __sun \ && ! defined __GLIBC__ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Macros for stringification. */ #define _GL_STDIO_STRINGIZE(token) #token #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) /* When also using extern inline, suppress the use of static inline in standard headers of problematic Apple configurations, as Libc at least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., . Perhaps Apple will fix this some day. */ #if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ && defined __GNUC__ && defined __STDC__) # undef putc_unlocked #endif #if @GNULIB_DPRINTF@ # if @REPLACE_DPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dprintf rpl_dprintf # endif _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); # else # if !@HAVE_DPRINTF@ _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); # endif _GL_CXXALIASWARN (dprintf); #elif defined GNULIB_POSIXCHECK # undef dprintf # if HAVE_RAW_DECL_DPRINTF _GL_WARN_ON_USE (dprintf, "dprintf is unportable - " "use gnulib module dprintf for portability"); # endif #endif #if @GNULIB_FCLOSE@ /* Close STREAM and its underlying file descriptor. */ # if @REPLACE_FCLOSE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fclose rpl_fclose # endif _GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); # endif _GL_CXXALIASWARN (fclose); #elif defined GNULIB_POSIXCHECK # undef fclose /* Assume fclose is always declared. */ _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " "use gnulib module fclose for portable POSIX compliance"); #endif #if @GNULIB_FDOPEN@ # if @REPLACE_FDOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopen # define fdopen rpl_fdopen # endif _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); # else _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); # endif _GL_CXXALIASWARN (fdopen); #elif defined GNULIB_POSIXCHECK # undef fdopen /* Assume fdopen is always declared. */ _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " "use gnulib module fdopen for portability"); #endif #if @GNULIB_FFLUSH@ /* Flush all pending data on STREAM according to POSIX rules. Both output and seekable input streams are supported. Note! LOSS OF DATA can occur if fflush is applied on an input stream that is _not_seekable_ or on an update stream that is _not_seekable_ and in which the most recent operation was input. Seekability can be tested with lseek(fileno(fp),0,SEEK_CUR). */ # if @REPLACE_FFLUSH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fflush rpl_fflush # endif _GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); # else _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); # endif _GL_CXXALIASWARN (fflush); #elif defined GNULIB_POSIXCHECK # undef fflush /* Assume fflush is always declared. */ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " "use gnulib module fflush for portable POSIX compliance"); #endif #if @GNULIB_FGETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgetc # define fgetc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); # endif _GL_CXXALIASWARN (fgetc); #endif #if @GNULIB_FGETS@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgets # define fgets rpl_fgets # endif _GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); # else _GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); # endif _GL_CXXALIASWARN (fgets); #endif #if @GNULIB_FOPEN@ # if @REPLACE_FOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fopen # define fopen rpl_fopen # endif _GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); # else _GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); # endif _GL_CXXALIASWARN (fopen); #elif defined GNULIB_POSIXCHECK # undef fopen /* Assume fopen is always declared. */ _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " "use gnulib module fopen for portability"); #endif #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \ || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fprintf rpl_fprintf # endif # define GNULIB_overrides_fprintf 1 # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); # else _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); # endif _GL_CXXALIASWARN (fprintf); #endif #if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_fprintf # undef fprintf # endif /* Assume fprintf is always declared. */ _GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " "use gnulib module fprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_FPURGE@ /* Discard all pending buffered I/O data on STREAM. STREAM must not be wide-character oriented. When discarding pending output, the file position is set back to where it was before the write calls. When discarding pending input, the file position is advanced to match the end of the previously read input. Return 0 if successful. Upon error, return -1 and set errno. */ # if @REPLACE_FPURGE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fpurge rpl_fpurge # endif _GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); # else # if !@HAVE_DECL_FPURGE@ _GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); # endif _GL_CXXALIASWARN (fpurge); #elif defined GNULIB_POSIXCHECK # undef fpurge # if HAVE_RAW_DECL_FPURGE _GL_WARN_ON_USE (fpurge, "fpurge is not always present - " "use gnulib module fpurge for portability"); # endif #endif #if @GNULIB_FPUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputc # define fputc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); # endif _GL_CXXALIASWARN (fputc); #endif #if @GNULIB_FPUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputs # define fputs rpl_fputs # endif _GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); # else _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); # endif _GL_CXXALIASWARN (fputs); #endif #if @GNULIB_FREAD@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fread # define fread rpl_fread # endif _GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) _GL_ARG_NONNULL ((4))); _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); # else _GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); # endif _GL_CXXALIASWARN (fread); #endif #if @GNULIB_FREOPEN@ # if @REPLACE_FREOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef freopen # define freopen rpl_freopen # endif _GL_FUNCDECL_RPL (freopen, FILE *, (const char *filename, const char *mode, FILE *stream) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (freopen, FILE *, (const char *filename, const char *mode, FILE *stream)); # else _GL_CXXALIAS_SYS (freopen, FILE *, (const char *filename, const char *mode, FILE *stream)); # endif _GL_CXXALIASWARN (freopen); #elif defined GNULIB_POSIXCHECK # undef freopen /* Assume freopen is always declared. */ _GL_WARN_ON_USE (freopen, "freopen on native Windows platforms is not POSIX compliant - " "use gnulib module freopen for portability"); #endif #if @GNULIB_FSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fscanf # define fscanf rpl_fscanf # endif _GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); # else _GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); # endif _GL_CXXALIASWARN (fscanf); #endif /* Set up the following warnings, based on which modules are in use. GNU Coding Standards discourage the use of fseek, since it imposes an arbitrary limitation on some 32-bit hosts. Remember that the fseek module depends on the fseeko module, so we only have three cases to consider: 1. The developer is not using either module. Issue a warning under GNULIB_POSIXCHECK for both functions, to remind them that both functions have bugs on some systems. _GL_NO_LARGE_FILES has no impact on this warning. 2. The developer is using both modules. They may be unaware of the arbitrary limitations of fseek, so issue a warning under GNULIB_POSIXCHECK. On the other hand, they may be using both modules intentionally, so the developer can define _GL_NO_LARGE_FILES in the compilation units where the use of fseek is safe, to silence the warning. 3. The developer is using the fseeko module, but not fseek. Gnulib guarantees that fseek will still work around platform bugs in that case, but we presume that the developer is aware of the pitfalls of fseek and was trying to avoid it, so issue a warning even when GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be defined to silence the warning in particular compilation units. In C++ compilations with GNULIB_NAMESPACE, in order to avoid that fseek gets defined as a macro, it is recommended that the developer uses the fseek module, even if he is not calling the fseek function. Most gnulib clients that perform stream operations should fall into category 3. */ #if @GNULIB_FSEEK@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 2, above. */ # undef fseek # endif # if @REPLACE_FSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseek # define fseek rpl_fseek # endif _GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); # else _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); # endif _GL_CXXALIASWARN (fseek); #endif #if @GNULIB_FSEEKO@ # if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 3, above. */ # undef fseek # endif # if @REPLACE_FSEEKO@ /* Provide an fseeko function that is aware of a preceding fflush(), and which detects pipes. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseeko # define fseeko rpl_fseeko # endif _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); # else # if ! @HAVE_DECL_FSEEKO@ _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); # endif _GL_CXXALIASWARN (fseeko); #elif defined GNULIB_POSIXCHECK # define _GL_FSEEK_WARN /* Category 1, above. */ # undef fseek # undef fseeko # if HAVE_RAW_DECL_FSEEKO _GL_WARN_ON_USE (fseeko, "fseeko is unportable - " "use gnulib module fseeko for portability"); # endif #endif #ifdef _GL_FSEEK_WARN # undef _GL_FSEEK_WARN /* Here, either fseek is undefined (but C89 guarantees that it is declared), or it is defined as rpl_fseek (declared above). */ _GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " "on 32-bit platforms - " "use fseeko function for handling of large files"); #endif /* ftell, ftello. See the comments on fseek/fseeko. */ #if @GNULIB_FTELL@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 2, above. */ # undef ftell # endif # if @REPLACE_FTELL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftell # define ftell rpl_ftell # endif _GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); # else _GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); # endif _GL_CXXALIASWARN (ftell); #endif #if @GNULIB_FTELLO@ # if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 3, above. */ # undef ftell # endif # if @REPLACE_FTELLO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftello # define ftello rpl_ftello # endif _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); # else # if ! @HAVE_DECL_FTELLO@ _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); # endif _GL_CXXALIASWARN (ftello); #elif defined GNULIB_POSIXCHECK # define _GL_FTELL_WARN /* Category 1, above. */ # undef ftell # undef ftello # if HAVE_RAW_DECL_FTELLO _GL_WARN_ON_USE (ftello, "ftello is unportable - " "use gnulib module ftello for portability"); # endif #endif #ifdef _GL_FTELL_WARN # undef _GL_FTELL_WARN /* Here, either ftell is undefined (but C89 guarantees that it is declared), or it is defined as rpl_ftell (declared above). */ _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " "on 32-bit platforms - " "use ftello function for handling of large files"); #endif #if @GNULIB_FWRITE@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fwrite # define fwrite rpl_fwrite # endif _GL_FUNCDECL_RPL (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream) _GL_ARG_NONNULL ((1, 4))); _GL_CXXALIAS_RPL (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream)); # else _GL_CXXALIAS_SYS (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream)); /* Work around bug 11959 when fortifying glibc 2.4 through 2.15 , which sometimes causes an unwanted diagnostic for fwrite calls. This affects only function declaration attributes under certain versions of gcc and clang, and is not needed for C++. */ # if (0 < __USE_FORTIFY_LEVEL \ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ && !defined __cplusplus) # undef fwrite # undef fwrite_unlocked extern size_t __REDIRECT (rpl_fwrite, (const void *__restrict, size_t, size_t, FILE *__restrict), fwrite); extern size_t __REDIRECT (rpl_fwrite_unlocked, (const void *__restrict, size_t, size_t, FILE *__restrict), fwrite_unlocked); # define fwrite rpl_fwrite # define fwrite_unlocked rpl_fwrite_unlocked # endif # endif _GL_CXXALIASWARN (fwrite); #endif #if @GNULIB_GETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getc # define getc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (getc, int, (FILE *stream)); # endif _GL_CXXALIASWARN (getc); #endif #if @GNULIB_GETCHAR@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getchar # define getchar rpl_getchar # endif _GL_FUNCDECL_RPL (getchar, int, (void)); _GL_CXXALIAS_RPL (getchar, int, (void)); # else _GL_CXXALIAS_SYS (getchar, int, (void)); # endif _GL_CXXALIASWARN (getchar); #endif #if @GNULIB_GETDELIM@ /* Read input, up to (and including) the next occurrence of DELIMITER, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETDELIM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdelim # define getdelim rpl_getdelim # endif _GL_FUNCDECL_RPL (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream) _GL_ARG_NONNULL ((1, 2, 4))); _GL_CXXALIAS_RPL (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream)); # else # if !@HAVE_DECL_GETDELIM@ _GL_FUNCDECL_SYS (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream) _GL_ARG_NONNULL ((1, 2, 4))); # endif _GL_CXXALIAS_SYS (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream)); # endif _GL_CXXALIASWARN (getdelim); #elif defined GNULIB_POSIXCHECK # undef getdelim # if HAVE_RAW_DECL_GETDELIM _GL_WARN_ON_USE (getdelim, "getdelim is unportable - " "use gnulib module getdelim for portability"); # endif #endif #if @GNULIB_GETLINE@ /* Read a line, up to (and including) the next newline, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETLINE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getline # define getline rpl_getline # endif _GL_FUNCDECL_RPL (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream) _GL_ARG_NONNULL ((1, 2, 3))); _GL_CXXALIAS_RPL (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream)); # else # if !@HAVE_DECL_GETLINE@ _GL_FUNCDECL_SYS (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream)); # endif # if @HAVE_DECL_GETLINE@ _GL_CXXALIASWARN (getline); # endif #elif defined GNULIB_POSIXCHECK # undef getline # if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is unportable - " "use gnulib module getline for portability"); # endif #endif /* It is very rare that the developer ever has full control of stdin, so any use of gets warrants an unconditional warning; besides, C11 removed it. */ #undef gets #if HAVE_RAW_DECL_GETS _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); #endif #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ struct obstack; /* Grow an obstack with formatted output. Return the number of bytes added to OBS. No trailing nul byte is added, and the object should be closed with obstack_finish before use. Upon memory allocation error, call obstack_alloc_failed_handler. Upon other error, return -1. */ # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_printf rpl_obstack_printf # endif _GL_FUNCDECL_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # endif _GL_CXXALIASWARN (obstack_printf); # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_vprintf rpl_obstack_vprintf # endif _GL_FUNCDECL_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # endif _GL_CXXALIASWARN (obstack_vprintf); #endif #if @GNULIB_PCLOSE@ # if !@HAVE_PCLOSE@ _GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); _GL_CXXALIASWARN (pclose); #elif defined GNULIB_POSIXCHECK # undef pclose # if HAVE_RAW_DECL_PCLOSE _GL_WARN_ON_USE (pclose, "pclose is unportable - " "use gnulib module pclose for more portability"); # endif #endif #if @GNULIB_PERROR@ /* Print a message to standard error, describing the value of ERRNO, (if STRING is not NULL and not empty) prefixed with STRING and ": ", and terminated with a newline. */ # if @REPLACE_PERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define perror rpl_perror # endif _GL_FUNCDECL_RPL (perror, void, (const char *string)); _GL_CXXALIAS_RPL (perror, void, (const char *string)); # else _GL_CXXALIAS_SYS (perror, void, (const char *string)); # endif _GL_CXXALIASWARN (perror); #elif defined GNULIB_POSIXCHECK # undef perror /* Assume perror is always declared. */ _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " "use gnulib module perror for portability"); #endif #if @GNULIB_POPEN@ # if @REPLACE_POPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef popen # define popen rpl_popen # endif _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); # else # if !@HAVE_POPEN@ _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); # endif _GL_CXXALIASWARN (popen); #elif defined GNULIB_POSIXCHECK # undef popen # if HAVE_RAW_DECL_POPEN _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " "use gnulib module popen or pipe for more portability"); # endif #endif #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if defined __GNUC__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) /* Don't break __attribute__((format(printf,M,N))). */ # define printf __printf__ # endif # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define printf rpl_printf # endif _GL_FUNCDECL_RPL (printf, int, (const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); # endif # define GNULIB_overrides_printf 1 # else _GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); # endif _GL_CXXALIASWARN (printf); #endif #if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_printf # undef printf # endif /* Assume printf is always declared. */ _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " "use gnulib module printf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_PUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putc # define putc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); # endif _GL_CXXALIASWARN (putc); #endif #if @GNULIB_PUTCHAR@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putchar # define putchar rpl_putchar # endif _GL_FUNCDECL_RPL (putchar, int, (int c)); _GL_CXXALIAS_RPL (putchar, int, (int c)); # else _GL_CXXALIAS_SYS (putchar, int, (int c)); # endif _GL_CXXALIASWARN (putchar); #endif #if @GNULIB_PUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef puts # define puts rpl_puts # endif _GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (puts, int, (const char *string)); # else _GL_CXXALIAS_SYS (puts, int, (const char *string)); # endif _GL_CXXALIASWARN (puts); #endif #if @GNULIB_REMOVE@ # if @REPLACE_REMOVE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef remove # define remove rpl_remove # endif _GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (remove, int, (const char *name)); # else _GL_CXXALIAS_SYS (remove, int, (const char *name)); # endif _GL_CXXALIASWARN (remove); #elif defined GNULIB_POSIXCHECK # undef remove /* Assume remove is always declared. */ _GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " "use gnulib module remove for more portability"); #endif #if @GNULIB_RENAME@ # if @REPLACE_RENAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef rename # define rename rpl_rename # endif _GL_FUNCDECL_RPL (rename, int, (const char *old_filename, const char *new_filename) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (rename, int, (const char *old_filename, const char *new_filename)); # else _GL_CXXALIAS_SYS (rename, int, (const char *old_filename, const char *new_filename)); # endif _GL_CXXALIASWARN (rename); #elif defined GNULIB_POSIXCHECK # undef rename /* Assume rename is always declared. */ _GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " "use gnulib module rename for more portability"); #endif #if @GNULIB_RENAMEAT@ # if @REPLACE_RENAMEAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef renameat # define renameat rpl_renameat # endif _GL_FUNCDECL_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # else # if !@HAVE_RENAMEAT@ _GL_FUNCDECL_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # endif _GL_CXXALIASWARN (renameat); #elif defined GNULIB_POSIXCHECK # undef renameat # if HAVE_RAW_DECL_RENAMEAT _GL_WARN_ON_USE (renameat, "renameat is not portable - " "use gnulib module renameat for portability"); # endif #endif #if @GNULIB_SCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if defined __GNUC__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf /* Don't break __attribute__((format(scanf,M,N))). */ # define scanf __scanf__ # endif _GL_FUNCDECL_RPL_1 (__scanf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf # define scanf rpl_scanf # endif _GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); # endif # else _GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); # endif _GL_CXXALIASWARN (scanf); #endif #if @GNULIB_SNPRINTF@ # if @REPLACE_SNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define snprintf rpl_snprintf # endif _GL_FUNCDECL_RPL (snprintf, int, (char *str, size_t size, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (snprintf, int, (char *str, size_t size, const char *format, ...)); # else # if !@HAVE_DECL_SNPRINTF@ _GL_FUNCDECL_SYS (snprintf, int, (char *str, size_t size, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (snprintf, int, (char *str, size_t size, const char *format, ...)); # endif _GL_CXXALIASWARN (snprintf); #elif defined GNULIB_POSIXCHECK # undef snprintf # if HAVE_RAW_DECL_SNPRINTF _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " "use gnulib module snprintf for portability"); # endif #endif /* Some people would argue that all sprintf uses should be warned about (for example, OpenBSD issues a link warning for it), since it can cause security holes due to buffer overruns. However, we believe that sprintf can be used safely, and is more efficient than snprintf in those safe cases; and as proof of our belief, we use sprintf in several gnulib modules. So this header intentionally avoids adding a warning to sprintf except when GNULIB_POSIXCHECK is defined. */ #if @GNULIB_SPRINTF_POSIX@ # if @REPLACE_SPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define sprintf rpl_sprintf # endif _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); # else _GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); # endif _GL_CXXALIASWARN (sprintf); #elif defined GNULIB_POSIXCHECK # undef sprintf /* Assume sprintf is always declared. */ _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " "use gnulib module sprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_TMPFILE@ # if @REPLACE_TMPFILE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define tmpfile rpl_tmpfile # endif _GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); _GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); # else _GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); # endif _GL_CXXALIASWARN (tmpfile); #elif defined GNULIB_POSIXCHECK # undef tmpfile # if HAVE_RAW_DECL_TMPFILE _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " "use gnulib module tmpfile for portability"); # endif #endif #if @GNULIB_VASPRINTF@ /* Write formatted output to a string dynamically allocated with malloc(). If the memory allocation succeeds, store the address of the string in *RESULT and return the number of resulting bytes, excluding the trailing NUL. Upon memory allocation error, or some other error, return -1. */ # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define asprintf rpl_asprintf # endif _GL_FUNCDECL_RPL (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (asprintf, int, (char **result, const char *format, ...)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (asprintf, int, (char **result, const char *format, ...)); # endif _GL_CXXALIASWARN (asprintf); # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vasprintf rpl_vasprintf # endif _GL_FUNCDECL_RPL (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vasprintf, int, (char **result, const char *format, va_list args)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (vasprintf, int, (char **result, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vasprintf); #endif #if @GNULIB_VDPRINTF@ # if @REPLACE_VDPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vdprintf rpl_vdprintf # endif _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); # else # if !@HAVE_VDPRINTF@ _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((2))); # endif /* Need to cast, because on Solaris, the third parameter will likely be __va_list args. */ _GL_CXXALIAS_SYS_CAST (vdprintf, int, (int fd, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vdprintf); #elif defined GNULIB_POSIXCHECK # undef vdprintf # if HAVE_RAW_DECL_VDPRINTF _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " "use gnulib module vdprintf for portability"); # endif #endif #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@ # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \ || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vfprintf rpl_vfprintf # endif # define GNULIB_overrides_vfprintf 1 # if @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vfprintf, int, (FILE *fp, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vfprintf); #endif #if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vfprintf # undef vfprintf # endif /* Assume vfprintf is always declared. */ _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " "use gnulib module vfprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VFSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vfscanf # define vfscanf rpl_vfscanf # endif _GL_FUNCDECL_RPL (vfscanf, int, (FILE *stream, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vfscanf, int, (FILE *stream, const char *format, va_list args)); # else _GL_CXXALIAS_SYS (vfscanf, int, (FILE *stream, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vfscanf); #endif #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \ || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vprintf rpl_vprintf # endif # define GNULIB_overrides_vprintf 1 # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); # else /* Need to cast, because on Solaris, the second parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); # endif _GL_CXXALIASWARN (vprintf); #endif #if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vprintf # undef vprintf # endif /* Assume vprintf is always declared. */ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " "use gnulib module vprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vscanf # define vscanf rpl_vscanf # endif _GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); # else _GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); # endif _GL_CXXALIASWARN (vscanf); #endif #if @GNULIB_VSNPRINTF@ # if @REPLACE_VSNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsnprintf rpl_vsnprintf # endif _GL_FUNCDECL_RPL (vsnprintf, int, (char *str, size_t size, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (vsnprintf, int, (char *str, size_t size, const char *format, va_list args)); # else # if !@HAVE_DECL_VSNPRINTF@ _GL_FUNCDECL_SYS (vsnprintf, int, (char *str, size_t size, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (vsnprintf, int, (char *str, size_t size, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vsnprintf); #elif defined GNULIB_POSIXCHECK # undef vsnprintf # if HAVE_RAW_DECL_VSNPRINTF _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " "use gnulib module vsnprintf for portability"); # endif #endif #if @GNULIB_VSPRINTF_POSIX@ # if @REPLACE_VSPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsprintf rpl_vsprintf # endif _GL_FUNCDECL_RPL (vsprintf, int, (char *str, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vsprintf, int, (char *str, const char *format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vsprintf, int, (char *str, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vsprintf); #elif defined GNULIB_POSIXCHECK # undef vsprintf /* Assume vsprintf is always declared. */ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " "use gnulib module vsprintf-posix for portable " "POSIX compliance"); #endif #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif freedink-108.4+dfsg/gnulib/lib/msvc-nothrow.h0000644000175000017500000000301012330466613016663 0ustar meme/* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _MSVC_NOTHROW_H #define _MSVC_NOTHROW_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines wrappers that turn such an invalid parameter notification into an error code. */ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Get original declaration of _get_osfhandle. */ # include # if HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Override _get_osfhandle. */ extern intptr_t _gl_nothrow_get_osfhandle (int fd); # define _get_osfhandle _gl_nothrow_get_osfhandle # endif #endif #endif /* _MSVC_NOTHROW_H */ freedink-108.4+dfsg/gnulib/lib/fdopendir.c0000644000175000017500000001313512330466613016173 0ustar meme/* provide a replacement fdopendir function Copyright (C) 2004-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #include #include #include #include #if !HAVE_FDOPENDIR # include "openat.h" # include "openat-priv.h" # include "save-cwd.h" # if GNULIB_DIRENT_SAFER # include "dirent--.h" # endif # ifndef REPLACE_FCHDIR # define REPLACE_FCHDIR 0 # endif static DIR *fdopendir_with_dup (int, int, struct saved_cwd const *); static DIR *fd_clone_opendir (int, struct saved_cwd const *); /* Replacement for POSIX fdopendir. First, try to simulate it via opendir ("/proc/self/fd/..."). Failing that, simulate it by using fchdir metadata, or by doing save_cwd/fchdir/opendir(".")/restore_cwd. If either the save_cwd or the restore_cwd fails (relatively unlikely), then give a diagnostic and exit nonzero. If successful, the resulting stream is based on FD in implementations where streams are based on file descriptors and in applications where no other thread or signal handler allocates or frees file descriptors. In other cases, consult dirfd on the result to find out whether FD is still being used. Otherwise, this function works just like POSIX fdopendir. W A R N I N G: Unlike other fd-related functions, this one places constraints on FD. If this function returns successfully, FD is under control of the dirent.h system, and the caller should not close or modify the state of FD other than by the dirent.h functions. */ DIR * fdopendir (int fd) { DIR *dir = fdopendir_with_dup (fd, -1, NULL); if (! REPLACE_FCHDIR && ! dir) { int saved_errno = errno; if (EXPECTED_ERRNO (saved_errno)) { struct saved_cwd cwd; if (save_cwd (&cwd) != 0) openat_save_fail (errno); dir = fdopendir_with_dup (fd, -1, &cwd); saved_errno = errno; free_cwd (&cwd); errno = saved_errno; } } return dir; } /* Like fdopendir, except that if OLDER_DUPFD is not -1, it is known to be a dup of FD which is less than FD - 1 and which will be closed by the caller and not otherwise used by the caller. This function makes sure that FD is closed and all file descriptors less than FD are open, and then calls fd_clone_opendir on a dup of FD. That way, barring race conditions, fd_clone_opendir returns a stream whose file descriptor is FD. If REPLACE_CHDIR or CWD is null, use opendir ("/proc/self/fd/...", falling back on fchdir metadata. Otherwise, CWD is a saved version of the working directory; use fchdir/opendir(".")/restore_cwd(CWD). */ static DIR * fdopendir_with_dup (int fd, int older_dupfd, struct saved_cwd const *cwd) { int dupfd = dup (fd); if (dupfd < 0 && errno == EMFILE) dupfd = older_dupfd; if (dupfd < 0) return NULL; else { DIR *dir; int saved_errno; if (dupfd < fd - 1 && dupfd != older_dupfd) { dir = fdopendir_with_dup (fd, dupfd, cwd); saved_errno = errno; } else { close (fd); dir = fd_clone_opendir (dupfd, cwd); saved_errno = errno; if (! dir) { int fd1 = dup (dupfd); if (fd1 != fd) openat_save_fail (fd1 < 0 ? errno : EBADF); } } if (dupfd != older_dupfd) close (dupfd); errno = saved_errno; return dir; } } /* Like fdopendir, except the result controls a clone of FD. It is the caller's responsibility both to close FD and (if the result is not null) to closedir the result. */ static DIR * fd_clone_opendir (int fd, struct saved_cwd const *cwd) { if (REPLACE_FCHDIR || ! cwd) { DIR *dir = NULL; int saved_errno = EOPNOTSUPP; char buf[OPENAT_BUFFER_SIZE]; char *proc_file = openat_proc_name (buf, fd, "."); if (proc_file) { dir = opendir (proc_file); saved_errno = errno; if (proc_file != buf) free (proc_file); } # if REPLACE_FCHDIR if (! dir && EXPECTED_ERRNO (saved_errno)) { char const *name = _gl_directory_name (fd); return (name ? opendir (name) : NULL); } # endif errno = saved_errno; return dir; } else { if (fchdir (fd) != 0) return NULL; else { DIR *dir = opendir ("."); int saved_errno = errno; if (restore_cwd (cwd) != 0) openat_restore_fail (errno); errno = saved_errno; return dir; } } } #else /* HAVE_FDOPENDIR */ # include # include # undef fdopendir /* Like fdopendir, but work around GNU/Hurd bug by validating FD. */ DIR * rpl_fdopendir (int fd) { struct stat st; if (fstat (fd, &st)) return NULL; if (!S_ISDIR (st.st_mode)) { errno = ENOTDIR; return NULL; } return fdopendir (fd); } #endif /* HAVE_FDOPENDIR */ freedink-108.4+dfsg/gnulib/lib/c-ctype.c0000644000175000017500000002534112330466613015567 0ustar meme/* Character handling in C locale. Copyright 2000-2003, 2006, 2009-2014 Free Software Foundation, Inc. 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 of the License, 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, see . */ #include /* Specification. */ #define NO_C_CTYPE_MACROS #include "c-ctype.h" /* The function isascii is not locale dependent. Its use in EBCDIC is questionable. */ bool c_isascii (int c) { return (c >= 0x00 && c <= 0x7f); } bool c_isalnum (int c) { #if C_CTYPE_CONSECUTIVE_DIGITS \ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII return ((c >= '0' && c <= '9') || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')); #else return ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); #endif #else switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': return 1; default: return 0; } #endif } bool c_isalpha (int c) { #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'); #else return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); #endif #else switch (c) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': return 1; default: return 0; } #endif } bool c_isblank (int c) { return (c == ' ' || c == '\t'); } bool c_iscntrl (int c) { #if C_CTYPE_ASCII return ((c & ~0x1f) == 0 || c == 0x7f); #else switch (c) { case ' ': case '!': case '"': case '#': case '$': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': return 0; default: return 1; } #endif } bool c_isdigit (int c) { #if C_CTYPE_CONSECUTIVE_DIGITS return (c >= '0' && c <= '9'); #else switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return 1; default: return 0; } #endif } bool c_islower (int c) { #if C_CTYPE_CONSECUTIVE_LOWERCASE return (c >= 'a' && c <= 'z'); #else switch (c) { case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': return 1; default: return 0; } #endif } bool c_isgraph (int c) { #if C_CTYPE_ASCII return (c >= '!' && c <= '~'); #else switch (c) { case '!': case '"': case '#': case '$': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': return 1; default: return 0; } #endif } bool c_isprint (int c) { #if C_CTYPE_ASCII return (c >= ' ' && c <= '~'); #else switch (c) { case ' ': case '!': case '"': case '#': case '$': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': return 1; default: return 0; } #endif } bool c_ispunct (int c) { #if C_CTYPE_ASCII return ((c >= '!' && c <= '~') && !((c >= '0' && c <= '9') || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'))); #else switch (c) { case '!': case '"': case '#': case '$': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case '[': case '\\': case ']': case '^': case '_': case '`': case '{': case '|': case '}': case '~': return 1; default: return 0; } #endif } bool c_isspace (int c) { return (c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'); } bool c_isupper (int c) { #if C_CTYPE_CONSECUTIVE_UPPERCASE return (c >= 'A' && c <= 'Z'); #else switch (c) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': return 1; default: return 0; } #endif } bool c_isxdigit (int c) { #if C_CTYPE_CONSECUTIVE_DIGITS \ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII return ((c >= '0' && c <= '9') || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F')); #else return ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')); #endif #else switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': return 1; default: return 0; } #endif } int c_tolower (int c) { #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c); #else switch (c) { case 'A': return 'a'; case 'B': return 'b'; case 'C': return 'c'; case 'D': return 'd'; case 'E': return 'e'; case 'F': return 'f'; case 'G': return 'g'; case 'H': return 'h'; case 'I': return 'i'; case 'J': return 'j'; case 'K': return 'k'; case 'L': return 'l'; case 'M': return 'm'; case 'N': return 'n'; case 'O': return 'o'; case 'P': return 'p'; case 'Q': return 'q'; case 'R': return 'r'; case 'S': return 's'; case 'T': return 't'; case 'U': return 'u'; case 'V': return 'v'; case 'W': return 'w'; case 'X': return 'x'; case 'Y': return 'y'; case 'Z': return 'z'; default: return c; } #endif } int c_toupper (int c) { #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c); #else switch (c) { case 'a': return 'A'; case 'b': return 'B'; case 'c': return 'C'; case 'd': return 'D'; case 'e': return 'E'; case 'f': return 'F'; case 'g': return 'G'; case 'h': return 'H'; case 'i': return 'I'; case 'j': return 'J'; case 'k': return 'K'; case 'l': return 'L'; case 'm': return 'M'; case 'n': return 'N'; case 'o': return 'O'; case 'p': return 'P'; case 'q': return 'Q'; case 'r': return 'R'; case 's': return 'S'; case 't': return 'T'; case 'u': return 'U'; case 'v': return 'V'; case 'w': return 'W'; case 'x': return 'X'; case 'y': return 'Y'; case 'z': return 'Z'; default: return c; } #endif } freedink-108.4+dfsg/gnulib/lib/dup.c0000644000175000017500000000245212330466613015011 0ustar meme/* Duplicate an open file descriptor. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include "msvc-inval.h" #undef dup #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int dup_nothrow (int fd) { int result; TRY_MSVC_INVAL { result = dup (fd); } CATCH_MSVC_INVAL { result = -1; errno = EBADF; } DONE_MSVC_INVAL; return result; } #else # define dup_nothrow dup #endif int rpl_dup (int fd) { int result = dup_nothrow (fd); #if REPLACE_FCHDIR if (result >= 0) result = _gl_register_dup (fd, result); #endif return result; } freedink-108.4+dfsg/gnulib/lib/rewinddir.c0000644000175000017500000000266612330466613016217 0ustar meme/* Restart reading the entries of a directory from the beginning. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include "dirent-private.h" void rewinddir (DIR *dirp) { /* Like in closedir(). */ if (dirp->current != INVALID_HANDLE_VALUE) FindClose (dirp->current); /* Like in opendir(). */ dirp->status = -1; dirp->current = FindFirstFile (dirp->dir_name_mask, &dirp->entry); if (dirp->current == INVALID_HANDLE_VALUE) { switch (GetLastError ()) { case ERROR_FILE_NOT_FOUND: dirp->status = -2; break; default: /* Save the error code for the next readdir() call. */ dirp->status = ENOENT; break; } } } freedink-108.4+dfsg/gnulib/lib/dirent.in.h0000644000175000017500000002070412330466613016120 0ustar meme/* A GNU-like . Copyright (C) 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef _@GUARD_PREFIX@_DIRENT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_DIRENT_H@ # @INCLUDE_NEXT@ @NEXT_DIRENT_H@ #endif #ifndef _@GUARD_PREFIX@_DIRENT_H #define _@GUARD_PREFIX@_DIRENT_H /* Get ino_t. Needed on some systems, including glibc 2.8. */ #include #if !@HAVE_DIRENT_H@ /* Define types DIR and 'struct dirent'. */ # if !GNULIB_defined_struct_dirent struct dirent { char d_type; char d_name[1]; }; /* Possible values for 'd_type'. */ # define DT_UNKNOWN 0 # define DT_FIFO 1 /* FIFO */ # define DT_CHR 2 /* character device */ # define DT_DIR 4 /* directory */ # define DT_BLK 6 /* block device */ # define DT_REG 8 /* regular file */ # define DT_LNK 10 /* symbolic link */ # define DT_SOCK 12 /* socket */ # define DT_WHT 14 /* whiteout */ typedef struct gl_directory DIR; # define GNULIB_defined_struct_dirent 1 # endif #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Declare overridden functions. */ #if @GNULIB_OPENDIR@ # if @REPLACE_OPENDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef opendir # define opendir rpl_opendir # endif _GL_FUNCDECL_RPL (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (opendir, DIR *, (const char *dir_name)); # else # if !@HAVE_OPENDIR@ _GL_FUNCDECL_SYS (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (opendir, DIR *, (const char *dir_name)); # endif _GL_CXXALIASWARN (opendir); #elif defined GNULIB_POSIXCHECK # undef opendir # if HAVE_RAW_DECL_OPENDIR _GL_WARN_ON_USE (opendir, "opendir is not portable - " "use gnulib module opendir for portability"); # endif #endif #if @GNULIB_READDIR@ # if !@HAVE_READDIR@ _GL_FUNCDECL_SYS (readdir, struct dirent *, (DIR *dirp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (readdir, struct dirent *, (DIR *dirp)); _GL_CXXALIASWARN (readdir); #elif defined GNULIB_POSIXCHECK # undef readdir # if HAVE_RAW_DECL_READDIR _GL_WARN_ON_USE (readdir, "readdir is not portable - " "use gnulib module readdir for portability"); # endif #endif #if @GNULIB_REWINDDIR@ # if !@HAVE_REWINDDIR@ _GL_FUNCDECL_SYS (rewinddir, void, (DIR *dirp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (rewinddir, void, (DIR *dirp)); _GL_CXXALIASWARN (rewinddir); #elif defined GNULIB_POSIXCHECK # undef rewinddir # if HAVE_RAW_DECL_REWINDDIR _GL_WARN_ON_USE (rewinddir, "rewinddir is not portable - " "use gnulib module rewinddir for portability"); # endif #endif #if @GNULIB_CLOSEDIR@ # if @REPLACE_CLOSEDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef closedir # define closedir rpl_closedir # endif _GL_FUNCDECL_RPL (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (closedir, int, (DIR *dirp)); # else # if !@HAVE_CLOSEDIR@ _GL_FUNCDECL_SYS (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (closedir, int, (DIR *dirp)); # endif _GL_CXXALIASWARN (closedir); #elif defined GNULIB_POSIXCHECK # undef closedir # if HAVE_RAW_DECL_CLOSEDIR _GL_WARN_ON_USE (closedir, "closedir is not portable - " "use gnulib module closedir for portability"); # endif #endif #if @GNULIB_DIRFD@ /* Return the file descriptor associated with the given directory stream, or -1 if none exists. */ # if @REPLACE_DIRFD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef dirfd # define dirfd rpl_dirfd # endif _GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (dirfd, int, (DIR *)); # else # if defined __cplusplus && defined GNULIB_NAMESPACE && defined dirfd /* dirfd is defined as a macro and not as a function. Turn it into a function and get rid of the macro. */ static inline int (dirfd) (DIR *dp) { return dirfd (dp); } # undef dirfd # endif # if !(@HAVE_DECL_DIRFD@ || defined dirfd) _GL_FUNCDECL_SYS (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (dirfd, int, (DIR *)); # endif _GL_CXXALIASWARN (dirfd); #elif defined GNULIB_POSIXCHECK # undef dirfd # if HAVE_RAW_DECL_DIRFD _GL_WARN_ON_USE (dirfd, "dirfd is unportable - " "use gnulib module dirfd for portability"); # endif #endif #if @GNULIB_FDOPENDIR@ /* Open a directory stream visiting the given directory file descriptor. Return NULL and set errno if fd is not visiting a directory. On success, this function consumes fd (it will be implicitly closed either by this function or by a subsequent closedir). */ # if @REPLACE_FDOPENDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopendir # define fdopendir rpl_fdopendir # endif _GL_FUNCDECL_RPL (fdopendir, DIR *, (int fd)); _GL_CXXALIAS_RPL (fdopendir, DIR *, (int fd)); # else # if !@HAVE_FDOPENDIR@ || !@HAVE_DECL_FDOPENDIR@ _GL_FUNCDECL_SYS (fdopendir, DIR *, (int fd)); # endif _GL_CXXALIAS_SYS (fdopendir, DIR *, (int fd)); # endif _GL_CXXALIASWARN (fdopendir); #elif defined GNULIB_POSIXCHECK # undef fdopendir # if HAVE_RAW_DECL_FDOPENDIR _GL_WARN_ON_USE (fdopendir, "fdopendir is unportable - " "use gnulib module fdopendir for portability"); # endif #endif #if @GNULIB_SCANDIR@ /* Scan the directory DIR, calling FILTER on each directory entry. Entries for which FILTER returns nonzero are individually malloc'd, sorted using qsort with CMP, and collected in a malloc'd array in *NAMELIST. Returns the number of entries selected, or -1 on error. */ # if !@HAVE_SCANDIR@ _GL_FUNCDECL_SYS (scandir, int, (const char *dir, struct dirent ***namelist, int (*filter) (const struct dirent *), int (*cmp) (const struct dirent **, const struct dirent **)) _GL_ARG_NONNULL ((1, 2, 4))); # endif /* Need to cast, because on glibc systems, the fourth parameter is int (*cmp) (const void *, const void *). */ _GL_CXXALIAS_SYS_CAST (scandir, int, (const char *dir, struct dirent ***namelist, int (*filter) (const struct dirent *), int (*cmp) (const struct dirent **, const struct dirent **))); _GL_CXXALIASWARN (scandir); #elif defined GNULIB_POSIXCHECK # undef scandir # if HAVE_RAW_DECL_SCANDIR _GL_WARN_ON_USE (scandir, "scandir is unportable - " "use gnulib module scandir for portability"); # endif #endif #if @GNULIB_ALPHASORT@ /* Compare two 'struct dirent' entries alphabetically. */ # if !@HAVE_ALPHASORT@ _GL_FUNCDECL_SYS (alphasort, int, (const struct dirent **, const struct dirent **) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* Need to cast, because on glibc systems, the parameters are (const void *, const void *). */ _GL_CXXALIAS_SYS_CAST (alphasort, int, (const struct dirent **, const struct dirent **)); _GL_CXXALIASWARN (alphasort); #elif defined GNULIB_POSIXCHECK # undef alphasort # if HAVE_RAW_DECL_ALPHASORT _GL_WARN_ON_USE (alphasort, "alphasort is unportable - " "use gnulib module alphasort for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_DIRENT_H */ #endif /* _@GUARD_PREFIX@_DIRENT_H */ freedink-108.4+dfsg/gnulib/lib/unistd.in.h0000644000175000017500000014704512330466613016151 0ustar meme/* Substitute for and wrapper around . Copyright (C) 2003-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _@GUARD_PREFIX@_UNISTD_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #ifdef _GL_INCLUDING_UNISTD_H /* Special invocation convention: - On Mac OS X 10.3.9 we have a sequence of nested includes -> -> -> In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT@ @NEXT_UNISTD_H@ #else /* Normal invocation convention. */ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_UNISTD_H@ # define _GL_INCLUDING_UNISTD_H # @INCLUDE_NEXT@ @NEXT_UNISTD_H@ # undef _GL_INCLUDING_UNISTD_H #endif /* Get all possible declarations of gethostname(). */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ && !defined _GL_INCLUDING_WINSOCK2_H # define _GL_INCLUDING_WINSOCK2_H # include # undef _GL_INCLUDING_WINSOCK2_H #endif #if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H #define _@GUARD_PREFIX@_UNISTD_H /* NetBSD 5.0 mis-defines NULL. Also get size_t. */ #include /* mingw doesn't define the SEEK_* or *_FILENO macros in . */ /* Cygwin 1.7.1 declares symlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \ && defined __CYGWIN__)) \ && ! defined __GLIBC__ # include #endif /* Cygwin 1.7.1 declares unlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ && ! defined __GLIBC__ # include #endif /* mingw fails to declare _exit in . */ /* mingw, MSVC, BeOS, Haiku declare environ in , not in . */ /* Solaris declares getcwd not only in but also in . */ /* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is included here. */ /* But avoid namespace pollution on glibc systems. */ #if !defined __GLIBC__ && !defined __osf__ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h #endif /* Native Windows platforms declare chdir, getcwd, rmdir in and/or , not in . They also declare access(), chmod(), close(), dup(), dup2(), isatty(), lseek(), read(), unlink(), write() in . */ #if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) # include /* mingw32, mingw64 */ # include /* mingw64, MSVC 9 */ #elif (@GNULIB_CLOSE@ || @GNULIB_DUP@ || @GNULIB_DUP2@ || @GNULIB_ISATTY@ \ || @GNULIB_LSEEK@ || @GNULIB_READ@ || @GNULIB_UNLINK@ || @GNULIB_WRITE@ \ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif /* AIX and OSF/1 5.1 declare getdomainname in , not in . NonStop Kernel declares gethostname in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \ || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \ && !defined __GLIBC__ # include #endif /* MSVC defines off_t in . May also define off_t to a 64-bit type on native Windows. */ #if !@HAVE_UNISTD_H@ || @WINDOWS_64_BIT_OFF_T@ /* Get off_t. */ # include #endif #if (@GNULIB_READ@ || @GNULIB_WRITE@ \ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \ || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK) /* Get ssize_t. */ # include #endif /* Get getopt(), optarg, optind, opterr, optopt. But avoid namespace pollution on glibc systems. */ #if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT # define __need_getopt # include #endif #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_UNISTD_INLINE # define _GL_UNISTD_INLINE _GL_INLINE #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Hide some function declarations from . */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef socket # define socket socket_used_without_including_sys_socket_h # undef connect # define connect connect_used_without_including_sys_socket_h # undef accept # define accept accept_used_without_including_sys_socket_h # undef bind # define bind bind_used_without_including_sys_socket_h # undef getpeername # define getpeername getpeername_used_without_including_sys_socket_h # undef getsockname # define getsockname getsockname_used_without_including_sys_socket_h # undef getsockopt # define getsockopt getsockopt_used_without_including_sys_socket_h # undef listen # define listen listen_used_without_including_sys_socket_h # undef recv # define recv recv_used_without_including_sys_socket_h # undef send # define send send_used_without_including_sys_socket_h # undef recvfrom # define recvfrom recvfrom_used_without_including_sys_socket_h # undef sendto # define sendto sendto_used_without_including_sys_socket_h # undef setsockopt # define setsockopt setsockopt_used_without_including_sys_socket_h # undef shutdown # define shutdown shutdown_used_without_including_sys_socket_h # else _GL_WARN_ON_USE (socket, "socket() used without including "); _GL_WARN_ON_USE (connect, "connect() used without including "); _GL_WARN_ON_USE (accept, "accept() used without including "); _GL_WARN_ON_USE (bind, "bind() used without including "); _GL_WARN_ON_USE (getpeername, "getpeername() used without including "); _GL_WARN_ON_USE (getsockname, "getsockname() used without including "); _GL_WARN_ON_USE (getsockopt, "getsockopt() used without including "); _GL_WARN_ON_USE (listen, "listen() used without including "); _GL_WARN_ON_USE (recv, "recv() used without including "); _GL_WARN_ON_USE (send, "send() used without including "); _GL_WARN_ON_USE (recvfrom, "recvfrom() used without including "); _GL_WARN_ON_USE (sendto, "sendto() used without including "); _GL_WARN_ON_USE (setsockopt, "setsockopt() used without including "); _GL_WARN_ON_USE (shutdown, "shutdown() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SELECT_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef select # define select select_used_without_including_sys_select_h # else _GL_WARN_ON_USE (select, "select() used without including "); # endif # endif #endif /* OS/2 EMX lacks these macros. */ #ifndef STDIN_FILENO # define STDIN_FILENO 0 #endif #ifndef STDOUT_FILENO # define STDOUT_FILENO 1 #endif #ifndef STDERR_FILENO # define STDERR_FILENO 2 #endif /* Ensure *_OK macros exist. */ #ifndef F_OK # define F_OK 0 # define X_OK 1 # define W_OK 2 # define R_OK 4 #endif /* Declare overridden functions. */ #if defined GNULIB_POSIXCHECK /* The access() function is a security risk. */ _GL_WARN_ON_USE (access, "the access function is a security risk - " "use the gnulib module faccessat instead"); #endif #if @GNULIB_CHDIR@ _GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); _GL_CXXALIASWARN (chdir); #elif defined GNULIB_POSIXCHECK # undef chdir # if HAVE_RAW_DECL_CHDIR _GL_WARN_ON_USE (chown, "chdir is not always in - " "use gnulib module chdir for portability"); # endif #endif #if @GNULIB_CHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_DUP2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dup2 rpl_dup2 # endif _GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); _GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); # else # if !@HAVE_DUP2@ _GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIASWARN (dup2); #elif defined GNULIB_POSIXCHECK # undef dup2 # if HAVE_RAW_DECL_DUP2 _GL_WARN_ON_USE (dup2, "dup2 is unportable - " "use gnulib module dup2 for portability"); # endif #endif #if @GNULIB_DUP3@ /* Copy the file descriptor OLDFD into file descriptor NEWFD, with the specified flags. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Close NEWFD first if it is open. Return newfd if successful, otherwise -1 and errno set. See the Linux man page at . */ # if @HAVE_DUP3@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dup3 rpl_dup3 # endif _GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); _GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); # else _GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); _GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); # endif _GL_CXXALIASWARN (dup3); #elif defined GNULIB_POSIXCHECK # undef dup3 # if HAVE_RAW_DECL_DUP3 _GL_WARN_ON_USE (dup3, "dup3 is unportable - " "use gnulib module dup3 for portability"); # endif #endif #if @GNULIB_ENVIRON@ # if !@HAVE_DECL_ENVIRON@ /* Set of environment variables and values. An array of strings of the form "VARIABLE=VALUE", terminated with a NULL. */ # if defined __APPLE__ && defined __MACH__ # include # define environ (*_NSGetEnviron ()) # else # ifdef __cplusplus extern "C" { # endif extern char **environ; # ifdef __cplusplus } # endif # endif # endif #elif defined GNULIB_POSIXCHECK # if HAVE_RAW_DECL_ENVIRON _GL_UNISTD_INLINE char *** rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is unportable - " "use gnulib module environ for portability"); # undef environ # define environ (*rpl_environ ()) # endif #endif #if @GNULIB_EUIDACCESS@ /* Like access(), except that it uses the effective user id and group id of the current process. */ # if !@HAVE_EUIDACCESS@ _GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); _GL_CXXALIASWARN (euidaccess); # if defined GNULIB_POSIXCHECK /* Like access(), this function is a security risk. */ _GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " "use the gnulib module faccessat instead"); # endif #elif defined GNULIB_POSIXCHECK # undef euidaccess # if HAVE_RAW_DECL_EUIDACCESS _GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " "use gnulib module euidaccess for portability"); # endif #endif #if @GNULIB_FACCESSAT@ # if !@HAVE_FACCESSAT@ _GL_FUNCDECL_SYS (faccessat, int, (int fd, char const *file, int mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (faccessat, int, (int fd, char const *file, int mode, int flag)); _GL_CXXALIASWARN (faccessat); #elif defined GNULIB_POSIXCHECK # undef faccessat # if HAVE_RAW_DECL_FACCESSAT _GL_WARN_ON_USE (faccessat, "faccessat is not portable - " "use gnulib module faccessat for portability"); # endif #endif #if @GNULIB_FCHDIR@ /* Change the process' current working directory to the directory on which the given file descriptor is open. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if ! @HAVE_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); /* Gnulib internal hooks needed to maintain the fchdir metadata. */ _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) _GL_ARG_NONNULL ((2)); _GL_EXTERN_C void _gl_unregister_fd (int fd); _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); _GL_EXTERN_C const char *_gl_directory_name (int fd); # else # if !@HAVE_DECL_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); # endif # endif _GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); _GL_CXXALIASWARN (fchdir); #elif defined GNULIB_POSIXCHECK # undef fchdir # if HAVE_RAW_DECL_FCHDIR _GL_WARN_ON_USE (fchdir, "fchdir is unportable - " "use gnulib module fchdir for portability"); # endif #endif #if @GNULIB_FCHOWNAT@ # if @REPLACE_FCHOWNAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fchownat # define fchownat rpl_fchownat # endif _GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # else # if !@HAVE_FCHOWNAT@ _GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # endif _GL_CXXALIASWARN (fchownat); #elif defined GNULIB_POSIXCHECK # undef fchownat # if HAVE_RAW_DECL_FCHOWNAT _GL_WARN_ON_USE (fchownat, "fchownat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FDATASYNC@ /* Synchronize changes to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@ _GL_FUNCDECL_SYS (fdatasync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fdatasync, int, (int fd)); _GL_CXXALIASWARN (fdatasync); #elif defined GNULIB_POSIXCHECK # undef fdatasync # if HAVE_RAW_DECL_FDATASYNC _GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " "use gnulib module fdatasync for portability"); # endif #endif #if @GNULIB_FSYNC@ /* Synchronize changes, including metadata, to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if !@HAVE_FSYNC@ _GL_FUNCDECL_SYS (fsync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fsync, int, (int fd)); _GL_CXXALIASWARN (fsync); #elif defined GNULIB_POSIXCHECK # undef fsync # if HAVE_RAW_DECL_FSYNC _GL_WARN_ON_USE (fsync, "fsync is unportable - " "use gnulib module fsync for portability"); # endif #endif #if @GNULIB_FTRUNCATE@ /* Change the size of the file to which FD is opened to become equal to LENGTH. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_FTRUNCATE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftruncate # define ftruncate rpl_ftruncate # endif _GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); _GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); # else # if !@HAVE_FTRUNCATE@ _GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); # endif _GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); # endif _GL_CXXALIASWARN (ftruncate); #elif defined GNULIB_POSIXCHECK # undef ftruncate # if HAVE_RAW_DECL_FTRUNCATE _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " "use gnulib module ftruncate for portability"); # endif #endif #if @GNULIB_GETCWD@ /* Get the name of the current working directory, and put it in SIZE bytes of BUF. Return BUF if successful, or NULL if the directory couldn't be determined or SIZE was too small. See the POSIX:2008 specification . Additionally, the gnulib module 'getcwd' guarantees the following GNU extension: If BUF is NULL, an array is allocated with 'malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ # if @REPLACE_GETCWD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getcwd rpl_getcwd # endif _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); # else /* Need to cast, because on mingw, the second parameter is int size. */ _GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); # endif _GL_CXXALIASWARN (getcwd); #elif defined GNULIB_POSIXCHECK # undef getcwd # if HAVE_RAW_DECL_GETCWD _GL_WARN_ON_USE (getcwd, "getcwd is unportable - " "use gnulib module getcwd for portability"); # endif #endif #if @GNULIB_GETDOMAINNAME@ /* Return the NIS domain name of the machine. WARNING! The NIS domain name is unrelated to the fully qualified host name of the machine. It is also unrelated to email addresses. WARNING! The NIS domain name is usually the empty string or "(none)" when not using NIS. Put up to LEN bytes of the NIS domain name into NAME. Null terminate it if the name is shorter than LEN. If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @REPLACE_GETDOMAINNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdomainname # define getdomainname rpl_getdomainname # endif _GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); # else # if !@HAVE_DECL_GETDOMAINNAME@ _GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); # endif _GL_CXXALIASWARN (getdomainname); #elif defined GNULIB_POSIXCHECK # undef getdomainname # if HAVE_RAW_DECL_GETDOMAINNAME _GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " "use gnulib module getdomainname for portability"); # endif #endif #if @GNULIB_GETDTABLESIZE@ /* Return the maximum number of file descriptors in the current process. In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ # if @REPLACE_GETDTABLESIZE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdtablesize # define getdtablesize rpl_getdtablesize # endif _GL_FUNCDECL_RPL (getdtablesize, int, (void)); _GL_CXXALIAS_RPL (getdtablesize, int, (void)); # else # if !@HAVE_GETDTABLESIZE@ _GL_FUNCDECL_SYS (getdtablesize, int, (void)); # endif _GL_CXXALIAS_SYS (getdtablesize, int, (void)); # endif _GL_CXXALIASWARN (getdtablesize); #elif defined GNULIB_POSIXCHECK # undef getdtablesize # if HAVE_RAW_DECL_GETDTABLESIZE _GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " "use gnulib module getdtablesize for portability"); # endif #endif #if @GNULIB_GETGROUPS@ /* Return the supplemental groups that the current process belongs to. It is unspecified whether the effective group id is in the list. If N is 0, return the group count; otherwise, N describes how many entries are available in GROUPS. Return -1 and set errno if N is not 0 and not large enough. Fails with ENOSYS on some systems. */ # if @REPLACE_GETGROUPS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getgroups # define getgroups rpl_getgroups # endif _GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); _GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); # else # if !@HAVE_GETGROUPS@ _GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIASWARN (getgroups); #elif defined GNULIB_POSIXCHECK # undef getgroups # if HAVE_RAW_DECL_GETGROUPS _GL_WARN_ON_USE (getgroups, "getgroups is unportable - " "use gnulib module getgroups for portability"); # endif #endif #if @GNULIB_GETHOSTNAME@ /* Return the standard host name of the machine. WARNING! The host name may or may not be fully qualified. Put up to LEN bytes of the host name into NAME. Null terminate it if the name is shorter than LEN. If the host name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @UNISTD_H_HAVE_WINSOCK2_H@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gethostname # define gethostname rpl_gethostname # endif _GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); # else # if !@HAVE_GETHOSTNAME@ _GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second parameter is int len. */ _GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); # endif _GL_CXXALIASWARN (gethostname); #elif @UNISTD_H_HAVE_WINSOCK2_H@ # undef gethostname # define gethostname gethostname_used_without_requesting_gnulib_module_gethostname #elif defined GNULIB_POSIXCHECK # undef gethostname # if HAVE_RAW_DECL_GETHOSTNAME _GL_WARN_ON_USE (gethostname, "gethostname is unportable - " "use gnulib module gethostname for portability"); # endif #endif #if @GNULIB_GETLOGIN@ /* Returns the user's login name, or NULL if it cannot be found. Upon error, returns NULL with errno set. See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if !@HAVE_GETLOGIN@ _GL_FUNCDECL_SYS (getlogin, char *, (void)); # endif _GL_CXXALIAS_SYS (getlogin, char *, (void)); _GL_CXXALIASWARN (getlogin); #elif defined GNULIB_POSIXCHECK # undef getlogin # if HAVE_RAW_DECL_GETLOGIN _GL_WARN_ON_USE (getlogin, "getlogin is unportable - " "use gnulib module getlogin for portability"); # endif #endif #if @GNULIB_GETLOGIN_R@ /* Copies the user's login name to NAME. The array pointed to by NAME has room for SIZE bytes. Returns 0 if successful. Upon error, an error number is returned, or -1 in the case that the login name cannot be found but no specific error is provided (this case is hopefully rare but is left open by the POSIX spec). See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if @REPLACE_GETLOGIN_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getlogin_r rpl_getlogin_r # endif _GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); # else # if !@HAVE_DECL_GETLOGIN_R@ _GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 systems, the second argument is int size. */ _GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); # endif _GL_CXXALIASWARN (getlogin_r); #elif defined GNULIB_POSIXCHECK # undef getlogin_r # if HAVE_RAW_DECL_GETLOGIN_R _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " "use gnulib module getlogin_r for portability"); # endif #endif #if @GNULIB_GETPAGESIZE@ # if @REPLACE_GETPAGESIZE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize rpl_getpagesize # endif _GL_FUNCDECL_RPL (getpagesize, int, (void)); _GL_CXXALIAS_RPL (getpagesize, int, (void)); # else # if !@HAVE_GETPAGESIZE@ # if !defined getpagesize /* This is for POSIX systems. */ # if !defined _gl_getpagesize && defined _SC_PAGESIZE # if ! (defined __VMS && __VMS_VER < 70000000) # define _gl_getpagesize() sysconf (_SC_PAGESIZE) # endif # endif /* This is for older VMS. */ # if !defined _gl_getpagesize && defined __VMS # ifdef __ALPHA # define _gl_getpagesize() 8192 # else # define _gl_getpagesize() 512 # endif # endif /* This is for BeOS. */ # if !defined _gl_getpagesize && @HAVE_OS_H@ # include # if defined B_PAGE_SIZE # define _gl_getpagesize() B_PAGE_SIZE # endif # endif /* This is for AmigaOS4.0. */ # if !defined _gl_getpagesize && defined __amigaos4__ # define _gl_getpagesize() 2048 # endif /* This is for older Unix systems. */ # if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@ # include # ifdef EXEC_PAGESIZE # define _gl_getpagesize() EXEC_PAGESIZE # else # ifdef NBPG # ifndef CLSIZE # define CLSIZE 1 # endif # define _gl_getpagesize() (NBPG * CLSIZE) # else # ifdef NBPC # define _gl_getpagesize() NBPC # endif # endif # endif # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize() _gl_getpagesize () # else # if !GNULIB_defined_getpagesize_function _GL_UNISTD_INLINE int getpagesize () { return _gl_getpagesize (); } # define GNULIB_defined_getpagesize_function 1 # endif # endif # endif # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); # endif # if @HAVE_DECL_GETPAGESIZE@ _GL_CXXALIASWARN (getpagesize); # endif #elif defined GNULIB_POSIXCHECK # undef getpagesize # if HAVE_RAW_DECL_GETPAGESIZE _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " "use gnulib module getpagesize for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Return the next valid login shell on the system, or NULL when the end of the list has been reached. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (getusershell, char *, (void)); # endif _GL_CXXALIAS_SYS (getusershell, char *, (void)); _GL_CXXALIASWARN (getusershell); #elif defined GNULIB_POSIXCHECK # undef getusershell # if HAVE_RAW_DECL_GETUSERSHELL _GL_WARN_ON_USE (getusershell, "getusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Rewind to pointer that is advanced at each getusershell() call. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (setusershell, void, (void)); # endif _GL_CXXALIAS_SYS (setusershell, void, (void)); _GL_CXXALIASWARN (setusershell); #elif defined GNULIB_POSIXCHECK # undef setusershell # if HAVE_RAW_DECL_SETUSERSHELL _GL_WARN_ON_USE (setusershell, "setusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Free the pointer that is advanced at each getusershell() call and associated resources. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (endusershell, void, (void)); # endif _GL_CXXALIAS_SYS (endusershell, void, (void)); _GL_CXXALIASWARN (endusershell); #elif defined GNULIB_POSIXCHECK # undef endusershell # if HAVE_RAW_DECL_ENDUSERSHELL _GL_WARN_ON_USE (endusershell, "endusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GROUP_MEMBER@ /* Determine whether group id is in calling user's group list. */ # if !@HAVE_GROUP_MEMBER@ _GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); # endif _GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); _GL_CXXALIASWARN (group_member); #elif defined GNULIB_POSIXCHECK # undef group_member # if HAVE_RAW_DECL_GROUP_MEMBER _GL_WARN_ON_USE (group_member, "group_member is unportable - " "use gnulib module group-member for portability"); # endif #endif #if @GNULIB_ISATTY@ # if @REPLACE_ISATTY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef isatty # define isatty rpl_isatty # endif _GL_FUNCDECL_RPL (isatty, int, (int fd)); _GL_CXXALIAS_RPL (isatty, int, (int fd)); # else _GL_CXXALIAS_SYS (isatty, int, (int fd)); # endif _GL_CXXALIASWARN (isatty); #elif defined GNULIB_POSIXCHECK # undef isatty # if HAVE_RAW_DECL_ISATTY _GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " "use gnulib module isatty for portability"); # endif #endif #if @GNULIB_LCHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Do not follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LCHOWN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lchown # define lchown rpl_lchown # endif _GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); # else # if !@HAVE_LCHOWN@ _GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); # endif _GL_CXXALIASWARN (lchown); #elif defined GNULIB_POSIXCHECK # undef lchown # if HAVE_RAW_DECL_LCHOWN _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " "use gnulib module lchown for portability"); # endif #endif #if @GNULIB_LINK@ /* Create a new hard link for an existing file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if @REPLACE_LINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define link rpl_link # endif _GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); # else # if !@HAVE_LINK@ _GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); # endif _GL_CXXALIASWARN (link); #elif defined GNULIB_POSIXCHECK # undef link # if HAVE_RAW_DECL_LINK _GL_WARN_ON_USE (link, "link is unportable - " "use gnulib module link for portability"); # endif #endif #if @GNULIB_LINKAT@ /* Create a new hard link for an existing file, relative to two directories. FLAG controls whether symlinks are followed. Return 0 if successful, otherwise -1 and errno set. */ # if @REPLACE_LINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef linkat # define linkat rpl_linkat # endif _GL_FUNCDECL_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # else # if !@HAVE_LINKAT@ _GL_FUNCDECL_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # endif _GL_CXXALIASWARN (linkat); #elif defined GNULIB_POSIXCHECK # undef linkat # if HAVE_RAW_DECL_LINKAT _GL_WARN_ON_USE (linkat, "linkat is unportable - " "use gnulib module linkat for portability"); # endif #endif #if @GNULIB_LSEEK@ /* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. Return the new offset if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lseek rpl_lseek # endif _GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); # else _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); # endif _GL_CXXALIASWARN (lseek); #elif defined GNULIB_POSIXCHECK # undef lseek # if HAVE_RAW_DECL_LSEEK _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " "systems - use gnulib module lseek for portability"); # endif #endif #if @GNULIB_PIPE@ /* Create a pipe, defaulting to O_BINARY mode. Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. */ # if !@HAVE_PIPE@ _GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pipe, int, (int fd[2])); _GL_CXXALIASWARN (pipe); #elif defined GNULIB_POSIXCHECK # undef pipe # if HAVE_RAW_DECL_PIPE _GL_WARN_ON_USE (pipe, "pipe is unportable - " "use gnulib module pipe-posix for portability"); # endif #endif #if @GNULIB_PIPE2@ /* Create a pipe, applying the given flags when opening the read-end of the pipe and the write-end of the pipe. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. See also the Linux man page at . */ # if @HAVE_PIPE2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define pipe2 rpl_pipe2 # endif _GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); # else _GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); # endif _GL_CXXALIASWARN (pipe2); #elif defined GNULIB_POSIXCHECK # undef pipe2 # if HAVE_RAW_DECL_PIPE2 _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " "use gnulib module pipe2 for portability"); # endif #endif #if @GNULIB_PREAD@ /* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. Return the number of bytes placed into BUF if successful, otherwise set errno and return -1. 0 indicates EOF. See the POSIX:2008 specification . */ # if @REPLACE_PREAD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pread # define pread rpl_pread # endif _GL_FUNCDECL_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PREAD@ _GL_FUNCDECL_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # endif _GL_CXXALIASWARN (pread); #elif defined GNULIB_POSIXCHECK # undef pread # if HAVE_RAW_DECL_PREAD _GL_WARN_ON_USE (pread, "pread is unportable - " "use gnulib module pread for portability"); # endif #endif #if @GNULIB_PWRITE@ /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. Return the number of bytes written if successful, otherwise set errno and return -1. 0 indicates nothing written. See the POSIX:2008 specification . */ # if @REPLACE_PWRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pwrite # define pwrite rpl_pwrite # endif _GL_FUNCDECL_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PWRITE@ _GL_FUNCDECL_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # endif _GL_CXXALIASWARN (pwrite); #elif defined GNULIB_POSIXCHECK # undef pwrite # if HAVE_RAW_DECL_PWRITE _GL_WARN_ON_USE (pwrite, "pwrite is unportable - " "use gnulib module pwrite for portability"); # endif #endif #if @GNULIB_READ@ /* Read up to COUNT bytes from file descriptor FD into the buffer starting at BUF. See the POSIX:2008 specification . */ # if @REPLACE_READ@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef read # define read rpl_read # endif _GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); # else /* Need to cast, because on mingw, the third parameter is unsigned int count and the return type is 'int'. */ _GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); # endif _GL_CXXALIASWARN (read); #endif #if @GNULIB_READLINK@ /* Read the contents of the symbolic link FILE and place the first BUFSIZE bytes of it into BUF. Return the number of bytes placed into BUF if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_READLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define readlink rpl_readlink # endif _GL_FUNCDECL_RPL (readlink, ssize_t, (const char *file, char *buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (readlink, ssize_t, (const char *file, char *buf, size_t bufsize)); # else # if !@HAVE_READLINK@ _GL_FUNCDECL_SYS (readlink, ssize_t, (const char *file, char *buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (readlink, ssize_t, (const char *file, char *buf, size_t bufsize)); # endif _GL_CXXALIASWARN (readlink); #elif defined GNULIB_POSIXCHECK # undef readlink # if HAVE_RAW_DECL_READLINK _GL_WARN_ON_USE (readlink, "readlink is unportable - " "use gnulib module readlink for portability"); # endif #endif #if @GNULIB_READLINKAT@ # if !@HAVE_READLINKAT@ _GL_FUNCDECL_SYS (readlinkat, ssize_t, (int fd, char const *file, char *buf, size_t len) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (readlinkat, ssize_t, (int fd, char const *file, char *buf, size_t len)); _GL_CXXALIASWARN (readlinkat); #elif defined GNULIB_POSIXCHECK # undef readlinkat # if HAVE_RAW_DECL_READLINKAT _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " "use gnulib module readlinkat for portability"); # endif #endif #if @GNULIB_RMDIR@ /* Remove the directory DIR. */ # if @REPLACE_RMDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define rmdir rpl_rmdir # endif _GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (rmdir, int, (char const *name)); # else _GL_CXXALIAS_SYS (rmdir, int, (char const *name)); # endif _GL_CXXALIASWARN (rmdir); #elif defined GNULIB_POSIXCHECK # undef rmdir # if HAVE_RAW_DECL_RMDIR _GL_WARN_ON_USE (rmdir, "rmdir is unportable - " "use gnulib module rmdir for portability"); # endif #endif #if @GNULIB_SETHOSTNAME@ /* Set the host name of the machine. The host name may or may not be fully qualified. Put LEN bytes of NAME into the host name. Return 0 if successful, otherwise, set errno and return -1. Platforms with no ability to set the hostname return -1 and set errno = ENOSYS. */ # if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@ _GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 and FreeBSD 6.4 the second parameter is int. On Solaris 11 2011-10, the first parameter is not const. */ _GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); _GL_CXXALIASWARN (sethostname); #elif defined GNULIB_POSIXCHECK # undef sethostname # if HAVE_RAW_DECL_SETHOSTNAME _GL_WARN_ON_USE (sethostname, "sethostname is unportable - " "use gnulib module sethostname for portability"); # endif #endif #if @GNULIB_SLEEP@ /* Pause the execution of the current thread for N seconds. Returns the number of seconds left to sleep. See the POSIX:2008 specification . */ # if @REPLACE_SLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sleep # define sleep rpl_sleep # endif _GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); # else # if !@HAVE_SLEEP@ _GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIASWARN (sleep); #elif defined GNULIB_POSIXCHECK # undef sleep # if HAVE_RAW_DECL_SLEEP _GL_WARN_ON_USE (sleep, "sleep is unportable - " "use gnulib module sleep for portability"); # endif #endif #if @GNULIB_SYMLINK@ # if @REPLACE_SYMLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef symlink # define symlink rpl_symlink # endif _GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); # else # if !@HAVE_SYMLINK@ _GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); # endif _GL_CXXALIASWARN (symlink); #elif defined GNULIB_POSIXCHECK # undef symlink # if HAVE_RAW_DECL_SYMLINK _GL_WARN_ON_USE (symlink, "symlink is not portable - " "use gnulib module symlink for portability"); # endif #endif #if @GNULIB_SYMLINKAT@ # if !@HAVE_SYMLINKAT@ _GL_FUNCDECL_SYS (symlinkat, int, (char const *contents, int fd, char const *file) _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (symlinkat, int, (char const *contents, int fd, char const *file)); _GL_CXXALIASWARN (symlinkat); #elif defined GNULIB_POSIXCHECK # undef symlinkat # if HAVE_RAW_DECL_SYMLINKAT _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " "use gnulib module symlinkat for portability"); # endif #endif #if @GNULIB_TTYNAME_R@ /* Store at most BUFLEN characters of the pathname of the terminal FD is open on in BUF. Return 0 on success, otherwise an error number. */ # if @REPLACE_TTYNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ttyname_r # define ttyname_r rpl_ttyname_r # endif _GL_FUNCDECL_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen)); # else # if !@HAVE_DECL_TTYNAME_R@ _GL_FUNCDECL_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen)); # endif _GL_CXXALIASWARN (ttyname_r); #elif defined GNULIB_POSIXCHECK # undef ttyname_r # if HAVE_RAW_DECL_TTYNAME_R _GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " "use gnulib module ttyname_r for portability"); # endif #endif #if @GNULIB_UNLINK@ # if @REPLACE_UNLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlink # define unlink rpl_unlink # endif _GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unlink, int, (char const *file)); # else _GL_CXXALIAS_SYS (unlink, int, (char const *file)); # endif _GL_CXXALIASWARN (unlink); #elif defined GNULIB_POSIXCHECK # undef unlink # if HAVE_RAW_DECL_UNLINK _GL_WARN_ON_USE (unlink, "unlink is not portable - " "use gnulib module unlink for portability"); # endif #endif #if @GNULIB_UNLINKAT@ # if @REPLACE_UNLINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlinkat # define unlinkat rpl_unlinkat # endif _GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); # else # if !@HAVE_UNLINKAT@ _GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); # endif _GL_CXXALIASWARN (unlinkat); #elif defined GNULIB_POSIXCHECK # undef unlinkat # if HAVE_RAW_DECL_UNLINKAT _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_USLEEP@ /* Pause the execution of the current thread for N microseconds. Returns 0 on completion, or -1 on range error. See the POSIX:2001 specification . */ # if @REPLACE_USLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef usleep # define usleep rpl_usleep # endif _GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); _GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); # else # if !@HAVE_USLEEP@ _GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); # endif _GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); # endif _GL_CXXALIASWARN (usleep); #elif defined GNULIB_POSIXCHECK # undef usleep # if HAVE_RAW_DECL_USLEEP _GL_WARN_ON_USE (usleep, "usleep is unportable - " "use gnulib module usleep for portability"); # endif #endif #if @GNULIB_WRITE@ /* Write up to COUNT bytes starting at BUF to file descriptor FD. See the POSIX:2008 specification . */ # if @REPLACE_WRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef write # define write rpl_write # endif _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); # else /* Need to cast, because on mingw, the third parameter is unsigned int count and the return type is 'int'. */ _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); # endif _GL_CXXALIASWARN (write); #endif _GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_UNISTD_H */ #endif /* _GL_INCLUDING_UNISTD_H */ #endif /* _@GUARD_PREFIX@_UNISTD_H */ freedink-108.4+dfsg/gnulib/lib/hash.h0000644000175000017500000001040112330466613015142 0ustar meme/* hash - hashing table processing. Copyright (C) 1998-1999, 2001, 2003, 2009-2014 Free Software Foundation, Inc. Written by Jim Meyering , 1998. 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 3 of the License, 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, see . */ /* A generic hash table package. */ /* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use obstacks instead of malloc, and recompile 'hash.c' with same setting. */ #ifndef HASH_H_ # define HASH_H_ # include # include /* The __attribute__ feature is available in gcc versions 2.5 and later. The warn_unused_result attribute appeared first in gcc-3.4.0. */ # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_WUR __attribute__ ((__warn_unused_result__)) # else # define _GL_ATTRIBUTE_WUR /* empty */ # endif # ifndef _GL_ATTRIBUTE_DEPRECATED /* The __attribute__((__deprecated__)) feature is available in gcc versions 3.1 and newer. */ # if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 1) # define _GL_ATTRIBUTE_DEPRECATED /* empty */ # else # define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) # endif # endif typedef size_t (*Hash_hasher) (const void *, size_t); typedef bool (*Hash_comparator) (const void *, const void *); typedef void (*Hash_data_freer) (void *); typedef bool (*Hash_processor) (void *, void *); struct hash_tuning { /* This structure is mainly used for 'hash_initialize', see the block documentation of 'hash_reset_tuning' for more complete comments. */ float shrink_threshold; /* ratio of used buckets to trigger a shrink */ float shrink_factor; /* ratio of new smaller size to original size */ float growth_threshold; /* ratio of used buckets to trigger a growth */ float growth_factor; /* ratio of new bigger size to original size */ bool is_n_buckets; /* if CANDIDATE really means table size */ }; typedef struct hash_tuning Hash_tuning; struct hash_table; typedef struct hash_table Hash_table; /* Information and lookup. */ size_t hash_get_n_buckets (const Hash_table *) _GL_ATTRIBUTE_PURE; size_t hash_get_n_buckets_used (const Hash_table *) _GL_ATTRIBUTE_PURE; size_t hash_get_n_entries (const Hash_table *) _GL_ATTRIBUTE_PURE; size_t hash_get_max_bucket_length (const Hash_table *) _GL_ATTRIBUTE_PURE; bool hash_table_ok (const Hash_table *) _GL_ATTRIBUTE_PURE; void hash_print_statistics (const Hash_table *, FILE *); void *hash_lookup (const Hash_table *, const void *); /* Walking. */ void *hash_get_first (const Hash_table *) _GL_ATTRIBUTE_PURE; void *hash_get_next (const Hash_table *, const void *); size_t hash_get_entries (const Hash_table *, void **, size_t); size_t hash_do_for_each (const Hash_table *, Hash_processor, void *); /* Allocation and clean-up. */ size_t hash_string (const char *, size_t) _GL_ATTRIBUTE_PURE; void hash_reset_tuning (Hash_tuning *); Hash_table *hash_initialize (size_t, const Hash_tuning *, Hash_hasher, Hash_comparator, Hash_data_freer) _GL_ATTRIBUTE_WUR; void hash_clear (Hash_table *); void hash_free (Hash_table *); /* Insertion and deletion. */ bool hash_rehash (Hash_table *, size_t) _GL_ATTRIBUTE_WUR; void *hash_insert (Hash_table *, const void *) _GL_ATTRIBUTE_WUR; /* Deprecate this interface. It has been renamed to hash_insert_if_absent. */ int hash_insert0 (Hash_table *table, /* FIXME: remove in 2013 */ const void *entry, const void **matched_ent) _GL_ATTRIBUTE_DEPRECATED; int hash_insert_if_absent (Hash_table *table, const void *entry, const void **matched_ent); void *hash_delete (Hash_table *, const void *); #endif freedink-108.4+dfsg/gnulib/lib/getcwd.c0000644000175000017500000003053612330466613015502 0ustar meme/* Copyright (C) 1991-1999, 2004-2014 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 3 of the License, 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, see . */ #if !_LIBC # include # include #endif #include #include #include #include #include #include /* For AT_FDCWD on Solaris 9. */ /* If this host provides the openat function or if we're using the gnulib replacement function with a native fdopendir, then enable code below to make getcwd more efficient and robust. */ #if defined HAVE_OPENAT || (defined GNULIB_OPENAT && defined HAVE_FDOPENDIR) # define HAVE_OPENAT_SUPPORT 1 #else # define HAVE_OPENAT_SUPPORT 0 #endif #ifndef __set_errno # define __set_errno(val) (errno = (val)) #endif #include #ifndef _D_EXACT_NAMLEN # define _D_EXACT_NAMLEN(d) strlen ((d)->d_name) #endif #ifndef _D_ALLOC_NAMLEN # define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1) #endif #include #include #include #if _LIBC # ifndef mempcpy # define mempcpy __mempcpy # endif #endif #ifndef MAX # define MAX(a, b) ((a) < (b) ? (b) : (a)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #include "pathmax.h" /* In this file, PATH_MAX only serves as a threshold for choosing among two algorithms. */ #ifndef PATH_MAX # define PATH_MAX 8192 #endif #if D_INO_IN_DIRENT # define MATCHING_INO(dp, ino) ((dp)->d_ino == (ino)) #else # define MATCHING_INO(dp, ino) true #endif #if !_LIBC # define __getcwd rpl_getcwd # define __lstat lstat # define __closedir closedir # define __opendir opendir # define __readdir readdir #endif /* The results of opendir() in this file are not used with dirfd and fchdir, and we do not leak fds to any single-threaded code that could use stdio, therefore save some unnecessary recursion in fchdir.c. FIXME - if the kernel ever adds support for multi-thread safety for avoiding standard fds, then we should use opendir_safer and openat_safer. */ #undef opendir #undef closedir /* Get the name of the current working directory, and put it in SIZE bytes of BUF. Returns NULL if the directory couldn't be determined or SIZE was too small. If successful, returns BUF. In GNU, if BUF is NULL, an array is allocated with 'malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ char * __getcwd (char *buf, size_t size) { /* Lengths of big file name components and entire file names, and a deep level of file name nesting. These numbers are not upper bounds; they are merely large values suitable for initial allocations, designed to be large enough for most real-world uses. */ enum { BIG_FILE_NAME_COMPONENT_LENGTH = 255, BIG_FILE_NAME_LENGTH = MIN (4095, PATH_MAX - 1), DEEP_NESTING = 100 }; #if HAVE_OPENAT_SUPPORT int fd = AT_FDCWD; bool fd_needs_closing = false; #else char dots[DEEP_NESTING * sizeof ".." + BIG_FILE_NAME_COMPONENT_LENGTH + 1]; char *dotlist = dots; size_t dotsize = sizeof dots; size_t dotlen = 0; #endif DIR *dirstream = NULL; dev_t rootdev, thisdev; ino_t rootino, thisino; char *dir; register char *dirp; struct stat st; size_t allocated = size; size_t used; #if HAVE_MINIMALLY_WORKING_GETCWD /* If AT_FDCWD is not defined, the algorithm below is O(N**2) and this is much slower than the system getcwd (at least on GNU/Linux). So trust the system getcwd's results unless they look suspicious. Use the system getcwd even if we have openat support, since the system getcwd works even when a parent is unreadable, while the openat-based approach does not. But on AIX 5.1..7.1, the system getcwd is not even minimally working: If the current directory name is slightly longer than PATH_MAX, it omits the first directory component and returns this wrong result with errno = 0. */ # undef getcwd dir = getcwd (buf, size); if (dir || (size && errno == ERANGE)) return dir; /* Solaris getcwd (NULL, 0) fails with errno == EINVAL, but it has internal magic that lets it work even if an ancestor directory is inaccessible, which is better in many cases. So in this case try again with a buffer that's almost always big enough. */ if (errno == EINVAL && buf == NULL && size == 0) { char big_buffer[BIG_FILE_NAME_LENGTH + 1]; dir = getcwd (big_buffer, sizeof big_buffer); if (dir) return strdup (dir); } # if HAVE_PARTLY_WORKING_GETCWD /* The system getcwd works, except it sometimes fails when it shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT. */ if (errno != ERANGE && errno != ENAMETOOLONG && errno != ENOENT) return NULL; # endif #endif if (size == 0) { if (buf != NULL) { __set_errno (EINVAL); return NULL; } allocated = BIG_FILE_NAME_LENGTH + 1; } if (buf == NULL) { dir = malloc (allocated); if (dir == NULL) return NULL; } else dir = buf; dirp = dir + allocated; *--dirp = '\0'; if (__lstat (".", &st) < 0) goto lose; thisdev = st.st_dev; thisino = st.st_ino; if (__lstat ("/", &st) < 0) goto lose; rootdev = st.st_dev; rootino = st.st_ino; while (!(thisdev == rootdev && thisino == rootino)) { struct dirent *d; dev_t dotdev; ino_t dotino; bool mount_point; int parent_status; size_t dirroom; size_t namlen; bool use_d_ino = true; /* Look at the parent directory. */ #if HAVE_OPENAT_SUPPORT fd = openat (fd, "..", O_RDONLY); if (fd < 0) goto lose; fd_needs_closing = true; parent_status = fstat (fd, &st); #else dotlist[dotlen++] = '.'; dotlist[dotlen++] = '.'; dotlist[dotlen] = '\0'; parent_status = __lstat (dotlist, &st); #endif if (parent_status != 0) goto lose; if (dirstream && __closedir (dirstream) != 0) { dirstream = NULL; goto lose; } /* Figure out if this directory is a mount point. */ dotdev = st.st_dev; dotino = st.st_ino; mount_point = dotdev != thisdev; /* Search for the last directory. */ #if HAVE_OPENAT_SUPPORT dirstream = fdopendir (fd); if (dirstream == NULL) goto lose; fd_needs_closing = false; #else dirstream = __opendir (dotlist); if (dirstream == NULL) goto lose; dotlist[dotlen++] = '/'; #endif for (;;) { /* Clear errno to distinguish EOF from error if readdir returns NULL. */ __set_errno (0); d = __readdir (dirstream); /* When we've iterated through all directory entries without finding one with a matching d_ino, rewind the stream and consider each name again, but this time, using lstat. This is necessary in a chroot on at least one system (glibc-2.3.6 + linux 2.6.12), where .., ../.., ../../.., etc. all had the same device number, yet the d_ino values for entries in / did not match those obtained via lstat. */ if (d == NULL && errno == 0 && use_d_ino) { use_d_ino = false; rewinddir (dirstream); d = __readdir (dirstream); } if (d == NULL) { if (errno == 0) /* EOF on dirstream, which can mean e.g., that the current directory has been removed. */ __set_errno (ENOENT); goto lose; } if (d->d_name[0] == '.' && (d->d_name[1] == '\0' || (d->d_name[1] == '.' && d->d_name[2] == '\0'))) continue; if (use_d_ino) { bool match = (MATCHING_INO (d, thisino) || mount_point); if (! match) continue; } { int entry_status; #if HAVE_OPENAT_SUPPORT entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW); #else /* Compute size needed for this file name, or for the file name ".." in the same directory, whichever is larger. Room for ".." might be needed the next time through the outer loop. */ size_t name_alloc = _D_ALLOC_NAMLEN (d); size_t filesize = dotlen + MAX (sizeof "..", name_alloc); if (filesize < dotlen) goto memory_exhausted; if (dotsize < filesize) { /* My, what a deep directory tree you have, Grandma. */ size_t newsize = MAX (filesize, dotsize * 2); size_t i; if (newsize < dotsize) goto memory_exhausted; if (dotlist != dots) free (dotlist); dotlist = malloc (newsize); if (dotlist == NULL) goto lose; dotsize = newsize; i = 0; do { dotlist[i++] = '.'; dotlist[i++] = '.'; dotlist[i++] = '/'; } while (i < dotlen); } memcpy (dotlist + dotlen, d->d_name, _D_ALLOC_NAMLEN (d)); entry_status = __lstat (dotlist, &st); #endif /* We don't fail here if we cannot stat() a directory entry. This can happen when (network) file systems fail. If this entry is in fact the one we are looking for we will find out soon as we reach the end of the directory without having found anything. */ if (entry_status == 0 && S_ISDIR (st.st_mode) && st.st_dev == thisdev && st.st_ino == thisino) break; } } dirroom = dirp - dir; namlen = _D_EXACT_NAMLEN (d); if (dirroom <= namlen) { if (size != 0) { __set_errno (ERANGE); goto lose; } else { char *tmp; size_t oldsize = allocated; allocated += MAX (allocated, namlen); if (allocated < oldsize || ! (tmp = realloc (dir, allocated))) goto memory_exhausted; /* Move current contents up to the end of the buffer. This is guaranteed to be non-overlapping. */ dirp = memcpy (tmp + allocated - (oldsize - dirroom), tmp + dirroom, oldsize - dirroom); dir = tmp; } } dirp -= namlen; memcpy (dirp, d->d_name, namlen); *--dirp = '/'; thisdev = dotdev; thisino = dotino; } if (dirstream && __closedir (dirstream) != 0) { dirstream = NULL; goto lose; } if (dirp == &dir[allocated - 1]) *--dirp = '/'; #if ! HAVE_OPENAT_SUPPORT if (dotlist != dots) free (dotlist); #endif used = dir + allocated - dirp; memmove (dir, dirp, used); if (size == 0) /* Ensure that the buffer is only as large as necessary. */ buf = realloc (dir, used); if (buf == NULL) /* Either buf was NULL all along, or 'realloc' failed but we still have the original string. */ buf = dir; return buf; memory_exhausted: __set_errno (ENOMEM); lose: { int save = errno; if (dirstream) __closedir (dirstream); #if HAVE_OPENAT_SUPPORT if (fd_needs_closing) close (fd); #else if (dotlist != dots) free (dotlist); #endif if (buf == NULL) free (dir); __set_errno (save); } return NULL; } #ifdef weak_alias weak_alias (__getcwd, getcwd) #endif freedink-108.4+dfsg/gnulib/lib/openat-priv.h0000644000175000017500000000506312330466613016473 0ustar meme/* Internals for openat-like functions. Copyright (C) 2005-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #ifndef _GL_HEADER_OPENAT_PRIV #define _GL_HEADER_OPENAT_PRIV #include #include #include /* Maximum number of bytes that it is safe to allocate as a single array on the stack, and that is known as a compile-time constant. The assumption is that we'll touch the array very quickly, or a temporary very near the array, provoking an out-of-memory trap. On some operating systems, there is only one guard page for the stack, and a page size can be as small as 4096 bytes. Subtract 64 in the hope that this will let the compiler touch a nearby temporary and provoke a trap. */ #define SAFER_ALLOCA_MAX (4096 - 64) #define SAFER_ALLOCA(m) ((m) < SAFER_ALLOCA_MAX ? (m) : SAFER_ALLOCA_MAX) #if defined PATH_MAX # define OPENAT_BUFFER_SIZE SAFER_ALLOCA (PATH_MAX) #elif defined _XOPEN_PATH_MAX # define OPENAT_BUFFER_SIZE SAFER_ALLOCA (_XOPEN_PATH_MAX) #else # define OPENAT_BUFFER_SIZE SAFER_ALLOCA (1024) #endif char *openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file); /* Trying to access a BUILD_PROC_NAME file will fail on systems without /proc support, and even on systems *with* ProcFS support. Return nonzero if the failure may be legitimate, e.g., because /proc is not readable, or the particular .../fd/N directory is not present. */ #define EXPECTED_ERRNO(Errno) \ ((Errno) == ENOTDIR || (Errno) == ENOENT \ || (Errno) == EPERM || (Errno) == EACCES \ || (Errno) == ENOSYS /* Solaris 8 */ \ || (Errno) == EOPNOTSUPP /* FreeBSD */) /* Wrapper function shared among linkat and renameat. */ int at_func2 (int fd1, char const *file1, int fd2, char const *file2, int (*func) (char const *file1, char const *file2)); #endif /* _GL_HEADER_OPENAT_PRIV */ freedink-108.4+dfsg/gnulib/lib/dup-safer.c0000644000175000017500000000202612330466613016104 0ustar meme/* Invoke dup, but avoid some glitches. Copyright (C) 2001, 2004-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert. */ #include #include "unistd-safer.h" #include #include /* Like dup, but do not return STDIN_FILENO, STDOUT_FILENO, or STDERR_FILENO. */ int dup_safer (int fd) { return fcntl (fd, F_DUPFD, STDERR_FILENO + 1); } freedink-108.4+dfsg/gnulib/lib/realloc.c0000644000175000017500000000407012330466613015640 0ustar meme/* realloc() function that is glibc compatible. Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering and Bruno Haible */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h. */ #ifdef realloc # define NEED_REALLOC_GNU 1 /* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU. */ #elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU # define NEED_REALLOC_GNU 1 #endif /* Infer the properties of the system's malloc function. The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */ #if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU # define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1 #endif #include #include /* Change the size of an allocated block of memory P to N bytes, with error checking. If N is zero, change it to 1. If P is NULL, use malloc. */ void * rpl_realloc (void *p, size_t n) { void *result; #if NEED_REALLOC_GNU if (n == 0) { n = 1; /* In theory realloc might fail, so don't rely on it to free. */ free (p); p = NULL; } #endif if (p == NULL) { #if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE if (n == 0) n = 1; #endif result = malloc (n); } else result = realloc (p, n); #if !HAVE_REALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } freedink-108.4+dfsg/gnulib/lib/basename-lgpl.c0000644000175000017500000000406112330466613016726 0ustar meme/* basename.c -- return the last element in a file name Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "dirname.h" #include /* Return the address of the last file name component of NAME. If NAME has no relative file name components because it is a file system root, return the empty string. */ char * last_component (char const *name) { char const *base = name + FILE_SYSTEM_PREFIX_LEN (name); char const *p; bool saw_slash = false; while (ISSLASH (*base)) base++; for (p = base; *p; p++) { if (ISSLASH (*p)) saw_slash = true; else if (saw_slash) { base = p; saw_slash = false; } } return (char *) base; } /* Return the length of the basename NAME. Typically NAME is the value returned by base_name or last_component. Act like strlen (NAME), except omit all trailing slashes. */ size_t base_len (char const *name) { size_t len; size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name); for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1 && ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2]) return 2; if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len && len == prefix_len && ISSLASH (name[prefix_len])) return prefix_len + 1; return len; } freedink-108.4+dfsg/gnulib/lib/fcntl.in.h0000644000175000017500000002244312330466613015743 0ustar meme/* Like , but with non-working flags defined to 0. Copyright (C) 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Paul Eggert */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_fcntl_h /* Special invocation convention. */ /* Needed before . May also define off_t to a 64-bit type on native Windows. */ #include /* On some systems other than glibc, is a prerequisite of . On glibc systems, we would like to avoid namespace pollution. But on glibc systems, includes inside an extern "C" { ... } block, which leads to errors in C++ mode with the overridden from gnulib. These errors are known to be gone with g++ version >= 4.3. */ #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) # include #endif #@INCLUDE_NEXT@ @NEXT_FCNTL_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_FCNTL_H /* Needed before . May also define off_t to a 64-bit type on native Windows. */ #include /* On some systems other than glibc, is a prerequisite of . On glibc systems, we would like to avoid namespace pollution. But on glibc systems, includes inside an extern "C" { ... } block, which leads to errors in C++ mode with the overridden from gnulib. These errors are known to be gone with g++ version >= 4.3. */ #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) # include #endif /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_FCNTL_H@ #ifndef _@GUARD_PREFIX@_FCNTL_H #define _@GUARD_PREFIX@_FCNTL_H #ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */ # include #endif /* Native Windows platforms declare open(), creat() in . */ #if (@GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Declare overridden functions. */ #if @GNULIB_FCNTL@ # if @REPLACE_FCNTL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fcntl # define fcntl rpl_fcntl # endif _GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...)); _GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...)); # else # if !@HAVE_FCNTL@ _GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...)); # endif _GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...)); # endif _GL_CXXALIASWARN (fcntl); #elif defined GNULIB_POSIXCHECK # undef fcntl # if HAVE_RAW_DECL_FCNTL _GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - " "use gnulib module fcntl for portability"); # endif #endif #if @GNULIB_OPEN@ # if @REPLACE_OPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef open # define open rpl_open # endif _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); # else _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); # endif /* On HP-UX 11, in C++ mode, open() is defined as an inline function with a default argument. _GL_CXXALIASWARN does not work in this case. */ # if !defined __hpux _GL_CXXALIASWARN (open); # endif #elif defined GNULIB_POSIXCHECK # undef open /* Assume open is always declared. */ _GL_WARN_ON_USE (open, "open is not always POSIX compliant - " "use gnulib module open for portability"); #endif #if @GNULIB_OPENAT@ # if @REPLACE_OPENAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef openat # define openat rpl_openat # endif _GL_FUNCDECL_RPL (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...)); # else # if !@HAVE_OPENAT@ _GL_FUNCDECL_SYS (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...)); # endif _GL_CXXALIASWARN (openat); #elif defined GNULIB_POSIXCHECK # undef openat # if HAVE_RAW_DECL_OPENAT _GL_WARN_ON_USE (openat, "openat is not portable - " "use gnulib module openat for portability"); # endif #endif /* Fix up the FD_* macros, only known to be missing on mingw. */ #ifndef FD_CLOEXEC # define FD_CLOEXEC 1 #endif /* Fix up the supported F_* macros. Intentionally leave other F_* macros undefined. Only known to be missing on mingw. */ #ifndef F_DUPFD_CLOEXEC # define F_DUPFD_CLOEXEC 0x40000000 /* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */ # define GNULIB_defined_F_DUPFD_CLOEXEC 1 #else # define GNULIB_defined_F_DUPFD_CLOEXEC 0 #endif #ifndef F_DUPFD # define F_DUPFD 1 #endif #ifndef F_GETFD # define F_GETFD 2 #endif /* Fix up the O_* macros. */ #if !defined O_DIRECT && defined O_DIRECTIO /* Tru64 spells it 'O_DIRECTIO'. */ # define O_DIRECT O_DIRECTIO #endif #if !defined O_CLOEXEC && defined O_NOINHERIT /* Mingw spells it 'O_NOINHERIT'. */ # define O_CLOEXEC O_NOINHERIT #endif #ifndef O_CLOEXEC # define O_CLOEXEC 0 #endif #ifndef O_DIRECT # define O_DIRECT 0 #endif #ifndef O_DIRECTORY # define O_DIRECTORY 0 #endif #ifndef O_DSYNC # define O_DSYNC 0 #endif #ifndef O_EXEC # define O_EXEC O_RDONLY /* This is often close enough in older systems. */ #endif #ifndef O_IGNORE_CTTY # define O_IGNORE_CTTY 0 #endif #ifndef O_NDELAY # define O_NDELAY 0 #endif #ifndef O_NOATIME # define O_NOATIME 0 #endif #ifndef O_NONBLOCK # define O_NONBLOCK O_NDELAY #endif /* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY or to 0 as fallback. */ #if @GNULIB_NONBLOCKING@ # if O_NONBLOCK # define GNULIB_defined_O_NONBLOCK 0 # else # define GNULIB_defined_O_NONBLOCK 1 # undef O_NONBLOCK # define O_NONBLOCK 0x40000000 # endif #endif #ifndef O_NOCTTY # define O_NOCTTY 0 #endif #ifndef O_NOFOLLOW # define O_NOFOLLOW 0 #endif #ifndef O_NOLINK # define O_NOLINK 0 #endif #ifndef O_NOLINKS # define O_NOLINKS 0 #endif #ifndef O_NOTRANS # define O_NOTRANS 0 #endif #ifndef O_RSYNC # define O_RSYNC 0 #endif #ifndef O_SEARCH # define O_SEARCH O_RDONLY /* This is often close enough in older systems. */ #endif #ifndef O_SYNC # define O_SYNC 0 #endif #ifndef O_TTY_INIT # define O_TTY_INIT 0 #endif #if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) # undef O_ACCMODE # define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) #endif /* For systems that distinguish between text and binary I/O. O_BINARY is usually declared in fcntl.h */ #if !defined O_BINARY && defined _O_BINARY /* For MSC-compatible compilers. */ # define O_BINARY _O_BINARY # define O_TEXT _O_TEXT #endif #if defined __BEOS__ || defined __HAIKU__ /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */ # undef O_BINARY # undef O_TEXT #endif #ifndef O_BINARY # define O_BINARY 0 # define O_TEXT 0 #endif /* Fix up the AT_* macros. */ /* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its value exceeds INT_MAX, so its use as an int doesn't conform to the C standard, and GCC and Sun C complain in some cases. If the bug is present, undef AT_FDCWD here, so it can be redefined below. */ #if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553 # undef AT_FDCWD #endif /* Use the same bit pattern as Solaris 9, but with the proper signedness. The bit pattern is important, in case this actually is Solaris with the above workaround. */ #ifndef AT_FDCWD # define AT_FDCWD (-3041965) #endif /* Use the same values as Solaris 9. This shouldn't matter, but there's no real reason to differ. */ #ifndef AT_SYMLINK_NOFOLLOW # define AT_SYMLINK_NOFOLLOW 4096 #endif #ifndef AT_REMOVEDIR # define AT_REMOVEDIR 1 #endif /* Solaris 9 lacks these two, so just pick unique values. */ #ifndef AT_SYMLINK_FOLLOW # define AT_SYMLINK_FOLLOW 2 #endif #ifndef AT_EACCESS # define AT_EACCESS 4 #endif #endif /* _@GUARD_PREFIX@_FCNTL_H */ #endif /* _@GUARD_PREFIX@_FCNTL_H */ #endif freedink-108.4+dfsg/gnulib/lib/float.c0000644000175000017500000000250412330466613015324 0ustar meme/* Auxiliary definitions for . Copyright (C) 2011-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2011. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ const union gl_long_double_union gl_LDBL_MAX = { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; #elif defined __i386__ const union gl_long_double_union gl_LDBL_MAX = { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } }; #else /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; #endif freedink-108.4+dfsg/gnulib/lib/setenv.c0000644000175000017500000002502612330466613015527 0ustar meme/* Copyright (C) 1992, 1995-2003, 2005-2014 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 3 of the License, 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, see . */ #if !_LIBC /* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc optimizes away the name == NULL test below. */ # define _GL_ARG_NONNULL(params) # define _GL_USE_STDLIB_ALLOC 1 # include #endif #include /* Specification. */ #include #include #ifndef __set_errno # define __set_errno(ev) ((errno) = (ev)) #endif #include #if _LIBC || HAVE_UNISTD_H # include #endif #if !_LIBC # include "malloca.h" #endif #if _LIBC || !HAVE_SETENV #if !_LIBC # define __environ environ #endif #if _LIBC /* This lock protects against simultaneous modifications of 'environ'. */ # include __libc_lock_define_initialized (static, envlock) # define LOCK __libc_lock_lock (envlock) # define UNLOCK __libc_lock_unlock (envlock) #else # define LOCK # define UNLOCK #endif /* In the GNU C library we must keep the namespace clean. */ #ifdef _LIBC # define setenv __setenv # define clearenv __clearenv # define tfind __tfind # define tsearch __tsearch #endif /* In the GNU C library implementation we try to be more clever and allow arbitrarily many changes of the environment given that the used values are from a small set. Outside glibc this will eat up all memory after a while. */ #if defined _LIBC || (defined HAVE_SEARCH_H && defined HAVE_TSEARCH \ && defined __GNUC__) # define USE_TSEARCH 1 # include typedef int (*compar_fn_t) (const void *, const void *); /* This is a pointer to the root of the search tree with the known values. */ static void *known_values; # define KNOWN_VALUE(Str) \ ({ \ void *value = tfind (Str, &known_values, (compar_fn_t) strcmp); \ value != NULL ? *(char **) value : NULL; \ }) # define STORE_VALUE(Str) \ tsearch (Str, &known_values, (compar_fn_t) strcmp) #else # undef USE_TSEARCH # define KNOWN_VALUE(Str) NULL # define STORE_VALUE(Str) do { } while (0) #endif /* If this variable is not a null pointer we allocated the current environment. */ static char **last_environ; /* This function is used by 'setenv' and 'putenv'. The difference between the two functions is that for the former must create a new string which is then placed in the environment, while the argument of 'putenv' must be used directly. This is all complicated by the fact that we try to reuse values once generated for a 'setenv' call since we can never free the strings. */ int __add_to_environ (const char *name, const char *value, const char *combined, int replace) { char **ep; size_t size; const size_t namelen = strlen (name); const size_t vallen = value != NULL ? strlen (value) + 1 : 0; LOCK; /* We have to get the pointer now that we have the lock and not earlier since another thread might have created a new environment. */ ep = __environ; size = 0; if (ep != NULL) { for (; *ep != NULL; ++ep) if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=') break; else ++size; } if (ep == NULL || *ep == NULL) { char **new_environ; #ifdef USE_TSEARCH char *new_value; #endif /* We allocated this space; we can extend it. */ new_environ = (char **) (last_environ == NULL ? malloc ((size + 2) * sizeof (char *)) : realloc (last_environ, (size + 2) * sizeof (char *))); if (new_environ == NULL) { /* It's easier to set errno to ENOMEM than to rely on the 'malloc-posix' and 'realloc-posix' gnulib modules. */ __set_errno (ENOMEM); UNLOCK; return -1; } /* If the whole entry is given add it. */ if (combined != NULL) /* We must not add the string to the search tree since it belongs to the user. */ new_environ[size] = (char *) combined; else { /* See whether the value is already known. */ #ifdef USE_TSEARCH # ifdef _LIBC new_value = (char *) alloca (namelen + 1 + vallen); __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1), value, vallen); # else new_value = (char *) malloca (namelen + 1 + vallen); if (new_value == NULL) { __set_errno (ENOMEM); UNLOCK; return -1; } memcpy (new_value, name, namelen); new_value[namelen] = '='; memcpy (&new_value[namelen + 1], value, vallen); # endif new_environ[size] = KNOWN_VALUE (new_value); if (new_environ[size] == NULL) #endif { new_environ[size] = (char *) malloc (namelen + 1 + vallen); if (new_environ[size] == NULL) { #if defined USE_TSEARCH && !defined _LIBC freea (new_value); #endif __set_errno (ENOMEM); UNLOCK; return -1; } #ifdef USE_TSEARCH memcpy (new_environ[size], new_value, namelen + 1 + vallen); #else memcpy (new_environ[size], name, namelen); new_environ[size][namelen] = '='; memcpy (&new_environ[size][namelen + 1], value, vallen); #endif /* And save the value now. We cannot do this when we remove the string since then we cannot decide whether it is a user string or not. */ STORE_VALUE (new_environ[size]); } #if defined USE_TSEARCH && !defined _LIBC freea (new_value); #endif } if (__environ != last_environ) memcpy ((char *) new_environ, (char *) __environ, size * sizeof (char *)); new_environ[size + 1] = NULL; last_environ = __environ = new_environ; } else if (replace) { char *np; /* Use the user string if given. */ if (combined != NULL) np = (char *) combined; else { #ifdef USE_TSEARCH char *new_value; # ifdef _LIBC new_value = alloca (namelen + 1 + vallen); __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1), value, vallen); # else new_value = malloca (namelen + 1 + vallen); if (new_value == NULL) { __set_errno (ENOMEM); UNLOCK; return -1; } memcpy (new_value, name, namelen); new_value[namelen] = '='; memcpy (&new_value[namelen + 1], value, vallen); # endif np = KNOWN_VALUE (new_value); if (np == NULL) #endif { np = (char *) malloc (namelen + 1 + vallen); if (np == NULL) { #if defined USE_TSEARCH && !defined _LIBC freea (new_value); #endif __set_errno (ENOMEM); UNLOCK; return -1; } #ifdef USE_TSEARCH memcpy (np, new_value, namelen + 1 + vallen); #else memcpy (np, name, namelen); np[namelen] = '='; memcpy (&np[namelen + 1], value, vallen); #endif /* And remember the value. */ STORE_VALUE (np); } #if defined USE_TSEARCH && !defined _LIBC freea (new_value); #endif } *ep = np; } UNLOCK; return 0; } int setenv (const char *name, const char *value, int replace) { if (name == NULL || *name == '\0' || strchr (name, '=') != NULL) { __set_errno (EINVAL); return -1; } return __add_to_environ (name, value, NULL, replace); } /* The 'clearenv' was planned to be added to POSIX.1 but probably never made it. Nevertheless the POSIX.9 standard (POSIX bindings for Fortran 77) requires this function. */ int clearenv (void) { LOCK; if (__environ == last_environ && __environ != NULL) { /* We allocated this environment so we can free it. */ free (__environ); last_environ = NULL; } /* Clear the environment pointer removes the whole environment. */ __environ = NULL; UNLOCK; return 0; } #ifdef _LIBC static void free_mem (void) { /* Remove all traces. */ clearenv (); /* Now remove the search tree. */ __tdestroy (known_values, free); known_values = NULL; } text_set_element (__libc_subfreeres, free_mem); # undef setenv # undef clearenv weak_alias (__setenv, setenv) weak_alias (__clearenv, clearenv) #endif #endif /* _LIBC || !HAVE_SETENV */ /* The rest of this file is called into use when replacing an existing but buggy setenv. Known bugs include failure to diagnose invalid name, and consuming a leading '=' from value. */ #if HAVE_SETENV # undef setenv # if !HAVE_DECL_SETENV extern int setenv (const char *, const char *, int); # endif # define STREQ(a, b) (strcmp (a, b) == 0) int rpl_setenv (const char *name, const char *value, int replace) { int result; if (!name || !*name || strchr (name, '=')) { errno = EINVAL; return -1; } /* Call the real setenv even if replace is 0, in case implementation has underlying data to update, such as when environ changes. */ result = setenv (name, value, replace); if (result == 0 && replace && *value == '=') { char *tmp = getenv (name); if (!STREQ (tmp, value)) { int saved_errno; size_t len = strlen (value); tmp = malloca (len + 2); /* Since leading '=' is eaten, double it up. */ *tmp = '='; memcpy (tmp + 1, value, len + 1); result = setenv (name, tmp, replace); saved_errno = errno; freea (tmp); errno = saved_errno; } } return result; } #endif /* HAVE_SETENV */ freedink-108.4+dfsg/gnulib/lib/same-inode.h0000644000175000017500000000220212330466613016240 0ustar meme/* Determine whether two stat buffers refer to the same file. Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef SAME_INODE_H # define SAME_INODE_H 1 # ifdef __VMS # define SAME_INODE(a, b) \ ((a).st_ino[0] == (b).st_ino[0] \ && (a).st_ino[1] == (b).st_ino[1] \ && (a).st_ino[2] == (b).st_ino[2] \ && (a).st_dev == (b).st_dev) # else # define SAME_INODE(a, b) \ ((a).st_ino == (b).st_ino \ && (a).st_dev == (b).st_dev) # endif #endif freedink-108.4+dfsg/gnulib/lib/xgetcwd.h0000644000175000017500000000141212330466613015666 0ustar meme/* prototype for xgetcwd Copyright (C) 1995, 2001, 2003, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ extern char *xgetcwd (void); freedink-108.4+dfsg/gnulib/lib/xmalloc.c0000644000175000017500000000646712330466613015672 0ustar meme/* xmalloc.c -- malloc with out of memory checking Copyright (C) 1990-2000, 2002-2006, 2008-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #define XALLOC_INLINE _GL_EXTERN_INLINE #include "xalloc.h" #include #include /* 1 if calloc is known to be compatible with GNU calloc. This matters if we are not also using the calloc module, which defines HAVE_CALLOC_GNU and supports the GNU API even on non-GNU platforms. */ #if defined HAVE_CALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__) enum { HAVE_GNU_CALLOC = 1 }; #else enum { HAVE_GNU_CALLOC = 0 }; #endif /* Allocate N bytes of memory dynamically, with error checking. */ void * xmalloc (size_t n) { void *p = malloc (n); if (!p && n != 0) xalloc_die (); return p; } /* Change the size of an allocated block of memory P to N bytes, with error checking. */ void * xrealloc (void *p, size_t n) { if (!n && p) { /* The GNU and C99 realloc behaviors disagree here. Act like GNU, even if the underlying realloc is C99. */ free (p); return NULL; } p = realloc (p, n); if (!p && n) xalloc_die (); return p; } /* If P is null, allocate a block of at least *PN bytes; otherwise, reallocate P so that it contains more than *PN bytes. *PN must be nonzero unless P is null. Set *PN to the new block's size, and return the pointer to the new block. *PN is never set to zero, and the returned pointer is never null. */ void * x2realloc (void *p, size_t *pn) { return x2nrealloc (p, pn, 1); } /* Allocate S bytes of zeroed memory dynamically, with error checking. There's no need for xnzalloc (N, S), since it would be equivalent to xcalloc (N, S). */ void * xzalloc (size_t s) { return memset (xmalloc (s), 0, s); } /* Allocate zeroed memory for N elements of S bytes, with error checking. S must be nonzero. */ void * xcalloc (size_t n, size_t s) { void *p; /* Test for overflow, since some calloc implementations don't have proper overflow checks. But omit overflow and size-zero tests if HAVE_GNU_CALLOC, since GNU calloc catches overflow and never returns NULL if successful. */ if ((! HAVE_GNU_CALLOC && xalloc_oversized (n, s)) || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0))) xalloc_die (); return p; } /* Clone an object P of size S, with error checking. There's no need for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any need for an arithmetic overflow check. */ void * xmemdup (void const *p, size_t s) { return memcpy (xmalloc (s), p, s); } /* Clone STRING. */ char * xstrdup (char const *string) { return xmemdup (string, strlen (string) + 1); } freedink-108.4+dfsg/gnulib/lib/printf-parse.h0000644000175000017500000001216312330466613016640 0ustar meme/* Parse printf format string. Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _PRINTF_PARSE_H #define _PRINTF_PARSE_H /* This file can be parametrized with the following macros: ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. STATIC Set to 'static' to declare the function static. */ #if HAVE_FEATURES_H # include /* for __GLIBC__, __UCLIBC__ */ #endif #include "printf-args.h" /* Flags */ #define FLAG_GROUP 1 /* ' flag */ #define FLAG_LEFT 2 /* - flag */ #define FLAG_SHOWSIGN 4 /* + flag */ #define FLAG_SPACE 8 /* space flag */ #define FLAG_ALT 16 /* # flag */ #define FLAG_ZERO 32 #if __GLIBC__ >= 2 && !defined __UCLIBC__ # define FLAG_LOCALIZED 64 /* I flag, uses localized digits */ #endif /* arg_index value indicating that no argument is consumed. */ #define ARG_NONE (~(size_t)0) /* xxx_directive: A parsed directive. xxx_directives: A parsed format string. */ /* Number of directly allocated directives (no malloc() needed). */ #define N_DIRECT_ALLOC_DIRECTIVES 7 /* A parsed directive. */ typedef struct { const char* dir_start; const char* dir_end; int flags; const char* width_start; const char* width_end; size_t width_arg_index; const char* precision_start; const char* precision_end; size_t precision_arg_index; char conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } char_directive; /* A parsed format string. */ typedef struct { size_t count; char_directive *dir; size_t max_width_length; size_t max_precision_length; char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } char_directives; #if ENABLE_UNISTDIO /* A parsed directive. */ typedef struct { const uint8_t* dir_start; const uint8_t* dir_end; int flags; const uint8_t* width_start; const uint8_t* width_end; size_t width_arg_index; const uint8_t* precision_start; const uint8_t* precision_end; size_t precision_arg_index; uint8_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } u8_directive; /* A parsed format string. */ typedef struct { size_t count; u8_directive *dir; size_t max_width_length; size_t max_precision_length; u8_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } u8_directives; /* A parsed directive. */ typedef struct { const uint16_t* dir_start; const uint16_t* dir_end; int flags; const uint16_t* width_start; const uint16_t* width_end; size_t width_arg_index; const uint16_t* precision_start; const uint16_t* precision_end; size_t precision_arg_index; uint16_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } u16_directive; /* A parsed format string. */ typedef struct { size_t count; u16_directive *dir; size_t max_width_length; size_t max_precision_length; u16_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } u16_directives; /* A parsed directive. */ typedef struct { const uint32_t* dir_start; const uint32_t* dir_end; int flags; const uint32_t* width_start; const uint32_t* width_end; size_t width_arg_index; const uint32_t* precision_start; const uint32_t* precision_end; size_t precision_arg_index; uint32_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } u32_directive; /* A parsed format string. */ typedef struct { size_t count; u32_directive *dir; size_t max_width_length; size_t max_precision_length; u32_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } u32_directives; #endif /* Parses the format string. Fills in the number N of directives, and fills in directives[0], ..., directives[N-1], and sets directives[N].dir_start to the end of the format string. Also fills in the arg_type fields of the arguments and the needed count of arguments. */ #if ENABLE_UNISTDIO extern int ulc_printf_parse (const char *format, char_directives *d, arguments *a); extern int u8_printf_parse (const uint8_t *format, u8_directives *d, arguments *a); extern int u16_printf_parse (const uint16_t *format, u16_directives *d, arguments *a); extern int u32_printf_parse (const uint32_t *format, u32_directives *d, arguments *a); #else # ifdef STATIC STATIC # else extern # endif int printf_parse (const char *format, char_directives *d, arguments *a); #endif #endif /* _PRINTF_PARSE_H */ freedink-108.4+dfsg/gnulib/lib/xsize.h0000644000175000017500000000705612330466613015375 0ustar meme/* xsize.h -- Checked size_t computations. Copyright (C) 2003, 2008-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _XSIZE_H #define _XSIZE_H /* Get size_t. */ #include /* Get SIZE_MAX. */ #include #if HAVE_STDINT_H # include #endif #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef XSIZE_INLINE # define XSIZE_INLINE _GL_INLINE #endif /* The size of memory objects is often computed through expressions of type size_t. Example: void* p = malloc (header_size + n * element_size). These computations can lead to overflow. When this happens, malloc() returns a piece of memory that is way too small, and the program then crashes while attempting to fill the memory. To avoid this, the functions and macros in this file check for overflow. The convention is that SIZE_MAX represents overflow. malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc implementation that uses mmap --, it's recommended to use size_overflow_p() or size_in_bounds_p() before invoking malloc(). The example thus becomes: size_t size = xsum (header_size, xtimes (n, element_size)); void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); */ /* Convert an arbitrary value >= 0 to type size_t. */ #define xcast_size_t(N) \ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) /* Sum of two sizes, with overflow check. */ XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif xsum (size_t size1, size_t size2) { size_t sum = size1 + size2; return (sum >= size1 ? sum : SIZE_MAX); } /* Sum of three sizes, with overflow check. */ XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif xsum3 (size_t size1, size_t size2, size_t size3) { return xsum (xsum (size1, size2), size3); } /* Sum of four sizes, with overflow check. */ XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) { return xsum (xsum (xsum (size1, size2), size3), size4); } /* Maximum of two sizes, with overflow check. */ XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif xmax (size_t size1, size_t size2) { /* No explicit check is needed here, because for any n: max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */ return (size1 >= size2 ? size1 : size2); } /* Multiplication of a count with an element size, with overflow check. The count must be >= 0 and the element size must be > 0. This is a macro, not a function, so that it works correctly even when N is of a wider type and N > SIZE_MAX. */ #define xtimes(N, ELSIZE) \ ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) /* Check for overflow. */ #define size_overflow_p(SIZE) \ ((SIZE) == SIZE_MAX) /* Check against overflow. */ #define size_in_bounds_p(SIZE) \ ((SIZE) != SIZE_MAX) _GL_INLINE_HEADER_END #endif /* _XSIZE_H */ freedink-108.4+dfsg/gnulib/lib/fstatat.c0000644000175000017500000001054712330466613015673 0ustar meme/* Work around an fstatat bug on Solaris 9. Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert and Jim Meyering. */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_fstatat doesn't recurse to rpl_fstatat. */ #define __need_system_sys_stat_h #include /* Get the original definition of fstatat. It might be defined as a macro. */ #include #include #undef __need_system_sys_stat_h #if HAVE_FSTATAT static int orig_fstatat (int fd, char const *filename, struct stat *buf, int flags) { return fstatat (fd, filename, buf, flags); } #endif /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "sys/stat.h" #include #include #include #if HAVE_FSTATAT && HAVE_WORKING_FSTATAT_ZERO_FLAG # ifndef LSTAT_FOLLOWS_SLASHED_SYMLINK # define LSTAT_FOLLOWS_SLASHED_SYMLINK 0 # endif /* fstatat should always follow symbolic links that end in /, but on Solaris 9 it doesn't if AT_SYMLINK_NOFOLLOW is specified. Likewise, trailing slash on a non-directory should be an error. These are the same problems that lstat.c and stat.c address, so solve it in a similar way. AIX 7.1 fstatat (AT_FDCWD, ..., 0) always fails, which is a bug. Work around this bug if FSTATAT_AT_FDCWD_0_BROKEN is nonzero. */ int rpl_fstatat (int fd, char const *file, struct stat *st, int flag) { int result = orig_fstatat (fd, file, st, flag); size_t len; if (LSTAT_FOLLOWS_SLASHED_SYMLINK || result != 0) return result; len = strlen (file); if (flag & AT_SYMLINK_NOFOLLOW) { /* Fix lstat behavior. */ if (file[len - 1] != '/' || S_ISDIR (st->st_mode)) return 0; if (!S_ISLNK (st->st_mode)) { errno = ENOTDIR; return -1; } result = orig_fstatat (fd, file, st, flag & ~AT_SYMLINK_NOFOLLOW); } /* Fix stat behavior. */ if (result == 0 && !S_ISDIR (st->st_mode) && file[len - 1] == '/') { errno = ENOTDIR; return -1; } return result; } #else /* ! (HAVE_FSTATAT && HAVE_WORKING_FSTATAT_ZERO_FLAG) */ /* On mingw, the gnulib defines 'stat' as a function-like macro; but using it in AT_FUNC_F2 causes compilation failure because the preprocessor sees a use of a macro that requires two arguments but is only given one. Hence, we need an inline forwarder to get past the preprocessor. */ static int stat_func (char const *name, struct stat *st) { return stat (name, st); } /* Likewise, if there is no native 'lstat', then the gnulib defined it as stat, which also needs adjustment. */ # if !HAVE_LSTAT # undef lstat # define lstat stat_func # endif /* Replacement for Solaris' function by the same name. First, try to simulate it via l?stat ("/proc/self/fd/FD/FILE"). Failing that, simulate it via save_cwd/fchdir/(stat|lstat)/restore_cwd. If either the save_cwd or the restore_cwd fails (relatively unlikely), then give a diagnostic and exit nonzero. Otherwise, this function works just like Solaris' fstatat. */ # define AT_FUNC_NAME fstatat # define AT_FUNC_F1 lstat # define AT_FUNC_F2 stat_func # define AT_FUNC_USE_F1_COND AT_SYMLINK_NOFOLLOW # define AT_FUNC_POST_FILE_PARAM_DECLS , struct stat *st, int flag # define AT_FUNC_POST_FILE_ARGS , st # include "at-func.c" # undef AT_FUNC_NAME # undef AT_FUNC_F1 # undef AT_FUNC_F2 # undef AT_FUNC_USE_F1_COND # undef AT_FUNC_POST_FILE_PARAM_DECLS # undef AT_FUNC_POST_FILE_ARGS #endif /* !HAVE_FSTATAT */ freedink-108.4+dfsg/gnulib/lib/xalloc.h0000644000175000017500000001676112330466613015520 0ustar meme/* xalloc.h -- malloc with out-of-memory checking Copyright (C) 1990-2000, 2003-2004, 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef XALLOC_H_ #define XALLOC_H_ #include #include "xalloc-oversized.h" #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef XALLOC_INLINE # define XALLOC_INLINE _GL_INLINE #endif #ifdef __cplusplus extern "C" { #endif #if __GNUC__ >= 3 # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) #else # define _GL_ATTRIBUTE_MALLOC #endif #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) # define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) #else # define _GL_ATTRIBUTE_ALLOC_SIZE(args) #endif /* This function is always triggered when memory is exhausted. It must be defined by the application, either explicitly or by using gnulib's xalloc-die module. This is the function to call when one wants the program to die because of a memory allocation failure. */ extern _Noreturn void xalloc_die (void); void *xmalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); void *xzalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); void *xcalloc (size_t n, size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)); void *xrealloc (void *p, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2)); void *x2realloc (void *p, size_t *pn); void *xmemdup (void const *p, size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((2)); char *xstrdup (char const *str) _GL_ATTRIBUTE_MALLOC; /* In the following macros, T must be an elementary or structure/union or typedef'ed type, or a pointer to such a type. To apply one of the following macros to a function pointer or array type, you need to typedef it first and use the typedef name. */ /* Allocate an object of type T dynamically, with error checking. */ /* extern t *XMALLOC (typename t); */ #define XMALLOC(t) ((t *) xmalloc (sizeof (t))) /* Allocate memory for N elements of type T, with error checking. */ /* extern t *XNMALLOC (size_t n, typename t); */ #define XNMALLOC(n, t) \ ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t)))) /* Allocate an object of type T dynamically, with error checking, and zero it. */ /* extern t *XZALLOC (typename t); */ #define XZALLOC(t) ((t *) xzalloc (sizeof (t))) /* Allocate memory for N elements of type T, with error checking, and zero it. */ /* extern t *XCALLOC (size_t n, typename t); */ #define XCALLOC(n, t) \ ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t)))) /* Allocate an array of N objects, each with S bytes of memory, dynamically, with error checking. S must be nonzero. */ XALLOC_INLINE void *xnmalloc (size_t n, size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)); XALLOC_INLINE void * xnmalloc (size_t n, size_t s) { if (xalloc_oversized (n, s)) xalloc_die (); return xmalloc (n * s); } /* Change the size of an allocated block of memory P to an array of N objects each of S bytes, with error checking. S must be nonzero. */ XALLOC_INLINE void *xnrealloc (void *p, size_t n, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3)); XALLOC_INLINE void * xnrealloc (void *p, size_t n, size_t s) { if (xalloc_oversized (n, s)) xalloc_die (); return xrealloc (p, n * s); } /* If P is null, allocate a block of at least *PN such objects; otherwise, reallocate P so that it contains more than *PN objects each of S bytes. S must be nonzero. Set *PN to the new number of objects, and return the pointer to the new block. *PN is never set to zero, and the returned pointer is never null. Repeated reallocations are guaranteed to make progress, either by allocating an initial block with a nonzero size, or by allocating a larger block. In the following implementation, nonzero sizes are increased by a factor of approximately 1.5 so that repeated reallocations have O(N) overall cost rather than O(N**2) cost, but the specification for this function does not guarantee that rate. Here is an example of use: int *p = NULL; size_t used = 0; size_t allocated = 0; void append_int (int value) { if (used == allocated) p = x2nrealloc (p, &allocated, sizeof *p); p[used++] = value; } This causes x2nrealloc to allocate a block of some nonzero size the first time it is called. To have finer-grained control over the initial size, set *PN to a nonzero value before calling this function with P == NULL. For example: int *p = NULL; size_t used = 0; size_t allocated = 0; size_t allocated1 = 1000; void append_int (int value) { if (used == allocated) { p = x2nrealloc (p, &allocated1, sizeof *p); allocated = allocated1; } p[used++] = value; } */ XALLOC_INLINE void * x2nrealloc (void *p, size_t *pn, size_t s) { size_t n = *pn; if (! p) { if (! n) { /* The approximate size to use for initial small allocation requests, when the invoking code specifies an old size of zero. This is the largest "small" request for the GNU C library malloc. */ enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 }; n = DEFAULT_MXFAST / s; n += !n; } } else { /* Set N = floor (1.5 * N) + 1 so that progress is made even if N == 0. Check for overflow, so that N * S stays in size_t range. The check may be slightly conservative, but an exact check isn't worth the trouble. */ if ((size_t) -1 / 3 * 2 / s <= n) xalloc_die (); n += n / 2 + 1; } *pn = n; return xrealloc (p, n * s); } /* Return a pointer to a new buffer of N bytes. This is like xmalloc, except it returns char *. */ XALLOC_INLINE char *xcharalloc (size_t n) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); XALLOC_INLINE char * xcharalloc (size_t n) { return XNMALLOC (n, char); } #ifdef __cplusplus } /* C++ does not allow conversions from void * to other pointer types without a cast. Use templates to work around the problem when possible. */ template inline T * xrealloc (T *p, size_t s) { return (T *) xrealloc ((void *) p, s); } template inline T * xnrealloc (T *p, size_t n, size_t s) { return (T *) xnrealloc ((void *) p, n, s); } template inline T * x2realloc (T *p, size_t *pn) { return (T *) x2realloc ((void *) p, pn); } template inline T * x2nrealloc (T *p, size_t *pn, size_t s) { return (T *) x2nrealloc ((void *) p, pn, s); } template inline T * xmemdup (T const *p, size_t s) { return (T *) xmemdup ((void const *) p, s); } #endif #endif /* !XALLOC_H_ */ freedink-108.4+dfsg/gnulib/lib/getopt1.c0000644000175000017500000001055212330466613015604 0ustar meme/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2014 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 3 of the License, 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, see . */ #ifdef _LIBC # include #else # include # include "getopt.h" #endif #include "getopt_int.h" #include /* 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 *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 0, 0); } int _getopt_long_r (int argc, char **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, 0); } /* 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 *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 1, 0); } int _getopt_long_only_r (int argc, char **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, 0); } #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 const 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 */ freedink-108.4+dfsg/gnulib/lib/openat.h0000644000175000017500000000576312330466613015524 0ustar meme/* provide a replacement openat function Copyright (C) 2004-2006, 2008-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #ifndef _GL_HEADER_OPENAT #define _GL_HEADER_OPENAT #include #include #include #include #include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #if !HAVE_OPENAT int openat_permissive (int fd, char const *file, int flags, mode_t mode, int *cwd_errno); bool openat_needs_fchdir (void); #else # define openat_permissive(Fd, File, Flags, Mode, Cwd_errno) \ openat (Fd, File, Flags, Mode) # define openat_needs_fchdir() false #endif _Noreturn void openat_restore_fail (int); _Noreturn void openat_save_fail (int); /* Using these function names makes application code slightly more readable than it would be with fchownat (..., 0) or fchownat (..., AT_SYMLINK_NOFOLLOW). */ #if GNULIB_FCHOWNAT # ifndef FCHOWNAT_INLINE # define FCHOWNAT_INLINE _GL_INLINE # endif FCHOWNAT_INLINE int chownat (int fd, char const *file, uid_t owner, gid_t group) { return fchownat (fd, file, owner, group, 0); } FCHOWNAT_INLINE int lchownat (int fd, char const *file, uid_t owner, gid_t group) { return fchownat (fd, file, owner, group, AT_SYMLINK_NOFOLLOW); } #endif #if GNULIB_FCHMODAT # ifndef FCHMODAT_INLINE # define FCHMODAT_INLINE _GL_INLINE # endif FCHMODAT_INLINE int chmodat (int fd, char const *file, mode_t mode) { return fchmodat (fd, file, mode, 0); } FCHMODAT_INLINE int lchmodat (int fd, char const *file, mode_t mode) { return fchmodat (fd, file, mode, AT_SYMLINK_NOFOLLOW); } #endif #if GNULIB_STATAT # ifndef STATAT_INLINE # define STATAT_INLINE _GL_INLINE # endif STATAT_INLINE int statat (int fd, char const *name, struct stat *st) { return fstatat (fd, name, st, 0); } STATAT_INLINE int lstatat (int fd, char const *name, struct stat *st) { return fstatat (fd, name, st, AT_SYMLINK_NOFOLLOW); } #endif /* For now, there are no wrappers named laccessat or leuidaccessat, since gnulib doesn't support faccessat(,AT_SYMLINK_NOFOLLOW) and since access rights on symlinks are of limited utility. Likewise, wrappers are not provided for accessat or euidaccessat, so as to avoid dragging in -lgen on some platforms. */ _GL_INLINE_HEADER_END #endif /* _GL_HEADER_OPENAT */ freedink-108.4+dfsg/gnulib/lib/dup2.c0000644000175000017500000000735512330466613015102 0ustar meme/* Duplicate an open file descriptor to a specified file descriptor. Copyright (C) 1999, 2004-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Paul Eggert */ #include /* Specification. */ #include #include #include #if HAVE_DUP2 # undef dup2 # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include # include "msvc-inval.h" /* Get _get_osfhandle. */ # include "msvc-nothrow.h" static int ms_windows_dup2 (int fd, int desired_fd) { int result; /* If fd is closed, mingw hangs on dup2 (fd, fd). If fd is open, dup2 (fd, fd) returns 0, but all further attempts to use fd in future dup2 calls will hang. */ if (fd == desired_fd) { if ((HANDLE) _get_osfhandle (fd) == INVALID_HANDLE_VALUE) { errno = EBADF; return -1; } return fd; } /* Wine 1.0.1 return 0 when desired_fd is negative but not -1: http://bugs.winehq.org/show_bug.cgi?id=21289 */ if (desired_fd < 0) { errno = EBADF; return -1; } TRY_MSVC_INVAL { result = dup2 (fd, desired_fd); } CATCH_MSVC_INVAL { errno = EBADF; result = -1; } DONE_MSVC_INVAL; if (result == 0) result = desired_fd; return result; } # define dup2 ms_windows_dup2 # endif int rpl_dup2 (int fd, int desired_fd) { int result; # ifdef F_GETFL /* On Linux kernels 2.6.26-2.6.29, dup2 (fd, fd) returns -EBADF. On Cygwin 1.5.x, dup2 (1, 1) returns 0. On Cygwin 1.7.17, dup2 (1, -1) dumps core. On Cygwin 1.7.25, dup2 (1, 256) can dump core. On Haiku, dup2 (fd, fd) mistakenly clears FD_CLOEXEC. */ # if HAVE_SETDTABLESIZE setdtablesize (desired_fd + 1); # endif if (desired_fd < 0) fd = desired_fd; if (fd == desired_fd) return fcntl (fd, F_GETFL) == -1 ? -1 : fd; # endif result = dup2 (fd, desired_fd); /* Correct an errno value on FreeBSD 6.1 and Cygwin 1.5.x. */ if (result == -1 && errno == EMFILE) errno = EBADF; # if REPLACE_FCHDIR if (fd != desired_fd && result != -1) result = _gl_register_dup (fd, result); # endif return result; } #else /* !HAVE_DUP2 */ /* On older platforms, dup2 did not exist. */ # ifndef F_DUPFD static int dupfd (int fd, int desired_fd) { int duplicated_fd = dup (fd); if (duplicated_fd < 0 || duplicated_fd == desired_fd) return duplicated_fd; else { int r = dupfd (fd, desired_fd); int e = errno; close (duplicated_fd); errno = e; return r; } } # endif int dup2 (int fd, int desired_fd) { int result = fcntl (fd, F_GETFL) < 0 ? -1 : fd; if (result == -1 || fd == desired_fd) return result; close (desired_fd); # ifdef F_DUPFD result = fcntl (fd, F_DUPFD, desired_fd); # if REPLACE_FCHDIR if (0 <= result) result = _gl_register_dup (fd, result); # endif # else result = dupfd (fd, desired_fd); # endif if (result == -1 && (errno == EMFILE || errno == EINVAL)) errno = EBADF; return result; } #endif /* !HAVE_DUP2 */ freedink-108.4+dfsg/gnulib/lib/asprintf.c0000644000175000017500000000210112330466613016036 0ustar meme/* Formatted output to strings. Copyright (C) 1999, 2002, 2006-2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #ifdef IN_LIBASPRINTF # include "vasprintf.h" #else # include #endif #include int asprintf (char **resultp, const char *format, ...) { va_list args; int result; va_start (args, format); result = vasprintf (resultp, format, args); va_end (args); return result; } freedink-108.4+dfsg/gnulib/lib/stripslash.c0000644000175000017500000000304112330466613016410 0ustar meme/* stripslash.c -- remove redundant trailing slashes from a file name Copyright (C) 1990, 2001, 2003-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "dirname.h" /* Remove trailing slashes from FILE. Return true if a trailing slash was removed. This is useful when using file name completion from a shell that adds a "/" after directory names (such as tcsh and bash), because on symlinks to directories, several system calls have different semantics according to whether a trailing slash is present. */ bool strip_trailing_slashes (char *file) { char *base = last_component (file); char *base_lim; bool had_slash; /* last_component returns "" for file system roots, but we need to turn "///" into "/". */ if (! *base) base = file; base_lim = base + base_len (base); had_slash = (*base_lim != '\0'); *base_lim = '\0'; return had_slash; } freedink-108.4+dfsg/gnulib/lib/xgetcwd.c0000644000175000017500000000227312330466613015667 0ustar meme/* xgetcwd.c -- return current directory with unlimited length Copyright (C) 2001, 2003-2004, 2006-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #include #include "xgetcwd.h" #include #include #include "xalloc.h" /* Return the current directory, newly allocated. Upon an out-of-memory error, call xalloc_die. Upon any other type of error, return NULL. */ char * xgetcwd (void) { char *cwd = getcwd (NULL, 0); if (! cwd && errno == ENOMEM) xalloc_die (); return cwd; } freedink-108.4+dfsg/gnulib/lib/unistd.c0000644000175000017500000000012412330466613015521 0ustar meme#include #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE #include "unistd.h" freedink-108.4+dfsg/gnulib/lib/alloca.c0000644000175000017500000003445412330466613015463 0ustar meme/* alloca.c -- allocate automatically reclaimed memory (Mostly) portable public-domain implementation -- D A Gwyn This implementation of the PWB library alloca function, which is used to allocate space off the run-time stack so that it is automatically reclaimed upon procedure exit, was inspired by discussions with J. Q. Johnson of Cornell. J.Otto Tennant contributed the Cray support. There are some preprocessor constants that can be defined when compiling for your specific system, for improved efficiency; however, the defaults should be okay. The general concept of this implementation is to keep track of all alloca-allocated blocks, and reclaim any that are found to be deeper in the stack than the current invocation. This heuristic does not reclaim storage as soon as it becomes invalid, but it will do so eventually. As a special case, alloca(0) reclaims storage without allocating any. It is a good idea to use alloca(0) in your main control loop, etc. to force garbage collection. */ #include #include #include #include #ifdef emacs # include "lisp.h" # include "blockinput.h" # ifdef EMACS_FREE # undef free # define free EMACS_FREE # endif #else # define memory_full() abort () #endif /* If compiling with GCC 2, this file's not needed. */ #if !defined (__GNUC__) || __GNUC__ < 2 /* If someone has defined alloca as a macro, there must be some other way alloca is supposed to work. */ # ifndef alloca # ifdef emacs # ifdef static /* actually, only want this if static is defined as "" -- this is for usg, in which emacs must undefine static in order to make unexec workable */ # ifndef STACK_DIRECTION you lose -- must know STACK_DIRECTION at compile-time /* Using #error here is not wise since this file should work for old and obscure compilers. */ # endif /* STACK_DIRECTION undefined */ # endif /* static */ # endif /* emacs */ /* If your stack is a linked list of frames, you have to provide an "address metric" ADDRESS_FUNCTION macro. */ # if defined (CRAY) && defined (CRAY_STACKSEG_END) long i00afunc (); # define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) # else # define ADDRESS_FUNCTION(arg) &(arg) # endif /* Define STACK_DIRECTION if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ # ifndef STACK_DIRECTION # define STACK_DIRECTION 0 /* Direction unknown. */ # endif # if STACK_DIRECTION != 0 # define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ # else /* STACK_DIRECTION == 0; need run-time code. */ static int stack_dir; /* 1 or -1 once known. */ # define STACK_DIR stack_dir static int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } # endif /* STACK_DIRECTION == 0 */ /* An "alloca header" is used to: (a) chain together all alloca'ed blocks; (b) keep track of stack depth. It is very important that sizeof(header) agree with malloc alignment chunk size. The following default should work okay. */ # ifndef ALIGN_SIZE # define ALIGN_SIZE sizeof(double) # endif typedef union hdr { char align[ALIGN_SIZE]; /* To force sizeof(header). */ struct { union hdr *next; /* For chaining headers. */ char *deep; /* For stack depth measure. */ } h; } header; static header *last_alloca_header = NULL; /* -> last alloca header. */ /* Return a pointer to at least SIZE bytes of storage, which will be automatically reclaimed upon exit from the procedure that called alloca. Originally, this space was supposed to be taken from the current stack frame of the caller, but that method cannot be made to work for some implementations of C, for example under Gould's UTX/32. */ void * alloca (size_t size) { auto char probe; /* Probes stack depth: */ register char *depth = ADDRESS_FUNCTION (probe); # if STACK_DIRECTION == 0 if (STACK_DIR == 0) /* Unknown growth direction. */ STACK_DIR = find_stack_direction (NULL, (size & 1) + 20); # endif /* Reclaim garbage, defined as all alloca'd storage that was allocated from deeper in the stack than currently. */ { register header *hp; /* Traverses linked list. */ # ifdef emacs BLOCK_INPUT; # endif for (hp = last_alloca_header; hp != NULL;) if ((STACK_DIR > 0 && hp->h.deep > depth) || (STACK_DIR < 0 && hp->h.deep < depth)) { register header *np = hp->h.next; free (hp); /* Collect garbage. */ hp = np; /* -> next header. */ } else break; /* Rest are not deeper. */ last_alloca_header = hp; /* -> last valid storage. */ # ifdef emacs UNBLOCK_INPUT; # endif } if (size == 0) return NULL; /* No allocation required. */ /* Allocate combined header + user data storage. */ { /* Address of header. */ register header *new; size_t combined_size = sizeof (header) + size; if (combined_size < sizeof (header)) memory_full (); new = malloc (combined_size); if (! new) memory_full (); new->h.next = last_alloca_header; new->h.deep = depth; last_alloca_header = new; /* User storage begins just after header. */ return (void *) (new + 1); } } # if defined (CRAY) && defined (CRAY_STACKSEG_END) # ifdef DEBUG_I00AFUNC # include # endif # ifndef CRAY_STACK # define CRAY_STACK # ifndef CRAY2 /* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ struct stack_control_header { long shgrow:32; /* Number of times stack has grown. */ long shaseg:32; /* Size of increments to stack. */ long shhwm:32; /* High water mark of stack. */ long shsize:32; /* Current size of stack (all segments). */ }; /* The stack segment linkage control information occurs at the high-address end of a stack segment. (The stack grows from low addresses to high addresses.) The initial part of the stack segment linkage control information is 0200 (octal) words. This provides for register storage for the routine which overflows the stack. */ struct stack_segment_linkage { long ss[0200]; /* 0200 overflow words. */ long sssize:32; /* Number of words in this segment. */ long ssbase:32; /* Offset to stack base. */ long:32; long sspseg:32; /* Offset to linkage control of previous segment of stack. */ long:32; long sstcpt:32; /* Pointer to task common address block. */ long sscsnm; /* Private control structure number for microtasking. */ long ssusr1; /* Reserved for user. */ long ssusr2; /* Reserved for user. */ long sstpid; /* Process ID for pid based multi-tasking. */ long ssgvup; /* Pointer to multitasking thread giveup. */ long sscray[7]; /* Reserved for Cray Research. */ long ssa0; long ssa1; long ssa2; long ssa3; long ssa4; long ssa5; long ssa6; long ssa7; long sss0; long sss1; long sss2; long sss3; long sss4; long sss5; long sss6; long sss7; }; # else /* CRAY2 */ /* The following structure defines the vector of words returned by the STKSTAT library routine. */ struct stk_stat { long now; /* Current total stack size. */ long maxc; /* Amount of contiguous space which would be required to satisfy the maximum stack demand to date. */ long high_water; /* Stack high-water mark. */ long overflows; /* Number of stack overflow ($STKOFEN) calls. */ long hits; /* Number of internal buffer hits. */ long extends; /* Number of block extensions. */ long stko_mallocs; /* Block allocations by $STKOFEN. */ long underflows; /* Number of stack underflow calls ($STKRETN). */ long stko_free; /* Number of deallocations by $STKRETN. */ long stkm_free; /* Number of deallocations by $STKMRET. */ long segments; /* Current number of stack segments. */ long maxs; /* Maximum number of stack segments so far. */ long pad_size; /* Stack pad size. */ long current_address; /* Current stack segment address. */ long current_size; /* Current stack segment size. This number is actually corrupted by STKSTAT to include the fifteen word trailer area. */ long initial_address; /* Address of initial segment. */ long initial_size; /* Size of initial segment. */ }; /* The following structure describes the data structure which trails any stack segment. I think that the description in 'asdef' is out of date. I only describe the parts that I am sure about. */ struct stk_trailer { long this_address; /* Address of this block. */ long this_size; /* Size of this block (does not include this trailer). */ long unknown2; long unknown3; long link; /* Address of trailer block of previous segment. */ long unknown5; long unknown6; long unknown7; long unknown8; long unknown9; long unknown10; long unknown11; long unknown12; long unknown13; long unknown14; }; # endif /* CRAY2 */ # endif /* not CRAY_STACK */ # ifdef CRAY2 /* Determine a "stack measure" for an arbitrary ADDRESS. I doubt that "lint" will like this much. */ static long i00afunc (long *address) { struct stk_stat status; struct stk_trailer *trailer; long *block, size; long result = 0; /* We want to iterate through all of the segments. The first step is to get the stack status structure. We could do this more quickly and more directly, perhaps, by referencing the $LM00 common block, but I know that this works. */ STKSTAT (&status); /* Set up the iteration. */ trailer = (struct stk_trailer *) (status.current_address + status.current_size - 15); /* There must be at least one stack segment. Therefore it is a fatal error if "trailer" is null. */ if (trailer == 0) abort (); /* Discard segments that do not contain our argument address. */ while (trailer != 0) { block = (long *) trailer->this_address; size = trailer->this_size; if (block == 0 || size == 0) abort (); trailer = (struct stk_trailer *) trailer->link; if ((block <= address) && (address < (block + size))) break; } /* Set the result to the offset in this segment and add the sizes of all predecessor segments. */ result = address - block; if (trailer == 0) { return result; } do { if (trailer->this_size <= 0) abort (); result += trailer->this_size; trailer = (struct stk_trailer *) trailer->link; } while (trailer != 0); /* We are done. Note that if you present a bogus address (one not in any segment), you will get a different number back, formed from subtracting the address of the first block. This is probably not what you want. */ return (result); } # else /* not CRAY2 */ /* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. Determine the number of the cell within the stack, given the address of the cell. The purpose of this routine is to linearize, in some sense, stack addresses for alloca. */ static long i00afunc (long address) { long stkl = 0; long size, pseg, this_segment, stack; long result = 0; struct stack_segment_linkage *ssptr; /* Register B67 contains the address of the end of the current stack segment. If you (as a subprogram) store your registers on the stack and find that you are past the contents of B67, you have overflowed the segment. B67 also points to the stack segment linkage control area, which is what we are really interested in. */ stkl = CRAY_STACKSEG_END (); ssptr = (struct stack_segment_linkage *) stkl; /* If one subtracts 'size' from the end of the segment, one has the address of the first word of the segment. If this is not the first segment, 'pseg' will be nonzero. */ pseg = ssptr->sspseg; size = ssptr->sssize; this_segment = stkl - size; /* It is possible that calling this routine itself caused a stack overflow. Discard stack segments which do not contain the target address. */ while (!(this_segment <= address && address <= stkl)) { # ifdef DEBUG_I00AFUNC fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); # endif if (pseg == 0) break; stkl = stkl - pseg; ssptr = (struct stack_segment_linkage *) stkl; size = ssptr->sssize; pseg = ssptr->sspseg; this_segment = stkl - size; } result = address - this_segment; /* If you subtract pseg from the current end of the stack, you get the address of the previous stack segment's end. This seems a little convoluted to me, but I'll bet you save a cycle somewhere. */ while (pseg != 0) { # ifdef DEBUG_I00AFUNC fprintf (stderr, "%011o %011o\n", pseg, size); # endif stkl = stkl - pseg; ssptr = (struct stack_segment_linkage *) stkl; size = ssptr->sssize; pseg = ssptr->sspseg; result += size; } return (result); } # endif /* not CRAY2 */ # endif /* CRAY */ # endif /* no alloca */ #endif /* not GCC 2 */ freedink-108.4+dfsg/gnulib/lib/xreadlink.h0000644000175000017500000000171212330466613016205 0ustar meme/* Reading symbolic links without size limitation. Copyright (C) 2001, 2003-2004, 2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering */ extern char *xreadlink (char const *filename); #if GNULIB_XREADLINKAT extern char *xreadlinkat (int fd, char const *filename); #endif freedink-108.4+dfsg/gnulib/lib/pathmax.h0000644000175000017500000000555612330466613015700 0ustar meme/* Define PATH_MAX somehow. Requires sys/types.h. Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _PATHMAX_H # define _PATHMAX_H /* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename, including the terminating NUL byte. PATH_MAX is not defined on systems which have no limit on filename length, such as GNU/Hurd. This file does *not* define PATH_MAX always. Programs that use this file can handle the GNU/Hurd case in several ways: - Either with a package-wide handling, or with a per-file handling, - Either through a #ifdef PATH_MAX or through a fallback like #ifndef PATH_MAX # define PATH_MAX 8192 #endif or through a fallback like #ifndef PATH_MAX # define PATH_MAX pathconf ("/", _PC_PATH_MAX) #endif */ # include # include # ifndef _POSIX_PATH_MAX # define _POSIX_PATH_MAX 256 # endif /* Don't include sys/param.h if it already has been. */ # if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN # include # endif # if !defined PATH_MAX && defined MAXPATHLEN # define PATH_MAX MAXPATHLEN # endif # ifdef __hpux /* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename, *not* including the terminating NUL byte, and is set to 1023. Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is not defined at all any more. */ # undef PATH_MAX # define PATH_MAX 1024 # endif # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com, section "Maximum Path Length Limitation", explains that the maximum size of a filename, including the terminating NUL byte, is 260 = 3 + 256 + 1. This is the same value as - FILENAME_MAX in , - _MAX_PATH in , - MAX_PATH in . Undefine the original value, because mingw's gets it wrong. */ # undef PATH_MAX # define PATH_MAX 260 # endif #endif /* _PATHMAX_H */ freedink-108.4+dfsg/gnulib/lib/strerror-override.h0000644000175000017500000000374312330466613017731 0ustar meme/* strerror-override.h --- POSIX compatible system error routine Copyright (C) 2010-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef _GL_STRERROR_OVERRIDE_H # define _GL_STRERROR_OVERRIDE_H # include # include /* Reasonable buffer size that should never trigger ERANGE; if this proves too small, we intentionally abort(), to remind us to fix this value. */ # define STACKBUF_LEN 256 /* If ERRNUM maps to an errno value defined by gnulib, return a string describing the error. Otherwise return NULL. */ # if REPLACE_STRERROR_0 \ || GNULIB_defined_ESOCK \ || GNULIB_defined_ESTREAMS \ || GNULIB_defined_EWINSOCK \ || GNULIB_defined_ENOMSG \ || GNULIB_defined_EIDRM \ || GNULIB_defined_ENOLINK \ || GNULIB_defined_EPROTO \ || GNULIB_defined_EMULTIHOP \ || GNULIB_defined_EBADMSG \ || GNULIB_defined_EOVERFLOW \ || GNULIB_defined_ENOTSUP \ || GNULIB_defined_ENETRESET \ || GNULIB_defined_ECONNABORTED \ || GNULIB_defined_ESTALE \ || GNULIB_defined_EDQUOT \ || GNULIB_defined_ECANCELED \ || GNULIB_defined_EOWNERDEAD \ || GNULIB_defined_ENOTRECOVERABLE \ || GNULIB_defined_EILSEQ extern const char *strerror_override (int errnum) _GL_ATTRIBUTE_CONST; # else # define strerror_override(ignored) NULL # endif #endif /* _GL_STRERROR_OVERRIDE_H */ freedink-108.4+dfsg/gnulib/lib/chdir-long.c0000644000175000017500000001534312330466613016252 0ustar meme/* provide a chdir function that tries not to fail due to ENAMETOOLONG Copyright (C) 2004-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #include #include "chdir-long.h" #include #include #include #include #include #include #include #ifndef PATH_MAX # error "compile this file only if your system defines PATH_MAX" #endif /* The results of openat() in this file are not leaked to any single-threaded code that could use stdio. FIXME - if the kernel ever adds support for multi-thread safety for avoiding standard fds, then we should use openat_safer. */ struct cd_buf { int fd; }; static void cdb_init (struct cd_buf *cdb) { cdb->fd = AT_FDCWD; } static int cdb_fchdir (struct cd_buf const *cdb) { return fchdir (cdb->fd); } static void cdb_free (struct cd_buf const *cdb) { if (0 <= cdb->fd) { bool close_fail = close (cdb->fd); assert (! close_fail); } } /* Given a file descriptor of an open directory (or AT_FDCWD), CDB->fd, try to open the CDB->fd-relative directory, DIR. If the open succeeds, update CDB->fd with the resulting descriptor, close the incoming file descriptor, and return zero. Upon failure, return -1 and set errno. */ static int cdb_advance_fd (struct cd_buf *cdb, char const *dir) { int new_fd = openat (cdb->fd, dir, O_SEARCH | O_DIRECTORY | O_NOCTTY | O_NONBLOCK); if (new_fd < 0) return -1; cdb_free (cdb); cdb->fd = new_fd; return 0; } /* Return a pointer to the first non-slash in S. */ static char * _GL_ATTRIBUTE_PURE find_non_slash (char const *s) { size_t n_slash = strspn (s, "/"); return (char *) s + n_slash; } /* This is a function much like chdir, but without the PATH_MAX limitation on the length of the directory name. A significant difference is that it must be able to modify (albeit only temporarily) the directory name. It handles an arbitrarily long directory name by operating on manageable portions of the name. On systems without the openat syscall, this means changing the working directory to more and more "distant" points along the long directory name and then restoring the working directory. If any of those attempts to save or restore the working directory fails, this function exits nonzero. Note that this function may still fail with errno == ENAMETOOLONG, but only if the specified directory name contains a component that is long enough to provoke such a failure all by itself (e.g. if the component has length PATH_MAX or greater on systems that define PATH_MAX). */ int chdir_long (char *dir) { int e = chdir (dir); if (e == 0 || errno != ENAMETOOLONG) return e; { size_t len = strlen (dir); char *dir_end = dir + len; struct cd_buf cdb; size_t n_leading_slash; cdb_init (&cdb); /* If DIR is the empty string, then the chdir above must have failed and set errno to ENOENT. */ assert (0 < len); assert (PATH_MAX <= len); /* Count leading slashes. */ n_leading_slash = strspn (dir, "/"); /* Handle any leading slashes as well as any name that matches the regular expression, m!^//hostname[/]*! . Handling this prefix separately usually results in a single additional cdb_advance_fd call, but it's worthwhile, since it makes the code in the following loop cleaner. */ if (n_leading_slash == 2) { int err; /* Find next slash. We already know that dir[2] is neither a slash nor '\0'. */ char *slash = memchr (dir + 3, '/', dir_end - (dir + 3)); if (slash == NULL) { errno = ENAMETOOLONG; return -1; } *slash = '\0'; err = cdb_advance_fd (&cdb, dir); *slash = '/'; if (err != 0) goto Fail; dir = find_non_slash (slash + 1); } else if (n_leading_slash) { if (cdb_advance_fd (&cdb, "/") != 0) goto Fail; dir += n_leading_slash; } assert (*dir != '/'); assert (dir <= dir_end); while (PATH_MAX <= dir_end - dir) { int err; /* Find a slash that is PATH_MAX or fewer bytes away from dir. I.e. see if there is a slash that will give us a name of length PATH_MAX-1 or less. */ char *slash = memrchr (dir, '/', PATH_MAX); if (slash == NULL) { errno = ENAMETOOLONG; return -1; } *slash = '\0'; assert (slash - dir < PATH_MAX); err = cdb_advance_fd (&cdb, dir); *slash = '/'; if (err != 0) goto Fail; dir = find_non_slash (slash + 1); } if (dir < dir_end) { if (cdb_advance_fd (&cdb, dir) != 0) goto Fail; } if (cdb_fchdir (&cdb) != 0) goto Fail; cdb_free (&cdb); return 0; Fail: { int saved_errno = errno; cdb_free (&cdb); errno = saved_errno; return -1; } } } #if TEST_CHDIR # include "closeout.h" # include "error.h" char *program_name; int main (int argc, char *argv[]) { char *line = NULL; size_t n = 0; int len; program_name = argv[0]; atexit (close_stdout); len = getline (&line, &n, stdin); if (len < 0) { int saved_errno = errno; if (feof (stdin)) exit (0); error (EXIT_FAILURE, saved_errno, "reading standard input"); } else if (len == 0) exit (0); if (line[len-1] == '\n') line[len-1] = '\0'; if (chdir_long (line) != 0) error (EXIT_FAILURE, errno, "chdir_long failed: %s", line); if (argc <= 1) { /* Using 'pwd' here makes sense only if it is a robust implementation, like the one in coreutils after the 2004-04-19 changes. */ char const *cmd = "pwd"; execlp (cmd, (char *) NULL); error (EXIT_FAILURE, errno, "%s", cmd); } fclose (stdin); fclose (stderr); exit (EXIT_SUCCESS); } #endif /* Local Variables: compile-command: "gcc -DTEST_CHDIR=1 -g -O -W -Wall chdir-long.c libcoreutils.a" End: */ freedink-108.4+dfsg/gnulib/lib/basename.c0000644000175000017500000000334512330466613015776 0ustar meme/* basename.c -- return the last element in a file name Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "dirname.h" #include #include "xalloc.h" #include "xstrndup.h" char * base_name (char const *name) { char const *base = last_component (name); size_t length; /* If there is no last component, then name is a file system root or the empty string. */ if (! *base) return xstrndup (name, base_len (name)); /* Collapse a sequence of trailing slashes into one. */ length = base_len (base); if (ISSLASH (base[length])) length++; /* On systems with drive letters, "a/b:c" must return "./b:c" rather than "b:c" to avoid confusion with a drive letter. On systems with pure POSIX semantics, this is not an issue. */ if (FILE_SYSTEM_PREFIX_LEN (base)) { char *p = xmalloc (length + 3); p[0] = '.'; p[1] = '/'; memcpy (p + 2, base, length); p[length + 2] = '\0'; return p; } /* Finally, copy the basename. */ return xstrndup (base, length); } freedink-108.4+dfsg/gnulib/lib/filenamecat.h0000644000175000017500000000204412330466613016473 0ustar meme/* Concatenate two arbitrary file names. Copyright (C) 1996-1997, 2003, 2005, 2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #if GNULIB_FILENAMECAT char *file_name_concat (char const *dir, char const *base, char **base_in_result); #endif char *mfile_name_concat (char const *dir, char const *base, char **base_in_result); freedink-108.4+dfsg/gnulib/lib/relocatable.c0000644000175000017500000003724512330466613016506 0ustar meme/* Provide relocatable packages. Copyright (C) 2003-2006, 2008-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2003. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* Tell glibc's to provide a prototype for getline(). This must come before because may include , and once has been included, it's too late. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif #define _GL_USE_STDLIB_ALLOC 1 #include /* Specification. */ #include "relocatable.h" #if ENABLE_RELOCATABLE #include #include #include #include #ifdef NO_XMALLOC # define xmalloc malloc #else # include "xalloc.h" #endif #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN # include #endif #if DEPENDS_ON_LIBCHARSET # include #endif #if DEPENDS_ON_LIBICONV && HAVE_ICONV # include #endif #if DEPENDS_ON_LIBINTL && ENABLE_NLS # include #endif /* Faked cheap 'bool'. */ #undef bool #undef false #undef true #define bool int #define false 0 #define true 1 /* Pathname support. ISSLASH(C) tests whether C is a directory separator character. IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. */ #if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ /* Native Windows, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') # define HAS_DEVICE(P) \ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ && (P)[1] == ':') # define IS_PATH_WITH_DIR(P) \ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) # define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) #else /* Unix */ # define ISSLASH(C) ((C) == '/') # define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) # define FILE_SYSTEM_PREFIX_LEN(P) 0 #endif /* Whether to enable the more costly support for relocatable libraries. It allows libraries to be have been installed with a different original prefix than the program. But it is quite costly, especially on Cygwin platforms, see below. Therefore we enable it by default only on native Windows platforms. */ #ifndef ENABLE_COSTLY_RELOCATABLE # if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ # define ENABLE_COSTLY_RELOCATABLE 1 # else # define ENABLE_COSTLY_RELOCATABLE 0 # endif #endif /* Original installation prefix. */ static char *orig_prefix; static size_t orig_prefix_len; /* Current installation prefix. */ static char *curr_prefix; static size_t curr_prefix_len; /* These prefixes do not end in a slash. Anything that will be concatenated to them must start with a slash. */ /* Sets the original and the current installation prefix of this module. Relocation simply replaces a pathname starting with the original prefix by the corresponding pathname with the current prefix instead. Both prefixes should be directory names without trailing slash (i.e. use "" instead of "/"). */ static void set_this_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) { if (orig_prefix_arg != NULL && curr_prefix_arg != NULL /* Optimization: if orig_prefix and curr_prefix are equal, the relocation is a nop. */ && strcmp (orig_prefix_arg, curr_prefix_arg) != 0) { /* Duplicate the argument strings. */ char *memory; orig_prefix_len = strlen (orig_prefix_arg); curr_prefix_len = strlen (curr_prefix_arg); memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1); #ifdef NO_XMALLOC if (memory != NULL) #endif { memcpy (memory, orig_prefix_arg, orig_prefix_len + 1); orig_prefix = memory; memory += orig_prefix_len + 1; memcpy (memory, curr_prefix_arg, curr_prefix_len + 1); curr_prefix = memory; return; } } orig_prefix = NULL; curr_prefix = NULL; /* Don't worry about wasted memory here - this function is usually only called once. */ } /* Sets the original and the current installation prefix of the package. Relocation simply replaces a pathname starting with the original prefix by the corresponding pathname with the current prefix instead. Both prefixes should be directory names without trailing slash (i.e. use "" instead of "/"). */ void set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) { set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg); /* Now notify all dependent libraries. */ #if DEPENDS_ON_LIBCHARSET libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); #endif #if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); #endif #if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); #endif } #if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE) /* Convenience function: Computes the current installation prefix, based on the original installation prefix, the original installation directory of a particular file, and the current pathname of this file. Returns it, freshly allocated. Returns NULL upon failure. */ #ifdef IN_LIBRARY #define compute_curr_prefix local_compute_curr_prefix static #endif char * compute_curr_prefix (const char *orig_installprefix, const char *orig_installdir, const char *curr_pathname) { char *curr_installdir; const char *rel_installdir; if (curr_pathname == NULL) return NULL; /* Determine the relative installation directory, relative to the prefix. This is simply the difference between orig_installprefix and orig_installdir. */ if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix)) != 0) /* Shouldn't happen - nothing should be installed outside $(prefix). */ return NULL; rel_installdir = orig_installdir + strlen (orig_installprefix); /* Determine the current installation directory. */ { const char *p_base = curr_pathname + FILE_SYSTEM_PREFIX_LEN (curr_pathname); const char *p = curr_pathname + strlen (curr_pathname); char *q; while (p > p_base) { p--; if (ISSLASH (*p)) break; } q = (char *) xmalloc (p - curr_pathname + 1); #ifdef NO_XMALLOC if (q == NULL) return NULL; #endif memcpy (q, curr_pathname, p - curr_pathname); q[p - curr_pathname] = '\0'; curr_installdir = q; } /* Compute the current installation prefix by removing the trailing rel_installdir from it. */ { const char *rp = rel_installdir + strlen (rel_installdir); const char *cp = curr_installdir + strlen (curr_installdir); const char *cp_base = curr_installdir + FILE_SYSTEM_PREFIX_LEN (curr_installdir); while (rp > rel_installdir && cp > cp_base) { bool same = false; const char *rpi = rp; const char *cpi = cp; while (rpi > rel_installdir && cpi > cp_base) { rpi--; cpi--; if (ISSLASH (*rpi) || ISSLASH (*cpi)) { if (ISSLASH (*rpi) && ISSLASH (*cpi)) same = true; break; } /* Do case-insensitive comparison if the file system is always or often case-insensitive. It's better to accept the comparison if the difference is only in case, rather than to fail. */ #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ /* Native Windows, Cygwin, OS/2, DOS - case insignificant file system */ if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi) != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi)) break; #else if (*rpi != *cpi) break; #endif } if (!same) break; /* The last pathname component was the same. opi and cpi now point to the slash before it. */ rp = rpi; cp = cpi; } if (rp > rel_installdir) { /* Unexpected: The curr_installdir does not end with rel_installdir. */ free (curr_installdir); return NULL; } { size_t curr_prefix_len = cp - curr_installdir; char *curr_prefix; curr_prefix = (char *) xmalloc (curr_prefix_len + 1); #ifdef NO_XMALLOC if (curr_prefix == NULL) { free (curr_installdir); return NULL; } #endif memcpy (curr_prefix, curr_installdir, curr_prefix_len); curr_prefix[curr_prefix_len] = '\0'; free (curr_installdir); return curr_prefix; } } } #endif /* !IN_LIBRARY || PIC */ #if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE /* Full pathname of shared library, or NULL. */ static char *shared_library_fullname; #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ /* Native Windows only. On Cygwin, it is better to use the Cygwin provided /proc interface, than to use native Windows API and cygwin_conv_to_posix_path, because it supports longer file names (see ). */ /* Determine the full pathname of the shared library when it is loaded. */ BOOL WINAPI DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) { (void) reserved; if (event == DLL_PROCESS_ATTACH) { /* The DLL is being loaded into an application's address range. */ static char location[MAX_PATH]; if (!GetModuleFileName (module_handle, location, sizeof (location))) /* Shouldn't happen. */ return FALSE; if (!IS_PATH_WITH_DIR (location)) /* Shouldn't happen. */ return FALSE; shared_library_fullname = strdup (location); } return TRUE; } #else /* Unix */ static void find_shared_library_fullname () { #if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline() function. Cygwin >= 1.5 has /proc/self/maps and the getline() function too. But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on Cygwin 1.7. */ FILE *fp; /* Open the current process' maps file. It describes one VMA per line. */ fp = fopen ("/proc/self/maps", "r"); if (fp) { unsigned long address = (unsigned long) &find_shared_library_fullname; for (;;) { unsigned long start, end; int c; if (fscanf (fp, "%lx-%lx", &start, &end) != 2) break; if (address >= start && address <= end - 1) { /* Found it. Now see if this line contains a filename. */ while (c = getc (fp), c != EOF && c != '\n' && c != '/') continue; if (c == '/') { size_t size; int len; ungetc (c, fp); shared_library_fullname = NULL; size = 0; len = getline (&shared_library_fullname, &size, fp); if (len >= 0) { /* Success: filled shared_library_fullname. */ if (len > 0 && shared_library_fullname[len - 1] == '\n') shared_library_fullname[len - 1] = '\0'; } } break; } while (c = getc (fp), c != EOF && c != '\n') continue; } fclose (fp); } #endif } #endif /* Native Windows / Unix */ /* Return the full pathname of the current shared library. Return NULL if unknown. Guaranteed to work only on Linux, Cygwin, and native Windows. */ static char * get_shared_library_fullname () { #if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) static bool tried_find_shared_library_fullname; if (!tried_find_shared_library_fullname) { find_shared_library_fullname (); tried_find_shared_library_fullname = true; } #endif return shared_library_fullname; } #endif /* PIC */ /* Returns the pathname, relocated according to the current installation directory. The returned string is either PATHNAME unmodified or a freshly allocated string that you can free with free() after casting it to 'char *'. */ const char * relocate (const char *pathname) { #if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE static int initialized; /* Initialization code for a shared library. */ if (!initialized) { /* At this point, orig_prefix and curr_prefix likely have already been set through the main program's set_program_name_and_installdir function. This is sufficient in the case that the library has initially been installed in the same orig_prefix. But we can do better, to also cover the cases that 1. it has been installed in a different prefix before being moved to orig_prefix and (later) to curr_prefix, 2. unlike the program, it has not moved away from orig_prefix. */ const char *orig_installprefix = INSTALLPREFIX; const char *orig_installdir = INSTALLDIR; char *curr_prefix_better; curr_prefix_better = compute_curr_prefix (orig_installprefix, orig_installdir, get_shared_library_fullname ()); set_relocation_prefix (orig_installprefix, curr_prefix_better != NULL ? curr_prefix_better : curr_prefix); if (curr_prefix_better != NULL) free (curr_prefix_better); initialized = 1; } #endif /* Note: It is not necessary to perform case insensitive comparison here, even for DOS-like file systems, because the pathname argument was typically created from the same Makefile variable as orig_prefix came from. */ if (orig_prefix != NULL && curr_prefix != NULL && strncmp (pathname, orig_prefix, orig_prefix_len) == 0) { if (pathname[orig_prefix_len] == '\0') { /* pathname equals orig_prefix. */ char *result = (char *) xmalloc (strlen (curr_prefix) + 1); #ifdef NO_XMALLOC if (result != NULL) #endif { strcpy (result, curr_prefix); return result; } } else if (ISSLASH (pathname[orig_prefix_len])) { /* pathname starts with orig_prefix. */ const char *pathname_tail = &pathname[orig_prefix_len]; char *result = (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1); #ifdef NO_XMALLOC if (result != NULL) #endif { memcpy (result, curr_prefix, curr_prefix_len); strcpy (result + curr_prefix_len, pathname_tail); return result; } } } /* Nothing to relocate. */ return pathname; } #endif freedink-108.4+dfsg/gnulib/lib/canonicalize.c0000644000175000017500000002447512330466613016671 0ustar meme/* Return the canonical absolute name of a given file. Copyright (C) 1996-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "canonicalize.h" #include #include #include #include #include #include "areadlink.h" #include "file-set.h" #include "hash-triple.h" #include "pathmax.h" #include "xalloc.h" #include "xgetcwd.h" #include "dosname.h" #define MULTIPLE_BITS_SET(i) (((i) & ((i) - 1)) != 0) /* In this file, we cannot handle file names longer than PATH_MAX. On systems with no file name length limit, use a fallback. */ #ifndef PATH_MAX # define PATH_MAX 8192 #endif #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT # define DOUBLE_SLASH_IS_DISTINCT_ROOT 0 #endif #if ISSLASH ('\\') # define SLASHES "/\\" #else # define SLASHES "/" #endif #if !((HAVE_CANONICALIZE_FILE_NAME && FUNC_REALPATH_WORKS) \ || GNULIB_CANONICALIZE_LGPL) /* Return the canonical absolute name of file NAME. A canonical name does not contain any ".", ".." components nor any repeated file name separators ('/') or symlinks. All components must exist. The result is malloc'd. */ char * canonicalize_file_name (const char *name) { return canonicalize_filename_mode (name, CAN_EXISTING); } #endif /* !HAVE_CANONICALIZE_FILE_NAME */ /* Return true if we've already seen the triple, . If *HT is not initialized, initialize it. */ static bool seen_triple (Hash_table **ht, char const *filename, struct stat const *st) { if (*ht == NULL) { size_t initial_capacity = 7; *ht = hash_initialize (initial_capacity, NULL, triple_hash, triple_compare_ino_str, triple_free); if (*ht == NULL) xalloc_die (); } if (seen_file (*ht, filename, st)) return true; record_file (*ht, filename, st); return false; } /* Return the canonical absolute name of file NAME, while treating missing elements according to CAN_MODE. A canonical name does not contain any ".", ".." components nor any repeated file name separators ('/') or, depending on other CAN_MODE flags, symlinks. Whether components must exist or not depends on canonicalize mode. The result is malloc'd. */ char * canonicalize_filename_mode (const char *name, canonicalize_mode_t can_mode) { char *rname, *dest, *extra_buf = NULL; char const *start; char const *end; char const *rname_limit; size_t extra_len = 0; Hash_table *ht = NULL; int saved_errno; int can_flags = can_mode & ~CAN_MODE_MASK; bool logical = can_flags & CAN_NOLINKS; size_t prefix_len; can_mode &= CAN_MODE_MASK; if (MULTIPLE_BITS_SET (can_mode)) { errno = EINVAL; return NULL; } if (name == NULL) { errno = EINVAL; return NULL; } if (name[0] == '\0') { errno = ENOENT; return NULL; } /* This is always zero for Posix hosts, but can be 2 for MS-Windows and MS-DOS X:/foo/bar file names. */ prefix_len = FILE_SYSTEM_PREFIX_LEN (name); if (!IS_ABSOLUTE_FILE_NAME (name)) { rname = xgetcwd (); if (!rname) return NULL; dest = strchr (rname, '\0'); if (dest - rname < PATH_MAX) { char *p = xrealloc (rname, PATH_MAX); dest = p + (dest - rname); rname = p; rname_limit = rname + PATH_MAX; } else { rname_limit = dest; } start = name; prefix_len = FILE_SYSTEM_PREFIX_LEN (rname); } else { rname = xmalloc (PATH_MAX); rname_limit = rname + PATH_MAX; dest = rname; if (prefix_len) { memcpy (rname, name, prefix_len); dest += prefix_len; } *dest++ = '/'; if (DOUBLE_SLASH_IS_DISTINCT_ROOT) { if (ISSLASH (name[1]) && !ISSLASH (name[2]) && !prefix_len) *dest++ = '/'; *dest = '\0'; } start = name + prefix_len; } for ( ; *start; start = end) { /* Skip sequence of multiple file name separators. */ while (ISSLASH (*start)) ++start; /* Find end of component. */ for (end = start; *end && !ISSLASH (*end); ++end) /* Nothing. */; if (end - start == 0) break; else if (end - start == 1 && start[0] == '.') /* nothing */; else if (end - start == 2 && start[0] == '.' && start[1] == '.') { /* Back up to previous component, ignore if at root already. */ if (dest > rname + prefix_len + 1) for (--dest; dest > rname && !ISSLASH (dest[-1]); --dest) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1 && !prefix_len && ISSLASH (*dest) && !ISSLASH (dest[1])) dest++; } else { struct stat st; if (!ISSLASH (dest[-1])) *dest++ = '/'; if (dest + (end - start) >= rname_limit) { ptrdiff_t dest_offset = dest - rname; size_t new_size = rname_limit - rname; if (end - start + 1 > PATH_MAX) new_size += end - start + 1; else new_size += PATH_MAX; rname = xrealloc (rname, new_size); rname_limit = rname + new_size; dest = rname + dest_offset; } dest = memcpy (dest, start, end - start); dest += end - start; *dest = '\0'; if (logical && (can_mode == CAN_MISSING)) { /* Avoid the stat in this case as it's inconsequential. i.e. we're neither resolving symlinks or testing component existence. */ st.st_mode = 0; } else if ((logical ? stat (rname, &st) : lstat (rname, &st)) != 0) { saved_errno = errno; if (can_mode == CAN_EXISTING) goto error; if (can_mode == CAN_ALL_BUT_LAST) { if (end[strspn (end, SLASHES)] || saved_errno != ENOENT) goto error; continue; } st.st_mode = 0; } if (S_ISLNK (st.st_mode)) { char *buf; size_t n, len; /* Detect loops. We cannot use the cycle-check module here, since it's actually possible to encounter the same symlink more than once in a given traversal. However, encountering the same symlink,NAME pair twice does indicate a loop. */ if (seen_triple (&ht, name, &st)) { if (can_mode == CAN_MISSING) continue; saved_errno = ELOOP; goto error; } buf = areadlink_with_size (rname, st.st_size); if (!buf) { if (can_mode == CAN_MISSING && errno != ENOMEM) continue; saved_errno = errno; goto error; } n = strlen (buf); len = strlen (end); if (!extra_len) { extra_len = ((n + len + 1) > PATH_MAX) ? (n + len + 1) : PATH_MAX; extra_buf = xmalloc (extra_len); } else if ((n + len + 1) > extra_len) { extra_len = n + len + 1; extra_buf = xrealloc (extra_buf, extra_len); } /* Careful here, end may be a pointer into extra_buf... */ memmove (&extra_buf[n], end, len + 1); name = end = memcpy (extra_buf, buf, n); if (IS_ABSOLUTE_FILE_NAME (buf)) { size_t pfxlen = FILE_SYSTEM_PREFIX_LEN (buf); if (pfxlen) memcpy (rname, buf, pfxlen); dest = rname + pfxlen; *dest++ = '/'; /* It's an absolute symlink */ if (DOUBLE_SLASH_IS_DISTINCT_ROOT) { if (ISSLASH (buf[1]) && !ISSLASH (buf[2]) && !pfxlen) *dest++ = '/'; *dest = '\0'; } /* Install the new prefix to be in effect hereafter. */ prefix_len = pfxlen; } else { /* Back up to previous component, ignore if at root already: */ if (dest > rname + prefix_len + 1) for (--dest; dest > rname && !ISSLASH (dest[-1]); --dest) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1 && ISSLASH (*dest) && !ISSLASH (dest[1]) && !prefix_len) dest++; } free (buf); } else { if (!S_ISDIR (st.st_mode) && *end && (can_mode != CAN_MISSING)) { saved_errno = ENOTDIR; goto error; } } } } if (dest > rname + prefix_len + 1 && ISSLASH (dest[-1])) --dest; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1 && !prefix_len && ISSLASH (*dest) && !ISSLASH (dest[1])) dest++; *dest = '\0'; if (rname_limit != dest + 1) rname = xrealloc (rname, dest - rname + 1); free (extra_buf); if (ht) hash_free (ht); return rname; error: free (extra_buf); free (rname); if (ht) hash_free (ht); errno = saved_errno; return NULL; } freedink-108.4+dfsg/gnulib/lib/Makefile.am0000644000175000017500000021062112420231224016074 0ustar meme## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --po-base=gnulib/po --doc-base=doc --tests-base=tests --aux-dir=autotools --no-conditional-dependencies --no-libtool --macro-prefix=gl --po-domain=freedink alloca canonicalize dirname getopt-gnu gettext hash relocatable-prog strcase strdup-posix strings vasprintf xalloc AUTOMAKE_OPTIONS = 1.9.6 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = EXTRA_DIST = BUILT_SOURCES = SUFFIXES = MOSTLYCLEANFILES = core *.stackdump MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = AM_CFLAGS = noinst_LIBRARIES += libgnu.a libgnu_a_SOURCES = libgnu_a_LIBADD = $(gl_LIBOBJS) libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) EXTRA_libgnu_a_SOURCES = AM_CPPFLAGS += -DDEFAULT_TEXT_DOMAIN=\"freedink-gnulib\" ## begin gnulib module absolute-header # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) ## end gnulib module absolute-header ## begin gnulib module alloca libgnu_a_LIBADD += @ALLOCA@ libgnu_a_DEPENDENCIES += @ALLOCA@ EXTRA_DIST += alloca.c EXTRA_libgnu_a_SOURCES += alloca.c ## end gnulib module alloca ## begin gnulib module alloca-opt BUILT_SOURCES += $(ALLOCA_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_ALLOCA_H alloca.h: alloca.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ cat $(srcdir)/alloca.in.h; \ } > $@-t && \ mv -f $@-t $@ else alloca.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += alloca.h alloca.h-t EXTRA_DIST += alloca.in.h ## end gnulib module alloca-opt ## begin gnulib module allocator libgnu_a_SOURCES += allocator.c EXTRA_DIST += allocator.h ## end gnulib module allocator ## begin gnulib module areadlink libgnu_a_SOURCES += areadlink.c EXTRA_DIST += areadlink.h ## end gnulib module areadlink ## begin gnulib module areadlink-with-size libgnu_a_SOURCES += areadlink-with-size.c EXTRA_DIST += areadlink.h ## end gnulib module areadlink-with-size ## begin gnulib module at-internal EXTRA_DIST += openat-priv.h openat-proc.c EXTRA_libgnu_a_SOURCES += openat-proc.c ## end gnulib module at-internal ## begin gnulib module bitrotate libgnu_a_SOURCES += bitrotate.h bitrotate.c ## end gnulib module bitrotate ## begin gnulib module canonicalize libgnu_a_SOURCES += canonicalize.c EXTRA_DIST += canonicalize.h ## end gnulib module canonicalize ## begin gnulib module canonicalize-lgpl EXTRA_DIST += canonicalize-lgpl.c EXTRA_libgnu_a_SOURCES += canonicalize-lgpl.c ## end gnulib module canonicalize-lgpl ## begin gnulib module careadlinkat libgnu_a_SOURCES += careadlinkat.c EXTRA_DIST += careadlinkat.h ## end gnulib module careadlinkat ## begin gnulib module chdir-long EXTRA_DIST += chdir-long.c chdir-long.h EXTRA_libgnu_a_SOURCES += chdir-long.c ## end gnulib module chdir-long ## begin gnulib module cloexec libgnu_a_SOURCES += cloexec.c EXTRA_DIST += cloexec.h ## end gnulib module cloexec ## begin gnulib module close EXTRA_DIST += close.c EXTRA_libgnu_a_SOURCES += close.c ## end gnulib module close ## begin gnulib module closedir EXTRA_DIST += closedir.c dirent-private.h EXTRA_libgnu_a_SOURCES += closedir.c ## end gnulib module closedir ## begin gnulib module dirent BUILT_SOURCES += dirent.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. dirent.h: dirent.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_DIRENT_H''@|$(HAVE_DIRENT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_DIRENT_H''@|$(NEXT_DIRENT_H)|g' \ -e 's/@''GNULIB_OPENDIR''@/$(GNULIB_OPENDIR)/g' \ -e 's/@''GNULIB_READDIR''@/$(GNULIB_READDIR)/g' \ -e 's/@''GNULIB_REWINDDIR''@/$(GNULIB_REWINDDIR)/g' \ -e 's/@''GNULIB_CLOSEDIR''@/$(GNULIB_CLOSEDIR)/g' \ -e 's/@''GNULIB_DIRFD''@/$(GNULIB_DIRFD)/g' \ -e 's/@''GNULIB_FDOPENDIR''@/$(GNULIB_FDOPENDIR)/g' \ -e 's/@''GNULIB_SCANDIR''@/$(GNULIB_SCANDIR)/g' \ -e 's/@''GNULIB_ALPHASORT''@/$(GNULIB_ALPHASORT)/g' \ -e 's/@''HAVE_OPENDIR''@/$(HAVE_OPENDIR)/g' \ -e 's/@''HAVE_READDIR''@/$(HAVE_READDIR)/g' \ -e 's/@''HAVE_REWINDDIR''@/$(HAVE_REWINDDIR)/g' \ -e 's/@''HAVE_CLOSEDIR''@/$(HAVE_CLOSEDIR)/g' \ -e 's|@''HAVE_DECL_DIRFD''@|$(HAVE_DECL_DIRFD)|g' \ -e 's|@''HAVE_DECL_FDOPENDIR''@|$(HAVE_DECL_FDOPENDIR)|g' \ -e 's|@''HAVE_FDOPENDIR''@|$(HAVE_FDOPENDIR)|g' \ -e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \ -e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \ -e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \ -e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \ -e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \ -e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/dirent.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += dirent.h dirent.h-t EXTRA_DIST += dirent.in.h ## end gnulib module dirent ## begin gnulib module dirfd EXTRA_DIST += dirfd.c EXTRA_libgnu_a_SOURCES += dirfd.c ## end gnulib module dirfd ## begin gnulib module dirname libgnu_a_SOURCES += dirname.c basename.c EXTRA_DIST += stripslash.c EXTRA_libgnu_a_SOURCES += stripslash.c ## end gnulib module dirname ## begin gnulib module dirname-lgpl libgnu_a_SOURCES += dirname-lgpl.c basename-lgpl.c stripslash.c EXTRA_DIST += dirname.h ## end gnulib module dirname-lgpl ## begin gnulib module dosname EXTRA_DIST += dosname.h ## end gnulib module dosname ## begin gnulib module dup EXTRA_DIST += dup.c EXTRA_libgnu_a_SOURCES += dup.c ## end gnulib module dup ## begin gnulib module dup2 EXTRA_DIST += dup2.c EXTRA_libgnu_a_SOURCES += dup2.c ## end gnulib module dup2 ## begin gnulib module errno BUILT_SOURCES += $(ERRNO_H) # We need the following in order to create when the system # doesn't have one that is POSIX compliant. if GL_GENERATE_ERRNO_H errno.h: errno.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ < $(srcdir)/errno.in.h; \ } > $@-t && \ mv $@-t $@ else errno.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += errno.h errno.h-t EXTRA_DIST += errno.in.h ## end gnulib module errno ## begin gnulib module error EXTRA_DIST += error.c error.h EXTRA_libgnu_a_SOURCES += error.c ## end gnulib module error ## begin gnulib module exitfail libgnu_a_SOURCES += exitfail.c EXTRA_DIST += exitfail.h ## end gnulib module exitfail ## begin gnulib module fchdir EXTRA_DIST += fchdir.c EXTRA_libgnu_a_SOURCES += fchdir.c ## end gnulib module fchdir ## begin gnulib module fcntl EXTRA_DIST += fcntl.c EXTRA_libgnu_a_SOURCES += fcntl.c ## end gnulib module fcntl ## begin gnulib module fcntl-h BUILT_SOURCES += fcntl.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \ -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \ -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \ -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \ -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \ -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \ -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/fcntl.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += fcntl.h fcntl.h-t EXTRA_DIST += fcntl.in.h ## end gnulib module fcntl-h ## begin gnulib module fd-hook libgnu_a_SOURCES += fd-hook.c EXTRA_DIST += fd-hook.h ## end gnulib module fd-hook ## begin gnulib module fdopendir EXTRA_DIST += fdopendir.c EXTRA_libgnu_a_SOURCES += fdopendir.c ## end gnulib module fdopendir ## begin gnulib module file-set libgnu_a_SOURCES += file-set.c EXTRA_DIST += file-set.h ## end gnulib module file-set ## begin gnulib module filename EXTRA_DIST += filename.h ## end gnulib module filename ## begin gnulib module filenamecat-lgpl libgnu_a_SOURCES += filenamecat-lgpl.c EXTRA_DIST += filenamecat.h ## end gnulib module filenamecat-lgpl ## begin gnulib module float BUILT_SOURCES += $(FLOAT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_FLOAT_H float.h: float.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ < $(srcdir)/float.in.h; \ } > $@-t && \ mv $@-t $@ else float.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += float.h float.h-t EXTRA_DIST += float.c float.in.h itold.c EXTRA_libgnu_a_SOURCES += float.c itold.c ## end gnulib module float ## begin gnulib module fstat EXTRA_DIST += fstat.c EXTRA_libgnu_a_SOURCES += fstat.c ## end gnulib module fstat ## begin gnulib module fstatat EXTRA_DIST += at-func.c fstatat.c EXTRA_libgnu_a_SOURCES += at-func.c fstatat.c ## end gnulib module fstatat ## begin gnulib module getcwd EXTRA_DIST += getcwd.c EXTRA_libgnu_a_SOURCES += getcwd.c ## end gnulib module getcwd ## begin gnulib module getcwd-lgpl EXTRA_DIST += getcwd-lgpl.c EXTRA_libgnu_a_SOURCES += getcwd-lgpl.c ## end gnulib module getcwd-lgpl ## begin gnulib module getdtablesize EXTRA_DIST += getdtablesize.c EXTRA_libgnu_a_SOURCES += getdtablesize.c ## end gnulib module getdtablesize ## begin gnulib module getopt-posix BUILT_SOURCES += $(GETOPT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ < $(srcdir)/getopt.in.h; \ } > $@-t && \ mv -f $@-t $@ MOSTLYCLEANFILES += getopt.h getopt.h-t EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h EXTRA_libgnu_a_SOURCES += getopt.c getopt1.c ## end gnulib module getopt-posix ## begin gnulib module gettext # If your project uses "gettextize --intl" to put a source-code # copy of libintl into the package, every Makefile.am needs # -I$(top_builddir)/intl, so that can be found in this directory. # Here's one way to do this: #AM_CPPFLAGS += -I$(top_builddir)/intl # This option has no effect when the user disables NLS (because then # the intl directory contains no libintl.h file). This option is not # enabled by default because the intl directory might not exist if # your project does not use "gettext --intl", and some compilers # complain about -I options applied to nonexistent directories. EXTRA_DIST += $(top_srcdir)/autotools/config.rpath ## end gnulib module gettext ## begin gnulib module gettext-h libgnu_a_SOURCES += gettext.h ## end gnulib module gettext-h ## begin gnulib module gettimeofday EXTRA_DIST += gettimeofday.c EXTRA_libgnu_a_SOURCES += gettimeofday.c ## end gnulib module gettimeofday ## begin gnulib module hash libgnu_a_SOURCES += hash.c EXTRA_DIST += hash.h ## end gnulib module hash ## begin gnulib module hash-pjw libgnu_a_SOURCES += hash-pjw.h hash-pjw.c ## end gnulib module hash-pjw ## begin gnulib module hash-triple libgnu_a_SOURCES += hash-triple.c EXTRA_DIST += hash-triple.h ## end gnulib module hash-triple ## begin gnulib module havelib EXTRA_DIST += $(top_srcdir)/autotools/config.rpath ## end gnulib module havelib ## begin gnulib module intprops EXTRA_DIST += intprops.h ## end gnulib module intprops ## begin gnulib module lstat EXTRA_DIST += lstat.c EXTRA_libgnu_a_SOURCES += lstat.c ## end gnulib module lstat ## begin gnulib module malloc-posix EXTRA_DIST += malloc.c EXTRA_libgnu_a_SOURCES += malloc.c ## end gnulib module malloc-posix ## begin gnulib module malloca libgnu_a_SOURCES += malloca.c EXTRA_DIST += malloca.h malloca.valgrind ## end gnulib module malloca ## begin gnulib module memchr EXTRA_DIST += memchr.c memchr.valgrind EXTRA_libgnu_a_SOURCES += memchr.c ## end gnulib module memchr ## begin gnulib module mempcpy EXTRA_DIST += mempcpy.c EXTRA_libgnu_a_SOURCES += mempcpy.c ## end gnulib module mempcpy ## begin gnulib module memrchr EXTRA_DIST += memrchr.c EXTRA_libgnu_a_SOURCES += memrchr.c ## end gnulib module memrchr ## begin gnulib module msvc-inval EXTRA_DIST += msvc-inval.c msvc-inval.h EXTRA_libgnu_a_SOURCES += msvc-inval.c ## end gnulib module msvc-inval ## begin gnulib module msvc-nothrow EXTRA_DIST += msvc-nothrow.c msvc-nothrow.h EXTRA_libgnu_a_SOURCES += msvc-nothrow.c ## end gnulib module msvc-nothrow ## begin gnulib module open EXTRA_DIST += open.c EXTRA_libgnu_a_SOURCES += open.c ## end gnulib module open ## begin gnulib module openat EXTRA_DIST += openat.c EXTRA_libgnu_a_SOURCES += openat.c ## end gnulib module openat ## begin gnulib module openat-die libgnu_a_SOURCES += openat-die.c ## end gnulib module openat-die ## begin gnulib module openat-h EXTRA_DIST += openat.h ## end gnulib module openat-h ## begin gnulib module opendir EXTRA_DIST += dirent-private.h opendir.c EXTRA_libgnu_a_SOURCES += opendir.c ## end gnulib module opendir ## begin gnulib module pathmax EXTRA_DIST += pathmax.h ## end gnulib module pathmax ## begin gnulib module progname libgnu_a_SOURCES += progname.h progname.c ## end gnulib module progname ## begin gnulib module readdir EXTRA_DIST += dirent-private.h readdir.c EXTRA_libgnu_a_SOURCES += readdir.c ## end gnulib module readdir ## begin gnulib module readlink EXTRA_DIST += readlink.c EXTRA_libgnu_a_SOURCES += readlink.c ## end gnulib module readlink ## begin gnulib module realloc-posix EXTRA_DIST += realloc.c EXTRA_libgnu_a_SOURCES += realloc.c ## end gnulib module realloc-posix ## begin gnulib module relocatable-prog DEFS += -DEXEEXT=\"@EXEEXT@\" if RELOCATABLE_VIA_WRAPPER uninstall-hook: uninstall-relocwrapper uninstall-relocwrapper: if test $(RELOCATABLE) = yes; then \ case '$(EXEEXT)' in \ .bin*) ;; \ *) cd $(top_builddir) && \ $(MAKE) $(AM_MAKEFLAGS) EXEEXT=.bin$(EXEEXT) \ AM_MAKEFLAGS='$(AM_MAKEFLAGS) EXEEXT=.bin$(EXEEXT)' \ uninstall ;; \ esac; \ fi .PHONY: uninstall-relocwrapper endif EXTRA_DIST += progreloc.c relocatable.c relocatable.h EXTRA_libgnu_a_SOURCES += progreloc.c relocatable.c EXTRA_DIST += $(top_srcdir)/autotools/config.libpath $(top_srcdir)/autotools/reloc-ldflags ## end gnulib module relocatable-prog ## begin gnulib module relocatable-prog-wrapper EXTRA_DIST += allocator.c allocator.h areadlink.c areadlink.h c-ctype.c c-ctype.h canonicalize-lgpl.c careadlinkat.c careadlinkat.h malloca.c malloca.h progname.c progname.h progreloc.c readlink.c relocatable.c relocatable.h relocwrapper.c setenv.c EXTRA_DIST += $(top_srcdir)/autotools/install-reloc ## end gnulib module relocatable-prog-wrapper ## begin gnulib module rewinddir EXTRA_DIST += dirent-private.h rewinddir.c EXTRA_libgnu_a_SOURCES += rewinddir.c ## end gnulib module rewinddir ## begin gnulib module same libgnu_a_SOURCES += same.c EXTRA_DIST += same.h ## end gnulib module same ## begin gnulib module same-inode EXTRA_DIST += same-inode.h ## end gnulib module same-inode ## begin gnulib module save-cwd libgnu_a_SOURCES += save-cwd.c EXTRA_DIST += save-cwd.h ## end gnulib module save-cwd ## begin gnulib module size_max libgnu_a_SOURCES += size_max.h ## end gnulib module size_max ## begin gnulib module snippet/_Noreturn # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all Makefile.am that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H=$(top_srcdir)/autotools/snippet/_Noreturn.h EXTRA_DIST += $(top_srcdir)/autotools/snippet/_Noreturn.h ## end gnulib module snippet/_Noreturn ## begin gnulib module snippet/arg-nonnull # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += arg-nonnull.h # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/autotools/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/autotools/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t ARG_NONNULL_H=arg-nonnull.h EXTRA_DIST += $(top_srcdir)/autotools/snippet/arg-nonnull.h ## end gnulib module snippet/arg-nonnull ## begin gnulib module snippet/c++defs # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += c++defs.h # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/autotools/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/autotools/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += c++defs.h c++defs.h-t CXXDEFS_H=c++defs.h EXTRA_DIST += $(top_srcdir)/autotools/snippet/c++defs.h ## end gnulib module snippet/c++defs ## begin gnulib module snippet/warn-on-use BUILT_SOURCES += warn-on-use.h # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/autotools/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/autotools/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t WARN_ON_USE_H=warn-on-use.h EXTRA_DIST += $(top_srcdir)/autotools/snippet/warn-on-use.h ## end gnulib module snippet/warn-on-use ## begin gnulib module stat EXTRA_DIST += stat.c EXTRA_libgnu_a_SOURCES += stat.c ## end gnulib module stat ## begin gnulib module stdbool BUILT_SOURCES += $(STDBOOL_H) # We need the following in order to create when the system # doesn't have one that works. if GL_GENERATE_STDBOOL_H stdbool.h: stdbool.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \ } > $@-t && \ mv $@-t $@ else stdbool.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdbool.h stdbool.h-t EXTRA_DIST += stdbool.in.h ## end gnulib module stdbool ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDDEF_H stddef.h: stddef.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ < $(srcdir)/stddef.in.h; \ } > $@-t && \ mv $@-t $@ else stddef.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stddef.h stddef.h-t EXTRA_DIST += stddef.in.h ## end gnulib module stddef ## begin gnulib module stdint BUILT_SOURCES += $(STDINT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDINT_H stdint.h: stdint.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ < $(srcdir)/stdint.in.h; \ } > $@-t && \ mv $@-t $@ else stdint.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdint.h stdint.h-t EXTRA_DIST += stdint.in.h ## end gnulib module stdint ## begin gnulib module stdio BUILT_SOURCES += stdio.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += stdio.h stdio.h-t EXTRA_DIST += stdio.in.h ## end gnulib module stdio ## begin gnulib module stdlib BUILT_SOURCES += stdlib.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += stdlib.h stdlib.h-t EXTRA_DIST += stdlib.in.h ## end gnulib module stdlib ## begin gnulib module strcase EXTRA_DIST += strcasecmp.c strncasecmp.c EXTRA_libgnu_a_SOURCES += strcasecmp.c strncasecmp.c ## end gnulib module strcase ## begin gnulib module strdup-posix EXTRA_DIST += strdup.c EXTRA_libgnu_a_SOURCES += strdup.c ## end gnulib module strdup-posix ## begin gnulib module strerror EXTRA_DIST += strerror.c EXTRA_libgnu_a_SOURCES += strerror.c ## end gnulib module strerror ## begin gnulib module strerror-override EXTRA_DIST += strerror-override.c strerror-override.h EXTRA_libgnu_a_SOURCES += strerror-override.c ## end gnulib module strerror-override ## begin gnulib module string BUILT_SOURCES += string.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ < $(srcdir)/string.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += string.h string.h-t EXTRA_DIST += string.in.h ## end gnulib module string ## begin gnulib module strings BUILT_SOURCES += strings.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. strings.h: strings.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_STRINGS_H''@|$(HAVE_STRINGS_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \ -e 's|@''GNULIB_FFS''@|$(GNULIB_FFS)|g' \ -e 's|@''HAVE_FFS''@|$(HAVE_FFS)|g' \ -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \ -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/strings.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += strings.h strings.h-t EXTRA_DIST += strings.in.h ## end gnulib module strings ## begin gnulib module strndup EXTRA_DIST += strndup.c EXTRA_libgnu_a_SOURCES += strndup.c ## end gnulib module strndup ## begin gnulib module strnlen EXTRA_DIST += strnlen.c EXTRA_libgnu_a_SOURCES += strnlen.c ## end gnulib module strnlen ## begin gnulib module sys_stat BUILT_SOURCES += sys/stat.h # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_stat.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/stat.h sys/stat.h-t MOSTLYCLEANDIRS += sys EXTRA_DIST += sys_stat.in.h ## end gnulib module sys_stat ## begin gnulib module sys_time BUILT_SOURCES += sys/time.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_time.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/time.h sys/time.h-t EXTRA_DIST += sys_time.in.h ## end gnulib module sys_time ## begin gnulib module sys_types BUILT_SOURCES += sys/types.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/types.h sys/types.h-t EXTRA_DIST += sys_types.in.h ## end gnulib module sys_types ## begin gnulib module time BUILT_SOURCES += time.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''REPLACE_GMTIME''@|$(REPLACE_GMTIME)|g' \ -e 's|@''REPLACE_LOCALTIME''@|$(REPLACE_LOCALTIME)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/time.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += time.h time.h-t EXTRA_DIST += time.in.h ## end gnulib module time ## begin gnulib module unistd BUILT_SOURCES += unistd.h libgnu_a_SOURCES += unistd.c # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += unistd.h unistd.h-t EXTRA_DIST += unistd.in.h ## end gnulib module unistd ## begin gnulib module unistd-safer libgnu_a_SOURCES += dup-safer.c fd-safer.c pipe-safer.c EXTRA_DIST += unistd--.h unistd-safer.h ## end gnulib module unistd-safer ## begin gnulib module vasnprintf EXTRA_DIST += asnprintf.c float+.h printf-args.c printf-args.h printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h EXTRA_libgnu_a_SOURCES += asnprintf.c printf-args.c printf-parse.c vasnprintf.c ## end gnulib module vasnprintf ## begin gnulib module vasprintf EXTRA_DIST += asprintf.c vasprintf.c EXTRA_libgnu_a_SOURCES += asprintf.c vasprintf.c ## end gnulib module vasprintf ## begin gnulib module verify EXTRA_DIST += verify.h ## end gnulib module verify ## begin gnulib module wchar BUILT_SOURCES += wchar.h # We need the following in order to create when the system # version does not work standalone. wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \ -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \ -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \ -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \ -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \ -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \ -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \ -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \ -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \ -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \ -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \ -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \ -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \ -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \ -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \ -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \ -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \ -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \ -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \ -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \ -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \ -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \ -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \ -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \ -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \ -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \ -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \ -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \ -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \ -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \ -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \ -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \ -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \ -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \ -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \ -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \ -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \ -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \ < $(srcdir)/wchar.in.h | \ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \ -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \ -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \ -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \ -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \ -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \ -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \ -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \ -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \ -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \ -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \ -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \ -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \ -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \ -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \ -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \ -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \ -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \ -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \ -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \ -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \ -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \ -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \ -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \ -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \ -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \ -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \ -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \ -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \ -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \ -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \ -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \ -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \ -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \ -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \ -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \ -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \ -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \ -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \ -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \ | \ sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \ -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \ -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \ -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \ -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \ -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \ -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \ -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \ -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \ -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \ -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \ -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \ -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += wchar.h wchar.h-t EXTRA_DIST += wchar.in.h ## end gnulib module wchar ## begin gnulib module xalloc libgnu_a_SOURCES += xmalloc.c EXTRA_DIST += xalloc.h ## end gnulib module xalloc ## begin gnulib module xalloc-die libgnu_a_SOURCES += xalloc-die.c ## end gnulib module xalloc-die ## begin gnulib module xalloc-oversized EXTRA_DIST += xalloc-oversized.h ## end gnulib module xalloc-oversized ## begin gnulib module xgetcwd libgnu_a_SOURCES += xgetcwd.c EXTRA_DIST += xgetcwd.h ## end gnulib module xgetcwd ## begin gnulib module xreadlink libgnu_a_SOURCES += xreadlink.c EXTRA_DIST += xreadlink.h ## end gnulib module xreadlink ## begin gnulib module xsize libgnu_a_SOURCES += xsize.h xsize.c ## end gnulib module xsize ## begin gnulib module xstrndup libgnu_a_SOURCES += xstrndup.h xstrndup.c ## end gnulib module xstrndup mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : freedink-108.4+dfsg/gnulib/lib/chdir-long.h0000644000175000017500000000206712330466613016256 0ustar meme/* provide a chdir function that tries not to fail due to ENAMETOOLONG Copyright (C) 2004-2005, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #include #include #include "pathmax.h" /* On systems without PATH_MAX, presume that chdir accepts arbitrarily long directory names. */ #ifndef PATH_MAX # define chdir_long(Dir) chdir (Dir) #else int chdir_long (char *dir); #endif freedink-108.4+dfsg/gnulib/lib/strncasecmp.c0000644000175000017500000000355712330466613016552 0ustar meme/* strncasecmp.c -- case insensitive string comparator Copyright (C) 1998-1999, 2005-2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #include #include #include #define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) /* Compare no more than N bytes of strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function cannot work correctly in multibyte locales. */ int strncasecmp (const char *s1, const char *s2, size_t n) { register const unsigned char *p1 = (const unsigned char *) s1; register const unsigned char *p2 = (const unsigned char *) s2; unsigned char c1, c2; if (p1 == p2 || n == 0) return 0; do { c1 = TOLOWER (*p1); c2 = TOLOWER (*p2); if (--n == 0 || c1 == '\0') break; ++p1; ++p2; } while (c1 == c2); if (UCHAR_MAX <= INT_MAX) return c1 - c2; else /* On machines where 'char' and 'int' are types of the same size, the difference of two 'unsigned char' values - including the sign bit - doesn't fit in an 'int'. */ return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0); } freedink-108.4+dfsg/gnulib/lib/openat-proc.c0000644000175000017500000000736312330466613016456 0ustar meme/* Create /proc/self/fd-related names for subfiles of open directories. Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert. */ #include #include "openat-priv.h" #include #include #include #include #include #include #include #include "intprops.h" /* The results of open() in this file are not used with fchdir, and we do not leak fds to any single-threaded code that could use stdio, therefore save some unnecessary work in fchdir.c. FIXME - if the kernel ever adds support for multi-thread safety for avoiding standard fds, then we should use open_safer. */ #undef open #undef close #define PROC_SELF_FD_FORMAT "/proc/self/fd/%d/%s" #define PROC_SELF_FD_NAME_SIZE_BOUND(len) \ (sizeof PROC_SELF_FD_FORMAT - sizeof "%d%s" \ + INT_STRLEN_BOUND (int) + (len) + 1) /* Set BUF to the expansion of PROC_SELF_FD_FORMAT, using FD and FILE respectively for %d and %s. If successful, return BUF if the result fits in BUF, dynamically allocated memory otherwise. But return NULL if /proc is not reliable, either because the operating system support is lacking or because memory is low. */ char * openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file) { static int proc_status = 0; /* Make sure the caller gets ENOENT when appropriate. */ if (!*file) { buf[0] = '\0'; return buf; } if (! proc_status) { /* Set PROC_STATUS to a positive value if /proc/self/fd is reliable, and a negative value otherwise. Solaris 10 /proc/self/fd mishandles "..", and any file name might expand to ".." after symbolic link expansion, so avoid /proc/self/fd if it mishandles "..". Solaris 10 has openat, but this problem is exhibited on code that built on Solaris 8 and running on Solaris 10. */ int proc_self_fd = open ("/proc/self/fd", O_SEARCH | O_DIRECTORY | O_NOCTTY | O_NONBLOCK); if (proc_self_fd < 0) proc_status = -1; else { /* Detect whether /proc/self/fd/%i/../fd exists, where %i is the number of a file descriptor open on /proc/self/fd. On Linux, that name resolves to /proc/self/fd, which was opened above. However, on Solaris, it may resolve to /proc/self/fd/fd, which cannot exist, since all names in /proc/self/fd are numeric. */ char dotdot_buf[PROC_SELF_FD_NAME_SIZE_BOUND (sizeof "../fd" - 1)]; sprintf (dotdot_buf, PROC_SELF_FD_FORMAT, proc_self_fd, "../fd"); proc_status = access (dotdot_buf, F_OK) ? -1 : 1; close (proc_self_fd); } } if (proc_status < 0) return NULL; else { size_t bufsize = PROC_SELF_FD_NAME_SIZE_BOUND (strlen (file)); char *result = buf; if (OPENAT_BUFFER_SIZE < bufsize) { result = malloc (bufsize); if (! result) return NULL; } sprintf (result, PROC_SELF_FD_FORMAT, fd, file); return result; } } freedink-108.4+dfsg/gnulib/lib/sys_time.in.h0000644000175000017500000001700112330466613016463 0ustar meme/* Provide a more complete sys/time.h. Copyright (C) 2007-2014 Free Software Foundation, Inc. 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, see . */ /* Written by Paul Eggert. */ #ifndef _@GUARD_PREFIX@_SYS_TIME_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* On Cygwin and on many BSDish systems, includes itself recursively via . Simply delegate to the system's header in this case; it is a no-op. Without this extra ifdef, the C++ gettimeofday declaration below would be a forward declaration in gnulib's nested . */ #if defined _CYGWIN_SYS_TIME_H || defined _SYS_TIME_H || defined _SYS_TIME_H_ # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ #else /* The include_next requires a split double-inclusion guard. */ #if @HAVE_SYS_TIME_H@ # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ #endif #ifndef _@GUARD_PREFIX@_SYS_TIME_H #define _@GUARD_PREFIX@_SYS_TIME_H #if ! @HAVE_SYS_TIME_H@ # include #endif /* On native Windows with MSVC, get the 'struct timeval' type. Also, on native Windows with a 64-bit time_t, where we are overriding the 'struct timeval' type, get all declarations of system functions whose signature contains 'struct timeval'. */ #if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H # define _GL_INCLUDING_WINSOCK2_H # include # undef _GL_INCLUDING_WINSOCK2_H #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ #ifdef __cplusplus extern "C" { #endif #if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@ # if @REPLACE_STRUCT_TIMEVAL@ # define timeval rpl_timeval # endif # if !GNULIB_defined_struct_timeval struct timeval { time_t tv_sec; long int tv_usec; }; # define GNULIB_defined_struct_timeval 1 # endif #endif #ifdef __cplusplus } #endif #if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_GETTIMEOFDAY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gettimeofday # define gettimeofday rpl_gettimeofday # endif _GL_FUNCDECL_RPL (gettimeofday, int, (struct timeval *restrict, void *restrict) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gettimeofday, int, (struct timeval *restrict, void *restrict)); # else # if !@HAVE_GETTIMEOFDAY@ _GL_FUNCDECL_SYS (gettimeofday, int, (struct timeval *restrict, void *restrict) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on glibc systems, by default, the second argument is struct timezone *. */ _GL_CXXALIAS_SYS_CAST (gettimeofday, int, (struct timeval *restrict, void *restrict)); # endif _GL_CXXALIASWARN (gettimeofday); #elif defined GNULIB_POSIXCHECK # undef gettimeofday # if HAVE_RAW_DECL_GETTIMEOFDAY _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - " "use gnulib module gettimeofday for portability"); # endif #endif /* Hide some function declarations from . */ #if defined _MSC_VER && @HAVE_WINSOCK2_H@ # if !defined _@GUARD_PREFIX@_UNISTD_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef close # define close close_used_without_including_unistd_h # else _GL_WARN_ON_USE (close, "close() used without including "); # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gethostname # define gethostname gethostname_used_without_including_unistd_h # else _GL_WARN_ON_USE (gethostname, "gethostname() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef socket # define socket socket_used_without_including_sys_socket_h # undef connect # define connect connect_used_without_including_sys_socket_h # undef accept # define accept accept_used_without_including_sys_socket_h # undef bind # define bind bind_used_without_including_sys_socket_h # undef getpeername # define getpeername getpeername_used_without_including_sys_socket_h # undef getsockname # define getsockname getsockname_used_without_including_sys_socket_h # undef getsockopt # define getsockopt getsockopt_used_without_including_sys_socket_h # undef listen # define listen listen_used_without_including_sys_socket_h # undef recv # define recv recv_used_without_including_sys_socket_h # undef send # define send send_used_without_including_sys_socket_h # undef recvfrom # define recvfrom recvfrom_used_without_including_sys_socket_h # undef sendto # define sendto sendto_used_without_including_sys_socket_h # undef setsockopt # define setsockopt setsockopt_used_without_including_sys_socket_h # undef shutdown # define shutdown shutdown_used_without_including_sys_socket_h # else _GL_WARN_ON_USE (socket, "socket() used without including "); _GL_WARN_ON_USE (connect, "connect() used without including "); _GL_WARN_ON_USE (accept, "accept() used without including "); _GL_WARN_ON_USE (bind, "bind() used without including "); _GL_WARN_ON_USE (getpeername, "getpeername() used without including "); _GL_WARN_ON_USE (getsockname, "getsockname() used without including "); _GL_WARN_ON_USE (getsockopt, "getsockopt() used without including "); _GL_WARN_ON_USE (listen, "listen() used without including "); _GL_WARN_ON_USE (recv, "recv() used without including "); _GL_WARN_ON_USE (send, "send() used without including "); _GL_WARN_ON_USE (recvfrom, "recvfrom() used without including "); _GL_WARN_ON_USE (sendto, "sendto() used without including "); _GL_WARN_ON_USE (setsockopt, "setsockopt() used without including "); _GL_WARN_ON_USE (shutdown, "shutdown() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SELECT_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef select # define select select_used_without_including_sys_select_h # else _GL_WARN_ON_USE (select, "select() used without including "); # endif # endif #endif #endif /* _@GUARD_PREFIX@_SYS_TIME_H */ #endif /* _CYGWIN_SYS_TIME_H */ #endif /* _@GUARD_PREFIX@_SYS_TIME_H */ freedink-108.4+dfsg/gnulib/lib/getopt.c0000644000175000017500000011750412330466613015530 0ustar meme/* Getopt for GNU. NOTE: getopt is 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-1996, 1998-2004, 2006, 2008-2014 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 3 of the License, 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, see . */ #ifndef _LIBC # include #endif #include "getopt.h" #include #include #include #include #ifdef _LIBC # include #else # include "gettext.h" # define _(msgid) gettext (msgid) #endif #if defined _LIBC && defined USE_IN_LIBIO # include #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_long' 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. Using 'getopt' or 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_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; #if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV extern char *getenv (); #endif #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 _GL_UNUSED, char **argv _GL_UNUSED, const char *optstring, struct _getopt_data *d, int posixly_correct) { /* 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 = 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 **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int posixly_correct) { int print_errors = d->opterr; 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, posixly_correct); d->__initialized = 1; } else if (optstring[0] == '-' || optstring[0] == '+') optstring++; if (optstring[0] == ':') print_errors = 0; /* 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; unsigned int namelen; const struct option *p; const struct option *pfound = NULL; struct option_list { const struct option *p; struct option_list *next; } *ambig_list = NULL; int exact = 0; int indfound = -1; int option_index; for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; namelen = nameend - d->__nextchar; /* 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, namelen)) { if (namelen == (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. */ struct option_list *newp = malloc (sizeof (*newp)); newp->p = p; newp->next = ambig_list; ambig_list = newp; } } if (ambig_list != NULL && !exact) { if (print_errors) { struct option_list first; first.p = pfound; first.next = ambig_list; ambig_list = &first; #if defined _LIBC && defined USE_IN_LIBIO char *buf = NULL; size_t buflen = 0; FILE *fp = open_memstream (&buf, &buflen); if (fp != NULL) { fprintf (fp, _("%s: option '%s' is ambiguous; possibilities:"), argv[0], argv[d->optind]); do { fprintf (fp, " '--%s'", ambig_list->p->name); ambig_list = ambig_list->next; } while (ambig_list != NULL); fputc_unlocked ('\n', fp); if (__builtin_expect (fclose (fp) != EOF, 1)) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } } #else fprintf (stderr, _("%s: option '%s' is ambiguous; possibilities:"), argv[0], argv[d->optind]); do { fprintf (stderr, " '--%s'", ambig_list->p->name); ambig_list = ambig_list->next; } while (ambig_list != NULL); fputc ('\n', stderr); #endif } d->__nextchar += strlen (d->__nextchar); d->optind++; d->optopt = 0; return '?'; } while (ambig_list != NULL) { struct option_list *pn = ambig_list->next; free (ambig_list); ambig_list = pn; } 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; __fxprintf (NULL, "%s", buf); ((_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], pfound->name) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option '--%s' requires an argument\n"), argv[0], pfound->name); #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; __fxprintf (NULL, "%s", buf); ((_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++; const 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 == ':' || c == ';') { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif #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; __fxprintf (NULL, "%s", buf); ((_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; if (longopts == NULL) goto no_longs; /* 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) { #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; __fxprintf (NULL, "%s", buf); ((_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 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 '-W %s' is ambiguous\n"), argv[0], d->optarg) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"), argv[0], d->optarg); #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; __fxprintf (NULL, "%s", buf); ((_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 '-W %s' requires 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; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("\ %s: option '-W %s' requires an argument\n"), argv[0], pfound->name); #endif } d->__nextchar += strlen (d->__nextchar); return optstring[0] == ':' ? ':' : '?'; } } else d->optarg = NULL; d->__nextchar += strlen (d->__nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } no_longs: 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) { #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; __fxprintf (NULL, "%s", buf); ((_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 **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, int posixly_correct) { int result; getopt_data.optind = optind; getopt_data.opterr = opterr; result = _getopt_internal_r (argc, argv, optstring, longopts, longind, long_only, &getopt_data, posixly_correct); optind = getopt_data.optind; optarg = getopt_data.optarg; optopt = getopt_data.optopt; return result; } /* glibc gets a LSB-compliant getopt. Standalone applications get a POSIX-compliant getopt. */ #if _LIBC enum { POSIXLY_CORRECT = 0 }; #else enum { POSIXLY_CORRECT = 1 }; #endif int getopt (int argc, char *const *argv, const char *optstring) { return _getopt_internal (argc, (char **) argv, optstring, (const struct option *) 0, (int *) 0, 0, POSIXLY_CORRECT); } #ifdef _LIBC int __posix_getopt (int argc, char *const *argv, const char *optstring) { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0, 1); } #endif #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 */ freedink-108.4+dfsg/gnulib/lib/string.in.h0000644000175000017500000011646112330466613016147 0ustar meme/* A GNU-like . Copyright (C) 1995-1996, 2001-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _@GUARD_PREFIX@_STRING_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STRING_H@ #ifndef _@GUARD_PREFIX@_STRING_H #define _@GUARD_PREFIX@_STRING_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD defines mbslen as a macro. */ #if @GNULIB_MBSLEN@ && defined __MirBSD__ # include #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* NetBSD 5.0 declares strsignal in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ && ! defined __GLIBC__ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSL@ # if !@HAVE_FFSL@ _GL_FUNCDECL_SYS (ffsl, int, (long int i)); # endif _GL_CXXALIAS_SYS (ffsl, int, (long int i)); _GL_CXXALIASWARN (ffsl); #elif defined GNULIB_POSIXCHECK # undef ffsl # if HAVE_RAW_DECL_FFSL _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); # endif #endif /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSLL@ # if !@HAVE_FFSLL@ _GL_FUNCDECL_SYS (ffsll, int, (long long int i)); # endif _GL_CXXALIAS_SYS (ffsll, int, (long long int i)); _GL_CXXALIASWARN (ffsll); #elif defined GNULIB_POSIXCHECK # undef ffsll # if HAVE_RAW_DECL_FFSLL _GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); # endif #endif /* Return the first instance of C within N bytes of S, or NULL. */ #if @GNULIB_MEMCHR@ # if @REPLACE_MEMCHR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define memchr rpl_memchr # endif _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); # else # if ! @HAVE_MEMCHR@ _GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C" { const void * std::memchr (const void *, int, size_t); } extern "C++" { void * std::memchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memchr, void *, (void const *__s, int __c, size_t __n), void const *, (void const *__s, int __c, size_t __n)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); _GL_CXXALIASWARN1 (memchr, void const *, (void const *__s, int __c, size_t __n)); # else _GL_CXXALIASWARN (memchr); # endif #elif defined GNULIB_POSIXCHECK # undef memchr /* Assume memchr is always declared. */ _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " "use gnulib module memchr for portability" ); #endif /* Return the first occurrence of NEEDLE in HAYSTACK. */ #if @GNULIB_MEMMEM@ # if @REPLACE_MEMMEM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define memmem rpl_memmem # endif _GL_FUNCDECL_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # else # if ! @HAVE_DECL_MEMMEM@ _GL_FUNCDECL_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # endif _GL_CXXALIASWARN (memmem); #elif defined GNULIB_POSIXCHECK # undef memmem # if HAVE_RAW_DECL_MEMMEM _GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " "use gnulib module memmem-simple for portability, " "and module memmem for speed" ); # endif #endif /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ #if @GNULIB_MEMPCPY@ # if ! @HAVE_MEMPCPY@ _GL_FUNCDECL_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n)); _GL_CXXALIASWARN (mempcpy); #elif defined GNULIB_POSIXCHECK # undef mempcpy # if HAVE_RAW_DECL_MEMPCPY _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " "use gnulib module mempcpy for portability"); # endif #endif /* Search backwards through a block for a byte (specified as an int). */ #if @GNULIB_MEMRCHR@ # if ! @HAVE_DECL_MEMRCHR@ _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::memrchr (const void *, int, size_t); } extern "C++" { void * std::memrchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memrchr, void *, (void const *, int, size_t), void const *, (void const *, int, size_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); # else _GL_CXXALIASWARN (memrchr); # endif #elif defined GNULIB_POSIXCHECK # undef memrchr # if HAVE_RAW_DECL_MEMRCHR _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " "use gnulib module memrchr for portability"); # endif #endif /* Find the first occurrence of C in S. More efficient than memchr(S,C,N), at the expense of undefined behavior if C does not occur within N bytes. */ #if @GNULIB_RAWMEMCHR@ # if ! @HAVE_RAWMEMCHR@ _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::rawmemchr (const void *, int); } extern "C++" { void * std::rawmemchr (void *, int); } */ _GL_CXXALIAS_SYS_CAST2 (rawmemchr, void *, (void const *__s, int __c_in), void const *, (void const *__s, int __c_in)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); # else _GL_CXXALIASWARN (rawmemchr); # endif #elif defined GNULIB_POSIXCHECK # undef rawmemchr # if HAVE_RAW_DECL_RAWMEMCHR _GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " "use gnulib module rawmemchr for portability"); # endif #endif /* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ #if @GNULIB_STPCPY@ # if ! @HAVE_STPCPY@ _GL_FUNCDECL_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src)); _GL_CXXALIASWARN (stpcpy); #elif defined GNULIB_POSIXCHECK # undef stpcpy # if HAVE_RAW_DECL_STPCPY _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " "use gnulib module stpcpy for portability"); # endif #endif /* Copy no more than N bytes of SRC to DST, returning a pointer past the last non-NUL byte written into DST. */ #if @GNULIB_STPNCPY@ # if @REPLACE_STPNCPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef stpncpy # define stpncpy rpl_stpncpy # endif _GL_FUNCDECL_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # else # if ! @HAVE_STPNCPY@ _GL_FUNCDECL_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # endif _GL_CXXALIASWARN (stpncpy); #elif defined GNULIB_POSIXCHECK # undef stpncpy # if HAVE_RAW_DECL_STPNCPY _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " "use gnulib module stpncpy for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strchr /* Assume strchr is always declared. */ _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " "in some multibyte locales - " "use mbschr if you care about internationalization"); #endif /* Find the first occurrence of C in S or the final NUL byte. */ #if @GNULIB_STRCHRNUL@ # if @REPLACE_STRCHRNUL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strchrnul rpl_strchrnul # endif _GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strchrnul, char *, (const char *str, int ch)); # else # if ! @HAVE_STRCHRNUL@ _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * std::strchrnul (const char *, int); } extern "C++" { char * std::strchrnul (char *, int); } */ _GL_CXXALIAS_SYS_CAST2 (strchrnul, char *, (char const *__s, int __c_in), char const *, (char const *__s, int __c_in)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); # else _GL_CXXALIASWARN (strchrnul); # endif #elif defined GNULIB_POSIXCHECK # undef strchrnul # if HAVE_RAW_DECL_STRCHRNUL _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " "use gnulib module strchrnul for portability"); # endif #endif /* Duplicate S, returning an identical malloc'd string. */ #if @GNULIB_STRDUP@ # if @REPLACE_STRDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strdup # define strdup rpl_strdup # endif _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); # else # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup /* strdup exists as a function and as a macro. Get rid of the macro. */ # undef strdup # endif # if !(@HAVE_DECL_STRDUP@ || defined strdup) _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); # endif _GL_CXXALIASWARN (strdup); #elif defined GNULIB_POSIXCHECK # undef strdup # if HAVE_RAW_DECL_STRDUP _GL_WARN_ON_USE (strdup, "strdup is unportable - " "use gnulib module strdup for portability"); # endif #endif /* Append no more than N characters from SRC onto DEST. */ #if @GNULIB_STRNCAT@ # if @REPLACE_STRNCAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strncat # define strncat rpl_strncat # endif _GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); # else _GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); # endif _GL_CXXALIASWARN (strncat); #elif defined GNULIB_POSIXCHECK # undef strncat # if HAVE_RAW_DECL_STRNCAT _GL_WARN_ON_USE (strncat, "strncat is unportable - " "use gnulib module strncat for portability"); # endif #endif /* Return a newly allocated copy of at most N bytes of STRING. */ #if @GNULIB_STRNDUP@ # if @REPLACE_STRNDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strndup # define strndup rpl_strndup # endif _GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); # else # if ! @HAVE_DECL_STRNDUP@ _GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); # endif _GL_CXXALIASWARN (strndup); #elif defined GNULIB_POSIXCHECK # undef strndup # if HAVE_RAW_DECL_STRNDUP _GL_WARN_ON_USE (strndup, "strndup is unportable - " "use gnulib module strndup for portability"); # endif #endif /* Find the length (number of bytes) of STRING, but scan at most MAXLEN bytes. If no '\0' terminator is found in that many bytes, return MAXLEN. */ #if @GNULIB_STRNLEN@ # if @REPLACE_STRNLEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strnlen # define strnlen rpl_strnlen # endif _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); # else # if ! @HAVE_DECL_STRNLEN@ _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); # endif _GL_CXXALIASWARN (strnlen); #elif defined GNULIB_POSIXCHECK # undef strnlen # if HAVE_RAW_DECL_STRNLEN _GL_WARN_ON_USE (strnlen, "strnlen is unportable - " "use gnulib module strnlen for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strcspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strcspn /* Assume strcspn is always declared. */ _GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " "in multibyte locales - " "use mbscspn if you care about internationalization"); #endif /* Find the first occurrence in S of any character in ACCEPT. */ #if @GNULIB_STRPBRK@ # if ! @HAVE_STRPBRK@ _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C" { const char * strpbrk (const char *, const char *); } extern "C++" { char * strpbrk (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strpbrk, char *, (char const *__s, char const *__accept), const char *, (char const *__s, char const *__accept)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); _GL_CXXALIASWARN1 (strpbrk, char const *, (char const *__s, char const *__accept)); # else _GL_CXXALIASWARN (strpbrk); # endif # if defined GNULIB_POSIXCHECK /* strpbrk() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strpbrk _GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " "in multibyte locales - " "use mbspbrk if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strpbrk # if HAVE_RAW_DECL_STRPBRK _GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " "use gnulib module strpbrk for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it cannot work with multibyte strings. */ # undef strspn /* Assume strspn is always declared. */ _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " "in multibyte locales - " "use mbsspn if you care about internationalization"); #endif #if defined GNULIB_POSIXCHECK /* strrchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strrchr /* Assume strrchr is always declared. */ _GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " "in some multibyte locales - " "use mbsrchr if you care about internationalization"); #endif /* Search the next delimiter (char listed in DELIM) starting at *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next char after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of strtok() that is multithread-safe and supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strtok_r(). */ #if @GNULIB_STRSEP@ # if ! @HAVE_STRSEP@ _GL_FUNCDECL_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim)); _GL_CXXALIASWARN (strsep); # if defined GNULIB_POSIXCHECK # undef strsep _GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " "in multibyte locales - " "use mbssep if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strsep # if HAVE_RAW_DECL_STRSEP _GL_WARN_ON_USE (strsep, "strsep is unportable - " "use gnulib module strsep for portability"); # endif #endif #if @GNULIB_STRSTR@ # if @REPLACE_STRSTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strstr rpl_strstr # endif _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); # else /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strstr (const char *, const char *); } extern "C++" { char * strstr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strstr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); _GL_CXXALIASWARN1 (strstr, const char *, (const char *haystack, const char *needle)); # else _GL_CXXALIASWARN (strstr); # endif #elif defined GNULIB_POSIXCHECK /* strstr() does not work with multibyte strings if the locale encoding is different from UTF-8: POSIX says that it operates on "strings", and "string" in POSIX is defined as a sequence of bytes, not of characters. */ # undef strstr /* Assume strstr is always declared. */ _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " "work correctly on character strings in most " "multibyte locales - " "use mbsstr if you care about internationalization, " "or use strstr if you care about speed"); #endif /* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive comparison. */ #if @GNULIB_STRCASESTR@ # if @REPLACE_STRCASESTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strcasestr rpl_strcasestr # endif _GL_FUNCDECL_RPL (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strcasestr, char *, (const char *haystack, const char *needle)); # else # if ! @HAVE_STRCASESTR@ _GL_FUNCDECL_SYS (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strcasestr (const char *, const char *); } extern "C++" { char * strcasestr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strcasestr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); _GL_CXXALIASWARN1 (strcasestr, const char *, (const char *haystack, const char *needle)); # else _GL_CXXALIASWARN (strcasestr); # endif #elif defined GNULIB_POSIXCHECK /* strcasestr() does not work with multibyte strings: It is a glibc extension, and glibc implements it only for unibyte locales. */ # undef strcasestr # if HAVE_RAW_DECL_STRCASESTR _GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " "strings in multibyte locales - " "use mbscasestr if you care about " "internationalization, or use c-strcasestr if you want " "a locale independent function"); # endif #endif /* Parse S into tokens separated by characters in DELIM. If S is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = strtok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" This is a variant of strtok() that is multithread-safe. For the POSIX documentation for this function, see: http://www.opengroup.org/susv3xsh/strtok.html Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strsep(). */ #if @GNULIB_STRTOK_R@ # if @REPLACE_STRTOK_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strtok_r # define strtok_r rpl_strtok_r # endif _GL_FUNCDECL_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # else # if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK # undef strtok_r # endif # if ! @HAVE_DECL_STRTOK_R@ _GL_FUNCDECL_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # endif _GL_CXXALIASWARN (strtok_r); # if defined GNULIB_POSIXCHECK _GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " "strings in multibyte locales - " "use mbstok_r if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strtok_r # if HAVE_RAW_DECL_STRTOK_R _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " "use gnulib module strtok_r for portability"); # endif #endif /* The following functions are not specified by POSIX. They are gnulib extensions. */ #if @GNULIB_MBSLEN@ /* Return the number of multibyte characters in the character string STRING. This considers multibyte characters, unlike strlen, which counts bytes. */ # ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ # undef mbslen # endif # if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbslen rpl_mbslen # endif _GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); # else _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); # endif _GL_CXXALIASWARN (mbslen); #endif #if @GNULIB_MBSNLEN@ /* Return the number of multibyte characters in the character string starting at STRING and ending at STRING + LEN. */ _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1)); #endif #if @GNULIB_MBSCHR@ /* Locate the first single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbschr rpl_mbschr /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbschr); #endif #if @GNULIB_MBSRCHR@ /* Locate the last single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strrchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux || defined __INTERIX # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbsrchr rpl_mbsrchr /* avoid collision with system function */ # endif _GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbsrchr); #endif #if @GNULIB_MBSSTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. Unlike strstr(), this function works correctly in multibyte locales with encodings different from UTF-8. */ _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASECMP@ /* Compare the character strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function may, in multibyte locales, return 0 for strings of different lengths! Unlike strcasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSNCASECMP@ /* Compare the initial segment of the character string S1 consisting of at most N characters with the initial segment of the character string S2 consisting of at most N characters, ignoring case, returning less than, equal to or greater than zero if the initial segment of S1 is lexicographically less than, equal to or greater than the initial segment of S2. Note: This function may, in multibyte locales, return 0 for initial segments of different lengths! Unlike strncasecmp(), this function works correctly in multibyte locales. But beware that N is not a byte count but a character count! */ _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPCASECMP@ /* Compare the initial segment of the character string STRING consisting of at most mbslen (PREFIX) characters with the character string PREFIX, ignoring case. If the two match, return a pointer to the first byte after this prefix in STRING. Otherwise, return NULL. Note: This function may, in multibyte locales, return non-NULL if STRING is of smaller length than PREFIX! Unlike strncasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASESTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK, using case-insensitive comparison. Note: This function may, in multibyte locales, return success even if strlen (haystack) < strlen (needle) ! Unlike strcasestr(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCSPN@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strcspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPBRK@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the pointer to it, or NULL if none exists. Unlike strpbrk(), this function works correctly in multibyte locales. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); # else _GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); # endif _GL_CXXALIASWARN (mbspbrk); #endif #if @GNULIB_MBSSPN@ /* Find the first occurrence in the character string STRING of any character not in the character string REJECT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSSEP@ /* Search the next delimiter (multibyte character listed in the character string DELIM) starting at the character string *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next multibyte character after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of mbstok_r() that supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbstok_r(). */ _GL_EXTERN_C char * mbssep (char **stringp, const char *delim) _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSTOK_R@ /* Parse the character string STRING into tokens separated by characters in the character string DELIM. If STRING is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = mbstok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbssep(). */ _GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) _GL_ARG_NONNULL ((2, 3)); #endif /* Map any int, typically from errno, into an error message. */ #if @GNULIB_STRERROR@ # if @REPLACE_STRERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror # define strerror rpl_strerror # endif _GL_FUNCDECL_RPL (strerror, char *, (int)); _GL_CXXALIAS_RPL (strerror, char *, (int)); # else _GL_CXXALIAS_SYS (strerror, char *, (int)); # endif _GL_CXXALIASWARN (strerror); #elif defined GNULIB_POSIXCHECK # undef strerror /* Assume strerror is always declared. */ _GL_WARN_ON_USE (strerror, "strerror is unportable - " "use gnulib module strerror to guarantee non-NULL result"); #endif /* Map any int, typically from errno, into an error message. Multithread-safe. Uses the POSIX declaration, not the glibc declaration. */ #if @GNULIB_STRERROR_R@ # if @REPLACE_STRERROR_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror_r # define strerror_r rpl_strerror_r # endif _GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); # else # if !@HAVE_DECL_STRERROR_R@ _GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); # endif # if @HAVE_DECL_STRERROR_R@ _GL_CXXALIASWARN (strerror_r); # endif #elif defined GNULIB_POSIXCHECK # undef strerror_r # if HAVE_RAW_DECL_STRERROR_R _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " "use gnulib module strerror_r-posix for portability"); # endif #endif #if @GNULIB_STRSIGNAL@ # if @REPLACE_STRSIGNAL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strsignal rpl_strsignal # endif _GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); _GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); # else # if ! @HAVE_DECL_STRSIGNAL@ _GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is 'const char *'. */ _GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); # endif _GL_CXXALIASWARN (strsignal); #elif defined GNULIB_POSIXCHECK # undef strsignal # if HAVE_RAW_DECL_STRSIGNAL _GL_WARN_ON_USE (strsignal, "strsignal is unportable - " "use gnulib module strsignal for portability"); # endif #endif #if @GNULIB_STRVERSCMP@ # if !@HAVE_STRVERSCMP@ _GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); _GL_CXXALIASWARN (strverscmp); #elif defined GNULIB_POSIXCHECK # undef strverscmp # if HAVE_RAW_DECL_STRVERSCMP _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " "use gnulib module strverscmp for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_STRING_H */ #endif /* _@GUARD_PREFIX@_STRING_H */ freedink-108.4+dfsg/gnulib/lib/openat-die.c0000644000175000017500000000346112330466613016247 0ustar meme/* Report a save- or restore-cwd failure in our openat replacement and then exit. Copyright (C) 2005-2006, 2008-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "openat.h" #include #ifndef GNULIB_LIBPOSIX # include "error.h" #endif #include "exitfail.h" #include "gettext.h" #define _(msgid) gettext (msgid) void openat_save_fail (int errnum) { #ifndef GNULIB_LIBPOSIX error (exit_failure, errnum, _("unable to record current working directory")); #endif /* _Noreturn cannot be applied to error, since it returns when its first argument is 0. To help compilers understand that this function does not return, call abort. Also, the abort is a safety feature if exit_failure is 0 (which shouldn't happen). */ abort (); } /* Exit with an error about failure to restore the working directory during an openat emulation. The caller must ensure that fd 2 is not a just-opened fd, even when openat_safer is not in use. */ void openat_restore_fail (int errnum) { #ifndef GNULIB_LIBPOSIX error (exit_failure, errnum, _("failed to return to initial working directory")); #endif /* As above. */ abort (); } freedink-108.4+dfsg/gnulib/lib/float.in.h0000644000175000017500000001673412330466613015750 0ustar meme/* A correct . Copyright (C) 2007-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef _@GUARD_PREFIX@_FLOAT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_FLOAT_H@ #ifndef _@GUARD_PREFIX@_FLOAT_H #define _@GUARD_PREFIX@_FLOAT_H /* 'long double' properties. */ #if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__) /* Number of mantissa units, in base FLT_RADIX. */ # undef LDBL_MANT_DIG # define LDBL_MANT_DIG 64 /* Number of decimal digits that is sufficient for representing a number. */ # undef LDBL_DIG # define LDBL_DIG 18 /* x-1 where x is the smallest representable number > 1. */ # undef LDBL_EPSILON # define LDBL_EPSILON 1.0842021724855044340E-19L /* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) /* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */ # undef LDBL_MAX_EXP # define LDBL_MAX_EXP 16384 /* Minimum positive normalized number. */ # undef LDBL_MIN # define LDBL_MIN 3.3621031431120935063E-4932L /* Maximum representable finite number. */ # undef LDBL_MAX # define LDBL_MAX 1.1897314953572317650E+4932L /* Minimum e such that 10^e is in the range of normalized numbers. */ # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP (-4931) /* Maximum e such that 10^e is in the range of representable finite numbers. */ # undef LDBL_MAX_10_EXP # define LDBL_MAX_10_EXP 4932 #endif /* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of precision in the compiler but 64 bits of precision at runtime. See . */ #if defined __i386__ && defined __FreeBSD__ /* Number of mantissa units, in base FLT_RADIX. */ # undef LDBL_MANT_DIG # define LDBL_MANT_DIG 64 /* Number of decimal digits that is sufficient for representing a number. */ # undef LDBL_DIG # define LDBL_DIG 18 /* x-1 where x is the smallest representable number > 1. */ # undef LDBL_EPSILON # define LDBL_EPSILON 1.084202172485504434007452800869941711426e-19L /* 2^-63 */ /* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) /* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */ # undef LDBL_MAX_EXP # define LDBL_MAX_EXP 16384 /* Minimum positive normalized number. */ # undef LDBL_MIN # define LDBL_MIN 3.3621031431120935E-4932L /* = 0x1p-16382L */ /* Maximum representable finite number. */ # undef LDBL_MAX /* LDBL_MAX is represented as { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }. But the largest literal that GCC allows us to write is 0x0.fffffffffffff8p16384L = { 0xFFFFF800, 0xFFFFFFFF, 32766 }. So, define it like this through a reference to an external variable const unsigned int LDBL_MAX[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }; extern const long double LDBL_MAX; Unfortunately, this is not a constant expression. */ union gl_long_double_union { struct { unsigned int lo; unsigned int hi; unsigned int exponent; } xd; long double ld; }; extern const union gl_long_double_union gl_LDBL_MAX; # define LDBL_MAX (gl_LDBL_MAX.ld) /* Minimum e such that 10^e is in the range of normalized numbers. */ # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP (-4931) /* Maximum e such that 10^e is in the range of representable finite numbers. */ # undef LDBL_MAX_10_EXP # define LDBL_MAX_10_EXP 4932 #endif /* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are wrong. On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */ #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP DBL_MIN_10_EXP # undef LDBL_MIN # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ #endif #if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ # undef LDBL_MAX /* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }. It is not easy to define: #define LDBL_MAX 1.79769313486231580793728971405302307166e308L is too small, whereas #define LDBL_MAX 1.79769313486231580793728971405302307167e308L is too large. Apparently a bug in GCC decimal-to-binary conversion. Also, I can't get values larger than #define LDBL63 ((long double) (1ULL << 63)) #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL) which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }. So, define it like this through a reference to an external variable const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }; extern const long double LDBL_MAX; or through a pointer cast #define LDBL_MAX \ (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }) Unfortunately, this is not a constant expression, and the latter expression does not work well when GCC is optimizing.. */ union gl_long_double_union { struct { double hi; double lo; } dd; long double ld; }; extern const union gl_long_double_union gl_LDBL_MAX; # define LDBL_MAX (gl_LDBL_MAX.ld) #endif /* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong. On IRIX 6.5, with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_EPSILON are wrong. */ #if defined __sgi && (LDBL_MANT_DIG >= 106) # undef LDBL_MANT_DIG # define LDBL_MANT_DIG 106 # if defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP DBL_MIN_10_EXP # undef LDBL_MIN # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ # undef LDBL_EPSILON # define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */ # endif #endif #if @REPLACE_ITOLD@ /* Pull in a function that fixes the 'int' to 'long double' conversion of glibc 2.7. */ extern # ifdef __cplusplus "C" # endif void _Qp_itoq (long double *, int); static void (*_gl_float_fix_itold) (long double *, int) = _Qp_itoq; #endif #endif /* _@GUARD_PREFIX@_FLOAT_H */ #endif /* _@GUARD_PREFIX@_FLOAT_H */ freedink-108.4+dfsg/gnulib/lib/xstrndup.c0000644000175000017500000000224512330466613016110 0ustar meme/* Duplicate a bounded initial segment of a string, with out-of-memory checking. Copyright (C) 2003, 2006-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include "xstrndup.h" #include #include "xalloc.h" /* Return a newly allocated copy of at most N bytes of STRING. In other words, return a copy of the initial segment of length N of STRING. */ char * xstrndup (const char *string, size_t n) { char *s = strndup (string, n); if (! s) xalloc_die (); return s; } freedink-108.4+dfsg/gnulib/lib/vasprintf.c0000644000175000017500000000247212330466613016237 0ustar meme/* Formatted output to strings. Copyright (C) 1999, 2002, 2006-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #ifdef IN_LIBASPRINTF # include "vasprintf.h" #else # include #endif #include #include #include #include "vasnprintf.h" int vasprintf (char **resultp, const char *format, va_list args) { size_t length; char *result = vasnprintf (NULL, &length, format, args); if (result == NULL) return -1; if (length > INT_MAX) { free (result); errno = EOVERFLOW; return -1; } *resultp = result; /* Return the number of resulting bytes, excluding the trailing NUL. */ return length; } freedink-108.4+dfsg/gnulib/lib/strdup.c0000644000175000017500000000247012330466613015542 0ustar meme/* Copyright (C) 1991, 1996-1998, 2002-2004, 2006-2007, 2009-2014 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, see . */ #ifndef _LIBC # include #endif /* Get specification. */ #include #include #undef __strdup #ifdef _LIBC # undef strdup #endif #ifndef weak_alias # define __strdup strdup #endif /* Duplicate S, returning an identical malloc'd string. */ char * __strdup (const char *s) { size_t len = strlen (s) + 1; void *new = malloc (len); if (new == NULL) return NULL; return (char *) memcpy (new, s, len); } #ifdef libc_hidden_def libc_hidden_def (__strdup) #endif #ifdef weak_alias weak_alias (__strdup, strdup) #endif freedink-108.4+dfsg/gnulib/lib/filename.h0000644000175000017500000000365212330466613016011 0ustar meme/* Basic filename support macros. Copyright (C) 2001-2004, 2007-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef _FILENAME_H #define _FILENAME_H #ifdef __cplusplus extern "C" { #endif /* Pathname support. ISSLASH(C) tests whether C is a directory separator character. IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, it may be concatenated to a directory pathname. IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. */ #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ /* Native Windows, Cygwin, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') # define HAS_DEVICE(P) \ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ && (P)[1] == ':') # define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) # define IS_PATH_WITH_DIR(P) \ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) # define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) #else /* Unix */ # define ISSLASH(C) ((C) == '/') # define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) # define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) # define FILE_SYSTEM_PREFIX_LEN(P) 0 #endif #ifdef __cplusplus } #endif #endif /* _FILENAME_H */ freedink-108.4+dfsg/gnulib/lib/stdlib.in.h0000644000175000017500000010045612330466613016117 0ustar meme/* A GNU-like . Copyright (C) 1995, 2001-2004, 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_stdlib_h || defined __need_malloc_and_calloc /* Special invocation conventions inside some gnulib header files, and inside some glibc header files, respectively. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDLIB_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #ifndef _@GUARD_PREFIX@_STDLIB_H #define _@GUARD_PREFIX@_STDLIB_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD 10 defines WEXITSTATUS in , not in . */ #if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS # include #endif /* Solaris declares getloadavg() in . */ #if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@ # include #endif /* Native Windows platforms declare mktemp() in . */ #if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif #if @GNULIB_RANDOM_R@ /* OSF/1 5.1 declares 'struct random_data' in , which is included from if _REENTRANT is defined. Include it whenever we need 'struct random_data'. */ # if @HAVE_RANDOM_H@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ /* Define 'struct random_data'. But allow multiple gnulib generated replacements to coexist. */ # if !GNULIB_defined_struct_random_data struct random_data { int32_t *fptr; /* Front pointer. */ int32_t *rptr; /* Rear pointer. */ int32_t *state; /* Array of state values. */ int rand_type; /* Type of random number generator. */ int rand_deg; /* Degree of random number generator. */ int rand_sep; /* Distance between front and rear. */ int32_t *end_ptr; /* Pointer behind state table. */ }; # define GNULIB_defined_struct_random_data 1 # endif # endif #endif #if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) /* On Mac OS X 10.3, only declares mkstemp. */ /* On Mac OS X 10.5, only declares mkstemps. */ /* On Cygwin 1.7.1, only declares getsubopt. */ /* But avoid namespace pollution on glibc systems and native Windows. */ # include #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The definition of _Noreturn is copied here. */ /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems do not define EXIT_*, despite otherwise supporting C89. */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif /* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere with proper operation of xargs. */ #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #elif EXIT_FAILURE != 1 # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #if @GNULIB__EXIT@ /* Terminate the current process with the given return code, without running the 'atexit' handlers. */ # if !@HAVE__EXIT@ _GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); # endif _GL_CXXALIAS_SYS (_Exit, void, (int status)); _GL_CXXALIASWARN (_Exit); #elif defined GNULIB_POSIXCHECK # undef _Exit # if HAVE_RAW_DECL__EXIT _GL_WARN_ON_USE (_Exit, "_Exit is unportable - " "use gnulib module _Exit for portability"); # endif #endif #if @GNULIB_ATOLL@ /* Parse a signed decimal integer. Returns the value of the integer. Errors are not detected. */ # if !@HAVE_ATOLL@ _GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (atoll, long long, (const char *string)); _GL_CXXALIASWARN (atoll); #elif defined GNULIB_POSIXCHECK # undef atoll # if HAVE_RAW_DECL_ATOLL _GL_WARN_ON_USE (atoll, "atoll is unportable - " "use gnulib module atoll for portability"); # endif #endif #if @GNULIB_CALLOC_POSIX@ # if @REPLACE_CALLOC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef calloc # define calloc rpl_calloc # endif _GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); # else _GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); # endif _GL_CXXALIASWARN (calloc); #elif defined GNULIB_POSIXCHECK # undef calloc /* Assume calloc is always declared. */ _GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " "use gnulib module calloc-posix for portability"); #endif #if @GNULIB_CANONICALIZE_FILE_NAME@ # if @REPLACE_CANONICALIZE_FILE_NAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define canonicalize_file_name rpl_canonicalize_file_name # endif _GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); # else # if !@HAVE_CANONICALIZE_FILE_NAME@ _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); # endif _GL_CXXALIASWARN (canonicalize_file_name); #elif defined GNULIB_POSIXCHECK # undef canonicalize_file_name # if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME _GL_WARN_ON_USE (canonicalize_file_name, "canonicalize_file_name is unportable - " "use gnulib module canonicalize-lgpl for portability"); # endif #endif #if @GNULIB_GETLOADAVG@ /* Store max(NELEM,3) load average numbers in LOADAVG[]. The three numbers are the load average of the last 1 minute, the last 5 minutes, and the last 15 minutes, respectively. LOADAVG is an array of NELEM numbers. */ # if !@HAVE_DECL_GETLOADAVG@ _GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); _GL_CXXALIASWARN (getloadavg); #elif defined GNULIB_POSIXCHECK # undef getloadavg # if HAVE_RAW_DECL_GETLOADAVG _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " "use gnulib module getloadavg for portability"); # endif #endif #if @GNULIB_GETSUBOPT@ /* Assuming *OPTIONP is a comma separated list of elements of the form "token" or "token=value", getsubopt parses the first of these elements. If the first element refers to a "token" that is member of the given NULL-terminated array of tokens: - It replaces the comma with a NUL byte, updates *OPTIONP to point past the first option and the comma, sets *VALUEP to the value of the element (or NULL if it doesn't contain an "=" sign), - It returns the index of the "token" in the given array of tokens. Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. For more details see the POSIX:2001 specification. http://www.opengroup.org/susv3xsh/getsubopt.html */ # if !@HAVE_GETSUBOPT@ _GL_FUNCDECL_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep)); _GL_CXXALIASWARN (getsubopt); #elif defined GNULIB_POSIXCHECK # undef getsubopt # if HAVE_RAW_DECL_GETSUBOPT _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " "use gnulib module getsubopt for portability"); # endif #endif #if @GNULIB_GRANTPT@ /* Change the ownership and access permission of the slave side of the pseudo-terminal whose master side is specified by FD. */ # if !@HAVE_GRANTPT@ _GL_FUNCDECL_SYS (grantpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (grantpt, int, (int fd)); _GL_CXXALIASWARN (grantpt); #elif defined GNULIB_POSIXCHECK # undef grantpt # if HAVE_RAW_DECL_GRANTPT _GL_WARN_ON_USE (grantpt, "grantpt is not portable - " "use gnulib module grantpt for portability"); # endif #endif /* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not rely on GNU or POSIX semantics for malloc and realloc (for example, by never specifying a zero size), so it does not need malloc or realloc to be redefined. */ #if @GNULIB_MALLOC_POSIX@ # if @REPLACE_MALLOC@ # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef malloc # define malloc rpl_malloc # endif _GL_FUNCDECL_RPL (malloc, void *, (size_t size)); _GL_CXXALIAS_RPL (malloc, void *, (size_t size)); # else _GL_CXXALIAS_SYS (malloc, void *, (size_t size)); # endif _GL_CXXALIASWARN (malloc); #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef malloc /* Assume malloc is always declared. */ _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " "use gnulib module malloc-posix for portability"); #endif /* Convert a multibyte character to a wide character. */ #if @GNULIB_MBTOWC@ # if @REPLACE_MBTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbtowc # define mbtowc rpl_mbtowc # endif _GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); _GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); # else _GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); # endif _GL_CXXALIASWARN (mbtowc); #endif #if @GNULIB_MKDTEMP@ /* Create a unique temporary directory from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the directory name unique. Returns TEMPLATE, or a null pointer if it cannot get a unique name. The directory is created mode 700. */ # if !@HAVE_MKDTEMP@ _GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); _GL_CXXALIASWARN (mkdtemp); #elif defined GNULIB_POSIXCHECK # undef mkdtemp # if HAVE_RAW_DECL_MKDTEMP _GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " "use gnulib module mkdtemp for portability"); # endif #endif #if @GNULIB_MKOSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKOSTEMP@ _GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); _GL_CXXALIASWARN (mkostemp); #elif defined GNULIB_POSIXCHECK # undef mkostemp # if HAVE_RAW_DECL_MKOSTEMP _GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " "use gnulib module mkostemp for portability"); # endif #endif #if @GNULIB_MKOSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE before a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKOSTEMPS@ _GL_FUNCDECL_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/)); _GL_CXXALIASWARN (mkostemps); #elif defined GNULIB_POSIXCHECK # undef mkostemps # if HAVE_RAW_DECL_MKOSTEMPS _GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " "use gnulib module mkostemps for portability"); # endif #endif #if @GNULIB_MKSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if @REPLACE_MKSTEMP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mkstemp rpl_mkstemp # endif _GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); # else # if ! @HAVE_MKSTEMP@ _GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); # endif _GL_CXXALIASWARN (mkstemp); #elif defined GNULIB_POSIXCHECK # undef mkstemp # if HAVE_RAW_DECL_MKSTEMP _GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " "use gnulib module mkstemp for portability"); # endif #endif #if @GNULIB_MKSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE prior to a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKSTEMPS@ _GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); _GL_CXXALIASWARN (mkstemps); #elif defined GNULIB_POSIXCHECK # undef mkstemps # if HAVE_RAW_DECL_MKSTEMPS _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " "use gnulib module mkstemps for portability"); # endif #endif #if @GNULIB_POSIX_OPENPT@ /* Return an FD open to the master side of a pseudo-terminal. Flags should include O_RDWR, and may also include O_NOCTTY. */ # if !@HAVE_POSIX_OPENPT@ _GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); # endif _GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); _GL_CXXALIASWARN (posix_openpt); #elif defined GNULIB_POSIXCHECK # undef posix_openpt # if HAVE_RAW_DECL_POSIX_OPENPT _GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " "use gnulib module posix_openpt for portability"); # endif #endif #if @GNULIB_PTSNAME@ /* Return the pathname of the pseudo-terminal slave associated with the master FD is open on, or NULL on errors. */ # if @REPLACE_PTSNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname # define ptsname rpl_ptsname # endif _GL_FUNCDECL_RPL (ptsname, char *, (int fd)); _GL_CXXALIAS_RPL (ptsname, char *, (int fd)); # else # if !@HAVE_PTSNAME@ _GL_FUNCDECL_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIAS_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIASWARN (ptsname); #elif defined GNULIB_POSIXCHECK # undef ptsname # if HAVE_RAW_DECL_PTSNAME _GL_WARN_ON_USE (ptsname, "ptsname is not portable - " "use gnulib module ptsname for portability"); # endif #endif #if @GNULIB_PTSNAME_R@ /* Set the pathname of the pseudo-terminal slave associated with the master FD is open on and return 0, or set errno and return non-zero on errors. */ # if @REPLACE_PTSNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname_r # define ptsname_r rpl_ptsname_r # endif _GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); _GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); # else # if !@HAVE_PTSNAME_R@ _GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif _GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif _GL_CXXALIASWARN (ptsname_r); #elif defined GNULIB_POSIXCHECK # undef ptsname_r # if HAVE_RAW_DECL_PTSNAME_R _GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " "use gnulib module ptsname_r for portability"); # endif #endif #if @GNULIB_PUTENV@ # if @REPLACE_PUTENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putenv # define putenv rpl_putenv # endif _GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (putenv, int, (char *string)); # else _GL_CXXALIAS_SYS (putenv, int, (char *string)); # endif _GL_CXXALIASWARN (putenv); #endif #if @GNULIB_RANDOM_R@ # if !@HAVE_RANDOM_R@ # ifndef RAND_MAX # define RAND_MAX 2147483647 # endif # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (random, long, (void)); # endif _GL_CXXALIAS_SYS (random, long, (void)); _GL_CXXALIASWARN (random); #elif defined GNULIB_POSIXCHECK # undef random # if HAVE_RAW_DECL_RANDOM _GL_WARN_ON_USE (random, "random is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); # endif _GL_CXXALIAS_SYS (srandom, void, (unsigned int seed)); _GL_CXXALIASWARN (srandom); #elif defined GNULIB_POSIXCHECK # undef srandom # if HAVE_RAW_DECL_SRANDOM _GL_WARN_ON_USE (srandom, "srandom is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (initstate, char *, (unsigned int seed, char *buf, size_t buf_size) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (initstate, char *, (unsigned int seed, char *buf, size_t buf_size)); _GL_CXXALIASWARN (initstate); #elif defined GNULIB_POSIXCHECK # undef initstate # if HAVE_RAW_DECL_INITSTATE_R _GL_WARN_ON_USE (initstate, "initstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (setstate, char *, (char *arg_state)); _GL_CXXALIASWARN (setstate); #elif defined GNULIB_POSIXCHECK # undef setstate # if HAVE_RAW_DECL_SETSTATE_R _GL_WARN_ON_USE (setstate, "setstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef random_r # define random_r rpl_random_r # endif _GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); # endif _GL_CXXALIASWARN (random_r); #elif defined GNULIB_POSIXCHECK # undef random_r # if HAVE_RAW_DECL_RANDOM_R _GL_WARN_ON_USE (random_r, "random_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef srandom_r # define srandom_r rpl_srandom_r # endif _GL_FUNCDECL_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (srandom_r); #elif defined GNULIB_POSIXCHECK # undef srandom_r # if HAVE_RAW_DECL_SRANDOM_R _GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef initstate_r # define initstate_r rpl_initstate_r # endif _GL_FUNCDECL_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (initstate_r); #elif defined GNULIB_POSIXCHECK # undef initstate_r # if HAVE_RAW_DECL_INITSTATE_R _GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setstate_r # define setstate_r rpl_setstate_r # endif _GL_FUNCDECL_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (setstate_r); #elif defined GNULIB_POSIXCHECK # undef setstate_r # if HAVE_RAW_DECL_SETSTATE_R _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_REALLOC_POSIX@ # if @REPLACE_REALLOC@ # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef realloc # define realloc rpl_realloc # endif _GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); # else _GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); # endif _GL_CXXALIASWARN (realloc); #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef realloc /* Assume realloc is always declared. */ _GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " "use gnulib module realloc-posix for portability"); #endif #if @GNULIB_REALPATH@ # if @REPLACE_REALPATH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define realpath rpl_realpath # endif _GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved)); # else # if !@HAVE_REALPATH@ _GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved)); # endif _GL_CXXALIASWARN (realpath); #elif defined GNULIB_POSIXCHECK # undef realpath # if HAVE_RAW_DECL_REALPATH _GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " "canonicalize or canonicalize-lgpl for portability"); # endif #endif #if @GNULIB_RPMATCH@ /* Test a user response to a question. Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ # if !@HAVE_RPMATCH@ _GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); _GL_CXXALIASWARN (rpmatch); #elif defined GNULIB_POSIXCHECK # undef rpmatch # if HAVE_RAW_DECL_RPMATCH _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " "use gnulib module rpmatch for portability"); # endif #endif #if @GNULIB_SECURE_GETENV@ /* Look up NAME in the environment, returning 0 in insecure situations. */ # if !@HAVE_SECURE_GETENV@ _GL_FUNCDECL_SYS (secure_getenv, char *, (char const *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); _GL_CXXALIASWARN (secure_getenv); #elif defined GNULIB_POSIXCHECK # undef secure_getenv # if HAVE_RAW_DECL_SECURE_GETENV _GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " "use gnulib module secure_getenv for portability"); # endif #endif #if @GNULIB_SETENV@ /* Set NAME to VALUE in the environment. If REPLACE is nonzero, overwrite an existing value. */ # if @REPLACE_SETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setenv # define setenv rpl_setenv # endif _GL_FUNCDECL_RPL (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (setenv, int, (const char *name, const char *value, int replace)); # else # if !@HAVE_DECL_SETENV@ _GL_FUNCDECL_SYS (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (setenv, int, (const char *name, const char *value, int replace)); # endif # if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@) _GL_CXXALIASWARN (setenv); # endif #elif defined GNULIB_POSIXCHECK # undef setenv # if HAVE_RAW_DECL_SETENV _GL_WARN_ON_USE (setenv, "setenv is unportable - " "use gnulib module setenv for portability"); # endif #endif #if @GNULIB_STRTOD@ /* Parse a double from STRING, updating ENDP if appropriate. */ # if @REPLACE_STRTOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtod rpl_strtod # endif _GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp)); # else # if !@HAVE_STRTOD@ _GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp)); # endif _GL_CXXALIASWARN (strtod); #elif defined GNULIB_POSIXCHECK # undef strtod # if HAVE_RAW_DECL_STRTOD _GL_WARN_ON_USE (strtod, "strtod is unportable - " "use gnulib module strtod for portability"); # endif #endif #if @GNULIB_STRTOLL@ /* Parse a signed integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set to ERANGE. */ # if !@HAVE_STRTOLL@ _GL_FUNCDECL_SYS (strtoll, long long, (const char *string, char **endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoll, long long, (const char *string, char **endptr, int base)); _GL_CXXALIASWARN (strtoll); #elif defined GNULIB_POSIXCHECK # undef strtoll # if HAVE_RAW_DECL_STRTOLL _GL_WARN_ON_USE (strtoll, "strtoll is unportable - " "use gnulib module strtoll for portability"); # endif #endif #if @GNULIB_STRTOULL@ /* Parse an unsigned integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is ULLONG_MAX, and errno is set to ERANGE. */ # if !@HAVE_STRTOULL@ _GL_FUNCDECL_SYS (strtoull, unsigned long long, (const char *string, char **endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoull, unsigned long long, (const char *string, char **endptr, int base)); _GL_CXXALIASWARN (strtoull); #elif defined GNULIB_POSIXCHECK # undef strtoull # if HAVE_RAW_DECL_STRTOULL _GL_WARN_ON_USE (strtoull, "strtoull is unportable - " "use gnulib module strtoull for portability"); # endif #endif #if @GNULIB_UNLOCKPT@ /* Unlock the slave side of the pseudo-terminal whose master side is specified by FD, so that it can be opened. */ # if !@HAVE_UNLOCKPT@ _GL_FUNCDECL_SYS (unlockpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (unlockpt, int, (int fd)); _GL_CXXALIASWARN (unlockpt); #elif defined GNULIB_POSIXCHECK # undef unlockpt # if HAVE_RAW_DECL_UNLOCKPT _GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " "use gnulib module unlockpt for portability"); # endif #endif #if @GNULIB_UNSETENV@ /* Remove the variable NAME from the environment. */ # if @REPLACE_UNSETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unsetenv # define unsetenv rpl_unsetenv # endif _GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); # else # if !@HAVE_DECL_UNSETENV@ _GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); # endif # if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@) _GL_CXXALIASWARN (unsetenv); # endif #elif defined GNULIB_POSIXCHECK # undef unsetenv # if HAVE_RAW_DECL_UNSETENV _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " "use gnulib module unsetenv for portability"); # endif #endif /* Convert a wide character to a multibyte character. */ #if @GNULIB_WCTOMB@ # if @REPLACE_WCTOMB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wctomb # define wctomb rpl_wctomb # endif _GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); # else _GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); # endif _GL_CXXALIASWARN (wctomb); #endif #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif freedink-108.4+dfsg/gnulib/lib/Makefile.in0000644000175000017500000034540612421727615016136 0ustar meme# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --po-base=gnulib/po --doc-base=doc --tests-base=tests --aux-dir=autotools --no-conditional-dependencies --no-libtool --macro-prefix=gl --po-domain=freedink alloca canonicalize dirname getopt-gnu gettext hash relocatable-prog strcase strdup-posix strings vasprintf xalloc VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = gnulib/lib DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in alloca.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gnulib/m4/00gnulib.m4 \ $(top_srcdir)/gnulib/m4/absolute-header.m4 \ $(top_srcdir)/gnulib/m4/alloca.m4 \ $(top_srcdir)/gnulib/m4/canonicalize.m4 \ $(top_srcdir)/gnulib/m4/chdir-long.m4 \ $(top_srcdir)/gnulib/m4/close.m4 \ $(top_srcdir)/gnulib/m4/closedir.m4 \ $(top_srcdir)/gnulib/m4/d-ino.m4 \ $(top_srcdir)/gnulib/m4/dirent_h.m4 \ $(top_srcdir)/gnulib/m4/dirfd.m4 \ $(top_srcdir)/gnulib/m4/dirname.m4 \ $(top_srcdir)/gnulib/m4/double-slash-root.m4 \ $(top_srcdir)/gnulib/m4/dup.m4 $(top_srcdir)/gnulib/m4/dup2.m4 \ $(top_srcdir)/gnulib/m4/eealloc.m4 \ $(top_srcdir)/gnulib/m4/environ.m4 \ $(top_srcdir)/gnulib/m4/errno_h.m4 \ $(top_srcdir)/gnulib/m4/error.m4 \ $(top_srcdir)/gnulib/m4/exponentd.m4 \ $(top_srcdir)/gnulib/m4/extensions.m4 \ $(top_srcdir)/gnulib/m4/extern-inline.m4 \ $(top_srcdir)/gnulib/m4/fchdir.m4 \ $(top_srcdir)/gnulib/m4/fcntl-o.m4 \ $(top_srcdir)/gnulib/m4/fcntl.m4 \ $(top_srcdir)/gnulib/m4/fcntl_h.m4 \ $(top_srcdir)/gnulib/m4/fdopendir.m4 \ $(top_srcdir)/gnulib/m4/filenamecat.m4 \ $(top_srcdir)/gnulib/m4/float_h.m4 \ $(top_srcdir)/gnulib/m4/fstat.m4 \ $(top_srcdir)/gnulib/m4/fstatat.m4 \ $(top_srcdir)/gnulib/m4/getcwd-abort-bug.m4 \ $(top_srcdir)/gnulib/m4/getcwd-path-max.m4 \ $(top_srcdir)/gnulib/m4/getcwd.m4 \ $(top_srcdir)/gnulib/m4/getdtablesize.m4 \ $(top_srcdir)/gnulib/m4/getopt.m4 \ $(top_srcdir)/gnulib/m4/gettext.m4 \ $(top_srcdir)/gnulib/m4/gettimeofday.m4 \ $(top_srcdir)/gnulib/m4/gnulib-common.m4 \ $(top_srcdir)/gnulib/m4/gnulib-comp.m4 \ $(top_srcdir)/gnulib/m4/iconv.m4 \ $(top_srcdir)/gnulib/m4/include_next.m4 \ $(top_srcdir)/gnulib/m4/intlmacosx.m4 \ $(top_srcdir)/gnulib/m4/intmax_t.m4 \ $(top_srcdir)/gnulib/m4/inttypes_h.m4 \ $(top_srcdir)/gnulib/m4/largefile.m4 \ $(top_srcdir)/gnulib/m4/lib-ld.m4 \ $(top_srcdir)/gnulib/m4/lib-link.m4 \ $(top_srcdir)/gnulib/m4/lib-prefix.m4 \ $(top_srcdir)/gnulib/m4/longlong.m4 \ $(top_srcdir)/gnulib/m4/lstat.m4 \ $(top_srcdir)/gnulib/m4/malloc.m4 \ $(top_srcdir)/gnulib/m4/malloca.m4 \ $(top_srcdir)/gnulib/m4/memchr.m4 \ $(top_srcdir)/gnulib/m4/mempcpy.m4 \ $(top_srcdir)/gnulib/m4/memrchr.m4 \ $(top_srcdir)/gnulib/m4/mmap-anon.m4 \ $(top_srcdir)/gnulib/m4/mode_t.m4 \ $(top_srcdir)/gnulib/m4/msvc-inval.m4 \ $(top_srcdir)/gnulib/m4/msvc-nothrow.m4 \ $(top_srcdir)/gnulib/m4/multiarch.m4 \ $(top_srcdir)/gnulib/m4/nls.m4 \ $(top_srcdir)/gnulib/m4/nocrash.m4 \ $(top_srcdir)/gnulib/m4/off_t.m4 \ $(top_srcdir)/gnulib/m4/open.m4 \ $(top_srcdir)/gnulib/m4/openat.m4 \ $(top_srcdir)/gnulib/m4/opendir.m4 \ $(top_srcdir)/gnulib/m4/pathmax.m4 \ $(top_srcdir)/gnulib/m4/po.m4 \ $(top_srcdir)/gnulib/m4/printf.m4 \ $(top_srcdir)/gnulib/m4/progtest.m4 \ $(top_srcdir)/gnulib/m4/readdir.m4 \ $(top_srcdir)/gnulib/m4/readlink.m4 \ $(top_srcdir)/gnulib/m4/realloc.m4 \ $(top_srcdir)/gnulib/m4/relocatable-lib.m4 \ $(top_srcdir)/gnulib/m4/relocatable.m4 \ $(top_srcdir)/gnulib/m4/rewinddir.m4 \ $(top_srcdir)/gnulib/m4/same.m4 \ $(top_srcdir)/gnulib/m4/save-cwd.m4 \ $(top_srcdir)/gnulib/m4/setenv.m4 \ $(top_srcdir)/gnulib/m4/size_max.m4 \ $(top_srcdir)/gnulib/m4/ssize_t.m4 \ $(top_srcdir)/gnulib/m4/stat.m4 \ $(top_srcdir)/gnulib/m4/stdbool.m4 \ $(top_srcdir)/gnulib/m4/stddef_h.m4 \ $(top_srcdir)/gnulib/m4/stdint.m4 \ $(top_srcdir)/gnulib/m4/stdint_h.m4 \ $(top_srcdir)/gnulib/m4/stdio_h.m4 \ $(top_srcdir)/gnulib/m4/stdlib_h.m4 \ $(top_srcdir)/gnulib/m4/strcase.m4 \ $(top_srcdir)/gnulib/m4/strdup.m4 \ $(top_srcdir)/gnulib/m4/strerror.m4 \ $(top_srcdir)/gnulib/m4/string_h.m4 \ $(top_srcdir)/gnulib/m4/strings_h.m4 \ $(top_srcdir)/gnulib/m4/strndup.m4 \ $(top_srcdir)/gnulib/m4/strnlen.m4 \ $(top_srcdir)/gnulib/m4/sys_socket_h.m4 \ $(top_srcdir)/gnulib/m4/sys_stat_h.m4 \ $(top_srcdir)/gnulib/m4/sys_time_h.m4 \ $(top_srcdir)/gnulib/m4/sys_types_h.m4 \ $(top_srcdir)/gnulib/m4/time_h.m4 \ $(top_srcdir)/gnulib/m4/unistd-safer.m4 \ $(top_srcdir)/gnulib/m4/unistd_h.m4 \ $(top_srcdir)/gnulib/m4/vasnprintf.m4 \ $(top_srcdir)/gnulib/m4/vasprintf.m4 \ $(top_srcdir)/gnulib/m4/warn-on-use.m4 \ $(top_srcdir)/gnulib/m4/wchar_h.m4 \ $(top_srcdir)/gnulib/m4/wchar_t.m4 \ $(top_srcdir)/gnulib/m4/wint_t.m4 \ $(top_srcdir)/gnulib/m4/xalloc.m4 \ $(top_srcdir)/gnulib/m4/xgetcwd.m4 \ $(top_srcdir)/gnulib/m4/xsize.m4 \ $(top_srcdir)/gnulib/m4/xstrndup.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) libgnu_a_AR = $(AR) $(ARFLAGS) am__DEPENDENCIES_1 = am_libgnu_a_OBJECTS = allocator.$(OBJEXT) areadlink.$(OBJEXT) \ areadlink-with-size.$(OBJEXT) bitrotate.$(OBJEXT) \ canonicalize.$(OBJEXT) careadlinkat.$(OBJEXT) \ cloexec.$(OBJEXT) dirname.$(OBJEXT) basename.$(OBJEXT) \ dirname-lgpl.$(OBJEXT) basename-lgpl.$(OBJEXT) \ stripslash.$(OBJEXT) exitfail.$(OBJEXT) fd-hook.$(OBJEXT) \ file-set.$(OBJEXT) filenamecat-lgpl.$(OBJEXT) hash.$(OBJEXT) \ hash-pjw.$(OBJEXT) hash-triple.$(OBJEXT) malloca.$(OBJEXT) \ openat-die.$(OBJEXT) progname.$(OBJEXT) same.$(OBJEXT) \ save-cwd.$(OBJEXT) unistd.$(OBJEXT) dup-safer.$(OBJEXT) \ fd-safer.$(OBJEXT) pipe-safer.$(OBJEXT) xmalloc.$(OBJEXT) \ xalloc-die.$(OBJEXT) xgetcwd.$(OBJEXT) xreadlink.$(OBJEXT) \ xsize.$(OBJEXT) xstrndup.$(OBJEXT) libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS) LTLIBRARIES = $(noinst_LTLIBRARIES) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES) DIST_SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CHECK_CFLAGS = @CHECK_CFLAGS@ CHECK_LIBS = @CHECK_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ -DEXEEXT=\"@EXEEXT@\" DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FLOAT_H = @FLOAT_H@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETOPT_H = @GETOPT_H@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FCNTL = @GNULIB_FCNTL@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFS = @GNULIB_FFS@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBRLEN = @GNULIB_MBRLEN@ GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSINIT = @GNULIB_MBSINIT@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_OPEN = @GNULIB_OPEN@ GNULIB_OPENAT = @GNULIB_OPENAT@ GNULIB_OPENDIR = @GNULIB_OPENDIR@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READDIR = @GNULIB_READDIR@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCPCPY = @GNULIB_WCPCPY@ GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ GNULIB_WCSCAT = @GNULIB_WCSCAT@ GNULIB_WCSCHR = @GNULIB_WCSCHR@ GNULIB_WCSCMP = @GNULIB_WCSCMP@ GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ GNULIB_WCSCPY = @GNULIB_WCSCPY@ GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ GNULIB_WCSDUP = @GNULIB_WCSDUP@ GNULIB_WCSLEN = @GNULIB_WCSLEN@ GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ GNULIB_WCSSPN = @GNULIB_WCSSPN@ GNULIB_WCSSTR = @GNULIB_WCSSTR@ GNULIB_WCSTOK = @GNULIB_WCSTOK@ GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ GNULIB_WCTOB = @GNULIB_WCTOB@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ GNULIB_WMEMSET = @GNULIB_WMEMSET@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DIRENT_H = @HAVE_DIRENT_H@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFS = @HAVE_FFS@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OPENDIR = @HAVE_OPENDIR@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READDIR = @HAVE_READDIR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASECMP = @HAVE_STRCASECMP@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRINGS_H = @HAVE_STRINGS_H@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE__BOOL = @HAVE__BOOL@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM_ENV = @INSTALL_PROGRAM_ENV@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBZIP_CFLAGS = @LIBZIP_CFLAGS@ LIBZIP_LIBS = @LIBZIP_LIBS@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRINGS_H = @NEXT_STRINGS_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ RELOCATABLE = @RELOCATABLE@ RELOCATABLE_BUILD_DIR = @RELOCATABLE_BUILD_DIR@ RELOCATABLE_CONFIG_H_DIR = @RELOCATABLE_CONFIG_H_DIR@ RELOCATABLE_LDFLAGS = @RELOCATABLE_LDFLAGS@ RELOCATABLE_LIBRARY_PATH = @RELOCATABLE_LIBRARY_PATH@ RELOCATABLE_SRC_DIR = @RELOCATABLE_SRC_DIR@ RELOCATABLE_STRIP = @RELOCATABLE_STRIP@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ REPLACE_DIRFD = @REPLACE_DIRFD@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_OPENDIR = @REPLACE_OPENDIR@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WRITE = @REPLACE_WRITE@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDBOOL_H = @STDBOOL_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ UPX = @UPX@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDRES = @WINDRES@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZIP = @ZIP@ ZZIPLIB_CFLAGS = @ZZIPLIB_CFLAGS@ ZZIPLIB_LIBS = @ZZIPLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = 1.9.6 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = libgnu.a noinst_LTLIBRARIES = # If your project uses "gettextize --intl" to put a source-code # copy of libintl into the package, every Makefile.am needs # -I$(top_builddir)/intl, so that can be found in this directory. # Here's one way to do this: #AM_CPPFLAGS += -I$(top_builddir)/intl # This option has no effect when the user disables NLS (because then # the intl directory contains no libintl.h file). This option is not # enabled by default because the intl directory might not exist if # your project does not use "gettext --intl", and some compilers # complain about -I options applied to nonexistent directories. EXTRA_DIST = alloca.c alloca.in.h allocator.h areadlink.h areadlink.h \ openat-priv.h openat-proc.c canonicalize.h canonicalize-lgpl.c \ careadlinkat.h chdir-long.c chdir-long.h cloexec.h close.c \ closedir.c dirent-private.h dirent.in.h dirfd.c stripslash.c \ dirname.h dosname.h dup.c dup2.c errno.in.h error.c error.h \ exitfail.h fchdir.c fcntl.c fcntl.in.h fd-hook.h fdopendir.c \ file-set.h filename.h filenamecat.h float.c float.in.h itold.c \ fstat.c at-func.c fstatat.c getcwd.c getcwd-lgpl.c \ getdtablesize.c getopt.c getopt.in.h getopt1.c getopt_int.h \ $(top_srcdir)/autotools/config.rpath gettimeofday.c hash.h \ hash-triple.h $(top_srcdir)/autotools/config.rpath intprops.h \ lstat.c malloc.c malloca.h malloca.valgrind memchr.c \ memchr.valgrind mempcpy.c memrchr.c msvc-inval.c msvc-inval.h \ msvc-nothrow.c msvc-nothrow.h open.c openat.c openat.h \ dirent-private.h opendir.c pathmax.h dirent-private.h \ readdir.c readlink.c realloc.c progreloc.c relocatable.c \ relocatable.h $(top_srcdir)/autotools/config.libpath \ $(top_srcdir)/autotools/reloc-ldflags allocator.c allocator.h \ areadlink.c areadlink.h c-ctype.c c-ctype.h \ canonicalize-lgpl.c careadlinkat.c careadlinkat.h malloca.c \ malloca.h progname.c progname.h progreloc.c readlink.c \ relocatable.c relocatable.h relocwrapper.c setenv.c \ $(top_srcdir)/autotools/install-reloc dirent-private.h \ rewinddir.c same.h same-inode.h save-cwd.h \ $(top_srcdir)/autotools/snippet/_Noreturn.h \ $(top_srcdir)/autotools/snippet/arg-nonnull.h \ $(top_srcdir)/autotools/snippet/c++defs.h \ $(top_srcdir)/autotools/snippet/warn-on-use.h stat.c \ stdbool.in.h stddef.in.h stdint.in.h stdio.in.h stdlib.in.h \ strcasecmp.c strncasecmp.c strdup.c strerror.c \ strerror-override.c strerror-override.h string.in.h \ strings.in.h strndup.c strnlen.c sys_stat.in.h sys_time.in.h \ sys_types.in.h time.in.h unistd.in.h unistd--.h unistd-safer.h \ asnprintf.c float+.h printf-args.c printf-args.h \ printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h \ asprintf.c vasprintf.c verify.h wchar.in.h xalloc.h \ xalloc-oversized.h xgetcwd.h xreadlink.h # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES = $(ALLOCA_H) dirent.h $(ERRNO_H) fcntl.h $(FLOAT_H) \ $(GETOPT_H) arg-nonnull.h c++defs.h warn-on-use.h $(STDBOOL_H) \ $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h strings.h \ sys/stat.h sys/time.h sys/types.h time.h unistd.h wchar.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t dirent.h \ dirent.h-t errno.h errno.h-t fcntl.h fcntl.h-t float.h \ float.h-t getopt.h getopt.h-t arg-nonnull.h arg-nonnull.h-t \ c++defs.h c++defs.h-t warn-on-use.h warn-on-use.h-t stdbool.h \ stdbool.h-t stddef.h stddef.h-t stdint.h stdint.h-t stdio.h \ stdio.h-t stdlib.h stdlib.h-t string.h string.h-t strings.h \ strings.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \ sys/types.h sys/types.h-t time.h time.h-t unistd.h unistd.h-t \ wchar.h wchar.h-t MOSTLYCLEANDIRS = sys CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = -DDEFAULT_TEXT_DOMAIN=\"freedink-gnulib\" AM_CFLAGS = libgnu_a_SOURCES = allocator.c areadlink.c areadlink-with-size.c \ bitrotate.h bitrotate.c canonicalize.c careadlinkat.c \ cloexec.c dirname.c basename.c dirname-lgpl.c basename-lgpl.c \ stripslash.c exitfail.c fd-hook.c file-set.c \ filenamecat-lgpl.c gettext.h hash.c hash-pjw.h hash-pjw.c \ hash-triple.c malloca.c openat-die.c progname.h progname.c \ same.c save-cwd.c size_max.h unistd.c dup-safer.c fd-safer.c \ pipe-safer.c xmalloc.c xalloc-die.c xgetcwd.c xreadlink.c \ xsize.h xsize.c xstrndup.h xstrndup.c libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@ libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@ EXTRA_libgnu_a_SOURCES = alloca.c openat-proc.c canonicalize-lgpl.c \ chdir-long.c close.c closedir.c dirfd.c stripslash.c dup.c \ dup2.c error.c fchdir.c fcntl.c fdopendir.c float.c itold.c \ fstat.c at-func.c fstatat.c getcwd.c getcwd-lgpl.c \ getdtablesize.c getopt.c getopt1.c gettimeofday.c lstat.c \ malloc.c memchr.c mempcpy.c memrchr.c msvc-inval.c \ msvc-nothrow.c open.c openat.c opendir.c readdir.c readlink.c \ realloc.c progreloc.c relocatable.c rewinddir.c stat.c \ strcasecmp.c strncasecmp.c strdup.c strerror.c \ strerror-override.c strndup.c strnlen.c asnprintf.c \ printf-args.c printf-parse.c vasnprintf.c asprintf.c \ vasprintf.c # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all Makefile.am that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H = $(top_srcdir)/autotools/snippet/_Noreturn.h ARG_NONNULL_H = arg-nonnull.h CXXDEFS_H = c++defs.h WARN_ON_USE_H = warn-on-use.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits gnulib/lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits gnulib/lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) $(EXTRA_libgnu_a_DEPENDENCIES) -rm -f libgnu.a $(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD) $(RANLIB) libgnu.a clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allocator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/areadlink-with-size.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/areadlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asnprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/at-func.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename-lgpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitrotate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canonicalize-lgpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canonicalize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/careadlinkat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chdir-long.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cloexec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closedir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirfd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname-lgpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-safer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-hook.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-safer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdopendir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-set.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filenamecat-lgpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd-lgpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdtablesize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-pjw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-triple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/itold.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloca.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memchr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mempcpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memrchr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-inval.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-nothrow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-die.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-proc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opendir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe-safer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-args.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-parse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progreloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readdir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relocatable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rewinddir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/same.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save-cwd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcasecmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strdup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-override.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stripslash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strncasecmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strndup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unistd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasnprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetcwd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xreadlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xsize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) @RELOCATABLE_VIA_WRAPPER_FALSE@uninstall-hook: clean: clean-recursive clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf $(DEPDIR) ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf $(DEPDIR) ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-local pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ctags-recursive install install-am install-strip \ tags-recursive uninstall-am .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-hook # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_ALLOCA_H_TRUE@alloca.h: alloca.in.h $(top_builddir)/config.status @GL_GENERATE_ALLOCA_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_ALLOCA_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @GL_GENERATE_ALLOCA_H_TRUE@ cat $(srcdir)/alloca.in.h; \ @GL_GENERATE_ALLOCA_H_TRUE@ } > $@-t && \ @GL_GENERATE_ALLOCA_H_TRUE@ mv -f $@-t $@ @GL_GENERATE_ALLOCA_H_FALSE@alloca.h: $(top_builddir)/config.status @GL_GENERATE_ALLOCA_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. dirent.h: dirent.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_DIRENT_H''@|$(HAVE_DIRENT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_DIRENT_H''@|$(NEXT_DIRENT_H)|g' \ -e 's/@''GNULIB_OPENDIR''@/$(GNULIB_OPENDIR)/g' \ -e 's/@''GNULIB_READDIR''@/$(GNULIB_READDIR)/g' \ -e 's/@''GNULIB_REWINDDIR''@/$(GNULIB_REWINDDIR)/g' \ -e 's/@''GNULIB_CLOSEDIR''@/$(GNULIB_CLOSEDIR)/g' \ -e 's/@''GNULIB_DIRFD''@/$(GNULIB_DIRFD)/g' \ -e 's/@''GNULIB_FDOPENDIR''@/$(GNULIB_FDOPENDIR)/g' \ -e 's/@''GNULIB_SCANDIR''@/$(GNULIB_SCANDIR)/g' \ -e 's/@''GNULIB_ALPHASORT''@/$(GNULIB_ALPHASORT)/g' \ -e 's/@''HAVE_OPENDIR''@/$(HAVE_OPENDIR)/g' \ -e 's/@''HAVE_READDIR''@/$(HAVE_READDIR)/g' \ -e 's/@''HAVE_REWINDDIR''@/$(HAVE_REWINDDIR)/g' \ -e 's/@''HAVE_CLOSEDIR''@/$(HAVE_CLOSEDIR)/g' \ -e 's|@''HAVE_DECL_DIRFD''@|$(HAVE_DECL_DIRFD)|g' \ -e 's|@''HAVE_DECL_FDOPENDIR''@|$(HAVE_DECL_FDOPENDIR)|g' \ -e 's|@''HAVE_FDOPENDIR''@|$(HAVE_FDOPENDIR)|g' \ -e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \ -e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \ -e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \ -e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \ -e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \ -e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/dirent.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that is POSIX compliant. @GL_GENERATE_ERRNO_H_TRUE@errno.h: errno.in.h $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_ERRNO_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_ERRNO_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ < $(srcdir)/errno.in.h; \ @GL_GENERATE_ERRNO_H_TRUE@ } > $@-t && \ @GL_GENERATE_ERRNO_H_TRUE@ mv $@-t $@ @GL_GENERATE_ERRNO_H_FALSE@errno.h: $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \ -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \ -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \ -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \ -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \ -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \ -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/fcntl.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_FLOAT_H_TRUE@float.h: float.in.h $(top_builddir)/config.status @GL_GENERATE_FLOAT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_FLOAT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_FLOAT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ @GL_GENERATE_FLOAT_H_TRUE@ < $(srcdir)/float.in.h; \ @GL_GENERATE_FLOAT_H_TRUE@ } > $@-t && \ @GL_GENERATE_FLOAT_H_TRUE@ mv $@-t $@ @GL_GENERATE_FLOAT_H_FALSE@float.h: $(top_builddir)/config.status @GL_GENERATE_FLOAT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ < $(srcdir)/getopt.in.h; \ } > $@-t && \ mv -f $@-t $@ @RELOCATABLE_VIA_WRAPPER_TRUE@uninstall-hook: uninstall-relocwrapper @RELOCATABLE_VIA_WRAPPER_TRUE@uninstall-relocwrapper: @RELOCATABLE_VIA_WRAPPER_TRUE@ if test $(RELOCATABLE) = yes; then \ @RELOCATABLE_VIA_WRAPPER_TRUE@ case '$(EXEEXT)' in \ @RELOCATABLE_VIA_WRAPPER_TRUE@ .bin*) ;; \ @RELOCATABLE_VIA_WRAPPER_TRUE@ *) cd $(top_builddir) && \ @RELOCATABLE_VIA_WRAPPER_TRUE@ $(MAKE) $(AM_MAKEFLAGS) EXEEXT=.bin$(EXEEXT) \ @RELOCATABLE_VIA_WRAPPER_TRUE@ AM_MAKEFLAGS='$(AM_MAKEFLAGS) EXEEXT=.bin$(EXEEXT)' \ @RELOCATABLE_VIA_WRAPPER_TRUE@ uninstall ;; \ @RELOCATABLE_VIA_WRAPPER_TRUE@ esac; \ @RELOCATABLE_VIA_WRAPPER_TRUE@ fi @RELOCATABLE_VIA_WRAPPER_TRUE@.PHONY: uninstall-relocwrapper # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/autotools/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/autotools/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/autotools/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/autotools/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/autotools/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/autotools/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works. @GL_GENERATE_STDBOOL_H_TRUE@stdbool.h: stdbool.in.h $(top_builddir)/config.status @GL_GENERATE_STDBOOL_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDBOOL_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @GL_GENERATE_STDBOOL_H_TRUE@ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \ @GL_GENERATE_STDBOOL_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDBOOL_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status @GL_GENERATE_STDBOOL_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \ @GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status @GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \ @GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status @GL_GENERATE_STDINT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ < $(srcdir)/string.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. strings.h: strings.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_STRINGS_H''@|$(HAVE_STRINGS_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \ -e 's|@''GNULIB_FFS''@|$(GNULIB_FFS)|g' \ -e 's|@''HAVE_FFS''@|$(HAVE_FFS)|g' \ -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \ -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/strings.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_stat.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_time.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''REPLACE_GMTIME''@|$(REPLACE_GMTIME)|g' \ -e 's|@''REPLACE_LOCALTIME''@|$(REPLACE_LOCALTIME)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/time.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # version does not work standalone. wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \ -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \ -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \ -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \ -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \ -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \ -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \ -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \ -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \ -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \ -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \ -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \ -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \ -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \ -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \ -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \ -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \ -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \ -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \ -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \ -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \ -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \ -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \ -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \ -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \ -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \ -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \ -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \ -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \ -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \ -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \ -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \ -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \ -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \ -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \ -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \ -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \ -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \ < $(srcdir)/wchar.in.h | \ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \ -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \ -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \ -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \ -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \ -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \ -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \ -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \ -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \ -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \ -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \ -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \ -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \ -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \ -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \ -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \ -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \ -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \ -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \ -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \ -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \ -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \ -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \ -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \ -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \ -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \ -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \ -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \ -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \ -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \ -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \ -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \ -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \ -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \ -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \ -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \ -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \ -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \ -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \ -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \ | \ sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \ -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \ -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \ -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \ -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \ -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \ -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \ -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \ -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \ -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \ -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \ -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \ -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: freedink-108.4+dfsg/gnulib/lib/error.h0000644000175000017500000000474612330466613015367 0ustar meme/* Declaration for error-reporting function Copyright (C) 1995-1997, 2003, 2006, 2008-2014 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 3 of the License, 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, see . */ #ifndef _ERROR_H #define _ERROR_H 1 /* The __attribute__ feature is available in gcc versions 2.5 and later. The __-protected variants of the attributes 'format' and 'printf' are accepted by gcc versions 2.6.4 (effectively 2.7) and later. We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because gnulib and libintl do '#define printf __printf__' when they override the 'printf' function. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) #else # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ #endif #ifdef __cplusplus extern "C" { #endif /* Print a message with 'fprintf (stderr, FORMAT, ...)'; if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */ extern void error (int __status, int __errnum, const char *__format, ...) _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4)); extern void error_at_line (int __status, int __errnum, const char *__fname, unsigned int __lineno, const char *__format, ...) _GL_ATTRIBUTE_FORMAT ((__printf__, 5, 6)); /* If NULL, error will flush stdout, then print on stderr the program name, a colon and a space. Otherwise, error will call this function without parameters instead. */ extern void (*error_print_progname) (void); /* This variable is incremented each time 'error' is called. */ extern unsigned int error_message_count; /* Sometimes we want to have at most one error per line. This variable controls whether this mode is selected or not. */ extern int error_one_per_line; #ifdef __cplusplus } #endif #endif /* error.h */ freedink-108.4+dfsg/gnulib/lib/malloca.valgrind0000644000175000017500000000025712330466613017216 0ustar meme# Suppress a valgrind message about use of uninitialized memory in freea(). # This use is OK because it provides only a speedup. { freea Memcheck:Cond fun:freea } freedink-108.4+dfsg/gnulib/lib/fd-hook.h0000644000175000017500000001137612330466613015562 0ustar meme/* Hook for making making file descriptor functions close(), ioctl() extensible. Copyright (C) 2009-2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef FD_HOOK_H #define FD_HOOK_H #ifdef __cplusplus extern "C" { #endif /* Currently, this entire code is only needed for the handling of sockets on native Windows platforms. */ #if WINDOWS_SOCKETS /* Type of function that closes FD. */ typedef int (*gl_close_fn) (int fd); /* Type of function that applies a control request to FD. */ typedef int (*gl_ioctl_fn) (int fd, int request, void *arg); /* An element of the list of file descriptor hooks. In CLOS (Common Lisp Object System) speak, it consists of an "around" method for the close() function and an "around" method for the ioctl() function. The fields of this structure are considered private. */ struct fd_hook { /* Doubly linked list. */ struct fd_hook *private_next; struct fd_hook *private_prev; /* Function that treats the types of FD that it knows about and calls execute_close_hooks (REMAINING_LIST, PRIMARY, FD) as a fallback. */ int (*private_close_fn) (const struct fd_hook *remaining_list, gl_close_fn primary, int fd); /* Function that treats the types of FD that it knows about and calls execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) as a fallback. */ int (*private_ioctl_fn) (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg); }; /* This type of function closes FD, applying special knowledge for the FD types it knows about, and calls execute_close_hooks (REMAINING_LIST, PRIMARY, FD) for the other FD types. In CLOS speak, REMAINING_LIST is the remaining list of "around" methods, and PRIMARY is the "primary" method for close(). */ typedef int (*close_hook_fn) (const struct fd_hook *remaining_list, gl_close_fn primary, int fd); /* Execute the close hooks in REMAINING_LIST, with PRIMARY as "primary" method. Return 0 or -1, like close() would do. */ extern int execute_close_hooks (const struct fd_hook *remaining_list, gl_close_fn primary, int fd); /* Execute all close hooks, with PRIMARY as "primary" method. Return 0 or -1, like close() would do. */ extern int execute_all_close_hooks (gl_close_fn primary, int fd); /* This type of function applies a control request to FD, applying special knowledge for the FD types it knows about, and calls execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) for the other FD types. In CLOS speak, REMAINING_LIST is the remaining list of "around" methods, and PRIMARY is the "primary" method for ioctl(). */ typedef int (*ioctl_hook_fn) (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg); /* Execute the ioctl hooks in REMAINING_LIST, with PRIMARY as "primary" method. Return 0 or -1, like ioctl() would do. */ extern int execute_ioctl_hooks (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg); /* Execute all ioctl hooks, with PRIMARY as "primary" method. Return 0 or -1, like ioctl() would do. */ extern int execute_all_ioctl_hooks (gl_ioctl_fn primary, int fd, int request, void *arg); /* Add a function pair to the list of file descriptor hooks. CLOSE_HOOK and IOCTL_HOOK may be NULL, indicating no change. The LINK variable points to a piece of memory which is guaranteed to be accessible until the corresponding call to unregister_fd_hook. */ extern void register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, struct fd_hook *link); /* Removes a hook from the list of file descriptor hooks. */ extern void unregister_fd_hook (struct fd_hook *link); #endif #ifdef __cplusplus } #endif #endif /* FD_HOOK_H */ freedink-108.4+dfsg/gnulib/lib/xsize.c0000644000175000017500000000011612330466613015356 0ustar meme#include #define XSIZE_INLINE _GL_EXTERN_INLINE #include "xsize.h" freedink-108.4+dfsg/gnulib/lib/file-set.h0000644000175000017500000000066312330466613015740 0ustar meme#include #include #include #include "hash.h" extern void record_file (Hash_table *ht, char const *file, struct stat const *stats) #if defined __GNUC__ && ((__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3) __attribute__ ((nonnull (2, 3))) #endif ; extern bool seen_file (Hash_table const *ht, char const *file, struct stat const *stats); freedink-108.4+dfsg/gnulib/lib/opendir.c0000644000175000017500000000652112330466613015662 0ustar meme/* Start reading the entries of a directory. Copyright (C) 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include #if HAVE_OPENDIR /* Override opendir(), to keep track of the open file descriptors. Needed because there is a function dirfd(). */ #else # include # include "dirent-private.h" # include "filename.h" #endif #if REPLACE_FCHDIR # include #endif DIR * opendir (const char *dir_name) { #if HAVE_OPENDIR # undef opendir DIR *dirp; dirp = opendir (dir_name); if (dirp == NULL) return NULL; #else char dir_name_mask[MAX_PATH + 1 + 1 + 1]; int status; HANDLE current; WIN32_FIND_DATA entry; struct gl_directory *dirp; if (dir_name[0] == '\0') { errno = ENOENT; return NULL; } /* Make the dir_name absolute, so that we continue reading the same directory if the current directory changed between this opendir() call and a subsequent rewinddir() call. */ if (!GetFullPathName (dir_name, MAX_PATH, dir_name_mask, NULL)) { errno = EINVAL; return NULL; } /* Append the mask. "*" and "*.*" appear to be equivalent. */ { char *p; p = dir_name_mask + strlen (dir_name_mask); if (p > dir_name_mask && !ISSLASH (p[-1])) *p++ = '\\'; *p++ = '*'; *p = '\0'; } /* Start searching the directory. */ status = -1; current = FindFirstFile (dir_name_mask, &entry); if (current == INVALID_HANDLE_VALUE) { switch (GetLastError ()) { case ERROR_FILE_NOT_FOUND: status = -2; break; case ERROR_PATH_NOT_FOUND: errno = ENOENT; return NULL; case ERROR_DIRECTORY: errno = ENOTDIR; return NULL; case ERROR_ACCESS_DENIED: errno = EACCES; return NULL; default: errno = EIO; return NULL; } } /* Allocate the result. */ dirp = (struct gl_directory *) malloc (offsetof (struct gl_directory, dir_name_mask[0]) + strlen (dir_name_mask) + 1); if (dirp == NULL) { if (current != INVALID_HANDLE_VALUE) FindClose (current); errno = ENOMEM; return NULL; } dirp->status = status; dirp->current = current; if (status == -1) memcpy (&dirp->entry, &entry, sizeof (WIN32_FIND_DATA)); strcpy (dirp->dir_name_mask, dir_name_mask); #endif #if REPLACE_FCHDIR { int fd = dirfd (dirp); if (0 <= fd && _gl_register_fd (fd, dir_name) != fd) { int saved_errno = errno; closedir (dirp); errno = saved_errno; return NULL; } } #endif return dirp; } freedink-108.4+dfsg/gnulib/lib/dirname.c0000644000175000017500000000226312330466613015640 0ustar meme/* dirname.c -- return all but the last element in a file name Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "dirname.h" #include #include #include "xalloc.h" /* Just like mdir_name (dirname-lgpl.c), except, rather than returning NULL upon malloc failure, here, we report the "memory exhausted" condition and exit. */ char * dir_name (char const *file) { char *result = mdir_name (file); if (!result) xalloc_die (); return result; } freedink-108.4+dfsg/gnulib/lib/bitrotate.c0000644000175000017500000000012612330466613016212 0ustar meme#include #define BITROTATE_INLINE _GL_EXTERN_INLINE #include "bitrotate.h" freedink-108.4+dfsg/gnulib/lib/hash-triple.h0000644000175000017500000000113712330466613016445 0ustar meme#ifndef HASH_TRIPLE_H #define HASH_TRIPLE_H #include #include #include /* Describe a just-created or just-renamed destination file. */ struct F_triple { char *name; ino_t st_ino; dev_t st_dev; }; extern size_t triple_hash (void const *x, size_t table_size) _GL_ATTRIBUTE_PURE; extern size_t triple_hash_no_name (void const *x, size_t table_size) _GL_ATTRIBUTE_PURE; extern bool triple_compare (void const *x, void const *y); extern bool triple_compare_ino_str (void const *x, void const *y) _GL_ATTRIBUTE_PURE; extern void triple_free (void *x); #endif freedink-108.4+dfsg/gnulib/lib/exitfail.c0000644000175000017500000000153312330466613016025 0ustar meme/* Failure exit status Copyright (C) 2002-2003, 2005-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "exitfail.h" #include int volatile exit_failure = EXIT_FAILURE; freedink-108.4+dfsg/gnulib/lib/gettext.h0000644000175000017500000002341612330466613015715 0ustar meme/* Convenience header for conditional use of GNU . Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 /* NLS can be disabled through the configure --disable-nls option. */ #if ENABLE_NLS /* Get declarations of GNU message catalog functions. */ # include /* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by the gettext() and ngettext() macros. This is an alternative to calling textdomain(), and is useful for libraries. */ # ifdef DEFAULT_TEXT_DOMAIN # undef gettext # define gettext(Msgid) \ dgettext (DEFAULT_TEXT_DOMAIN, Msgid) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) # endif #else /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. We don't include as well because people using "gettext.h" will not include , and also including would fail on SunOS 4, whereas is OK. */ #if defined(__sun) # include #endif /* Many header files from the libstdc++ coming with g++ 3.3 or newer include , which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. */ #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) # include # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H # include # endif #endif /* Disabled NLS. The casts to 'const char *' serve the purpose of producing warnings for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ # undef gettext # define gettext(Msgid) ((const char *) (Msgid)) # undef dgettext # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) # undef dcgettext # define dcgettext(Domainname, Msgid, Category) \ ((void) (Category), dgettext (Domainname, Msgid)) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 \ ? ((void) (Msgid2), (const char *) (Msgid1)) \ : ((void) (Msgid1), (const char *) (Msgid2))) # undef dngettext # define dngettext(Domainname, Msgid1, Msgid2, N) \ ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) # undef dcngettext # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) # undef textdomain # define textdomain(Domainname) ((const char *) (Domainname)) # undef bindtextdomain # define bindtextdomain(Domainname, Dirname) \ ((void) (Domainname), (const char *) (Dirname)) # undef bind_textdomain_codeset # define bind_textdomain_codeset(Domainname, Codeset) \ ((void) (Domainname), (const char *) (Codeset)) #endif /* Prefer gnulib's setlocale override over libintl's setlocale override. */ #ifdef GNULIB_defined_setlocale # undef setlocale # define setlocale rpl_setlocale #endif /* A pseudo function call that serves as a marker for the automated extraction of messages, but does not call gettext(). The run-time translation is done at a different place in the code. The argument, String, should be a literal string. Concatenated strings and other string expressions won't work. The macro's expansion is not parenthesized, so that it is suitable as initializer for static 'char[]' or 'const char[]' variables. */ #define gettext_noop(String) String /* The separator between msgctxt and msgid in a .mo file. */ #define GETTEXT_CONTEXT_GLUE "\004" /* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be short and rarely need to change. The letter 'p' stands for 'particular' or 'special'. */ #ifdef DEFAULT_TEXT_DOMAIN # define pgettext(Msgctxt, Msgid) \ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #else # define pgettext(Msgctxt, Msgid) \ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #endif #define dpgettext(Domainname, Msgctxt, Msgid) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) #ifdef DEFAULT_TEXT_DOMAIN # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #else # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #endif #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * pgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, int category) { const char *translation = dcgettext (domain, msg_ctxt_id, category); if (translation == msg_ctxt_id) return msgid; else return translation; } #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * npgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { const char *translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); if (translation == msg_ctxt_id || translation == msgid_plural) return (n == 1 ? msgid : msgid_plural); else return translation; } /* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID can be arbitrary expressions. But for string literals these macros are less efficient than those above. */ #include #if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ /* || __STDC_VERSION__ >= 199901L */ ) # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 #else # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 #endif #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS #include #endif #define pgettext_expr(Msgctxt, Msgid) \ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcgettext (domain, msg_ctxt_id, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (translation != msg_ctxt_id) return translation; } return msgid; } #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcnpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (!(translation == msg_ctxt_id || translation == msgid_plural)) return translation; } return (n == 1 ? msgid : msgid_plural); } #endif /* _LIBGETTEXT_H */ freedink-108.4+dfsg/gnulib/lib/printf-args.c0000644000175000017500000001463212330466613016460 0ustar meme/* Decomposed printf argument list. Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ /* This file can be parametrized with the following macros: ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. PRINTF_FETCHARGS Name of the function to be defined. STATIC Set to 'static' to declare the function static. */ #ifndef PRINTF_FETCHARGS # include #endif /* Specification. */ #ifndef PRINTF_FETCHARGS # include "printf-args.h" #endif #ifdef STATIC STATIC #endif int PRINTF_FETCHARGS (va_list args, arguments *a) { size_t i; argument *ap; for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) switch (ap->type) { case TYPE_SCHAR: ap->a.a_schar = va_arg (args, /*signed char*/ int); break; case TYPE_UCHAR: ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); break; case TYPE_SHORT: ap->a.a_short = va_arg (args, /*short*/ int); break; case TYPE_USHORT: ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); break; case TYPE_INT: ap->a.a_int = va_arg (args, int); break; case TYPE_UINT: ap->a.a_uint = va_arg (args, unsigned int); break; case TYPE_LONGINT: ap->a.a_longint = va_arg (args, long int); break; case TYPE_ULONGINT: ap->a.a_ulongint = va_arg (args, unsigned long int); break; #if HAVE_LONG_LONG_INT case TYPE_LONGLONGINT: ap->a.a_longlongint = va_arg (args, long long int); break; case TYPE_ULONGLONGINT: ap->a.a_ulonglongint = va_arg (args, unsigned long long int); break; #endif case TYPE_DOUBLE: ap->a.a_double = va_arg (args, double); break; case TYPE_LONGDOUBLE: ap->a.a_longdouble = va_arg (args, long double); break; case TYPE_CHAR: ap->a.a_char = va_arg (args, int); break; #if HAVE_WINT_T case TYPE_WIDE_CHAR: /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by default argument promotions", this is not the case in mingw32, where wint_t is 'unsigned short'. */ ap->a.a_wide_char = (sizeof (wint_t) < sizeof (int) ? (wint_t) va_arg (args, int) : va_arg (args, wint_t)); break; #endif case TYPE_STRING: ap->a.a_string = va_arg (args, const char *); /* A null pointer is an invalid argument for "%s", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_string == NULL) ap->a.a_string = "(NULL)"; break; #if HAVE_WCHAR_T case TYPE_WIDE_STRING: ap->a.a_wide_string = va_arg (args, const wchar_t *); /* A null pointer is an invalid argument for "%ls", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_wide_string == NULL) { static const wchar_t wide_null_string[] = { (wchar_t)'(', (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L', (wchar_t)')', (wchar_t)0 }; ap->a.a_wide_string = wide_null_string; } break; #endif case TYPE_POINTER: ap->a.a_pointer = va_arg (args, void *); break; case TYPE_COUNT_SCHAR_POINTER: ap->a.a_count_schar_pointer = va_arg (args, signed char *); break; case TYPE_COUNT_SHORT_POINTER: ap->a.a_count_short_pointer = va_arg (args, short *); break; case TYPE_COUNT_INT_POINTER: ap->a.a_count_int_pointer = va_arg (args, int *); break; case TYPE_COUNT_LONGINT_POINTER: ap->a.a_count_longint_pointer = va_arg (args, long int *); break; #if HAVE_LONG_LONG_INT case TYPE_COUNT_LONGLONGINT_POINTER: ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); break; #endif #if ENABLE_UNISTDIO /* The unistdio extensions. */ case TYPE_U8_STRING: ap->a.a_u8_string = va_arg (args, const uint8_t *); /* A null pointer is an invalid argument for "%U", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_u8_string == NULL) { static const uint8_t u8_null_string[] = { '(', 'N', 'U', 'L', 'L', ')', 0 }; ap->a.a_u8_string = u8_null_string; } break; case TYPE_U16_STRING: ap->a.a_u16_string = va_arg (args, const uint16_t *); /* A null pointer is an invalid argument for "%lU", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_u16_string == NULL) { static const uint16_t u16_null_string[] = { '(', 'N', 'U', 'L', 'L', ')', 0 }; ap->a.a_u16_string = u16_null_string; } break; case TYPE_U32_STRING: ap->a.a_u32_string = va_arg (args, const uint32_t *); /* A null pointer is an invalid argument for "%llU", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_u32_string == NULL) { static const uint32_t u32_null_string[] = { '(', 'N', 'U', 'L', 'L', ')', 0 }; ap->a.a_u32_string = u32_null_string; } break; #endif default: /* Unknown type. */ return -1; } return 0; } freedink-108.4+dfsg/gnulib/lib/fd-hook.c0000644000175000017500000000703712330466613015554 0ustar meme/* Hook for making making file descriptor functions close(), ioctl() extensible. Copyright (C) 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2009. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #include /* Specification. */ #include "fd-hook.h" #include /* Currently, this entire code is only needed for the handling of sockets on native Windows platforms. */ #if WINDOWS_SOCKETS /* The first and last link in the doubly linked list. Initially the list is empty. */ static struct fd_hook anchor = { &anchor, &anchor, NULL, NULL }; int execute_close_hooks (const struct fd_hook *remaining_list, gl_close_fn primary, int fd) { if (remaining_list == &anchor) /* End of list reached. */ return primary (fd); else return remaining_list->private_close_fn (remaining_list->private_next, primary, fd); } int execute_all_close_hooks (gl_close_fn primary, int fd) { return execute_close_hooks (anchor.private_next, primary, fd); } int execute_ioctl_hooks (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg) { if (remaining_list == &anchor) /* End of list reached. */ return primary (fd, request, arg); else return remaining_list->private_ioctl_fn (remaining_list->private_next, primary, fd, request, arg); } int execute_all_ioctl_hooks (gl_ioctl_fn primary, int fd, int request, void *arg) { return execute_ioctl_hooks (anchor.private_next, primary, fd, request, arg); } void register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, struct fd_hook *link) { if (close_hook == NULL) close_hook = execute_close_hooks; if (ioctl_hook == NULL) ioctl_hook = execute_ioctl_hooks; if (link->private_next == NULL && link->private_prev == NULL) { /* Add the link to the doubly linked list. */ link->private_next = anchor.private_next; link->private_prev = &anchor; link->private_close_fn = close_hook; link->private_ioctl_fn = ioctl_hook; anchor.private_next->private_prev = link; anchor.private_next = link; } else { /* The link is already in use. */ if (link->private_close_fn != close_hook || link->private_ioctl_fn != ioctl_hook) abort (); } } void unregister_fd_hook (struct fd_hook *link) { struct fd_hook *next = link->private_next; struct fd_hook *prev = link->private_prev; if (next != NULL && prev != NULL) { /* The link is in use. Remove it from the doubly linked list. */ prev->private_next = next; next->private_prev = prev; /* Clear the link, to mark it unused. */ link->private_next = NULL; link->private_prev = NULL; link->private_close_fn = NULL; link->private_ioctl_fn = NULL; } } #endif freedink-108.4+dfsg/gnulib/lib/vasnprintf.c0000644000175000017500000066474512330466613016436 0ustar meme/* vsprintf with automatic memory allocation. Copyright (C) 1999, 2002-2014 Free Software Foundation, Inc. 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, see . */ /* This file can be parametrized with the following macros: VASNPRINTF The name of the function being defined. FCHAR_T The element type of the format string. DCHAR_T The element type of the destination (result) string. FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters in the format string are ASCII. MUST be set if FCHAR_T and DCHAR_T are not the same type. DIRECTIVE Structure denoting a format directive. Depends on FCHAR_T. DIRECTIVES Structure denoting the set of format directives of a format string. Depends on FCHAR_T. PRINTF_PARSE Function that parses a format string. Depends on FCHAR_T. DCHAR_CPY memcpy like function for DCHAR_T[] arrays. DCHAR_SET memset like function for DCHAR_T[] arrays. DCHAR_MBSNLEN mbsnlen like function for DCHAR_T[] arrays. SNPRINTF The system's snprintf (or similar) function. This may be either snprintf or swprintf. TCHAR_T The element type of the argument and result string of the said SNPRINTF function. This may be either char or wchar_t. The code exploits that sizeof (TCHAR_T) | sizeof (DCHAR_T) and alignof (TCHAR_T) <= alignof (DCHAR_T). DCHAR_IS_TCHAR Set to 1 if DCHAR_T and TCHAR_T are the same type. DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[]. DCHAR_IS_UINT8_T Set to 1 if DCHAR_T is uint8_t. DCHAR_IS_UINT16_T Set to 1 if DCHAR_T is uint16_t. DCHAR_IS_UINT32_T Set to 1 if DCHAR_T is uint32_t. */ /* Tell glibc's to provide a prototype for snprintf(). This must come before because may include , and once has been included, it's too late. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif #ifndef VASNPRINTF # include #endif #ifndef IN_LIBINTL # include #endif /* Specification. */ #ifndef VASNPRINTF # if WIDE_CHAR_VERSION # include "vasnwprintf.h" # else # include "vasnprintf.h" # endif #endif #include /* localeconv() */ #include /* snprintf(), sprintf() */ #include /* abort(), malloc(), realloc(), free() */ #include /* memcpy(), strlen() */ #include /* errno */ #include /* CHAR_BIT */ #include /* DBL_MAX_EXP, LDBL_MAX_EXP */ #if HAVE_NL_LANGINFO # include #endif #ifndef VASNPRINTF # if WIDE_CHAR_VERSION # include "wprintf-parse.h" # else # include "printf-parse.h" # endif #endif /* Checked size_t computations. */ #include "xsize.h" #include "verify.h" #if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL # include # include "float+.h" #endif #if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL # include # include "isnand-nolibm.h" #endif #if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL # include # include "isnanl-nolibm.h" # include "fpucw.h" #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL # include # include "isnand-nolibm.h" # include "printf-frexp.h" #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL # include # include "isnanl-nolibm.h" # include "printf-frexpl.h" # include "fpucw.h" #endif /* Default parameters. */ #ifndef VASNPRINTF # if WIDE_CHAR_VERSION # define VASNPRINTF vasnwprintf # define FCHAR_T wchar_t # define DCHAR_T wchar_t # define TCHAR_T wchar_t # define DCHAR_IS_TCHAR 1 # define DIRECTIVE wchar_t_directive # define DIRECTIVES wchar_t_directives # define PRINTF_PARSE wprintf_parse # define DCHAR_CPY wmemcpy # define DCHAR_SET wmemset # else # define VASNPRINTF vasnprintf # define FCHAR_T char # define DCHAR_T char # define TCHAR_T char # define DCHAR_IS_TCHAR 1 # define DIRECTIVE char_directive # define DIRECTIVES char_directives # define PRINTF_PARSE printf_parse # define DCHAR_CPY memcpy # define DCHAR_SET memset # endif #endif #if WIDE_CHAR_VERSION /* TCHAR_T is wchar_t. */ # define USE_SNPRINTF 1 # if HAVE_DECL__SNWPRINTF /* On Windows, the function swprintf() has a different signature than on Unix; we use the function _snwprintf() or - on mingw - snwprintf() instead. The mingw function snwprintf() has fewer bugs than the MSVCRT function _snwprintf(), so prefer that. */ # if defined __MINGW32__ # define SNPRINTF snwprintf # else # define SNPRINTF _snwprintf # endif # else /* Unix. */ # define SNPRINTF swprintf # endif #else /* TCHAR_T is char. */ /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'. But don't use it on BeOS, since BeOS snprintf produces no output if the size argument is >= 0x3000000. Also don't use it on Linux libc5, since there snprintf with size = 1 writes any output without bounds, like sprintf. */ # if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && !(__GNU_LIBRARY__ == 1) # define USE_SNPRINTF 1 # else # define USE_SNPRINTF 0 # endif # if HAVE_DECL__SNPRINTF /* Windows. The mingw function snprintf() has fewer bugs than the MSVCRT function _snprintf(), so prefer that. */ # if defined __MINGW32__ # define SNPRINTF snprintf /* Here we need to call the native snprintf, not rpl_snprintf. */ # undef snprintf # else # define SNPRINTF _snprintf # endif # else /* Unix. */ # define SNPRINTF snprintf /* Here we need to call the native snprintf, not rpl_snprintf. */ # undef snprintf # endif #endif /* Here we need to call the native sprintf, not rpl_sprintf. */ #undef sprintf /* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized" warnings in this file. Use -Dlint to suppress them. */ #ifdef lint # define IF_LINT(Code) Code #else # define IF_LINT(Code) /* empty */ #endif /* Avoid some warnings from "gcc -Wshadow". This file doesn't use the exp() and remainder() functions. */ #undef exp #define exp expo #undef remainder #define remainder rem #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && !WIDE_CHAR_VERSION # if (HAVE_STRNLEN && !defined _AIX) # define local_strnlen strnlen # else # ifndef local_strnlen_defined # define local_strnlen_defined 1 static size_t local_strnlen (const char *string, size_t maxlen) { const char *end = memchr (string, '\0', maxlen); return end ? (size_t) (end - string) : maxlen; } # endif # endif #endif #if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T # if HAVE_WCSLEN # define local_wcslen wcslen # else /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid a dependency towards this library, here is a local substitute. Define this substitute only once, even if this file is included twice in the same compilation unit. */ # ifndef local_wcslen_defined # define local_wcslen_defined 1 static size_t local_wcslen (const wchar_t *s) { const wchar_t *ptr; for (ptr = s; *ptr != (wchar_t) 0; ptr++) ; return ptr - s; } # endif # endif #endif #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && HAVE_WCHAR_T && WIDE_CHAR_VERSION # if HAVE_WCSNLEN # define local_wcsnlen wcsnlen # else # ifndef local_wcsnlen_defined # define local_wcsnlen_defined 1 static size_t local_wcsnlen (const wchar_t *s, size_t maxlen) { const wchar_t *ptr; for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--) ; return ptr - s; } # endif # endif #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL /* Determine the decimal-point character according to the current locale. */ # ifndef decimal_point_char_defined # define decimal_point_char_defined 1 static char decimal_point_char (void) { const char *point; /* Determine it in a multithread-safe way. We know nl_langinfo is multithread-safe on glibc systems and Mac OS X systems, but is not required to be multithread-safe by POSIX. sprintf(), however, is multithread-safe. localeconv() is rarely multithread-safe. */ # if HAVE_NL_LANGINFO && (__GLIBC__ || defined __UCLIBC__ || (defined __APPLE__ && defined __MACH__)) point = nl_langinfo (RADIXCHAR); # elif 1 char pointbuf[5]; sprintf (pointbuf, "%#.0f", 1.0); point = &pointbuf[1]; # else point = localeconv () -> decimal_point; # endif /* The decimal point is always a single byte: either '.' or ','. */ return (point[0] != '\0' ? point[0] : '.'); } # endif #endif #if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL /* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ static int is_infinite_or_zero (double x) { return isnand (x) || x + x == x; } #endif #if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL /* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ static int is_infinite_or_zerol (long double x) { return isnanl (x) || x + x == x; } #endif #if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL /* Converting 'long double' to decimal without rare rounding bugs requires real bignums. We use the naming conventions of GNU gmp, but vastly simpler (and slower) algorithms. */ typedef unsigned int mp_limb_t; # define GMP_LIMB_BITS 32 verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS); typedef unsigned long long mp_twolimb_t; # define GMP_TWOLIMB_BITS 64 verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS); /* Representation of a bignum >= 0. */ typedef struct { size_t nlimbs; mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc(). */ } mpn_t; /* Compute the product of two bignums >= 0. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * multiply (mpn_t src1, mpn_t src2, mpn_t *dest) { const mp_limb_t *p1; const mp_limb_t *p2; size_t len1; size_t len2; if (src1.nlimbs <= src2.nlimbs) { len1 = src1.nlimbs; p1 = src1.limbs; len2 = src2.nlimbs; p2 = src2.limbs; } else { len1 = src2.nlimbs; p1 = src2.limbs; len2 = src1.nlimbs; p2 = src1.limbs; } /* Now 0 <= len1 <= len2. */ if (len1 == 0) { /* src1 or src2 is zero. */ dest->nlimbs = 0; dest->limbs = (mp_limb_t *) malloc (1); } else { /* Here 1 <= len1 <= len2. */ size_t dlen; mp_limb_t *dp; size_t k, i, j; dlen = len1 + len2; dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t)); if (dp == NULL) return NULL; for (k = len2; k > 0; ) dp[--k] = 0; for (i = 0; i < len1; i++) { mp_limb_t digit1 = p1[i]; mp_twolimb_t carry = 0; for (j = 0; j < len2; j++) { mp_limb_t digit2 = p2[j]; carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; carry += dp[i + j]; dp[i + j] = (mp_limb_t) carry; carry = carry >> GMP_LIMB_BITS; } dp[i + len2] = (mp_limb_t) carry; } /* Normalise. */ while (dlen > 0 && dp[dlen - 1] == 0) dlen--; dest->nlimbs = dlen; dest->limbs = dp; } return dest->limbs; } /* Compute the quotient of a bignum a >= 0 and a bignum b > 0. a is written as a = q * b + r with 0 <= r < b. q is the quotient, r the remainder. Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd, q is incremented. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * divide (mpn_t a, mpn_t b, mpn_t *q) { /* Algorithm: First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]] with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS). If m=n=1, perform a single-precision division: r:=0, j:=m, while j>0 do {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j = = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r=n>1, perform a multiple-precision division: We have a/b < beta^(m-n+1). s:=intDsize-1-(highest bit in b[n-1]), 0<=s=beta/2. For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).} Compute q* : q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]). In case of overflow (q* >= beta) set q* := beta-1. Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2] and c3 := b[n-2] * q*. {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow occurred. Furthermore 0 <= c3 < beta^2. If there was overflow and r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2, the next test can be skipped.} While c3 > c2, {Here 0 <= c2 < c3 < beta^2} Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2]. If q* > 0: Put r := r - b * q* * beta^j. In detail: [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]]. hence: u:=0, for i:=0 to n-1 do u := u + q* * b[i], r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry), u:=u div beta (+ 1, if carry in subtraction) r[n+j]:=r[n+j]-u. {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1 < q* + 1 <= beta, the carry u does not overflow.} If a negative carry occurs, put q* := q* - 1 and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]]. Set q[j] := q*. Normalise [q[m-n],..,q[0]]; this yields the quotient q. Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the rest r. The room for q[j] can be allocated at the memory location of r[n+j]. Finally, round-to-even: Shift r left by 1 bit. If r > b or if r = b and q[0] is odd, q := q+1. */ const mp_limb_t *a_ptr = a.limbs; size_t a_len = a.nlimbs; const mp_limb_t *b_ptr = b.limbs; size_t b_len = b.nlimbs; mp_limb_t *roomptr; mp_limb_t *tmp_roomptr = NULL; mp_limb_t *q_ptr; size_t q_len; mp_limb_t *r_ptr; size_t r_len; /* Allocate room for a_len+2 digits. (Need a_len+1 digits for the real division and 1 more digit for the final rounding of q.) */ roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t)); if (roomptr == NULL) return NULL; /* Normalise a. */ while (a_len > 0 && a_ptr[a_len - 1] == 0) a_len--; /* Normalise b. */ for (;;) { if (b_len == 0) /* Division by zero. */ abort (); if (b_ptr[b_len - 1] == 0) b_len--; else break; } /* Here m = a_len >= 0 and n = b_len > 0. */ if (a_len < b_len) { /* m beta^(m-2) <= a/b < beta^m */ r_ptr = roomptr; q_ptr = roomptr + 1; { mp_limb_t den = b_ptr[0]; mp_limb_t remainder = 0; const mp_limb_t *sourceptr = a_ptr + a_len; mp_limb_t *destptr = q_ptr + a_len; size_t count; for (count = a_len; count > 0; count--) { mp_twolimb_t num = ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr; *--destptr = num / den; remainder = num % den; } /* Normalise and store r. */ if (remainder > 0) { r_ptr[0] = remainder; r_len = 1; } else r_len = 0; /* Normalise q. */ q_len = a_len; if (q_ptr[q_len - 1] == 0) q_len--; } } else { /* n>1: multiple precision division. beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n ==> beta^(m-n-1) <= a/b < beta^(m-n+1). */ /* Determine s. */ size_t s; { mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */ /* Determine s = GMP_LIMB_BITS - integer_length (msd). Code copied from gnulib's integer_length.c. */ # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) s = __builtin_clz (msd); # else # if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT if (GMP_LIMB_BITS <= DBL_MANT_BIT) { /* Use 'double' operations. Assumes an IEEE 754 'double' implementation. */ # define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7) # define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1) # define NWORDS \ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) union { double value; unsigned int word[NWORDS]; } m; /* Use a single integer to floating-point conversion. */ m.value = msd; s = GMP_LIMB_BITS - (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK) - DBL_EXP_BIAS); } else # undef NWORDS # endif { s = 31; if (msd >= 0x10000) { msd = msd >> 16; s -= 16; } if (msd >= 0x100) { msd = msd >> 8; s -= 8; } if (msd >= 0x10) { msd = msd >> 4; s -= 4; } if (msd >= 0x4) { msd = msd >> 2; s -= 2; } if (msd >= 0x2) { msd = msd >> 1; s -= 1; } } # endif } /* 0 <= s < GMP_LIMB_BITS. Copy b, shifting it left by s bits. */ if (s > 0) { tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t)); if (tmp_roomptr == NULL) { free (roomptr); return NULL; } { const mp_limb_t *sourceptr = b_ptr; mp_limb_t *destptr = tmp_roomptr; mp_twolimb_t accu = 0; size_t count; for (count = b_len; count > 0; count--) { accu += (mp_twolimb_t) *sourceptr++ << s; *destptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } /* accu must be zero, since that was how s was determined. */ if (accu != 0) abort (); } b_ptr = tmp_roomptr; } /* Copy a, shifting it left by s bits, yields r. Memory layout: At the beginning: r = roomptr[0..a_len], at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len] */ r_ptr = roomptr; if (s == 0) { memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t)); r_ptr[a_len] = 0; } else { const mp_limb_t *sourceptr = a_ptr; mp_limb_t *destptr = r_ptr; mp_twolimb_t accu = 0; size_t count; for (count = a_len; count > 0; count--) { accu += (mp_twolimb_t) *sourceptr++ << s; *destptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } *destptr++ = (mp_limb_t) accu; } q_ptr = roomptr + b_len; q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */ { size_t j = a_len - b_len; /* m-n */ mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */ mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */ mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */ ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd; /* Division loop, traversed m-n+1 times. j counts down, b is unchanged, beta/2 <= b[n-1] < beta. */ for (;;) { mp_limb_t q_star; mp_limb_t c1; if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */ { /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow. */ mp_twolimb_t num = ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS) | r_ptr[j + b_len - 1]; q_star = num / b_msd; c1 = num % b_msd; } else { /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1]. */ q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */ /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) {<= beta !}. If yes, jump directly to the subtraction loop. (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */ if (r_ptr[j + b_len] > b_msd || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd) /* r[j+n] >= b[n-1]+1 or r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a carry. */ goto subtract; } /* q_star = q*, c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, 0, decrease it by b[n-1]*beta+b[n-2]. Because of b[n-1]*beta+b[n-2] >= beta^2/2 this can happen only twice. */ if (c3 > c2) { q_star = q_star - 1; /* q* := q* - 1 */ if (c3 - c2 > b_msdd) q_star = q_star - 1; /* q* := q* - 1 */ } } if (q_star > 0) subtract: { /* Subtract r := r - b * q* * beta^j. */ mp_limb_t cr; { const mp_limb_t *sourceptr = b_ptr; mp_limb_t *destptr = r_ptr + j; mp_twolimb_t carry = 0; size_t count; for (count = b_len; count > 0; count--) { /* Here 0 <= carry <= q*. */ carry = carry + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++ + (mp_limb_t) ~(*destptr); /* Here 0 <= carry <= beta*q* + beta-1. */ *destptr++ = ~(mp_limb_t) carry; carry = carry >> GMP_LIMB_BITS; /* <= q* */ } cr = (mp_limb_t) carry; } /* Subtract cr from r_ptr[j + b_len], then forget about r_ptr[j + b_len]. */ if (cr > r_ptr[j + b_len]) { /* Subtraction gave a carry. */ q_star = q_star - 1; /* q* := q* - 1 */ /* Add b back. */ { const mp_limb_t *sourceptr = b_ptr; mp_limb_t *destptr = r_ptr + j; mp_limb_t carry = 0; size_t count; for (count = b_len; count > 0; count--) { mp_limb_t source1 = *sourceptr++; mp_limb_t source2 = *destptr; *destptr++ = source1 + source2 + carry; carry = (carry ? source1 >= (mp_limb_t) ~source2 : source1 > (mp_limb_t) ~source2); } } /* Forget about the carry and about r[j+n]. */ } } /* q* is determined. Store it as q[j]. */ q_ptr[j] = q_star; if (j == 0) break; j--; } } r_len = b_len; /* Normalise q. */ if (q_ptr[q_len - 1] == 0) q_len--; # if 0 /* Not needed here, since we need r only to compare it with b/2, and b is shifted left by s bits. */ /* Shift r right by s bits. */ if (s > 0) { mp_limb_t ptr = r_ptr + r_len; mp_twolimb_t accu = 0; size_t count; for (count = r_len; count > 0; count--) { accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS; accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s); *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS); } } # endif /* Normalise r. */ while (r_len > 0 && r_ptr[r_len - 1] == 0) r_len--; } /* Compare r << 1 with b. */ if (r_len > b_len) goto increment_q; { size_t i; for (i = b_len;;) { mp_limb_t r_i = (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0) | (i < r_len ? r_ptr[i] << 1 : 0); mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0); if (r_i > b_i) goto increment_q; if (r_i < b_i) goto keep_q; if (i == 0) break; i--; } } if (q_len > 0 && ((q_ptr[0] & 1) != 0)) /* q is odd. */ increment_q: { size_t i; for (i = 0; i < q_len; i++) if (++(q_ptr[i]) != 0) goto keep_q; q_ptr[q_len++] = 1; } keep_q: if (tmp_roomptr != NULL) free (tmp_roomptr); q->limbs = q_ptr; q->nlimbs = q_len; return roomptr; } /* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal representation. Destroys the contents of a. Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * convert_to_decimal (mpn_t a, size_t extra_zeroes) { mp_limb_t *a_ptr = a.limbs; size_t a_len = a.nlimbs; /* 0.03345 is slightly larger than log(2)/(9*log(10)). */ size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1); char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes)); if (c_ptr != NULL) { char *d_ptr = c_ptr; for (; extra_zeroes > 0; extra_zeroes--) *d_ptr++ = '0'; while (a_len > 0) { /* Divide a by 10^9, in-place. */ mp_limb_t remainder = 0; mp_limb_t *ptr = a_ptr + a_len; size_t count; for (count = a_len; count > 0; count--) { mp_twolimb_t num = ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr; *ptr = num / 1000000000; remainder = num % 1000000000; } /* Store the remainder as 9 decimal digits. */ for (count = 9; count > 0; count--) { *d_ptr++ = '0' + (remainder % 10); remainder = remainder / 10; } /* Normalize a. */ if (a_ptr[a_len - 1] == 0) a_len--; } /* Remove leading zeroes. */ while (d_ptr > c_ptr && d_ptr[-1] == '0') d_ptr--; /* But keep at least one zero. */ if (d_ptr == c_ptr) *d_ptr++ = '0'; /* Terminate the string. */ *d_ptr = '\0'; } return c_ptr; } # if NEED_PRINTF_LONG_DOUBLE /* Assuming x is finite and >= 0: write x as x = 2^e * m, where m is a bignum. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * decode_long_double (long double x, int *ep, mpn_t *mp) { mpn_t m; int exp; long double y; size_t i; /* Allocate memory for result. */ m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); if (m.limbs == NULL) return NULL; /* Split into exponential part and mantissa. */ y = frexpl (x, &exp); if (!(y >= 0.0L && y < 1.0L)) abort (); /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the latter is an integer. */ /* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs. I'm not sure whether it's safe to cast a 'long double' value between 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only 'long double' values between 0 and 2^16 (to 'unsigned int' or 'int', doesn't matter). */ # if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0 # if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2)); hi = (int) y; y -= hi; if (!(y >= 0.0L && y < 1.0L)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0L && y < 1.0L)) abort (); m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; } # else { mp_limb_t d; y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS); d = (int) y; y -= d; if (!(y >= 0.0L && y < 1.0L)) abort (); m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d; } # endif # endif for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); hi = (int) y; y -= hi; if (!(y >= 0.0L && y < 1.0L)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0L && y < 1.0L)) abort (); m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; } # if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess precision. */ if (!(y == 0.0L)) abort (); # endif /* Normalise. */ while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) m.nlimbs--; *mp = m; *ep = exp - LDBL_MANT_BIT; return m.limbs; } # endif # if NEED_PRINTF_DOUBLE /* Assuming x is finite and >= 0: write x as x = 2^e * m, where m is a bignum. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * decode_double (double x, int *ep, mpn_t *mp) { mpn_t m; int exp; double y; size_t i; /* Allocate memory for result. */ m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); if (m.limbs == NULL) return NULL; /* Split into exponential part and mantissa. */ y = frexp (x, &exp); if (!(y >= 0.0 && y < 1.0)) abort (); /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the latter is an integer. */ /* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs. I'm not sure whether it's safe to cast a 'double' value between 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only 'double' values between 0 and 2^16 (to 'unsigned int' or 'int', doesn't matter). */ # if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0 # if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2)); hi = (int) y; y -= hi; if (!(y >= 0.0 && y < 1.0)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0 && y < 1.0)) abort (); m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; } # else { mp_limb_t d; y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS); d = (int) y; y -= d; if (!(y >= 0.0 && y < 1.0)) abort (); m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d; } # endif # endif for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); hi = (int) y; y -= hi; if (!(y >= 0.0 && y < 1.0)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0 && y < 1.0)) abort (); m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; } if (!(y == 0.0)) abort (); /* Normalise. */ while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) m.nlimbs--; *mp = m; *ep = exp - DBL_MANT_BIT; return m.limbs; } # endif /* Assuming x = 2^e * m is finite and >= 0, and n is an integer: Returns the decimal representation of round (x * 10^n). Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n) { int s; size_t extra_zeroes; unsigned int abs_n; unsigned int abs_s; mp_limb_t *pow5_ptr; size_t pow5_len; unsigned int s_limbs; unsigned int s_bits; mpn_t pow5; mpn_t z; void *z_memory; char *digits; if (memory == NULL) return NULL; /* x = 2^e * m, hence y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m) = round (2^s * 5^n * m). */ s = e + n; extra_zeroes = 0; /* Factor out a common power of 10 if possible. */ if (s > 0 && n > 0) { extra_zeroes = (s < n ? s : n); s -= extra_zeroes; n -= extra_zeroes; } /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes. Before converting to decimal, we need to compute z = round (2^s * 5^n * m). */ /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same sign. 2.322 is slightly larger than log(5)/log(2). */ abs_n = (n >= 0 ? n : -n); abs_s = (s >= 0 ? s : -s); pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1 + abs_s / GMP_LIMB_BITS + 1) * sizeof (mp_limb_t)); if (pow5_ptr == NULL) { free (memory); return NULL; } /* Initialize with 1. */ pow5_ptr[0] = 1; pow5_len = 1; /* Multiply with 5^|n|. */ if (abs_n > 0) { static mp_limb_t const small_pow5[13 + 1] = { 1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125 }; unsigned int n13; for (n13 = 0; n13 <= abs_n; n13 += 13) { mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13]; size_t j; mp_twolimb_t carry = 0; for (j = 0; j < pow5_len; j++) { mp_limb_t digit2 = pow5_ptr[j]; carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; pow5_ptr[j] = (mp_limb_t) carry; carry = carry >> GMP_LIMB_BITS; } if (carry > 0) pow5_ptr[pow5_len++] = (mp_limb_t) carry; } } s_limbs = abs_s / GMP_LIMB_BITS; s_bits = abs_s % GMP_LIMB_BITS; if (n >= 0 ? s >= 0 : s <= 0) { /* Multiply with 2^|s|. */ if (s_bits > 0) { mp_limb_t *ptr = pow5_ptr; mp_twolimb_t accu = 0; size_t count; for (count = pow5_len; count > 0; count--) { accu += (mp_twolimb_t) *ptr << s_bits; *ptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } if (accu > 0) { *ptr = (mp_limb_t) accu; pow5_len++; } } if (s_limbs > 0) { size_t count; for (count = pow5_len; count > 0;) { count--; pow5_ptr[s_limbs + count] = pow5_ptr[count]; } for (count = s_limbs; count > 0;) { count--; pow5_ptr[count] = 0; } pow5_len += s_limbs; } pow5.limbs = pow5_ptr; pow5.nlimbs = pow5_len; if (n >= 0) { /* Multiply m with pow5. No division needed. */ z_memory = multiply (m, pow5, &z); } else { /* Divide m by pow5 and round. */ z_memory = divide (m, pow5, &z); } } else { pow5.limbs = pow5_ptr; pow5.nlimbs = pow5_len; if (n >= 0) { /* n >= 0, s < 0. Multiply m with pow5, then divide by 2^|s|. */ mpn_t numerator; mpn_t denominator; void *tmp_memory; tmp_memory = multiply (m, pow5, &numerator); if (tmp_memory == NULL) { free (pow5_ptr); free (memory); return NULL; } /* Construct 2^|s|. */ { mp_limb_t *ptr = pow5_ptr + pow5_len; size_t i; for (i = 0; i < s_limbs; i++) ptr[i] = 0; ptr[s_limbs] = (mp_limb_t) 1 << s_bits; denominator.limbs = ptr; denominator.nlimbs = s_limbs + 1; } z_memory = divide (numerator, denominator, &z); free (tmp_memory); } else { /* n < 0, s > 0. Multiply m with 2^s, then divide by pow5. */ mpn_t numerator; mp_limb_t *num_ptr; num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1) * sizeof (mp_limb_t)); if (num_ptr == NULL) { free (pow5_ptr); free (memory); return NULL; } { mp_limb_t *destptr = num_ptr; { size_t i; for (i = 0; i < s_limbs; i++) *destptr++ = 0; } if (s_bits > 0) { const mp_limb_t *sourceptr = m.limbs; mp_twolimb_t accu = 0; size_t count; for (count = m.nlimbs; count > 0; count--) { accu += (mp_twolimb_t) *sourceptr++ << s_bits; *destptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } if (accu > 0) *destptr++ = (mp_limb_t) accu; } else { const mp_limb_t *sourceptr = m.limbs; size_t count; for (count = m.nlimbs; count > 0; count--) *destptr++ = *sourceptr++; } numerator.limbs = num_ptr; numerator.nlimbs = destptr - num_ptr; } z_memory = divide (numerator, pow5, &z); free (num_ptr); } } free (pow5_ptr); free (memory); /* Here y = round (x * 10^n) = z * 10^extra_zeroes. */ if (z_memory == NULL) return NULL; digits = convert_to_decimal (z, extra_zeroes); free (z_memory); return digits; } # if NEED_PRINTF_LONG_DOUBLE /* Assuming x is finite and >= 0, and n is an integer: Returns the decimal representation of round (x * 10^n). Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * scale10_round_decimal_long_double (long double x, int n) { int e IF_LINT(= 0); mpn_t m; void *memory = decode_long_double (x, &e, &m); return scale10_round_decimal_decoded (e, m, memory, n); } # endif # if NEED_PRINTF_DOUBLE /* Assuming x is finite and >= 0, and n is an integer: Returns the decimal representation of round (x * 10^n). Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * scale10_round_decimal_double (double x, int n) { int e IF_LINT(= 0); mpn_t m; void *memory = decode_double (x, &e, &m); return scale10_round_decimal_decoded (e, m, memory, n); } # endif # if NEED_PRINTF_LONG_DOUBLE /* Assuming x is finite and > 0: Return an approximation for n with 10^n <= x < 10^(n+1). The approximation is usually the right n, but may be off by 1 sometimes. */ static int floorlog10l (long double x) { int exp; long double y; double z; double l; /* Split into exponential part and mantissa. */ y = frexpl (x, &exp); if (!(y >= 0.0L && y < 1.0L)) abort (); if (y == 0.0L) return INT_MIN; if (y < 0.5L) { while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) { y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); exp -= GMP_LIMB_BITS; } if (y < (1.0L / (1 << 16))) { y *= 1.0L * (1 << 16); exp -= 16; } if (y < (1.0L / (1 << 8))) { y *= 1.0L * (1 << 8); exp -= 8; } if (y < (1.0L / (1 << 4))) { y *= 1.0L * (1 << 4); exp -= 4; } if (y < (1.0L / (1 << 2))) { y *= 1.0L * (1 << 2); exp -= 2; } if (y < (1.0L / (1 << 1))) { y *= 1.0L * (1 << 1); exp -= 1; } } if (!(y >= 0.5L && y < 1.0L)) abort (); /* Compute an approximation for l = log2(x) = exp + log2(y). */ l = exp; z = y; if (z < 0.70710678118654752444) { z *= 1.4142135623730950488; l -= 0.5; } if (z < 0.8408964152537145431) { z *= 1.1892071150027210667; l -= 0.25; } if (z < 0.91700404320467123175) { z *= 1.0905077326652576592; l -= 0.125; } if (z < 0.9576032806985736469) { z *= 1.0442737824274138403; l -= 0.0625; } /* Now 0.95 <= z <= 1.01. */ z = 1 - z; /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) Four terms are enough to get an approximation with error < 10^-7. */ l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); /* Finally multiply with log(2)/log(10), yields an approximation for log10(x). */ l *= 0.30102999566398119523; /* Round down to the next integer. */ return (int) l + (l < 0 ? -1 : 0); } # endif # if NEED_PRINTF_DOUBLE /* Assuming x is finite and > 0: Return an approximation for n with 10^n <= x < 10^(n+1). The approximation is usually the right n, but may be off by 1 sometimes. */ static int floorlog10 (double x) { int exp; double y; double z; double l; /* Split into exponential part and mantissa. */ y = frexp (x, &exp); if (!(y >= 0.0 && y < 1.0)) abort (); if (y == 0.0) return INT_MIN; if (y < 0.5) { while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) { y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); exp -= GMP_LIMB_BITS; } if (y < (1.0 / (1 << 16))) { y *= 1.0 * (1 << 16); exp -= 16; } if (y < (1.0 / (1 << 8))) { y *= 1.0 * (1 << 8); exp -= 8; } if (y < (1.0 / (1 << 4))) { y *= 1.0 * (1 << 4); exp -= 4; } if (y < (1.0 / (1 << 2))) { y *= 1.0 * (1 << 2); exp -= 2; } if (y < (1.0 / (1 << 1))) { y *= 1.0 * (1 << 1); exp -= 1; } } if (!(y >= 0.5 && y < 1.0)) abort (); /* Compute an approximation for l = log2(x) = exp + log2(y). */ l = exp; z = y; if (z < 0.70710678118654752444) { z *= 1.4142135623730950488; l -= 0.5; } if (z < 0.8408964152537145431) { z *= 1.1892071150027210667; l -= 0.25; } if (z < 0.91700404320467123175) { z *= 1.0905077326652576592; l -= 0.125; } if (z < 0.9576032806985736469) { z *= 1.0442737824274138403; l -= 0.0625; } /* Now 0.95 <= z <= 1.01. */ z = 1 - z; /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) Four terms are enough to get an approximation with error < 10^-7. */ l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); /* Finally multiply with log(2)/log(10), yields an approximation for log10(x). */ l *= 0.30102999566398119523; /* Round down to the next integer. */ return (int) l + (l < 0 ? -1 : 0); } # endif /* Tests whether a string of digits consists of exactly PRECISION zeroes and a single '1' digit. */ static int is_borderline (const char *digits, size_t precision) { for (; precision > 0; precision--, digits++) if (*digits != '0') return 0; if (*digits != '1') return 0; digits++; return *digits == '\0'; } #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 /* Use a different function name, to make it possible that the 'wchar_t' parametrization and the 'char' parametrization get compiled in the same translation unit. */ # if WIDE_CHAR_VERSION # define MAX_ROOM_NEEDED wmax_room_needed # else # define MAX_ROOM_NEEDED max_room_needed # endif /* Returns the number of TCHAR_T units needed as temporary space for the result of sprintf or SNPRINTF of a single conversion directive. */ static size_t MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion, arg_type type, int flags, size_t width, int has_precision, size_t precision, int pad_ourselves) { size_t tmp_length; switch (conversion) { case 'd': case 'i': case 'u': # if HAVE_LONG_LONG_INT if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) tmp_length = (unsigned int) (sizeof (unsigned long long) * CHAR_BIT * 0.30103 /* binary -> decimal */ ) + 1; /* turn floor into ceil */ else # endif if (type == TYPE_LONGINT || type == TYPE_ULONGINT) tmp_length = (unsigned int) (sizeof (unsigned long) * CHAR_BIT * 0.30103 /* binary -> decimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (sizeof (unsigned int) * CHAR_BIT * 0.30103 /* binary -> decimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Multiply by 2, as an estimate for FLAG_GROUP. */ tmp_length = xsum (tmp_length, tmp_length); /* Add 1, to account for a leading sign. */ tmp_length = xsum (tmp_length, 1); break; case 'o': # if HAVE_LONG_LONG_INT if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) tmp_length = (unsigned int) (sizeof (unsigned long long) * CHAR_BIT * 0.333334 /* binary -> octal */ ) + 1; /* turn floor into ceil */ else # endif if (type == TYPE_LONGINT || type == TYPE_ULONGINT) tmp_length = (unsigned int) (sizeof (unsigned long) * CHAR_BIT * 0.333334 /* binary -> octal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (sizeof (unsigned int) * CHAR_BIT * 0.333334 /* binary -> octal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Add 1, to account for a leading sign. */ tmp_length = xsum (tmp_length, 1); break; case 'x': case 'X': # if HAVE_LONG_LONG_INT if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) tmp_length = (unsigned int) (sizeof (unsigned long long) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1; /* turn floor into ceil */ else # endif if (type == TYPE_LONGINT || type == TYPE_ULONGINT) tmp_length = (unsigned int) (sizeof (unsigned long) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (sizeof (unsigned int) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Add 2, to account for a leading sign or alternate form. */ tmp_length = xsum (tmp_length, 2); break; case 'f': case 'F': if (type == TYPE_LONGDOUBLE) tmp_length = (unsigned int) (LDBL_MAX_EXP * 0.30103 /* binary -> decimal */ * 2 /* estimate for FLAG_GROUP */ ) + 1 /* turn floor into ceil */ + 10; /* sign, decimal point etc. */ else tmp_length = (unsigned int) (DBL_MAX_EXP * 0.30103 /* binary -> decimal */ * 2 /* estimate for FLAG_GROUP */ ) + 1 /* turn floor into ceil */ + 10; /* sign, decimal point etc. */ tmp_length = xsum (tmp_length, precision); break; case 'e': case 'E': case 'g': case 'G': tmp_length = 12; /* sign, decimal point, exponent etc. */ tmp_length = xsum (tmp_length, precision); break; case 'a': case 'A': if (type == TYPE_LONGDOUBLE) tmp_length = (unsigned int) (LDBL_DIG * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (DBL_DIG * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Account for sign, decimal point etc. */ tmp_length = xsum (tmp_length, 12); break; case 'c': # if HAVE_WINT_T && !WIDE_CHAR_VERSION if (type == TYPE_WIDE_CHAR) tmp_length = MB_CUR_MAX; else # endif tmp_length = 1; break; case 's': # if HAVE_WCHAR_T if (type == TYPE_WIDE_STRING) { # if WIDE_CHAR_VERSION /* ISO C says about %ls in fwprintf: "If the precision is not specified or is greater than the size of the array, the array shall contain a null wide character." So if there is a precision, we must not use wcslen. */ const wchar_t *arg = ap->arg[arg_index].a.a_wide_string; if (has_precision) tmp_length = local_wcsnlen (arg, precision); else tmp_length = local_wcslen (arg); # else /* ISO C says about %ls in fprintf: "If a precision is specified, no more than that many bytes are written (including shift sequences, if any), and the array shall contain a null wide character if, to equal the multibyte character sequence length given by the precision, the function would need to access a wide character one past the end of the array." So if there is a precision, we must not use wcslen. */ /* This case has already been handled separately in VASNPRINTF. */ abort (); # endif } else # endif { # if WIDE_CHAR_VERSION /* ISO C says about %s in fwprintf: "If the precision is not specified or is greater than the size of the converted array, the converted array shall contain a null wide character." So if there is a precision, we must not use strlen. */ /* This case has already been handled separately in VASNPRINTF. */ abort (); # else /* ISO C says about %s in fprintf: "If the precision is not specified or greater than the size of the array, the array shall contain a null character." So if there is a precision, we must not use strlen. */ const char *arg = ap->arg[arg_index].a.a_string; if (has_precision) tmp_length = local_strnlen (arg, precision); else tmp_length = strlen (arg); # endif } break; case 'p': tmp_length = (unsigned int) (sizeof (void *) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1 /* turn floor into ceil */ + 2; /* account for leading 0x */ break; default: abort (); } if (!pad_ourselves) { # if ENABLE_UNISTDIO /* Padding considers the number of characters, therefore the number of elements after padding may be > max (tmp_length, width) but is certainly <= tmp_length + width. */ tmp_length = xsum (tmp_length, width); # else /* Padding considers the number of elements, says POSIX. */ if (tmp_length < width) tmp_length = width; # endif } tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ return tmp_length; } #endif DCHAR_T * VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, const FCHAR_T *format, va_list args) { DIRECTIVES d; arguments a; if (PRINTF_PARSE (format, &d, &a) < 0) /* errno is already set. */ return NULL; #define CLEANUP() \ if (d.dir != d.direct_alloc_dir) \ free (d.dir); \ if (a.arg != a.direct_alloc_arg) \ free (a.arg); if (PRINTF_FETCHARGS (args, &a) < 0) { CLEANUP (); errno = EINVAL; return NULL; } { size_t buf_neededlength; TCHAR_T *buf; TCHAR_T *buf_malloced; const FCHAR_T *cp; size_t i; DIRECTIVE *dp; /* Output string accumulator. */ DCHAR_T *result; size_t allocated; size_t length; /* Allocate a small buffer that will hold a directive passed to sprintf or snprintf. */ buf_neededlength = xsum4 (7, d.max_width_length, d.max_precision_length, 6); #if HAVE_ALLOCA if (buf_neededlength < 4000 / sizeof (TCHAR_T)) { buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T)); buf_malloced = NULL; } else #endif { size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T)); if (size_overflow_p (buf_memsize)) goto out_of_memory_1; buf = (TCHAR_T *) malloc (buf_memsize); if (buf == NULL) goto out_of_memory_1; buf_malloced = buf; } if (resultbuf != NULL) { result = resultbuf; allocated = *lengthp; } else { result = NULL; allocated = 0; } length = 0; /* Invariants: result is either == resultbuf or == NULL or malloc-allocated. If length > 0, then result != NULL. */ /* Ensures that allocated >= needed. Aborts through a jump to out_of_memory if needed is SIZE_MAX or otherwise too big. */ #define ENSURE_ALLOCATION(needed) \ if ((needed) > allocated) \ { \ size_t memory_size; \ DCHAR_T *memory; \ \ allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ if ((needed) > allocated) \ allocated = (needed); \ memory_size = xtimes (allocated, sizeof (DCHAR_T)); \ if (size_overflow_p (memory_size)) \ goto out_of_memory; \ if (result == resultbuf || result == NULL) \ memory = (DCHAR_T *) malloc (memory_size); \ else \ memory = (DCHAR_T *) realloc (result, memory_size); \ if (memory == NULL) \ goto out_of_memory; \ if (result == resultbuf && length > 0) \ DCHAR_CPY (memory, result, length); \ result = memory; \ } for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) { if (cp != dp->dir_start) { size_t n = dp->dir_start - cp; size_t augmented_length = xsum (length, n); ENSURE_ALLOCATION (augmented_length); /* This copies a piece of FCHAR_T[] into a DCHAR_T[]. Here we need that the format string contains only ASCII characters if FCHAR_T and DCHAR_T are not the same type. */ if (sizeof (FCHAR_T) == sizeof (DCHAR_T)) { DCHAR_CPY (result + length, (const DCHAR_T *) cp, n); length = augmented_length; } else { do result[length++] = (unsigned char) *cp++; while (--n > 0); } } if (i == d.count) break; /* Execute a single directive. */ if (dp->conversion == '%') { size_t augmented_length; if (!(dp->arg_index == ARG_NONE)) abort (); augmented_length = xsum (length, 1); ENSURE_ALLOCATION (augmented_length); result[length] = '%'; length = augmented_length; } else { if (!(dp->arg_index != ARG_NONE)) abort (); if (dp->conversion == 'n') { switch (a.arg[dp->arg_index].type) { case TYPE_COUNT_SCHAR_POINTER: *a.arg[dp->arg_index].a.a_count_schar_pointer = length; break; case TYPE_COUNT_SHORT_POINTER: *a.arg[dp->arg_index].a.a_count_short_pointer = length; break; case TYPE_COUNT_INT_POINTER: *a.arg[dp->arg_index].a.a_count_int_pointer = length; break; case TYPE_COUNT_LONGINT_POINTER: *a.arg[dp->arg_index].a.a_count_longint_pointer = length; break; #if HAVE_LONG_LONG_INT case TYPE_COUNT_LONGLONGINT_POINTER: *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; break; #endif default: abort (); } } #if ENABLE_UNISTDIO /* The unistdio extensions. */ else if (dp->conversion == 'U') { arg_type type = a.arg[dp->arg_index].type; int flags = dp->flags; int has_width; size_t width; int has_precision; size_t precision; has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = (unsigned int) (-arg); } else width = arg; } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } has_precision = 0; precision = 0; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } switch (type) { case TYPE_U8_STRING: { const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string; const uint8_t *arg_end; size_t characters; if (has_precision) { /* Use only PRECISION characters, from the left. */ arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count = u8_strmblen (arg_end); if (count == 0) break; if (count < 0) { if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of characters. */ arg_end = arg; characters = 0; for (;;) { int count = u8_strmblen (arg_end); if (count == 0) break; if (count < 0) { if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + u8_strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (has_width && width > characters && !(dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_UINT8_T { size_t n = arg_end - arg; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_CPY (result + length, arg, n); length += n; } # else { /* Convert. */ DCHAR_T *converted = result + length; size_t converted_len = allocated - length; # if DCHAR_IS_TCHAR /* Convert from UTF-8 to locale encoding. */ converted = u8_conv_to_encoding (locale_charset (), iconveh_question_mark, arg, arg_end - arg, NULL, converted, &converted_len); # else /* Convert from UTF-8 to UTF-16/UTF-32. */ converted = U8_TO_DCHAR (arg, arg_end - arg, converted, &converted_len); # endif if (converted == NULL) { int saved_errno = errno; if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = saved_errno; return NULL; } if (converted != result + length) { ENSURE_ALLOCATION (xsum (length, converted_len)); DCHAR_CPY (result + length, converted, converted_len); free (converted); } length += converted_len; } # endif if (has_width && width > characters && (dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } break; case TYPE_U16_STRING: { const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string; const uint16_t *arg_end; size_t characters; if (has_precision) { /* Use only PRECISION characters, from the left. */ arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count = u16_strmblen (arg_end); if (count == 0) break; if (count < 0) { if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of characters. */ arg_end = arg; characters = 0; for (;;) { int count = u16_strmblen (arg_end); if (count == 0) break; if (count < 0) { if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + u16_strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (has_width && width > characters && !(dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_UINT16_T { size_t n = arg_end - arg; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_CPY (result + length, arg, n); length += n; } # else { /* Convert. */ DCHAR_T *converted = result + length; size_t converted_len = allocated - length; # if DCHAR_IS_TCHAR /* Convert from UTF-16 to locale encoding. */ converted = u16_conv_to_encoding (locale_charset (), iconveh_question_mark, arg, arg_end - arg, NULL, converted, &converted_len); # else /* Convert from UTF-16 to UTF-8/UTF-32. */ converted = U16_TO_DCHAR (arg, arg_end - arg, converted, &converted_len); # endif if (converted == NULL) { int saved_errno = errno; if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = saved_errno; return NULL; } if (converted != result + length) { ENSURE_ALLOCATION (xsum (length, converted_len)); DCHAR_CPY (result + length, converted, converted_len); free (converted); } length += converted_len; } # endif if (has_width && width > characters && (dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } break; case TYPE_U32_STRING: { const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string; const uint32_t *arg_end; size_t characters; if (has_precision) { /* Use only PRECISION characters, from the left. */ arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count = u32_strmblen (arg_end); if (count == 0) break; if (count < 0) { if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of characters. */ arg_end = arg; characters = 0; for (;;) { int count = u32_strmblen (arg_end); if (count == 0) break; if (count < 0) { if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + u32_strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (has_width && width > characters && !(dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_UINT32_T { size_t n = arg_end - arg; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_CPY (result + length, arg, n); length += n; } # else { /* Convert. */ DCHAR_T *converted = result + length; size_t converted_len = allocated - length; # if DCHAR_IS_TCHAR /* Convert from UTF-32 to locale encoding. */ converted = u32_conv_to_encoding (locale_charset (), iconveh_question_mark, arg, arg_end - arg, NULL, converted, &converted_len); # else /* Convert from UTF-32 to UTF-8/UTF-16. */ converted = U32_TO_DCHAR (arg, arg_end - arg, converted, &converted_len); # endif if (converted == NULL) { int saved_errno = errno; if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = saved_errno; return NULL; } if (converted != result + length) { ENSURE_ALLOCATION (xsum (length, converted_len)); DCHAR_CPY (result + length, converted, converted_len); free (converted); } length += converted_len; } # endif if (has_width && width > characters && (dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } break; default: abort (); } } #endif #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T else if (dp->conversion == 's' # if WIDE_CHAR_VERSION && a.arg[dp->arg_index].type != TYPE_WIDE_STRING # else && a.arg[dp->arg_index].type == TYPE_WIDE_STRING # endif ) { /* The normal handling of the 's' directive below requires allocating a temporary buffer. The determination of its length (tmp_length), in the case when a precision is specified, below requires a conversion between a char[] string and a wchar_t[] wide string. It could be done, but we have no guarantee that the implementation of sprintf will use the exactly same algorithm. Without this guarantee, it is possible to have buffer overrun bugs. In order to avoid such bugs, we implement the entire processing of the 's' directive ourselves. */ int flags = dp->flags; int has_width; size_t width; int has_precision; size_t precision; has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = (unsigned int) (-arg); } else width = arg; } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } has_precision = 0; precision = 6; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } # if WIDE_CHAR_VERSION /* %s in vasnwprintf. See the specification of fwprintf. */ { const char *arg = a.arg[dp->arg_index].a.a_string; const char *arg_end; size_t characters; if (has_precision) { /* Use only as many bytes as needed to produce PRECISION wide characters, from the left. */ # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count; # if HAVE_MBRTOWC count = mbrlen (arg_end, MB_CUR_MAX, &state); # else count = mblen (arg_end, MB_CUR_MAX); # endif if (count == 0) /* Found the terminating NUL. */ break; if (count < 0) { /* Invalid or incomplete multibyte character. */ if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of wide characters. */ # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; for (;;) { int count; # if HAVE_MBRTOWC count = mbrlen (arg_end, MB_CUR_MAX, &state); # else count = mblen (arg_end, MB_CUR_MAX); # endif if (count == 0) /* Found the terminating NUL. */ break; if (count < 0) { /* Invalid or incomplete multibyte character. */ if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (has_width && width > characters && !(dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } if (has_precision || has_width) { /* We know the number of wide characters in advance. */ size_t remaining; # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif ENSURE_ALLOCATION (xsum (length, characters)); for (remaining = characters; remaining > 0; remaining--) { wchar_t wc; int count; # if HAVE_MBRTOWC count = mbrtowc (&wc, arg, arg_end - arg, &state); # else count = mbtowc (&wc, arg, arg_end - arg); # endif if (count <= 0) /* mbrtowc not consistent with mbrlen, or mbtowc not consistent with mblen. */ abort (); result[length++] = wc; arg += count; } if (!(arg == arg_end)) abort (); } else { # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif while (arg < arg_end) { wchar_t wc; int count; # if HAVE_MBRTOWC count = mbrtowc (&wc, arg, arg_end - arg, &state); # else count = mbtowc (&wc, arg, arg_end - arg); # endif if (count <= 0) /* mbrtowc not consistent with mbrlen, or mbtowc not consistent with mblen. */ abort (); ENSURE_ALLOCATION (xsum (length, 1)); result[length++] = wc; arg += count; } } if (has_width && width > characters && (dp->flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } # else /* %ls in vasnprintf. See the specification of fprintf. */ { const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; const wchar_t *arg_end; size_t characters; # if !DCHAR_IS_TCHAR /* This code assumes that TCHAR_T is 'char'. */ verify (sizeof (TCHAR_T) == 1); TCHAR_T *tmpsrc; DCHAR_T *tmpdst; size_t tmpdst_len; # endif size_t w; if (has_precision) { /* Use only as many wide characters as needed to produce at most PRECISION bytes, from the left. */ # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; while (precision > 0) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg_end == 0) /* Found the terminating null wide character. */ break; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t count = wcrtomb (cbuf, *arg_end, &state); # else count = wctomb (cbuf, *arg_end); # endif if (count < 0) { /* Cannot convert. */ if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } if (precision < count) break; arg_end++; characters += count; precision -= count; } } # if DCHAR_IS_TCHAR else if (has_width) # else else # endif { /* Use the entire string, and count the number of bytes. */ # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; for (;;) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg_end == 0) /* Found the terminating null wide character. */ break; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t count = wcrtomb (cbuf, *arg_end, &state); # else count = wctomb (cbuf, *arg_end); # endif if (count < 0) { /* Cannot convert. */ if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } arg_end++; characters += count; } } # if DCHAR_IS_TCHAR else { /* Use the entire string. */ arg_end = arg + local_wcslen (arg); /* The number of bytes doesn't matter. */ characters = 0; } # endif # if !DCHAR_IS_TCHAR /* Convert the string into a piece of temporary memory. */ tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T)); if (tmpsrc == NULL) goto out_of_memory; { TCHAR_T *tmpptr = tmpsrc; size_t remaining; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif for (remaining = characters; remaining > 0; ) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t count = wcrtomb (cbuf, *arg, &state); # else count = wctomb (cbuf, *arg); # endif if (count <= 0) /* Inconsistency. */ abort (); memcpy (tmpptr, cbuf, count); tmpptr += count; arg++; remaining -= count; } if (!(arg == arg_end)) abort (); } /* Convert from TCHAR_T[] to DCHAR_T[]. */ tmpdst = DCHAR_CONV_FROM_ENCODING (locale_charset (), iconveh_question_mark, tmpsrc, characters, NULL, NULL, &tmpdst_len); if (tmpdst == NULL) { int saved_errno = errno; free (tmpsrc); if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = saved_errno; return NULL; } free (tmpsrc); # endif if (has_width) { # if ENABLE_UNISTDIO /* Outside POSIX, it's preferable to compare the width against the number of _characters_ of the converted value. */ w = DCHAR_MBSNLEN (result + length, characters); # else /* The width is compared against the number of _bytes_ of the converted value, says POSIX. */ w = characters; # endif } else /* w doesn't matter. */ w = 0; if (has_width && width > w && !(dp->flags & FLAG_LEFT)) { size_t n = width - w; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_TCHAR if (has_precision || has_width) { /* We know the number of bytes in advance. */ size_t remaining; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif ENSURE_ALLOCATION (xsum (length, characters)); for (remaining = characters; remaining > 0; ) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t count = wcrtomb (cbuf, *arg, &state); # else count = wctomb (cbuf, *arg); # endif if (count <= 0) /* Inconsistency. */ abort (); memcpy (result + length, cbuf, count); length += count; arg++; remaining -= count; } if (!(arg == arg_end)) abort (); } else { # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif while (arg < arg_end) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t count = wcrtomb (cbuf, *arg, &state); # else count = wctomb (cbuf, *arg); # endif if (count <= 0) { /* Cannot convert. */ if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EILSEQ; return NULL; } ENSURE_ALLOCATION (xsum (length, count)); memcpy (result + length, cbuf, count); length += count; arg++; } } # else ENSURE_ALLOCATION (xsum (length, tmpdst_len)); DCHAR_CPY (result + length, tmpdst, tmpdst_len); free (tmpdst); length += tmpdst_len; # endif if (has_width && width > w && (dp->flags & FLAG_LEFT)) { size_t n = width - w; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } # endif } #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL else if ((dp->conversion == 'a' || dp->conversion == 'A') # if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE)) && (0 # if NEED_PRINTF_DOUBLE || a.arg[dp->arg_index].type == TYPE_DOUBLE # endif # if NEED_PRINTF_LONG_DOUBLE || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE # endif ) # endif ) { arg_type type = a.arg[dp->arg_index].type; int flags = dp->flags; int has_width; size_t width; int has_precision; size_t precision; size_t tmp_length; DCHAR_T tmpbuf[700]; DCHAR_T *tmp; DCHAR_T *pad_ptr; DCHAR_T *p; has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = (unsigned int) (-arg); } else width = arg; } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } has_precision = 0; precision = 0; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } /* Allocate a temporary buffer of sufficient size. */ if (type == TYPE_LONGDOUBLE) tmp_length = (unsigned int) ((LDBL_DIG + 1) * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) ((DBL_DIG + 1) * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Account for sign, decimal point etc. */ tmp_length = xsum (tmp_length, 12); if (tmp_length < width) tmp_length = width; tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) tmp = tmpbuf; else { size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); if (size_overflow_p (tmp_memsize)) /* Overflow, would lead to out of memory. */ goto out_of_memory; tmp = (DCHAR_T *) malloc (tmp_memsize); if (tmp == NULL) /* Out of memory. */ goto out_of_memory; } pad_ptr = NULL; p = tmp; if (type == TYPE_LONGDOUBLE) { # if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE long double arg = a.arg[dp->arg_index].a.a_longdouble; if (isnanl (arg)) { if (dp->conversion == 'A') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; DECL_LONG_DOUBLE_ROUNDING BEGIN_LONG_DOUBLE_ROUNDING (); if (signbit (arg)) /* arg < 0.0L or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0L && arg + arg == arg) { if (dp->conversion == 'A') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { int exponent; long double mantissa; if (arg > 0.0L) mantissa = printf_frexpl (arg, &exponent); else { exponent = 0; mantissa = 0.0L; } if (has_precision && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1) { /* Round the mantissa. */ long double tail = mantissa; size_t q; for (q = precision; ; q--) { int digit = (int) tail; tail -= digit; if (q == 0) { if (digit & 1 ? tail >= 0.5L : tail > 0.5L) tail = 1 - tail; else tail = - tail; break; } tail *= 16.0L; } if (tail != 0.0L) for (q = precision; q > 0; q--) tail *= 0.0625L; mantissa += tail; } *p++ = '0'; *p++ = dp->conversion - 'A' + 'X'; pad_ptr = p; { int digit; digit = (int) mantissa; mantissa -= digit; *p++ = '0' + digit; if ((flags & FLAG_ALT) || mantissa > 0.0L || precision > 0) { *p++ = decimal_point_char (); /* This loop terminates because we assume that FLT_RADIX is a power of 2. */ while (mantissa > 0.0L) { mantissa *= 16.0L; digit = (int) mantissa; mantissa -= digit; *p++ = digit + (digit < 10 ? '0' : dp->conversion - 10); if (precision > 0) precision--; } while (precision > 0) { *p++ = '0'; precision--; } } } *p++ = dp->conversion - 'A' + 'P'; # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } END_LONG_DOUBLE_ROUNDING (); } # else abort (); # endif } else { # if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE double arg = a.arg[dp->arg_index].a.a_double; if (isnand (arg)) { if (dp->conversion == 'A') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; if (signbit (arg)) /* arg < 0.0 or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0 && arg + arg == arg) { if (dp->conversion == 'A') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { int exponent; double mantissa; if (arg > 0.0) mantissa = printf_frexp (arg, &exponent); else { exponent = 0; mantissa = 0.0; } if (has_precision && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1) { /* Round the mantissa. */ double tail = mantissa; size_t q; for (q = precision; ; q--) { int digit = (int) tail; tail -= digit; if (q == 0) { if (digit & 1 ? tail >= 0.5 : tail > 0.5) tail = 1 - tail; else tail = - tail; break; } tail *= 16.0; } if (tail != 0.0) for (q = precision; q > 0; q--) tail *= 0.0625; mantissa += tail; } *p++ = '0'; *p++ = dp->conversion - 'A' + 'X'; pad_ptr = p; { int digit; digit = (int) mantissa; mantissa -= digit; *p++ = '0' + digit; if ((flags & FLAG_ALT) || mantissa > 0.0 || precision > 0) { *p++ = decimal_point_char (); /* This loop terminates because we assume that FLT_RADIX is a power of 2. */ while (mantissa > 0.0) { mantissa *= 16.0; digit = (int) mantissa; mantissa -= digit; *p++ = digit + (digit < 10 ? '0' : dp->conversion - 10); if (precision > 0) precision--; } while (precision > 0) { *p++ = '0'; precision--; } } } *p++ = dp->conversion - 'A' + 'P'; # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } } # else abort (); # endif } /* The generated string now extends from tmp to p, with the zero padding insertion point being at pad_ptr. */ if (has_width && p - tmp < width) { size_t pad = width - (p - tmp); DCHAR_T *end = p + pad; if (flags & FLAG_LEFT) { /* Pad with spaces on the right. */ for (; pad > 0; pad--) *p++ = ' '; } else if ((flags & FLAG_ZERO) && pad_ptr != NULL) { /* Pad with zeroes. */ DCHAR_T *q = end; while (p > pad_ptr) *--q = *--p; for (; pad > 0; pad--) *p++ = '0'; } else { /* Pad with spaces on the left. */ DCHAR_T *q = end; while (p > tmp) *--q = *--p; for (; pad > 0; pad--) *p++ = ' '; } p = end; } { size_t count = p - tmp; if (count >= tmp_length) /* tmp_length was incorrectly calculated - fix the code above! */ abort (); /* Make room for the result. */ if (count >= allocated - length) { size_t n = xsum (length, count); ENSURE_ALLOCATION (n); } /* Append the result. */ memcpy (result + length, tmp, count * sizeof (DCHAR_T)); if (tmp != tmpbuf) free (tmp); length += count; } } #endif #if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL else if ((dp->conversion == 'f' || dp->conversion == 'F' || dp->conversion == 'e' || dp->conversion == 'E' || dp->conversion == 'g' || dp->conversion == 'G' || dp->conversion == 'a' || dp->conversion == 'A') && (0 # if NEED_PRINTF_DOUBLE || a.arg[dp->arg_index].type == TYPE_DOUBLE # elif NEED_PRINTF_INFINITE_DOUBLE || (a.arg[dp->arg_index].type == TYPE_DOUBLE /* The systems (mingw) which produce wrong output for Inf, -Inf, and NaN also do so for -0.0. Therefore we treat this case here as well. */ && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double)) # endif # if NEED_PRINTF_LONG_DOUBLE || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE # elif NEED_PRINTF_INFINITE_LONG_DOUBLE || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE /* Some systems produce wrong output for Inf, -Inf, and NaN. Some systems in this category (IRIX 5.3) also do so for -0.0. Therefore we treat this case here as well. */ && is_infinite_or_zerol (a.arg[dp->arg_index].a.a_longdouble)) # endif )) { # if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) arg_type type = a.arg[dp->arg_index].type; # endif int flags = dp->flags; int has_width; size_t width; int has_precision; size_t precision; size_t tmp_length; DCHAR_T tmpbuf[700]; DCHAR_T *tmp; DCHAR_T *pad_ptr; DCHAR_T *p; has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = (unsigned int) (-arg); } else width = arg; } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } has_precision = 0; precision = 0; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } /* POSIX specifies the default precision to be 6 for %f, %F, %e, %E, but not for %g, %G. Implementations appear to use the same default precision also for %g, %G. But for %a, %A, the default precision is 0. */ if (!has_precision) if (!(dp->conversion == 'a' || dp->conversion == 'A')) precision = 6; /* Allocate a temporary buffer of sufficient size. */ # if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1); # elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0); # elif NEED_PRINTF_LONG_DOUBLE tmp_length = LDBL_DIG + 1; # elif NEED_PRINTF_DOUBLE tmp_length = DBL_DIG + 1; # else tmp_length = 0; # endif if (tmp_length < precision) tmp_length = precision; # if NEED_PRINTF_LONG_DOUBLE # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE if (type == TYPE_LONGDOUBLE) # endif if (dp->conversion == 'f' || dp->conversion == 'F') { long double arg = a.arg[dp->arg_index].a.a_longdouble; if (!(isnanl (arg) || arg + arg == arg)) { /* arg is finite and nonzero. */ int exponent = floorlog10l (arg < 0 ? -arg : arg); if (exponent >= 0 && tmp_length < exponent + precision) tmp_length = exponent + precision; } } # endif # if NEED_PRINTF_DOUBLE # if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE if (type == TYPE_DOUBLE) # endif if (dp->conversion == 'f' || dp->conversion == 'F') { double arg = a.arg[dp->arg_index].a.a_double; if (!(isnand (arg) || arg + arg == arg)) { /* arg is finite and nonzero. */ int exponent = floorlog10 (arg < 0 ? -arg : arg); if (exponent >= 0 && tmp_length < exponent + precision) tmp_length = exponent + precision; } } # endif /* Account for sign, decimal point etc. */ tmp_length = xsum (tmp_length, 12); if (tmp_length < width) tmp_length = width; tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) tmp = tmpbuf; else { size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); if (size_overflow_p (tmp_memsize)) /* Overflow, would lead to out of memory. */ goto out_of_memory; tmp = (DCHAR_T *) malloc (tmp_memsize); if (tmp == NULL) /* Out of memory. */ goto out_of_memory; } pad_ptr = NULL; p = tmp; # if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE if (type == TYPE_LONGDOUBLE) # endif { long double arg = a.arg[dp->arg_index].a.a_longdouble; if (isnanl (arg)) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; DECL_LONG_DOUBLE_ROUNDING BEGIN_LONG_DOUBLE_ROUNDING (); if (signbit (arg)) /* arg < 0.0L or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0L && arg + arg == arg) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { # if NEED_PRINTF_LONG_DOUBLE pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { char *digits; size_t ndigits; digits = scale10_round_decimal_long_double (arg, precision); if (digits == NULL) { END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } ndigits = strlen (digits); if (ndigits > precision) do { --ndigits; *p++ = digits[ndigits]; } while (ndigits > precision); else *p++ = '0'; /* Here ndigits <= precision. */ if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > ndigits; precision--) *p++ = '0'; while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } else if (dp->conversion == 'e' || dp->conversion == 'E') { int exponent; if (arg == 0.0L) { exponent = 0; *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else { /* arg > 0.0L. */ int adjusted; char *digits; size_t ndigits; exponent = floorlog10l (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_long_double (arg, (int)precision - exponent); if (digits == NULL) { END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } ndigits = strlen (digits); if (ndigits == precision + 1) break; if (ndigits < precision || ndigits > precision + 2) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits == precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision+1. */ if (is_borderline (digits, precision)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_long_double (arg, (int)precision - exponent + 1); if (digits2 == NULL) { free (digits); END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } if (strlen (digits2) == precision + 1) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision+1. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } *p++ = dp->conversion; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', '.', '2', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+.2d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+.2d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } else if (dp->conversion == 'g' || dp->conversion == 'G') { if (precision == 0) precision = 1; /* precision >= 1. */ if (arg == 0.0L) /* The exponent is 0, >= -4, < precision. Use fixed-point notation. */ { size_t ndigits = precision; /* Number of trailing zeroes that have to be dropped. */ size_t nzeroes = (flags & FLAG_ALT ? 0 : precision - 1); --ndigits; *p++ = '0'; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = '0'; } } } else { /* arg > 0.0L. */ int exponent; int adjusted; char *digits; size_t ndigits; size_t nzeroes; exponent = floorlog10l (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_long_double (arg, (int)(precision - 1) - exponent); if (digits == NULL) { END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } ndigits = strlen (digits); if (ndigits == precision) break; if (ndigits < precision - 1 || ndigits > precision + 1) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits < precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision. */ if (is_borderline (digits, precision - 1)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_long_double (arg, (int)(precision - 1) - exponent + 1); if (digits2 == NULL) { free (digits); END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } if (strlen (digits2) == precision) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision. */ /* Determine the number of trailing zeroes that have to be dropped. */ nzeroes = 0; if ((flags & FLAG_ALT) == 0) while (nzeroes < ndigits && digits[nzeroes] == '0') nzeroes++; /* The exponent is now determined. */ if (exponent >= -4 && exponent < (long)precision) { /* Fixed-point notation: max(exponent,0)+1 digits, then the decimal point, then the remaining digits without trailing zeroes. */ if (exponent >= 0) { size_t count = exponent + 1; /* Note: count <= precision = ndigits. */ for (; count > 0; count--) *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { size_t count = -exponent - 1; *p++ = '0'; *p++ = decimal_point_char (); for (; count > 0; count--) *p++ = '0'; while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { /* Exponential notation. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', '.', '2', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+.2d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+.2d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } free (digits); } } else abort (); # else /* arg is finite. */ if (!(arg == 0.0L)) abort (); pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else if (dp->conversion == 'e' || dp->conversion == 'E') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } *p++ = dp->conversion; /* 'e' or 'E' */ *p++ = '+'; *p++ = '0'; *p++ = '0'; } else if (dp->conversion == 'g' || dp->conversion == 'G') { *p++ = '0'; if (flags & FLAG_ALT) { size_t ndigits = (precision > 0 ? precision - 1 : 0); *p++ = decimal_point_char (); for (; ndigits > 0; --ndigits) *p++ = '0'; } } else if (dp->conversion == 'a' || dp->conversion == 'A') { *p++ = '0'; *p++ = dp->conversion - 'A' + 'X'; pad_ptr = p; *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } *p++ = dp->conversion - 'A' + 'P'; *p++ = '+'; *p++ = '0'; } else abort (); # endif } END_LONG_DOUBLE_ROUNDING (); } } # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE else # endif # endif # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE { double arg = a.arg[dp->arg_index].a.a_double; if (isnand (arg)) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; if (signbit (arg)) /* arg < 0.0 or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0 && arg + arg == arg) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { # if NEED_PRINTF_DOUBLE pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { char *digits; size_t ndigits; digits = scale10_round_decimal_double (arg, precision); if (digits == NULL) goto out_of_memory; ndigits = strlen (digits); if (ndigits > precision) do { --ndigits; *p++ = digits[ndigits]; } while (ndigits > precision); else *p++ = '0'; /* Here ndigits <= precision. */ if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > ndigits; precision--) *p++ = '0'; while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } else if (dp->conversion == 'e' || dp->conversion == 'E') { int exponent; if (arg == 0.0) { exponent = 0; *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else { /* arg > 0.0. */ int adjusted; char *digits; size_t ndigits; exponent = floorlog10 (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_double (arg, (int)precision - exponent); if (digits == NULL) goto out_of_memory; ndigits = strlen (digits); if (ndigits == precision + 1) break; if (ndigits < precision || ndigits > precision + 2) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits == precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision+1. */ if (is_borderline (digits, precision)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_double (arg, (int)precision - exponent + 1); if (digits2 == NULL) { free (digits); goto out_of_memory; } if (strlen (digits2) == precision + 1) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision+1. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } *p++ = dp->conversion; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ { '%', '+', '.', '3', 'd', '\0' }; # else { '%', '+', '.', '2', 'd', '\0' }; # endif SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else { static const char decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ "%+.3d"; # else "%+.2d"; # endif if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, decimal_format, exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, decimal_format, exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } } # endif } else if (dp->conversion == 'g' || dp->conversion == 'G') { if (precision == 0) precision = 1; /* precision >= 1. */ if (arg == 0.0) /* The exponent is 0, >= -4, < precision. Use fixed-point notation. */ { size_t ndigits = precision; /* Number of trailing zeroes that have to be dropped. */ size_t nzeroes = (flags & FLAG_ALT ? 0 : precision - 1); --ndigits; *p++ = '0'; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = '0'; } } } else { /* arg > 0.0. */ int exponent; int adjusted; char *digits; size_t ndigits; size_t nzeroes; exponent = floorlog10 (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_double (arg, (int)(precision - 1) - exponent); if (digits == NULL) goto out_of_memory; ndigits = strlen (digits); if (ndigits == precision) break; if (ndigits < precision - 1 || ndigits > precision + 1) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits < precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision. */ if (is_borderline (digits, precision - 1)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_double (arg, (int)(precision - 1) - exponent + 1); if (digits2 == NULL) { free (digits); goto out_of_memory; } if (strlen (digits2) == precision) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision. */ /* Determine the number of trailing zeroes that have to be dropped. */ nzeroes = 0; if ((flags & FLAG_ALT) == 0) while (nzeroes < ndigits && digits[nzeroes] == '0') nzeroes++; /* The exponent is now determined. */ if (exponent >= -4 && exponent < (long)precision) { /* Fixed-point notation: max(exponent,0)+1 digits, then the decimal point, then the remaining digits without trailing zeroes. */ if (exponent >= 0) { size_t count = exponent + 1; /* Note: count <= precision = ndigits. */ for (; count > 0; count--) *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { size_t count = -exponent - 1; *p++ = '0'; *p++ = decimal_point_char (); for (; count > 0; count--) *p++ = '0'; while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { /* Exponential notation. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ { '%', '+', '.', '3', 'd', '\0' }; # else { '%', '+', '.', '2', 'd', '\0' }; # endif SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else { static const char decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ "%+.3d"; # else "%+.2d"; # endif if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, decimal_format, exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, decimal_format, exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } } # endif } free (digits); } } else abort (); # else /* arg is finite. */ if (!(arg == 0.0)) abort (); pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else if (dp->conversion == 'e' || dp->conversion == 'E') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } *p++ = dp->conversion; /* 'e' or 'E' */ *p++ = '+'; /* Produce the same number of exponent digits as the native printf implementation. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ *p++ = '0'; # endif *p++ = '0'; *p++ = '0'; } else if (dp->conversion == 'g' || dp->conversion == 'G') { *p++ = '0'; if (flags & FLAG_ALT) { size_t ndigits = (precision > 0 ? precision - 1 : 0); *p++ = decimal_point_char (); for (; ndigits > 0; --ndigits) *p++ = '0'; } } else abort (); # endif } } } # endif /* The generated string now extends from tmp to p, with the zero padding insertion point being at pad_ptr. */ if (has_width && p - tmp < width) { size_t pad = width - (p - tmp); DCHAR_T *end = p + pad; if (flags & FLAG_LEFT) { /* Pad with spaces on the right. */ for (; pad > 0; pad--) *p++ = ' '; } else if ((flags & FLAG_ZERO) && pad_ptr != NULL) { /* Pad with zeroes. */ DCHAR_T *q = end; while (p > pad_ptr) *--q = *--p; for (; pad > 0; pad--) *p++ = '0'; } else { /* Pad with spaces on the left. */ DCHAR_T *q = end; while (p > tmp) *--q = *--p; for (; pad > 0; pad--) *p++ = ' '; } p = end; } { size_t count = p - tmp; if (count >= tmp_length) /* tmp_length was incorrectly calculated - fix the code above! */ abort (); /* Make room for the result. */ if (count >= allocated - length) { size_t n = xsum (length, count); ENSURE_ALLOCATION (n); } /* Append the result. */ memcpy (result + length, tmp, count * sizeof (DCHAR_T)); if (tmp != tmpbuf) free (tmp); length += count; } } #endif else { arg_type type = a.arg[dp->arg_index].type; int flags = dp->flags; #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION int has_width; size_t width; #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION int has_precision; size_t precision; #endif #if NEED_PRINTF_UNBOUNDED_PRECISION int prec_ourselves; #else # define prec_ourselves 0 #endif #if NEED_PRINTF_FLAG_LEFTADJUST # define pad_ourselves 1 #elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION int pad_ourselves; #else # define pad_ourselves 0 #endif TCHAR_T *fbp; unsigned int prefix_count; int prefixes[2] IF_LINT (= { 0 }); int orig_errno; #if !USE_SNPRINTF size_t tmp_length; TCHAR_T tmpbuf[700]; TCHAR_T *tmp; #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = (unsigned int) (-arg); } else width = arg; } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION has_precision = 0; precision = 6; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } #endif /* Decide whether to handle the precision ourselves. */ #if NEED_PRINTF_UNBOUNDED_PRECISION switch (dp->conversion) { case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': prec_ourselves = has_precision && (precision > 0); break; default: prec_ourselves = 0; break; } #endif /* Decide whether to perform the padding ourselves. */ #if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION) switch (dp->conversion) { # if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need to perform the padding after this conversion. Functions with unistdio extensions perform the padding based on character count rather than element count. */ case 'c': case 's': # endif # if NEED_PRINTF_FLAG_ZERO case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': case 'a': case 'A': # endif pad_ourselves = 1; break; default: pad_ourselves = prec_ourselves; break; } #endif #if !USE_SNPRINTF /* Allocate a temporary buffer of sufficient size for calling sprintf. */ tmp_length = MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type, flags, width, has_precision, precision, pad_ourselves); if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) tmp = tmpbuf; else { size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T)); if (size_overflow_p (tmp_memsize)) /* Overflow, would lead to out of memory. */ goto out_of_memory; tmp = (TCHAR_T *) malloc (tmp_memsize); if (tmp == NULL) /* Out of memory. */ goto out_of_memory; } #endif /* Construct the format string for calling snprintf or sprintf. */ fbp = buf; *fbp++ = '%'; #if NEED_PRINTF_FLAG_GROUPING /* The underlying implementation doesn't support the ' flag. Produce no grouping characters in this case; this is acceptable because the grouping is locale dependent. */ #else if (flags & FLAG_GROUP) *fbp++ = '\''; #endif if (flags & FLAG_LEFT) *fbp++ = '-'; if (flags & FLAG_SHOWSIGN) *fbp++ = '+'; if (flags & FLAG_SPACE) *fbp++ = ' '; if (flags & FLAG_ALT) *fbp++ = '#'; #if __GLIBC__ >= 2 && !defined __UCLIBC__ if (flags & FLAG_LOCALIZED) *fbp++ = 'I'; #endif if (!pad_ourselves) { if (flags & FLAG_ZERO) *fbp++ = '0'; if (dp->width_start != dp->width_end) { size_t n = dp->width_end - dp->width_start; /* The width specification is known to consist only of standard ASCII characters. */ if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) { memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T)); fbp += n; } else { const FCHAR_T *mp = dp->width_start; do *fbp++ = (unsigned char) *mp++; while (--n > 0); } } } if (!prec_ourselves) { if (dp->precision_start != dp->precision_end) { size_t n = dp->precision_end - dp->precision_start; /* The precision specification is known to consist only of standard ASCII characters. */ if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) { memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T)); fbp += n; } else { const FCHAR_T *mp = dp->precision_start; do *fbp++ = (unsigned char) *mp++; while (--n > 0); } } } switch (type) { #if HAVE_LONG_LONG_INT case TYPE_LONGLONGINT: case TYPE_ULONGLONGINT: # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ *fbp++ = 'I'; *fbp++ = '6'; *fbp++ = '4'; break; # else *fbp++ = 'l'; /*FALLTHROUGH*/ # endif #endif case TYPE_LONGINT: case TYPE_ULONGINT: #if HAVE_WINT_T case TYPE_WIDE_CHAR: #endif #if HAVE_WCHAR_T case TYPE_WIDE_STRING: #endif *fbp++ = 'l'; break; case TYPE_LONGDOUBLE: *fbp++ = 'L'; break; default: break; } #if NEED_PRINTF_DIRECTIVE_F if (dp->conversion == 'F') *fbp = 'f'; else #endif *fbp = dp->conversion; #if USE_SNPRINTF # if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) fbp[1] = '%'; fbp[2] = 'n'; fbp[3] = '\0'; # else /* On glibc2 systems from glibc >= 2.3 - probably also older ones - we know that snprintf's return value conforms to ISO C 99: the tests gl_SNPRINTF_RETVAL_C99 and gl_SNPRINTF_TRUNCATION_C99 pass. Therefore we can avoid using %n in this situation. On glibc2 systems from 2004-10-18 or newer, the use of %n in format strings in writable memory may crash the program (if compiled with _FORTIFY_SOURCE=2), so we should avoid it in this situation. */ /* On native Windows systems (such as mingw), we can avoid using %n because: - Although the gl_SNPRINTF_TRUNCATION_C99 test fails, snprintf does not write more than the specified number of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes '4', '5', '6' into buf, not '4', '5', '\0'.) - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf allows us to recognize the case of an insufficient buffer size: it returns -1 in this case. On native Windows systems (such as mingw) where the OS is Windows Vista, the use of %n in format strings by default crashes the program. See and So we should avoid %n in this situation. */ fbp[1] = '\0'; # endif #else fbp[1] = '\0'; #endif /* Construct the arguments for calling snprintf or sprintf. */ prefix_count = 0; if (!pad_ourselves && dp->width_arg_index != ARG_NONE) { if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; } if (!prec_ourselves && dp->precision_arg_index != ARG_NONE) { if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; } #if USE_SNPRINTF /* The SNPRINTF result is appended after result[0..length]. The latter is an array of DCHAR_T; SNPRINTF appends an array of TCHAR_T to it. This is possible because sizeof (TCHAR_T) divides sizeof (DCHAR_T) and alignof (TCHAR_T) <= alignof (DCHAR_T). */ # define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T)) /* Ensure that maxlen below will be >= 2. Needed on BeOS, where an snprintf() with maxlen==1 acts like sprintf(). */ ENSURE_ALLOCATION (xsum (length, (2 + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR)); /* Prepare checking whether snprintf returns the count via %n. */ *(TCHAR_T *) (result + length) = '\0'; #endif orig_errno = errno; for (;;) { int count = -1; #if USE_SNPRINTF int retcount = 0; size_t maxlen = allocated - length; /* SNPRINTF can fail if its second argument is > INT_MAX. */ if (maxlen > INT_MAX / TCHARS_PER_DCHAR) maxlen = INT_MAX / TCHARS_PER_DCHAR; maxlen = maxlen * TCHARS_PER_DCHAR; # define SNPRINTF_BUF(arg) \ switch (prefix_count) \ { \ case 0: \ retcount = SNPRINTF ((TCHAR_T *) (result + length), \ maxlen, buf, \ arg, &count); \ break; \ case 1: \ retcount = SNPRINTF ((TCHAR_T *) (result + length), \ maxlen, buf, \ prefixes[0], arg, &count); \ break; \ case 2: \ retcount = SNPRINTF ((TCHAR_T *) (result + length), \ maxlen, buf, \ prefixes[0], prefixes[1], arg, \ &count); \ break; \ default: \ abort (); \ } #else # define SNPRINTF_BUF(arg) \ switch (prefix_count) \ { \ case 0: \ count = sprintf (tmp, buf, arg); \ break; \ case 1: \ count = sprintf (tmp, buf, prefixes[0], arg); \ break; \ case 2: \ count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ arg); \ break; \ default: \ abort (); \ } #endif errno = 0; switch (type) { case TYPE_SCHAR: { int arg = a.arg[dp->arg_index].a.a_schar; SNPRINTF_BUF (arg); } break; case TYPE_UCHAR: { unsigned int arg = a.arg[dp->arg_index].a.a_uchar; SNPRINTF_BUF (arg); } break; case TYPE_SHORT: { int arg = a.arg[dp->arg_index].a.a_short; SNPRINTF_BUF (arg); } break; case TYPE_USHORT: { unsigned int arg = a.arg[dp->arg_index].a.a_ushort; SNPRINTF_BUF (arg); } break; case TYPE_INT: { int arg = a.arg[dp->arg_index].a.a_int; SNPRINTF_BUF (arg); } break; case TYPE_UINT: { unsigned int arg = a.arg[dp->arg_index].a.a_uint; SNPRINTF_BUF (arg); } break; case TYPE_LONGINT: { long int arg = a.arg[dp->arg_index].a.a_longint; SNPRINTF_BUF (arg); } break; case TYPE_ULONGINT: { unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; SNPRINTF_BUF (arg); } break; #if HAVE_LONG_LONG_INT case TYPE_LONGLONGINT: { long long int arg = a.arg[dp->arg_index].a.a_longlongint; SNPRINTF_BUF (arg); } break; case TYPE_ULONGLONGINT: { unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; SNPRINTF_BUF (arg); } break; #endif case TYPE_DOUBLE: { double arg = a.arg[dp->arg_index].a.a_double; SNPRINTF_BUF (arg); } break; case TYPE_LONGDOUBLE: { long double arg = a.arg[dp->arg_index].a.a_longdouble; SNPRINTF_BUF (arg); } break; case TYPE_CHAR: { int arg = a.arg[dp->arg_index].a.a_char; SNPRINTF_BUF (arg); } break; #if HAVE_WINT_T case TYPE_WIDE_CHAR: { wint_t arg = a.arg[dp->arg_index].a.a_wide_char; SNPRINTF_BUF (arg); } break; #endif case TYPE_STRING: { const char *arg = a.arg[dp->arg_index].a.a_string; SNPRINTF_BUF (arg); } break; #if HAVE_WCHAR_T case TYPE_WIDE_STRING: { const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; SNPRINTF_BUF (arg); } break; #endif case TYPE_POINTER: { void *arg = a.arg[dp->arg_index].a.a_pointer; SNPRINTF_BUF (arg); } break; default: abort (); } #if USE_SNPRINTF /* Portability: Not all implementations of snprintf() are ISO C 99 compliant. Determine the number of bytes that snprintf() has produced or would have produced. */ if (count >= 0) { /* Verify that snprintf() has NUL-terminated its result. */ if (count < maxlen && ((TCHAR_T *) (result + length)) [count] != '\0') abort (); /* Portability hack. */ if (retcount > count) count = retcount; } else { /* snprintf() doesn't understand the '%n' directive. */ if (fbp[1] != '\0') { /* Don't use the '%n' directive; instead, look at the snprintf() return value. */ fbp[1] = '\0'; continue; } else { /* Look at the snprintf() return value. */ if (retcount < 0) { # if !HAVE_SNPRINTF_RETVAL_C99 /* HP-UX 10.20 snprintf() is doubly deficient: It doesn't understand the '%n' directive, *and* it returns -1 (rather than the length that would have been required) when the buffer is too small. But a failure at this point can also come from other reasons than a too small buffer, such as an invalid wide string argument to the %ls directive, or possibly an invalid floating-point argument. */ size_t tmp_length = MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type, flags, has_width ? width : 0, has_precision, precision, pad_ourselves); if (maxlen < tmp_length) { /* Make more room. But try to do through this reallocation only once. */ size_t bigger_need = xsum (length, xsum (tmp_length, TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR); /* And always grow proportionally. (There may be several arguments, each needing a little more room than the previous one.) */ size_t bigger_need2 = xsum (xtimes (allocated, 2), 12); if (bigger_need < bigger_need2) bigger_need = bigger_need2; ENSURE_ALLOCATION (bigger_need); continue; } # endif } else count = retcount; } } #endif /* Attempt to handle failure. */ if (count < 0) { /* SNPRINTF or sprintf failed. Save and use the errno that it has set, if any. */ int saved_errno = errno; if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = (saved_errno != 0 ? saved_errno : (dp->conversion == 'c' || dp->conversion == 's' ? EILSEQ : EINVAL)); return NULL; } #if USE_SNPRINTF /* Handle overflow of the allocated buffer. If such an overflow occurs, a C99 compliant snprintf() returns a count >= maxlen. However, a non-compliant snprintf() function returns only count = maxlen - 1. To cover both cases, test whether count >= maxlen - 1. */ if ((unsigned int) count + 1 >= maxlen) { /* If maxlen already has attained its allowed maximum, allocating more memory will not increase maxlen. Instead of looping, bail out. */ if (maxlen == INT_MAX / TCHARS_PER_DCHAR) goto overflow; else { /* Need at least (count + 1) * sizeof (TCHAR_T) bytes. (The +1 is for the trailing NUL.) But ask for (count + 2) * sizeof (TCHAR_T) bytes, so that in the next round, we likely get maxlen > (unsigned int) count + 1 and so we don't get here again. And allocate proportionally, to avoid looping eternally if snprintf() reports a too small count. */ size_t n = xmax (xsum (length, ((unsigned int) count + 2 + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR), xtimes (allocated, 2)); ENSURE_ALLOCATION (n); continue; } } #endif #if NEED_PRINTF_UNBOUNDED_PRECISION if (prec_ourselves) { /* Handle the precision. */ TCHAR_T *prec_ptr = # if USE_SNPRINTF (TCHAR_T *) (result + length); # else tmp; # endif size_t prefix_count; size_t move; prefix_count = 0; /* Put the additional zeroes after the sign. */ if (count >= 1 && (*prec_ptr == '-' || *prec_ptr == '+' || *prec_ptr == ' ')) prefix_count = 1; /* Put the additional zeroes after the 0x prefix if (flags & FLAG_ALT) || (dp->conversion == 'p'). */ else if (count >= 2 && prec_ptr[0] == '0' && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X')) prefix_count = 2; move = count - prefix_count; if (precision > move) { /* Insert zeroes. */ size_t insert = precision - move; TCHAR_T *prec_end; # if USE_SNPRINTF size_t n = xsum (length, (count + insert + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR); length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; ENSURE_ALLOCATION (n); length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; prec_ptr = (TCHAR_T *) (result + length); # endif prec_end = prec_ptr + count; prec_ptr += prefix_count; while (prec_end > prec_ptr) { prec_end--; prec_end[insert] = prec_end[0]; } prec_end += insert; do *--prec_end = '0'; while (prec_end > prec_ptr); count += insert; } } #endif #if !USE_SNPRINTF if (count >= tmp_length) /* tmp_length was incorrectly calculated - fix the code above! */ abort (); #endif #if !DCHAR_IS_TCHAR /* Convert from TCHAR_T[] to DCHAR_T[]. */ if (dp->conversion == 'c' || dp->conversion == 's') { /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING TYPE_WIDE_STRING. The result string is not certainly ASCII. */ const TCHAR_T *tmpsrc; DCHAR_T *tmpdst; size_t tmpdst_len; /* This code assumes that TCHAR_T is 'char'. */ verify (sizeof (TCHAR_T) == 1); # if USE_SNPRINTF tmpsrc = (TCHAR_T *) (result + length); # else tmpsrc = tmp; # endif tmpdst = DCHAR_CONV_FROM_ENCODING (locale_charset (), iconveh_question_mark, tmpsrc, count, NULL, NULL, &tmpdst_len); if (tmpdst == NULL) { int saved_errno = errno; if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = saved_errno; return NULL; } ENSURE_ALLOCATION (xsum (length, tmpdst_len)); DCHAR_CPY (result + length, tmpdst, tmpdst_len); free (tmpdst); count = tmpdst_len; } else { /* The result string is ASCII. Simple 1:1 conversion. */ # if USE_SNPRINTF /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a no-op conversion, in-place on the array starting at (result + length). */ if (sizeof (DCHAR_T) != sizeof (TCHAR_T)) # endif { const TCHAR_T *tmpsrc; DCHAR_T *tmpdst; size_t n; # if USE_SNPRINTF if (result == resultbuf) { tmpsrc = (TCHAR_T *) (result + length); /* ENSURE_ALLOCATION will not move tmpsrc (because it's part of resultbuf). */ ENSURE_ALLOCATION (xsum (length, count)); } else { /* ENSURE_ALLOCATION will move the array (because it uses realloc(). */ ENSURE_ALLOCATION (xsum (length, count)); tmpsrc = (TCHAR_T *) (result + length); } # else tmpsrc = tmp; ENSURE_ALLOCATION (xsum (length, count)); # endif tmpdst = result + length; /* Copy backwards, because of overlapping. */ tmpsrc += count; tmpdst += count; for (n = count; n > 0; n--) *--tmpdst = (unsigned char) *--tmpsrc; } } #endif #if DCHAR_IS_TCHAR && !USE_SNPRINTF /* Make room for the result. */ if (count > allocated - length) { /* Need at least count elements. But allocate proportionally. */ size_t n = xmax (xsum (length, count), xtimes (allocated, 2)); ENSURE_ALLOCATION (n); } #endif /* Here count <= allocated - length. */ /* Perform padding. */ #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION if (pad_ourselves && has_width) { size_t w; # if ENABLE_UNISTDIO /* Outside POSIX, it's preferable to compare the width against the number of _characters_ of the converted value. */ w = DCHAR_MBSNLEN (result + length, count); # else /* The width is compared against the number of _bytes_ of the converted value, says POSIX. */ w = count; # endif if (w < width) { size_t pad = width - w; /* Make room for the result. */ if (xsum (count, pad) > allocated - length) { /* Need at least count + pad elements. But allocate proportionally. */ size_t n = xmax (xsum3 (length, count, pad), xtimes (allocated, 2)); # if USE_SNPRINTF length += count; ENSURE_ALLOCATION (n); length -= count; # else ENSURE_ALLOCATION (n); # endif } /* Here count + pad <= allocated - length. */ { # if !DCHAR_IS_TCHAR || USE_SNPRINTF DCHAR_T * const rp = result + length; # else DCHAR_T * const rp = tmp; # endif DCHAR_T *p = rp + count; DCHAR_T *end = p + pad; DCHAR_T *pad_ptr; # if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO if (dp->conversion == 'c' || dp->conversion == 's') /* No zero-padding for string directives. */ pad_ptr = NULL; else # endif { pad_ptr = (*rp == '-' ? rp + 1 : rp); /* No zero-padding of "inf" and "nan". */ if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z') || (*pad_ptr >= 'a' && *pad_ptr <= 'z')) pad_ptr = NULL; } /* The generated string now extends from rp to p, with the zero padding insertion point being at pad_ptr. */ count = count + pad; /* = end - rp */ if (flags & FLAG_LEFT) { /* Pad with spaces on the right. */ for (; pad > 0; pad--) *p++ = ' '; } else if ((flags & FLAG_ZERO) && pad_ptr != NULL) { /* Pad with zeroes. */ DCHAR_T *q = end; while (p > pad_ptr) *--q = *--p; for (; pad > 0; pad--) *p++ = '0'; } else { /* Pad with spaces on the left. */ DCHAR_T *q = end; while (p > rp) *--q = *--p; for (; pad > 0; pad--) *p++ = ' '; } } } } #endif /* Here still count <= allocated - length. */ #if !DCHAR_IS_TCHAR || USE_SNPRINTF /* The snprintf() result did fit. */ #else /* Append the sprintf() result. */ memcpy (result + length, tmp, count * sizeof (DCHAR_T)); #endif #if !USE_SNPRINTF if (tmp != tmpbuf) free (tmp); #endif #if NEED_PRINTF_DIRECTIVE_F if (dp->conversion == 'F') { /* Convert the %f result to upper case for %F. */ DCHAR_T *rp = result + length; size_t rc; for (rc = count; rc > 0; rc--, rp++) if (*rp >= 'a' && *rp <= 'z') *rp = *rp - 'a' + 'A'; } #endif length += count; break; } errno = orig_errno; #undef pad_ourselves #undef prec_ourselves } } } /* Add the final NUL. */ ENSURE_ALLOCATION (xsum (length, 1)); result[length] = '\0'; if (result != resultbuf && length + 1 < allocated) { /* Shrink the allocated memory if possible. */ DCHAR_T *memory; memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T)); if (memory != NULL) result = memory; } if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); *lengthp = length; /* Note that we can produce a big string of a length > INT_MAX. POSIX says that snprintf() fails with errno = EOVERFLOW in this case, but that's only because snprintf() returns an 'int'. This function does not have this limitation. */ return result; #if USE_SNPRINTF overflow: if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); errno = EOVERFLOW; return NULL; #endif out_of_memory: if (!(result == resultbuf || result == NULL)) free (result); if (buf_malloced != NULL) free (buf_malloced); out_of_memory_1: CLEANUP (); errno = ENOMEM; return NULL; } } #undef MAX_ROOM_NEEDED #undef TCHARS_PER_DCHAR #undef SNPRINTF #undef USE_SNPRINTF #undef DCHAR_SET #undef DCHAR_CPY #undef PRINTF_PARSE #undef DIRECTIVES #undef DIRECTIVE #undef DCHAR_IS_TCHAR #undef TCHAR_T #undef DCHAR_T #undef FCHAR_T #undef VASNPRINTF freedink-108.4+dfsg/gnulib/lib/float+.h0000644000175000017500000001274512330466613015414 0ustar meme/* Supplemental information about the floating-point formats. Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2007. 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, see . */ #ifndef _FLOATPLUS_H #define _FLOATPLUS_H #include #include /* Number of bits in the mantissa of a floating-point number, including the "hidden bit". */ #if FLT_RADIX == 2 # define FLT_MANT_BIT FLT_MANT_DIG # define DBL_MANT_BIT DBL_MANT_DIG # define LDBL_MANT_BIT LDBL_MANT_DIG #elif FLT_RADIX == 4 # define FLT_MANT_BIT (FLT_MANT_DIG * 2) # define DBL_MANT_BIT (DBL_MANT_DIG * 2) # define LDBL_MANT_BIT (LDBL_MANT_DIG * 2) #elif FLT_RADIX == 16 # define FLT_MANT_BIT (FLT_MANT_DIG * 4) # define DBL_MANT_BIT (DBL_MANT_DIG * 4) # define LDBL_MANT_BIT (LDBL_MANT_DIG * 4) #endif /* Bit mask that can be used to mask the exponent, as an unsigned number. */ #define FLT_EXP_MASK ((FLT_MAX_EXP - FLT_MIN_EXP) | 7) #define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7) #define LDBL_EXP_MASK ((LDBL_MAX_EXP - LDBL_MIN_EXP) | 7) /* Number of bits used for the exponent of a floating-point number, including the exponent's sign. */ #define FLT_EXP_BIT \ (FLT_EXP_MASK < 0x100 ? 8 : \ FLT_EXP_MASK < 0x200 ? 9 : \ FLT_EXP_MASK < 0x400 ? 10 : \ FLT_EXP_MASK < 0x800 ? 11 : \ FLT_EXP_MASK < 0x1000 ? 12 : \ FLT_EXP_MASK < 0x2000 ? 13 : \ FLT_EXP_MASK < 0x4000 ? 14 : \ FLT_EXP_MASK < 0x8000 ? 15 : \ FLT_EXP_MASK < 0x10000 ? 16 : \ FLT_EXP_MASK < 0x20000 ? 17 : \ FLT_EXP_MASK < 0x40000 ? 18 : \ FLT_EXP_MASK < 0x80000 ? 19 : \ FLT_EXP_MASK < 0x100000 ? 20 : \ FLT_EXP_MASK < 0x200000 ? 21 : \ FLT_EXP_MASK < 0x400000 ? 22 : \ FLT_EXP_MASK < 0x800000 ? 23 : \ FLT_EXP_MASK < 0x1000000 ? 24 : \ FLT_EXP_MASK < 0x2000000 ? 25 : \ FLT_EXP_MASK < 0x4000000 ? 26 : \ FLT_EXP_MASK < 0x8000000 ? 27 : \ FLT_EXP_MASK < 0x10000000 ? 28 : \ FLT_EXP_MASK < 0x20000000 ? 29 : \ FLT_EXP_MASK < 0x40000000 ? 30 : \ FLT_EXP_MASK <= 0x7fffffff ? 31 : \ 32) #define DBL_EXP_BIT \ (DBL_EXP_MASK < 0x100 ? 8 : \ DBL_EXP_MASK < 0x200 ? 9 : \ DBL_EXP_MASK < 0x400 ? 10 : \ DBL_EXP_MASK < 0x800 ? 11 : \ DBL_EXP_MASK < 0x1000 ? 12 : \ DBL_EXP_MASK < 0x2000 ? 13 : \ DBL_EXP_MASK < 0x4000 ? 14 : \ DBL_EXP_MASK < 0x8000 ? 15 : \ DBL_EXP_MASK < 0x10000 ? 16 : \ DBL_EXP_MASK < 0x20000 ? 17 : \ DBL_EXP_MASK < 0x40000 ? 18 : \ DBL_EXP_MASK < 0x80000 ? 19 : \ DBL_EXP_MASK < 0x100000 ? 20 : \ DBL_EXP_MASK < 0x200000 ? 21 : \ DBL_EXP_MASK < 0x400000 ? 22 : \ DBL_EXP_MASK < 0x800000 ? 23 : \ DBL_EXP_MASK < 0x1000000 ? 24 : \ DBL_EXP_MASK < 0x2000000 ? 25 : \ DBL_EXP_MASK < 0x4000000 ? 26 : \ DBL_EXP_MASK < 0x8000000 ? 27 : \ DBL_EXP_MASK < 0x10000000 ? 28 : \ DBL_EXP_MASK < 0x20000000 ? 29 : \ DBL_EXP_MASK < 0x40000000 ? 30 : \ DBL_EXP_MASK <= 0x7fffffff ? 31 : \ 32) #define LDBL_EXP_BIT \ (LDBL_EXP_MASK < 0x100 ? 8 : \ LDBL_EXP_MASK < 0x200 ? 9 : \ LDBL_EXP_MASK < 0x400 ? 10 : \ LDBL_EXP_MASK < 0x800 ? 11 : \ LDBL_EXP_MASK < 0x1000 ? 12 : \ LDBL_EXP_MASK < 0x2000 ? 13 : \ LDBL_EXP_MASK < 0x4000 ? 14 : \ LDBL_EXP_MASK < 0x8000 ? 15 : \ LDBL_EXP_MASK < 0x10000 ? 16 : \ LDBL_EXP_MASK < 0x20000 ? 17 : \ LDBL_EXP_MASK < 0x40000 ? 18 : \ LDBL_EXP_MASK < 0x80000 ? 19 : \ LDBL_EXP_MASK < 0x100000 ? 20 : \ LDBL_EXP_MASK < 0x200000 ? 21 : \ LDBL_EXP_MASK < 0x400000 ? 22 : \ LDBL_EXP_MASK < 0x800000 ? 23 : \ LDBL_EXP_MASK < 0x1000000 ? 24 : \ LDBL_EXP_MASK < 0x2000000 ? 25 : \ LDBL_EXP_MASK < 0x4000000 ? 26 : \ LDBL_EXP_MASK < 0x8000000 ? 27 : \ LDBL_EXP_MASK < 0x10000000 ? 28 : \ LDBL_EXP_MASK < 0x20000000 ? 29 : \ LDBL_EXP_MASK < 0x40000000 ? 30 : \ LDBL_EXP_MASK <= 0x7fffffff ? 31 : \ 32) /* Number of bits used for a floating-point number: the mantissa (not counting the "hidden bit", since it may or may not be explicit), the exponent, and the sign. */ #define FLT_TOTAL_BIT ((FLT_MANT_BIT - 1) + FLT_EXP_BIT + 1) #define DBL_TOTAL_BIT ((DBL_MANT_BIT - 1) + DBL_EXP_BIT + 1) #define LDBL_TOTAL_BIT ((LDBL_MANT_BIT - 1) + LDBL_EXP_BIT + 1) /* Number of bytes used for a floating-point number. This can be smaller than the 'sizeof'. For example, on i386 systems, 'long double' most often have LDBL_MANT_BIT = 64, LDBL_EXP_BIT = 16, hence LDBL_TOTAL_BIT = 80 bits, i.e. 10 bytes of consecutive memory, but sizeof (long double) = 12 or = 16. */ #define SIZEOF_FLT ((FLT_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT) #define SIZEOF_DBL ((DBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT) #define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT) /* Verify that SIZEOF_FLT <= sizeof (float) etc. */ typedef int verify_sizeof_flt[SIZEOF_FLT <= sizeof (float) ? 1 : -1]; typedef int verify_sizeof_dbl[SIZEOF_DBL <= sizeof (double) ? 1 : - 1]; typedef int verify_sizeof_ldbl[SIZEOF_LDBL <= sizeof (long double) ? 1 : - 1]; #endif /* _FLOATPLUS_H */ freedink-108.4+dfsg/gnulib/lib/memchr.c0000644000175000017500000001334612330466613015500 0ustar meme/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2014 Free Software Foundation, Inc. Based on strlen implementation by Torbjorn Granlund (tege@sics.se), with help from Dan Sahlin (dan@sics.se) and commentary by Jim Blandy (jimb@ai.mit.edu); adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu), and implemented by Roland McGrath (roland@ai.mit.edu). NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. 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 3 of the License, or 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, see . */ #ifndef _LIBC # include #endif #include #include #if defined _LIBC # include #else # define reg_char char #endif #include #if HAVE_BP_SYM_H || defined _LIBC # include #else # define BP_SYM(sym) sym #endif #undef __memchr #ifdef _LIBC # undef memchr #endif #ifndef weak_alias # define __memchr memchr #endif /* Search no more than N bytes of S for C. */ void * __memchr (void const *s, int c_in, size_t n) { /* On 32-bit hardware, choosing longword to be a 32-bit unsigned long instead of a 64-bit uintmax_t tends to give better performance. On 64-bit hardware, unsigned long is generally 64 bits already. Change this typedef to experiment with performance. */ typedef unsigned long int longword; const unsigned char *char_ptr; const longword *longword_ptr; longword repeated_one; longword repeated_c; unsigned reg_char c; c = (unsigned char) c_in; /* Handle the first few bytes by reading one byte at a time. Do this until CHAR_PTR is aligned on a longword boundary. */ for (char_ptr = (const unsigned char *) s; n > 0 && (size_t) char_ptr % sizeof (longword) != 0; --n, ++char_ptr) if (*char_ptr == c) return (void *) char_ptr; longword_ptr = (const longword *) char_ptr; /* All these elucidatory comments refer to 4-byte longwords, but the theory applies equally well to any size longwords. */ /* Compute auxiliary longword values: repeated_one is a value which has a 1 in every byte. repeated_c has c in every byte. */ repeated_one = 0x01010101; repeated_c = c | (c << 8); repeated_c |= repeated_c << 16; if (0xffffffffU < (longword) -1) { repeated_one |= repeated_one << 31 << 1; repeated_c |= repeated_c << 31 << 1; if (8 < sizeof (longword)) { size_t i; for (i = 64; i < sizeof (longword) * 8; i *= 2) { repeated_one |= repeated_one << i; repeated_c |= repeated_c << i; } } } /* Instead of the traditional loop which tests each byte, we will test a longword at a time. The tricky part is testing if *any of the four* bytes in the longword in question are equal to c. We first use an xor with repeated_c. This reduces the task to testing whether *any of the four* bytes in longword1 is zero. We compute tmp = ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7). That is, we perform the following operations: 1. Subtract repeated_one. 2. & ~longword1. 3. & a mask consisting of 0x80 in every byte. Consider what happens in each byte: - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff, and step 3 transforms it into 0x80. A carry can also be propagated to more significant bytes. - If a byte of longword1 is nonzero, let its lowest 1 bit be at position k (0 <= k <= 7); so the lowest k bits are 0. After step 1, the byte ends in a single bit of value 0 and k bits of value 1. After step 2, the result is just k bits of value 1: 2^k - 1. After step 3, the result is 0. And no carry is produced. So, if longword1 has only non-zero bytes, tmp is zero. Whereas if longword1 has a zero byte, call j the position of the least significant zero byte. Then the result has a zero at positions 0, ..., j-1 and a 0x80 at position j. We cannot predict the result at the more significant bytes (positions j+1..3), but it does not matter since we already have a non-zero bit at position 8*j+7. So, the test whether any byte in longword1 is zero is equivalent to testing whether tmp is nonzero. */ while (n >= sizeof (longword)) { longword longword1 = *longword_ptr ^ repeated_c; if ((((longword1 - repeated_one) & ~longword1) & (repeated_one << 7)) != 0) break; longword_ptr++; n -= sizeof (longword); } char_ptr = (const unsigned char *) longword_ptr; /* At this point, we know that either n < sizeof (longword), or one of the sizeof (longword) bytes starting at char_ptr is == c. On little-endian machines, we could determine the first such byte without any further memory accesses, just by looking at the tmp result from the last loop iteration. But this does not work on big-endian machines. Choose code that works in both cases. */ for (; n > 0; --n, ++char_ptr) { if (*char_ptr == c) return (void *) char_ptr; } return NULL; } #ifdef weak_alias weak_alias (__memchr, BP_SYM (memchr)) #endif freedink-108.4+dfsg/gnulib/lib/stddef.in.h0000644000175000017500000000523212330466613016103 0ustar meme/* A substitute for POSIX 2008 , for platforms that have issues. Copyright (C) 2009-2014 Free Software Foundation, Inc. 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, see . */ /* Written by Eric Blake. */ /* * POSIX 2008 for platforms that have issues. * */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_wchar_t || defined __need_size_t \ || defined __need_ptrdiff_t || defined __need_NULL \ || defined __need_wint_t /* Special invocation convention inside gcc header files. In particular, gcc provides a version of that blindly redefines NULL even when __need_wint_t was defined, even though wint_t is not normally provided by . Hence, we must remember if special invocation has ever been used to obtain wint_t, in which case we need to clean up NULL yet again. */ # if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T) # ifdef __need_wint_t # undef _@GUARD_PREFIX@_STDDEF_H # define _GL_STDDEF_WINT_T # endif # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # endif #else /* Normal invocation convention. */ # ifndef _@GUARD_PREFIX@_STDDEF_H /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # ifndef _@GUARD_PREFIX@_STDDEF_H # define _@GUARD_PREFIX@_STDDEF_H /* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ #if @REPLACE_NULL@ # undef NULL # ifdef __cplusplus /* ISO C++ says that the macro NULL must expand to an integer constant expression, hence '((void *) 0)' is not allowed in C++. */ # if __GNUG__ >= 3 /* GNU C++ has a __null macro that behaves like an integer ('int' or 'long') but has the same size as a pointer. Use that, to avoid warnings. */ # define NULL __null # else # define NULL 0L # endif # else # define NULL ((void *) 0) # endif #endif /* Some platforms lack wchar_t. */ #if !@HAVE_WCHAR_T@ # define wchar_t int #endif # endif /* _@GUARD_PREFIX@_STDDEF_H */ # endif /* _@GUARD_PREFIX@_STDDEF_H */ #endif /* __need_XXX */ freedink-108.4+dfsg/gnulib/lib/same.h0000644000175000017500000000163512330466613015155 0ustar meme/* Determine whether two file names refer to the same file. Copyright (C) 1997-2000, 2003-2004, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef SAME_H_ # define SAME_H_ 1 # include bool same_name (const char *source, const char *dest); #endif /* SAME_H_ */ freedink-108.4+dfsg/gnulib/lib/sys_types.in.h0000644000175000017500000000330212330466613016670 0ustar meme/* Provide a more complete sys/types.h. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #ifndef _@GUARD_PREFIX@_SYS_TYPES_H /* The include_next requires a split double-inclusion guard. */ # define _GL_INCLUDING_SYS_TYPES_H #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ # undef _GL_INCLUDING_SYS_TYPES_H #ifndef _@GUARD_PREFIX@_SYS_TYPES_H #define _@GUARD_PREFIX@_SYS_TYPES_H /* Override off_t if Large File Support is requested on native Windows. */ #if @WINDOWS_64_BIT_OFF_T@ /* Same as int64_t in . */ # if defined _MSC_VER # define off_t __int64 # else # define off_t long long int # endif /* Indicator, for gnulib internal purposes. */ # define _GL_WINDOWS_64_BIT_OFF_T 1 #endif /* MSVC 9 defines size_t in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \ && ! defined __GLIBC__ # include #endif #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ freedink-108.4+dfsg/gnulib/lib/allocator.h0000644000175000017500000000423412330466613016206 0ustar meme/* Memory allocators such as malloc+free. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert. */ #ifndef _GL_ALLOCATOR_H #define _GL_ALLOCATOR_H #include /* An object describing a memory allocator family. */ struct allocator { /* Do not use GCC attributes such as __attribute__ ((malloc)) with the function types pointed at by these members, because these attributes do not work with pointers to functions. See . */ /* Call ALLOCATE to allocate memory, like 'malloc'. On failure ALLOCATE should return NULL, though not necessarily set errno. When given a zero size it may return NULL even if successful. */ void *(*allocate) (size_t); /* If nonnull, call REALLOCATE to reallocate memory, like 'realloc'. On failure REALLOCATE should return NULL, though not necessarily set errno. When given a zero size it may return NULL even if successful. */ void *(*reallocate) (void *, size_t); /* Call FREE to free memory, like 'free'. */ void (*free) (void *); /* If nonnull, call DIE (SIZE) if MALLOC (SIZE) or REALLOC (..., SIZE) fails. DIE should not return. SIZE should equal SIZE_MAX if size_t overflow was detected while calculating sizes to be passed to MALLOC or REALLOC. */ void (*die) (size_t); }; /* An allocator using the stdlib functions and a null DIE function. */ extern struct allocator const stdlib_allocator; #endif /* _GL_ALLOCATOR_H */ freedink-108.4+dfsg/gnulib/lib/hash-triple.c0000644000175000017500000000406312330466613016441 0ustar meme/* Hash functions for file-related triples: name, device, inode. Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #include #include "hash-triple.h" #include #include #include "hash-pjw.h" #include "same.h" #include "same-inode.h" #define STREQ(a, b) (strcmp (a, b) == 0) /* Hash an F_triple, and *do* consider the file name. */ size_t triple_hash (void const *x, size_t table_size) { struct F_triple const *p = x; size_t tmp = hash_pjw (p->name, table_size); /* Ignoring the device number here should be fine. */ return (tmp ^ p->st_ino) % table_size; } /* Hash an F_triple, without considering the file name. */ size_t triple_hash_no_name (void const *x, size_t table_size) { struct F_triple const *p = x; /* Ignoring the device number here should be fine. */ return p->st_ino % table_size; } /* Compare two F_triple structs. */ bool triple_compare (void const *x, void const *y) { struct F_triple const *a = x; struct F_triple const *b = y; return (SAME_INODE (*a, *b) && same_name (a->name, b->name)) ? true : false; } bool triple_compare_ino_str (void const *x, void const *y) { struct F_triple const *a = x; struct F_triple const *b = y; return (SAME_INODE (*a, *b) && STREQ (a->name, b->name)) ? true : false; } /* Free an F_triple. */ void triple_free (void *x) { struct F_triple *a = x; free (a->name); free (a); } freedink-108.4+dfsg/gnulib/lib/msvc-inval.c0000644000175000017500000000751112330466613016301 0ustar meme/* Invalid parameter handler for MSVC runtime libraries. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #include "msvc-inval.h" #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* Get _invalid_parameter_handler type and _set_invalid_parameter_handler declaration. */ # include # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { } # else /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include # if defined _MSC_VER static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # else /* An index to thread-local storage. */ static DWORD tls_index; static int tls_initialized /* = 0 */; /* Used as a fallback only. */ static struct gl_msvc_inval_per_thread not_per_thread; struct gl_msvc_inval_per_thread * gl_msvc_inval_current (void) { if (!tls_initialized) { tls_index = TlsAlloc (); tls_initialized = 1; } if (tls_index == TLS_OUT_OF_INDEXES) /* TlsAlloc had failed. */ return ¬_per_thread; else { struct gl_msvc_inval_per_thread *pointer = (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index); if (pointer == NULL) { /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */ pointer = (struct gl_msvc_inval_per_thread *) malloc (sizeof (struct gl_msvc_inval_per_thread)); if (pointer == NULL) /* Could not allocate memory. Use the global storage. */ pointer = ¬_per_thread; TlsSetValue (tls_index, pointer); } return pointer; } } static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current (); if (current->restart_valid) longjmp (current->restart, 1); else /* An invalid parameter notification from outside the gnulib code. Give the caller a chance to intervene. */ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # endif # endif static int gl_msvc_inval_initialized /* = 0 */; void gl_msvc_inval_ensure_handler (void) { if (gl_msvc_inval_initialized == 0) { _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler); gl_msvc_inval_initialized = 1; } } #endif freedink-108.4+dfsg/gnulib/lib/msvc-inval.h0000644000175000017500000002113512330466613016304 0ustar meme/* Invalid parameter handler for MSVC runtime libraries. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _MSVC_INVAL_H #define _MSVC_INVAL_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines macros that turn such an invalid parameter notification into a non-local exit. An error code can then be produced at the target of this exit. You can thus write code like TRY_MSVC_INVAL { } CATCH_MSVC_INVAL { } DONE_MSVC_INVAL; This entire block expands to a single statement. The handling of invalid parameters can be done in three ways: * The default way, which is reasonable for programs (not libraries): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING]) * The way for libraries that make "hairy" calls (like close(-1), or fclose(fp) where fileno(fp) is closed, or simply getdtablesize()): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING]) * The way for libraries that make no "hairy" calls: AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING]) */ #define DEFAULT_HANDLING 0 #define HAIRY_LIBRARY_HANDLING 1 #define SANE_LIBRARY_HANDLING 2 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* A native Windows platform with the "invalid parameter handler" concept, and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */ # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING /* Default handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that just returns. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) # else /* Handling for hairy libraries. */ # include /* Gnulib can define its own status codes, as described in the page "Raising Software Exceptions" on microsoft.com . Our status codes are composed of - 0xE0000000, mandatory for all user-defined status codes, - 0x474E550, a API identifier ("GNU"), - 0, 1, 2, ..., used to distinguish different status codes from the same API. */ # define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0) # if defined _MSC_VER /* A compiler that supports __try/__except, as described in the page "try-except statement" on microsoft.com . With __try/__except, we can use the multithread-safe exception handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ __try # define CATCH_MSVC_INVAL \ __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \ ? EXCEPTION_EXECUTE_HANDLER \ : EXCEPTION_CONTINUE_SEARCH) # define DONE_MSVC_INVAL \ } \ while (0) # else /* Any compiler. We can only use setjmp/longjmp. */ # include # ifdef __cplusplus extern "C" { # endif struct gl_msvc_inval_per_thread { /* The restart that will resume execution at the code between CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */ jmp_buf restart; /* Tells whether the contents of restart is valid. */ int restart_valid; }; /* Ensure that the invalid parameter handler in installed that passes control to the gl_msvc_inval_restart if it is valid, or raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); /* Return a pointer to the per-thread data for the current thread. */ extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ struct gl_msvc_inval_per_thread *msvc_inval_current; \ gl_msvc_inval_ensure_handler (); \ msvc_inval_current = gl_msvc_inval_current (); \ /* First, initialize gl_msvc_inval_restart. */ \ if (setjmp (msvc_inval_current->restart) == 0) \ { \ /* Then, mark it as valid. */ \ msvc_inval_current->restart_valid = 1; # define CATCH_MSVC_INVAL \ /* Execution completed. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; \ } \ else \ { \ /* Execution triggered an invalid parameter notification. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; # define DONE_MSVC_INVAL \ } \ } \ while (0) # endif # endif #else /* A platform that does not need to the invalid parameter handler, or when SANE_LIBRARY_HANDLING is desired. */ /* The braces here avoid GCC warnings like "warning: suggest explicit braces to avoid ambiguous 'else'". */ # define TRY_MSVC_INVAL \ do \ { \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) #endif #endif /* _MSVC_INVAL_H */ freedink-108.4+dfsg/gnulib/lib/unistd--.h0000644000175000017500000000174312330466613015670 0ustar meme/* Like unistd.h, but redefine some names to avoid glitches. Copyright (C) 2005, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert. */ #include #include "unistd-safer.h" #undef dup #define dup dup_safer #undef pipe #define pipe pipe_safer #if GNULIB_PIPE2_SAFER # undef pipe2 # define pipe2 pipe2_safer #endif freedink-108.4+dfsg/gnulib/lib/file-set.c0000644000175000017500000000406012330466613015726 0ustar meme/* Specialized functions to manipulate a set of files. Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ #include #include "file-set.h" #include "hash-triple.h" #include "xalloc.h" /* Record file, FILE, and dev/ino from *STATS, in the hash table, HT. If HT is NULL, return immediately. If memory allocation fails, exit immediately. */ void record_file (Hash_table *ht, char const *file, struct stat const *stats) { struct F_triple *ent; if (ht == NULL) return; ent = xmalloc (sizeof *ent); ent->name = xstrdup (file); ent->st_ino = stats->st_ino; ent->st_dev = stats->st_dev; { struct F_triple *ent_from_table = hash_insert (ht, ent); if (ent_from_table == NULL) { /* Insertion failed due to lack of memory. */ xalloc_die (); } if (ent_from_table != ent) { /* There was alread a matching entry in the table, so ENT was not inserted. Free it. */ triple_free (ent); } } } /* Return true if there is an entry in hash table, HT, for the file described by FILE and STATS. */ bool seen_file (Hash_table const *ht, char const *file, struct stat const *stats) { struct F_triple new_ent; if (ht == NULL) return false; new_ent.name = (char *) file; new_ent.st_ino = stats->st_ino; new_ent.st_dev = stats->st_dev; return !!hash_lookup (ht, &new_ent); } freedink-108.4+dfsg/gnulib/lib/itold.c0000644000175000017500000000201012330466613015322 0ustar meme/* Replacement for 'int' to 'long double' conversion routine. Copyright (C) 2011-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2011. 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 3 of the License, 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, see . */ #include /* Specification. */ #include void _Qp_itoq (long double *result, int a) { /* Convert from 'int' to 'double', then from 'double' to 'long double'. */ *result = (double) a; } freedink-108.4+dfsg/gnulib/lib/c-ctype.h0000644000175000017500000002207312330466613015573 0ustar meme/* Character handling in C locale. These functions work like the corresponding functions in , except that they have the C (POSIX) locale hardwired, whereas the functions' behaviour depends on the current locale set via setlocale. Copyright (C) 2000-2003, 2006, 2008-2014 Free Software Foundation, Inc. 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 of the License, 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, see . */ #ifndef C_CTYPE_H #define C_CTYPE_H #include #ifdef __cplusplus extern "C" { #endif /* The functions defined in this file assume the "C" locale and a character set without diacritics (ASCII-US or EBCDIC-US or something like that). Even if the "C" locale on a particular system is an extension of the ASCII character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it is ISO-8859-1), the functions in this file recognize only the ASCII characters. */ /* Check whether the ASCII optimizations apply. */ /* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that '0', '1', ..., '9' have consecutive integer values. */ #define C_CTYPE_CONSECUTIVE_DIGITS 1 #if ('A' <= 'Z') \ && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \ && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \ && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \ && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \ && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \ && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \ && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \ && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \ && ('Y' + 1 == 'Z') #define C_CTYPE_CONSECUTIVE_UPPERCASE 1 #endif #if ('a' <= 'z') \ && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \ && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \ && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \ && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \ && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \ && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \ && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \ && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \ && ('y' + 1 == 'z') #define C_CTYPE_CONSECUTIVE_LOWERCASE 1 #endif #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126) /* The character set is ASCII or one of its variants or extensions, not EBCDIC. Testing the value of '\n' and '\r' is not relevant. */ #define C_CTYPE_ASCII 1 #endif /* Function declarations. */ /* Unlike the functions in , which require an argument in the range of the 'unsigned char' type, the functions here operate on values that are in the 'unsigned char' range or in the 'char' range. In other words, when you have a 'char' value, you need to cast it before using it as argument to a function: const char *s = ...; if (isalpha ((unsigned char) *s)) ... but you don't need to cast it for the functions defined in this file: const char *s = ...; if (c_isalpha (*s)) ... */ extern bool c_isascii (int c) _GL_ATTRIBUTE_CONST; /* not locale dependent */ extern bool c_isalnum (int c) _GL_ATTRIBUTE_CONST; extern bool c_isalpha (int c) _GL_ATTRIBUTE_CONST; extern bool c_isblank (int c) _GL_ATTRIBUTE_CONST; extern bool c_iscntrl (int c) _GL_ATTRIBUTE_CONST; extern bool c_isdigit (int c) _GL_ATTRIBUTE_CONST; extern bool c_islower (int c) _GL_ATTRIBUTE_CONST; extern bool c_isgraph (int c) _GL_ATTRIBUTE_CONST; extern bool c_isprint (int c) _GL_ATTRIBUTE_CONST; extern bool c_ispunct (int c) _GL_ATTRIBUTE_CONST; extern bool c_isspace (int c) _GL_ATTRIBUTE_CONST; extern bool c_isupper (int c) _GL_ATTRIBUTE_CONST; extern bool c_isxdigit (int c) _GL_ATTRIBUTE_CONST; extern int c_tolower (int c) _GL_ATTRIBUTE_CONST; extern int c_toupper (int c) _GL_ATTRIBUTE_CONST; #if (defined __GNUC__ && !defined __STRICT_ANSI__ && defined __OPTIMIZE__ \ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS) /* ASCII optimizations. */ #undef c_isascii #define c_isascii(c) \ ({ int __c = (c); \ (__c >= 0x00 && __c <= 0x7f); \ }) #if C_CTYPE_CONSECUTIVE_DIGITS \ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII #undef c_isalnum #define c_isalnum(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \ }) #else #undef c_isalnum #define c_isalnum(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ || (__c >= 'A' && __c <= 'Z') \ || (__c >= 'a' && __c <= 'z')); \ }) #endif #endif #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII #undef c_isalpha #define c_isalpha(c) \ ({ int __c = (c); \ ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \ }) #else #undef c_isalpha #define c_isalpha(c) \ ({ int __c = (c); \ ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \ }) #endif #endif #undef c_isblank #define c_isblank(c) \ ({ int __c = (c); \ (__c == ' ' || __c == '\t'); \ }) #if C_CTYPE_ASCII #undef c_iscntrl #define c_iscntrl(c) \ ({ int __c = (c); \ ((__c & ~0x1f) == 0 || __c == 0x7f); \ }) #endif #if C_CTYPE_CONSECUTIVE_DIGITS #undef c_isdigit #define c_isdigit(c) \ ({ int __c = (c); \ (__c >= '0' && __c <= '9'); \ }) #endif #if C_CTYPE_CONSECUTIVE_LOWERCASE #undef c_islower #define c_islower(c) \ ({ int __c = (c); \ (__c >= 'a' && __c <= 'z'); \ }) #endif #if C_CTYPE_ASCII #undef c_isgraph #define c_isgraph(c) \ ({ int __c = (c); \ (__c >= '!' && __c <= '~'); \ }) #endif #if C_CTYPE_ASCII #undef c_isprint #define c_isprint(c) \ ({ int __c = (c); \ (__c >= ' ' && __c <= '~'); \ }) #endif #if C_CTYPE_ASCII #undef c_ispunct #define c_ispunct(c) \ ({ int _c = (c); \ (c_isgraph (_c) && ! c_isalnum (_c)); \ }) #endif #undef c_isspace #define c_isspace(c) \ ({ int __c = (c); \ (__c == ' ' || __c == '\t' \ || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \ }) #if C_CTYPE_CONSECUTIVE_UPPERCASE #undef c_isupper #define c_isupper(c) \ ({ int __c = (c); \ (__c >= 'A' && __c <= 'Z'); \ }) #endif #if C_CTYPE_CONSECUTIVE_DIGITS \ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII #undef c_isxdigit #define c_isxdigit(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \ }) #else #undef c_isxdigit #define c_isxdigit(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ || (__c >= 'A' && __c <= 'F') \ || (__c >= 'a' && __c <= 'f')); \ }) #endif #endif #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #undef c_tolower #define c_tolower(c) \ ({ int __c = (c); \ (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \ }) #undef c_toupper #define c_toupper(c) \ ({ int __c = (c); \ (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \ }) #endif #endif /* optimizing for speed */ #ifdef __cplusplus } #endif #endif /* C_CTYPE_H */ freedink-108.4+dfsg/gnulib/lib/openat.c0000644000175000017500000002072512330466613015512 0ustar meme/* provide a replacement openat function Copyright (C) 2004-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_openat doesn't recurse to rpl_openat. */ #define __need_system_fcntl_h #include /* Get the original definition of open. It might be defined as a macro. */ #include #include #undef __need_system_fcntl_h #if HAVE_OPENAT static int orig_openat (int fd, char const *filename, int flags, mode_t mode) { return openat (fd, filename, flags, mode); } #endif /* Write "fcntl.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "fcntl.h" #include "openat.h" #include #include #include #include #include #include #if HAVE_OPENAT /* Like openat, but work around Solaris 9 bugs with trailing slash. */ int rpl_openat (int dfd, char const *filename, int flags, ...) { mode_t mode; int fd; mode = 0; if (flags & O_CREAT) { va_list arg; va_start (arg, flags); /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4 creates crashing code when 'mode_t' is smaller than 'int'. */ mode = va_arg (arg, PROMOTED_MODE_T); va_end (arg); } # if OPEN_TRAILING_SLASH_BUG /* If the filename ends in a slash and one of O_CREAT, O_WRONLY, O_RDWR is specified, then fail. Rationale: POSIX says that "A pathname that contains at least one non-slash character and that ends with one or more trailing slashes shall be resolved as if a single dot character ( '.' ) were appended to the pathname." and "The special filename dot shall refer to the directory specified by its predecessor." If the named file already exists as a directory, then - if O_CREAT is specified, open() must fail because of the semantics of O_CREAT, - if O_WRONLY or O_RDWR is specified, open() must fail because POSIX says that it fails with errno = EISDIR in this case. If the named file does not exist or does not name a directory, then - if O_CREAT is specified, open() must fail since open() cannot create directories, - if O_WRONLY or O_RDWR is specified, open() must fail because the file does not contain a '.' directory. */ if (flags & (O_CREAT | O_WRONLY | O_RDWR)) { size_t len = strlen (filename); if (len > 0 && filename[len - 1] == '/') { errno = EISDIR; return -1; } } # endif fd = orig_openat (dfd, filename, flags, mode); # if OPEN_TRAILING_SLASH_BUG /* If the filename ends in a slash and fd does not refer to a directory, then fail. Rationale: POSIX says that "A pathname that contains at least one non-slash character and that ends with one or more trailing slashes shall be resolved as if a single dot character ( '.' ) were appended to the pathname." and "The special filename dot shall refer to the directory specified by its predecessor." If the named file without the slash is not a directory, open() must fail with ENOTDIR. */ if (fd >= 0) { /* We know len is positive, since open did not fail with ENOENT. */ size_t len = strlen (filename); if (filename[len - 1] == '/') { struct stat statbuf; if (fstat (fd, &statbuf) >= 0 && !S_ISDIR (statbuf.st_mode)) { close (fd); errno = ENOTDIR; return -1; } } } # endif return fd; } #else /* !HAVE_OPENAT */ # include "dosname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */ # include "openat-priv.h" # include "save-cwd.h" /* Replacement for Solaris' openat function. First, try to simulate it via open ("/proc/self/fd/FD/FILE"). Failing that, simulate it by doing save_cwd/fchdir/open/restore_cwd. If either the save_cwd or the restore_cwd fails (relatively unlikely), then give a diagnostic and exit nonzero. Otherwise, upon failure, set errno and return -1, as openat does. Upon successful completion, return a file descriptor. */ int openat (int fd, char const *file, int flags, ...) { mode_t mode = 0; if (flags & O_CREAT) { va_list arg; va_start (arg, flags); /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4 creates crashing code when 'mode_t' is smaller than 'int'. */ mode = va_arg (arg, PROMOTED_MODE_T); va_end (arg); } return openat_permissive (fd, file, flags, mode, NULL); } /* Like openat (FD, FILE, FLAGS, MODE), but if CWD_ERRNO is nonnull, set *CWD_ERRNO to an errno value if unable to save or restore the initial working directory. This is needed only the first time remove.c's remove_dir opens a command-line directory argument. If a previous attempt to restore the current working directory failed, then we must not even try to access a '.'-relative name. It is the caller's responsibility not to call this function in that case. */ int openat_permissive (int fd, char const *file, int flags, mode_t mode, int *cwd_errno) { struct saved_cwd saved_cwd; int saved_errno; int err; bool save_ok; if (fd == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file)) return open (file, flags, mode); { char buf[OPENAT_BUFFER_SIZE]; char *proc_file = openat_proc_name (buf, fd, file); if (proc_file) { int open_result = open (proc_file, flags, mode); int open_errno = errno; if (proc_file != buf) free (proc_file); /* If the syscall succeeds, or if it fails with an unexpected errno value, then return right away. Otherwise, fall through and resort to using save_cwd/restore_cwd. */ if (0 <= open_result || ! EXPECTED_ERRNO (open_errno)) { errno = open_errno; return open_result; } } } save_ok = (save_cwd (&saved_cwd) == 0); if (! save_ok) { if (! cwd_errno) openat_save_fail (errno); *cwd_errno = errno; } if (0 <= fd && fd == saved_cwd.desc) { /* If saving the working directory collides with the user's requested fd, then the user's fd must have been closed to begin with. */ free_cwd (&saved_cwd); errno = EBADF; return -1; } err = fchdir (fd); saved_errno = errno; if (! err) { err = open (file, flags, mode); saved_errno = errno; if (save_ok && restore_cwd (&saved_cwd) != 0) { if (! cwd_errno) { /* Don't write a message to just-created fd 2. */ saved_errno = errno; if (err == STDERR_FILENO) close (err); openat_restore_fail (saved_errno); } *cwd_errno = errno; } } free_cwd (&saved_cwd); errno = saved_errno; return err; } /* Return true if our openat implementation must resort to using save_cwd and restore_cwd. */ bool openat_needs_fchdir (void) { bool needs_fchdir = true; int fd = open ("/", O_SEARCH); if (0 <= fd) { char buf[OPENAT_BUFFER_SIZE]; char *proc_file = openat_proc_name (buf, fd, "."); if (proc_file) { needs_fchdir = false; if (proc_file != buf) free (proc_file); } close (fd); } return needs_fchdir; } #endif /* !HAVE_OPENAT */ freedink-108.4+dfsg/gnulib/lib/filenamecat-lgpl.c0000644000175000017500000000544212330466613017427 0ustar meme/* Concatenate two arbitrary file names. Copyright (C) 1996-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #include /* Specification. */ #include "filenamecat.h" #include #include #include "dirname.h" #if ! HAVE_MEMPCPY && ! defined mempcpy # define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N))) #endif /* Return the longest suffix of F that is a relative file name. If it has no such suffix, return the empty string. */ static char const * _GL_ATTRIBUTE_PURE longest_relative_suffix (char const *f) { for (f += FILE_SYSTEM_PREFIX_LEN (f); ISSLASH (*f); f++) continue; return f; } /* Concatenate two file name components, DIR and ABASE, in newly-allocated storage and return the result. The resulting file name F is such that the commands "ls F" and "(cd DIR; ls BASE)" refer to the same file, where BASE is ABASE with any file system prefixes and leading separators removed. Arrange for a directory separator if necessary between DIR and BASE in the result, removing any redundant separators. In any case, if BASE_IN_RESULT is non-NULL, set *BASE_IN_RESULT to point to the copy of ABASE in the returned concatenation. However, if ABASE begins with more than one slash, set *BASE_IN_RESULT to point to the sole corresponding slash that is copied into the result buffer. Return NULL if malloc fails. */ char * mfile_name_concat (char const *dir, char const *abase, char **base_in_result) { char const *dirbase = last_component (dir); size_t dirbaselen = base_len (dirbase); size_t dirlen = dirbase - dir + dirbaselen; size_t needs_separator = (dirbaselen && ! ISSLASH (dirbase[dirbaselen - 1])); char const *base = longest_relative_suffix (abase); size_t baselen = strlen (base); char *p_concat = malloc (dirlen + needs_separator + baselen + 1); char *p; if (p_concat == NULL) return NULL; p = mempcpy (p_concat, dir, dirlen); *p = DIRECTORY_SEPARATOR; p += needs_separator; if (base_in_result) *base_in_result = p - IS_ABSOLUTE_FILE_NAME (abase); p = mempcpy (p, base, baselen); *p = '\0'; return p_concat; } freedink-108.4+dfsg/gnulib/lib/canonicalize.h0000644000175000017500000000336412330466613016670 0ustar meme/* Return the canonical absolute name of a given file. Copyright (C) 1996-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef CANONICALIZE_H_ # define CANONICALIZE_H_ #include /* for canonicalize_file_name */ #define CAN_MODE_MASK (CAN_EXISTING | CAN_ALL_BUT_LAST | CAN_MISSING) enum canonicalize_mode_t { /* All components must exist. */ CAN_EXISTING = 0, /* All components excluding last one must exist. */ CAN_ALL_BUT_LAST = 1, /* No requirements on components existence. */ CAN_MISSING = 2, /* Don't expand symlinks. */ CAN_NOLINKS = 4 }; typedef enum canonicalize_mode_t canonicalize_mode_t; /* Return the canonical absolute name of file NAME, while treating missing elements according to CAN_MODE. A canonical name does not contain any `.', `..' components nor any repeated file name separators ('/') or, depending on other CAN_MODE flags, symlinks. Whether components must exist or not depends on canonicalize mode. The result is malloc'd. */ char *canonicalize_filename_mode (const char *, canonicalize_mode_t); #endif /* !CANONICALIZE_H_ */ freedink-108.4+dfsg/gnulib/lib/xalloc-die.c0000644000175000017500000000243412330466613016242 0ustar meme/* Report a memory allocation failure and exit. Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "xalloc.h" #include #include "error.h" #include "exitfail.h" #include "gettext.h" #define _(msgid) gettext (msgid) void xalloc_die (void) { error (exit_failure, 0, "%s", _("memory exhausted")); /* _Noreturn cannot be given to error, since it may return if its first argument is 0. To help compilers understand the xalloc_die does not return, call abort. Also, the abort is a safety feature if exit_failure is 0 (which shouldn't happen). */ abort (); } freedink-108.4+dfsg/gnulib/lib/exitfail.h0000644000175000017500000000140212330466613016025 0ustar meme/* Failure exit status Copyright (C) 2002, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ extern int volatile exit_failure; freedink-108.4+dfsg/gnulib/lib/getopt.in.h0000644000175000017500000002162112330466613016134 0ustar meme/* Declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2014 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 3 of the License, 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, see . */ #ifndef _@GUARD_PREFIX@_GETOPT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. We must also inform the replacement unistd.h to not recursively use ; our definitions will be present soon enough. */ #if @HAVE_GETOPT_H@ # define _GL_SYSTEM_GETOPT # @INCLUDE_NEXT@ @NEXT_GETOPT_H@ # undef _GL_SYSTEM_GETOPT #endif #ifndef _@GUARD_PREFIX@_GETOPT_H #ifndef __need_getopt # define _@GUARD_PREFIX@_GETOPT_H 1 #endif /* Standalone applications should #define __GETOPT_PREFIX to an identifier that prefixes the external functions and variables defined in this header. When this happens, include the headers that might declare getopt so that they will not cause confusion if included after this file (if the system had , we have already included it). Then systematically rename identifiers so that they do not collide with the system functions and variables. Renaming avoids problems with some compilers and linkers. */ #if defined __GETOPT_PREFIX && !defined __need_getopt # if !@HAVE_GETOPT_H@ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h # include # include # endif # undef __need_getopt # undef getopt # undef getopt_long # undef getopt_long_only # undef optarg # undef opterr # undef optind # undef optopt # undef option # define __GETOPT_CONCAT(x, y) x ## y # define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) # define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) # define getopt __GETOPT_ID (getopt) # define getopt_long __GETOPT_ID (getopt_long) # define getopt_long_only __GETOPT_ID (getopt_long_only) # define optarg __GETOPT_ID (optarg) # define opterr __GETOPT_ID (opterr) # define optind __GETOPT_ID (optind) # define optopt __GETOPT_ID (optopt) # define option __GETOPT_ID (option) # define _getopt_internal __GETOPT_ID (getopt_internal) #endif /* Standalone applications get correct prototypes for getopt_long and getopt_long_only; they declare "char **argv". libc uses prototypes with "char *const *argv" that are incorrect because getopt_long and getopt_long_only can permute argv; this is required for backward compatibility (e.g., for LSB 2.0.1). This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt', but it caused redefinition warnings if both unistd.h and getopt.h were included, since unistd.h includes getopt.h having previously defined __need_getopt. The only place where __getopt_argv_const is used is in definitions of getopt_long and getopt_long_only below, but these are visible only if __need_getopt is not defined, so it is quite safe to rewrite the conditional as follows: */ #if !defined __need_getopt # if defined __GETOPT_PREFIX # define __getopt_argv_const /* empty */ # else # define __getopt_argv_const const # endif #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 /* The definition of _GL_ARG_NONNULL is copied here. */ #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. */ # if !GNULIB_defined_struct_option 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; }; # define GNULIB_defined_struct_option 1 # endif /* 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 '\1'. This behavior is specific to the GNU 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in the environment, then do not permute arguments. */ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW _GL_ARG_NONNULL ((2, 3)); #ifndef __need_getopt extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); #endif #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* _@GUARD_PREFIX@_GETOPT_H */ #endif /* _@GUARD_PREFIX@_GETOPT_H */ freedink-108.4+dfsg/gnulib/lib/memchr.valgrind0000644000175000017500000000065212330466613017060 0ustar meme# Suppress a valgrind message about use of uninitialized memory in memchr(). # POSIX states that when the character is found, memchr must not read extra # bytes in an overestimated length (for example, where memchr is used to # implement strnlen). However, we use a safe word read to provide a speedup. { memchr-value4 Memcheck:Value4 fun:rpl_memchr } { memchr-value8 Memcheck:Value8 fun:rpl_memchr } freedink-108.4+dfsg/gnulib/lib/careadlinkat.h0000644000175000017500000000475412330466613016657 0ustar meme/* Read symbolic links into a buffer without size limitation, relative to fd. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ #ifndef _GL_CAREADLINKAT_H #define _GL_CAREADLINKAT_H #include #include struct allocator; /* Assuming the current directory is FD, get the symbolic link value of FILENAME as a null-terminated string and put it into a buffer. If FD is AT_FDCWD, FILENAME is interpreted relative to the current working directory, as in openat. If the link is small enough to fit into BUFFER put it there. BUFFER's size is BUFFER_SIZE, and BUFFER can be null if BUFFER_SIZE is zero. If the link is not small, put it into a dynamically allocated buffer managed by ALLOC. It is the caller's responsibility to free the returned value if it is nonnull and is not BUFFER. The PREADLINKAT function specifies how to read links. It operates like POSIX readlinkat() but can assume that its first argument is the same as FD. If successful, return the buffer address; otherwise return NULL and set errno. */ char *careadlinkat (int fd, char const *filename, char *buffer, size_t buffer_size, struct allocator const *alloc, ssize_t (*preadlinkat) (int, char const *, char *, size_t)); /* Suitable value for careadlinkat's FD argument. */ #if HAVE_READLINKAT /* AT_FDCWD is declared in . */ #else /* Define AT_FDCWD independently, so that the careadlinkat module does not depend on the fcntl-h module. We might as well use the same value as fcntl-h. */ # ifndef AT_FDCWD # define AT_FDCWD (-3041965) # endif #endif #endif /* _GL_CAREADLINKAT_H */ freedink-108.4+dfsg/gnulib/lib/fstat.c0000644000175000017500000000460512330466613015344 0ustar meme/* fstat() replacement. Copyright (C) 2011-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_fstat doesn't recurse to rpl_fstat. */ #define __need_system_sys_stat_h #include /* Get the original definition of fstat. It might be defined as a macro. */ #include #include #if _GL_WINDOWS_64_BIT_ST_SIZE # undef stat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define stat _stati64 # undef fstat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define fstat _fstati64 #endif #undef __need_system_sys_stat_h static int orig_fstat (int fd, struct stat *buf) { return fstat (fd, buf); } /* Specification. */ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "sys/stat.h" #include #include #if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" #endif #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int fstat_nothrow (int fd, struct stat *buf) { int result; TRY_MSVC_INVAL { result = orig_fstat (fd, buf); } CATCH_MSVC_INVAL { result = -1; errno = EBADF; } DONE_MSVC_INVAL; return result; } #else # define fstat_nothrow orig_fstat #endif int rpl_fstat (int fd, struct stat *buf) { #if REPLACE_FCHDIR && REPLACE_OPEN_DIRECTORY /* Handle the case when rpl_open() used a dummy file descriptor to work around an open() that can't normally visit directories. */ const char *name = _gl_directory_name (fd); if (name != NULL) return stat (name, buf); #endif return fstat_nothrow (fd, buf); } freedink-108.4+dfsg/gnulib/lib/xalloc-oversized.h0000644000175000017500000000322712330466613017521 0ustar meme/* xalloc-oversized.h -- memory allocation size checking Copyright (C) 1990-2000, 2003-2004, 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #ifndef XALLOC_OVERSIZED_H_ # define XALLOC_OVERSIZED_H_ # include /* Return 1 if an array of N objects, each of size S, cannot exist due to size arithmetic overflow. S must be positive and N must be nonnegative. This is a macro, not a function, so that it works correctly even when SIZE_MAX < N. By gnulib convention, SIZE_MAX represents overflow in size calculations, so the conservative dividend to use here is SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value. However, malloc (SIZE_MAX) fails on all known hosts where sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for exactly-SIZE_MAX allocations on such hosts; this avoids a test and branch when S is known to be 1. */ # define xalloc_oversized(n, s) \ ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n)) #endif /* !XALLOC_OVERSIZED_H_ */ freedink-108.4+dfsg/gnulib/lib/dirname-lgpl.c0000644000175000017500000000612012330466613016570 0ustar meme/* dirname.c -- return all but the last element in a file name Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "dirname.h" #include #include /* Return the length of the prefix of FILE that will be used by dir_name. If FILE is in the working directory, this returns zero even though 'dir_name (FILE)' will return ".". Works properly even if there are trailing slashes (by effectively ignoring them). */ size_t dir_len (char const *file) { size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file); size_t length; /* Advance prefix_length beyond important leading slashes. */ prefix_length += (prefix_length != 0 ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && ISSLASH (file[prefix_length])) : (ISSLASH (file[0]) ? ((DOUBLE_SLASH_IS_DISTINCT_ROOT && ISSLASH (file[1]) && ! ISSLASH (file[2]) ? 2 : 1)) : 0)); /* Strip the basename and any redundant slashes before it. */ for (length = last_component (file) - file; prefix_length < length; length--) if (! ISSLASH (file[length - 1])) break; return length; } /* In general, we can't use the builtin 'dirname' function if available, since it has different meanings in different environments. In some environments the builtin 'dirname' modifies its argument. Return the leading directories part of FILE, allocated with malloc. Works properly even if there are trailing slashes (by effectively ignoring them). Return NULL on failure. If lstat (FILE) would succeed, then { chdir (dir_name (FILE)); lstat (base_name (FILE)); } will access the same file. Likewise, if the sequence { chdir (dir_name (FILE)); rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE to "foo" in the same directory FILE was in. */ char * mdir_name (char const *file) { size_t length = dir_len (file); bool append_dot = (length == 0 || (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && length == FILE_SYSTEM_PREFIX_LEN (file) && file[2] != '\0' && ! ISSLASH (file[2]))); char *dir = malloc (length + append_dot + 1); if (!dir) return NULL; memcpy (dir, file, length); if (append_dot) dir[length++] = '.'; dir[length] = '\0'; return dir; } freedink-108.4+dfsg/gnulib/lib/bitrotate.h0000644000175000017500000001057412330466613016227 0ustar meme/* bitrotate.h - Rotate bits in integers Copyright (C) 2008-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Simon Josefsson , 2008. */ #ifndef _GL_BITROTATE_H #define _GL_BITROTATE_H #include #include #include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef BITROTATE_INLINE # define BITROTATE_INLINE _GL_INLINE #endif #ifdef UINT64_MAX /* Given an unsigned 64-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 and 63 inclusive. */ BITROTATE_INLINE uint64_t rotl64 (uint64_t x, int n) { return ((x << n) | (x >> (64 - n))) & UINT64_MAX; } /* Given an unsigned 64-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be between 1 to 63 inclusive.*/ BITROTATE_INLINE uint64_t rotr64 (uint64_t x, int n) { return ((x >> n) | (x << (64 - n))) & UINT64_MAX; } #endif /* Given an unsigned 32-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 and 31 inclusive. */ BITROTATE_INLINE uint32_t rotl32 (uint32_t x, int n) { return ((x << n) | (x >> (32 - n))) & UINT32_MAX; } /* Given an unsigned 32-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be between 1 to 31 inclusive.*/ BITROTATE_INLINE uint32_t rotr32 (uint32_t x, int n) { return ((x >> n) | (x << (32 - n))) & UINT32_MAX; } /* Given a size_t argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 and (CHAR_BIT * sizeof (size_t) - 1) inclusive. */ BITROTATE_INLINE size_t rotl_sz (size_t x, int n) { return ((x << n) | (x >> ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX; } /* Given a size_t argument X, return the value corresponding to rotating the bits N steps to the right. N must be between 1 to (CHAR_BIT * sizeof (size_t) - 1) inclusive. */ BITROTATE_INLINE size_t rotr_sz (size_t x, int n) { return ((x >> n) | (x << ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX; } /* Given an unsigned 16-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 to 15 inclusive, but on most relevant targets N can also be 0 and 16 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint16_t rotl16 (uint16_t x, int n) { return ((x << n) | (x >> (16 - n))) & UINT16_MAX; } /* Given an unsigned 16-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be in 1 to 15 inclusive, but on most relevant targets N can also be 0 and 16 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint16_t rotr16 (uint16_t x, int n) { return ((x >> n) | (x << (16 - n))) & UINT16_MAX; } /* Given an unsigned 8-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 to 7 inclusive, but on most relevant targets N can also be 0 and 8 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint8_t rotl8 (uint8_t x, int n) { return ((x << n) | (x >> (8 - n))) & UINT8_MAX; } /* Given an unsigned 8-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be in 1 to 7 inclusive, but on most relevant targets N can also be 0 and 8 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint8_t rotr8 (uint8_t x, int n) { return ((x >> n) | (x << (8 - n))) & UINT8_MAX; } _GL_INLINE_HEADER_END #endif /* _GL_BITROTATE_H */ freedink-108.4+dfsg/gnulib/lib/stat.c0000644000175000017500000001066612330466613015202 0ustar meme/* Work around platform bugs in stat. Copyright (C) 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Eric Blake */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_stat doesn't recurse to rpl_stat. */ #define __need_system_sys_stat_h #include /* Get the original definition of stat. It might be defined as a macro. */ #include #include #undef __need_system_sys_stat_h #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # if _GL_WINDOWS_64_BIT_ST_SIZE # undef stat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define stat _stati64 # define REPLACE_FUNC_STAT_DIR 1 # undef REPLACE_FUNC_STAT_FILE # elif REPLACE_FUNC_STAT_FILE /* mingw64 has a broken stat() function, based on _stat(), in libmingwex.a. Bypass it. */ # define stat _stat # define REPLACE_FUNC_STAT_DIR 1 # undef REPLACE_FUNC_STAT_FILE # endif #endif static int orig_stat (const char *filename, struct stat *buf) { return stat (filename, buf); } /* Specification. */ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "sys/stat.h" #include #include #include #include #include "dosname.h" #include "verify.h" #if REPLACE_FUNC_STAT_DIR # include "pathmax.h" /* The only known systems where REPLACE_FUNC_STAT_DIR is needed also have a constant PATH_MAX. */ # ifndef PATH_MAX # error "Please port this replacement to your platform" # endif #endif /* Store information about NAME into ST. Work around bugs with trailing slashes. Mingw has other bugs (such as st_ino always being 0 on success) which this wrapper does not work around. But at least this implementation provides the ability to emulate fchdir correctly. */ int rpl_stat (char const *name, struct stat *st) { int result = orig_stat (name, st); #if REPLACE_FUNC_STAT_FILE /* Solaris 9 mistakenly succeeds when given a non-directory with a trailing slash. */ if (result == 0 && !S_ISDIR (st->st_mode)) { size_t len = strlen (name); if (ISSLASH (name[len - 1])) { errno = ENOTDIR; return -1; } } #endif /* REPLACE_FUNC_STAT_FILE */ #if REPLACE_FUNC_STAT_DIR if (result == -1 && errno == ENOENT) { /* Due to mingw's oddities, there are some directories (like c:\) where stat() only succeeds with a trailing slash, and other directories (like c:\windows) where stat() only succeeds without a trailing slash. But we want the two to be synonymous, since chdir() manages either style. Likewise, Mingw also reports ENOENT for names longer than PATH_MAX, when we want ENAMETOOLONG, and for stat("file/"), when we want ENOTDIR. Fortunately, mingw PATH_MAX is small enough for stack allocation. */ char fixed_name[PATH_MAX + 1] = {0}; size_t len = strlen (name); bool check_dir = false; verify (PATH_MAX <= 4096); if (PATH_MAX <= len) errno = ENAMETOOLONG; else if (len) { strcpy (fixed_name, name); if (ISSLASH (fixed_name[len - 1])) { check_dir = true; while (len && ISSLASH (fixed_name[len - 1])) fixed_name[--len] = '\0'; if (!len) fixed_name[0] = '/'; } else fixed_name[len++] = '/'; result = orig_stat (fixed_name, st); if (result == 0 && check_dir && !S_ISDIR (st->st_mode)) { result = -1; errno = ENOTDIR; } } } #endif /* REPLACE_FUNC_STAT_DIR */ return result; } freedink-108.4+dfsg/gnulib/lib/save-cwd.h0000644000175000017500000000204512330466613015735 0ustar meme/* Save and restore current working directory. Copyright (C) 1995, 1997-1998, 2003, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #ifndef SAVE_CWD_H # define SAVE_CWD_H 1 struct saved_cwd { int desc; char *name; }; int save_cwd (struct saved_cwd *cwd); int restore_cwd (const struct saved_cwd *cwd); void free_cwd (struct saved_cwd *cwd); #endif /* SAVE_CWD_H */ freedink-108.4+dfsg/gnulib/lib/relocatable.h0000644000175000017500000000610212330466613016477 0ustar meme/* Provide relocatable packages. Copyright (C) 2003, 2005, 2008-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2003. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef _RELOCATABLE_H #define _RELOCATABLE_H #ifdef __cplusplus extern "C" { #endif /* This can be enabled through the configure --enable-relocatable option. */ #if ENABLE_RELOCATABLE /* When building a DLL, we must export some functions. Note that because this is a private .h file, we don't need to use __declspec(dllimport) in any case. */ #if HAVE_VISIBILITY && BUILDING_DLL # define RELOCATABLE_DLL_EXPORTED __attribute__((__visibility__("default"))) #elif defined _MSC_VER && BUILDING_DLL # define RELOCATABLE_DLL_EXPORTED __declspec(dllexport) #else # define RELOCATABLE_DLL_EXPORTED #endif /* Sets the original and the current installation prefix of the package. Relocation simply replaces a pathname starting with the original prefix by the corresponding pathname with the current prefix instead. Both prefixes should be directory names without trailing slash (i.e. use "" instead of "/"). */ extern RELOCATABLE_DLL_EXPORTED void set_relocation_prefix (const char *orig_prefix, const char *curr_prefix); /* Returns the pathname, relocated according to the current installation directory. The returned string is either PATHNAME unmodified or a freshly allocated string that you can free with free() after casting it to 'char *'. */ extern const char * relocate (const char *pathname); /* Memory management: relocate() potentially allocates memory, because it has to construct a fresh pathname. If this is a problem because your program calls relocate() frequently, think about caching the result. Or free the return value if it was different from the argument pathname. */ /* Convenience function: Computes the current installation prefix, based on the original installation prefix, the original installation directory of a particular file, and the current pathname of this file. Returns it, freshly allocated. Returns NULL upon failure. */ extern char * compute_curr_prefix (const char *orig_installprefix, const char *orig_installdir, const char *curr_pathname); #else /* By default, we use the hardwired pathnames. */ #define relocate(pathname) (pathname) #endif #ifdef __cplusplus } #endif #endif /* _RELOCATABLE_H */ freedink-108.4+dfsg/gnulib/lib/progreloc.c0000644000175000017500000002714112330466613016217 0ustar meme/* Provide relocatable programs. Copyright (C) 2003-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2003. 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 3 of the License, 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, see . */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Specification. */ #include "progname.h" #include #include #include #include #include #include #include /* Get declaration of _NSGetExecutablePath on Mac OS X 10.2 or newer. */ #if HAVE_MACH_O_DYLD_H # include #endif #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ # define WINDOWS_NATIVE #endif #ifdef WINDOWS_NATIVE # define WIN32_LEAN_AND_MEAN # include #endif #include "relocatable.h" #ifdef NO_XMALLOC # include "areadlink.h" # define xreadlink areadlink #else # include "xreadlink.h" #endif #ifdef NO_XMALLOC # define xmalloc malloc # define xstrdup strdup #else # include "xalloc.h" #endif #ifndef O_EXEC # define O_EXEC O_RDONLY /* This is often close enough in older systems. */ #endif /* Declare canonicalize_file_name. The included above may be the system's one, not the gnulib one. */ extern char * canonicalize_file_name (const char *name); /* Pathname support. ISSLASH(C) tests whether C is a directory separator character. IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. */ #if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ /* Native Windows, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') # define HAS_DEVICE(P) \ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ && (P)[1] == ':') # define IS_PATH_WITH_DIR(P) \ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) # define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) #else /* Unix */ # define ISSLASH(C) ((C) == '/') # define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) # define FILE_SYSTEM_PREFIX_LEN(P) 0 #endif /* The results of open() in this file are not used with fchdir, therefore save some unnecessary work in fchdir.c. */ #undef open #undef close /* Use the system functions, not the gnulib overrides in this file. */ #undef sprintf #undef set_program_name #if ENABLE_RELOCATABLE #if defined __linux__ || defined __CYGWIN__ /* File descriptor of the executable. (Only used to verify that we find the correct executable.) */ static int executable_fd = -1; #endif /* Tests whether a given pathname may belong to the executable. */ static bool maybe_executable (const char *filename) { /* The native Windows API lacks the access() function. */ #if !defined WINDOWS_NATIVE if (access (filename, X_OK) < 0) return false; #endif #if defined __linux__ || defined __CYGWIN__ if (executable_fd >= 0) { /* If we already have an executable_fd, check that filename points to the same inode. */ struct stat statexe; struct stat statfile; if (fstat (executable_fd, &statexe) >= 0) { if (stat (filename, &statfile) < 0) return false; if (!(statfile.st_dev && statfile.st_dev == statexe.st_dev && statfile.st_ino == statexe.st_ino)) return false; } } #endif return true; } /* Determine the full pathname of the current executable, freshly allocated. Return NULL if unknown. Guaranteed to work on Linux and native Windows. Likely to work on the other Unixes (maybe except BeOS), under most conditions. */ static char * find_executable (const char *argv0) { #if defined WINDOWS_NATIVE /* Native Windows only. On Cygwin, it is better to use the Cygwin provided /proc interface, than to use native Windows API and cygwin_conv_to_posix_path, because it supports longer file names (see ). */ char location[MAX_PATH]; int length = GetModuleFileName (NULL, location, sizeof (location)); if (length < 0) return NULL; if (!IS_PATH_WITH_DIR (location)) /* Shouldn't happen. */ return NULL; return xstrdup (location); #else /* Unix */ # ifdef __linux__ /* The executable is accessible as /proc//exe. In newer Linux versions, also as /proc/self/exe. Linux >= 2.1 provides a symlink to the true pathname; older Linux versions give only device and ino, enclosed in brackets, which we cannot use here. */ { char *link; link = xreadlink ("/proc/self/exe"); if (link != NULL && link[0] != '[') return link; if (executable_fd < 0) executable_fd = open ("/proc/self/exe", O_EXEC, 0); { char buf[6+10+5]; sprintf (buf, "/proc/%d/exe", getpid ()); link = xreadlink (buf); if (link != NULL && link[0] != '[') return link; if (executable_fd < 0) executable_fd = open (buf, O_EXEC, 0); } } # endif # ifdef __CYGWIN__ /* The executable is accessible as /proc//exe, at least in Cygwin >= 1.5. */ { char *link; link = xreadlink ("/proc/self/exe"); if (link != NULL) return link; if (executable_fd < 0) executable_fd = open ("/proc/self/exe", O_EXEC, 0); } # endif # if HAVE_MACH_O_DYLD_H && HAVE__NSGETEXECUTABLEPATH /* On Mac OS X 10.2 or newer, the function int _NSGetExecutablePath (char *buf, uint32_t *bufsize); can be used to retrieve the executable's full path. */ char location[4096]; unsigned int length = sizeof (location); if (_NSGetExecutablePath (location, &length) == 0 && location[0] == '/') return canonicalize_file_name (location); # endif /* Guess the executable's full path. We assume the executable has been called via execlp() or execvp() with properly set up argv[0]. The login(1) convention to add a '-' prefix to argv[0] is not supported. */ { bool has_slash = false; { const char *p; for (p = argv0; *p; p++) if (*p == '/') { has_slash = true; break; } } if (!has_slash) { /* exec searches paths without slashes in the directory list given by $PATH. */ const char *path = getenv ("PATH"); if (path != NULL) { const char *p; const char *p_next; for (p = path; *p; p = p_next) { const char *q; size_t p_len; char *concat_name; for (q = p; *q; q++) if (*q == ':') break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); /* We have a path item at p, of length p_len. Now concatenate the path item and argv0. */ concat_name = (char *) xmalloc (p_len + strlen (argv0) + 2); # ifdef NO_XMALLOC if (concat_name == NULL) return NULL; # endif if (p_len == 0) /* An empty PATH element designates the current directory. */ strcpy (concat_name, argv0); else { memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, argv0); } if (maybe_executable (concat_name)) return canonicalize_file_name (concat_name); free (concat_name); } } /* Not found in the PATH, assume the current directory. */ } /* exec treats paths containing slashes as relative to the current directory. */ if (maybe_executable (argv0)) return canonicalize_file_name (argv0); } /* No way to find the executable. */ return NULL; #endif } /* Full pathname of executable, or NULL. */ static char *executable_fullname; static void prepare_relocate (const char *orig_installprefix, const char *orig_installdir, const char *argv0) { char *curr_prefix; /* Determine the full pathname of the current executable. */ executable_fullname = find_executable (argv0); /* Determine the current installation prefix from it. */ curr_prefix = compute_curr_prefix (orig_installprefix, orig_installdir, executable_fullname); if (curr_prefix != NULL) { /* Now pass this prefix to all copies of the relocate.c source file. */ set_relocation_prefix (orig_installprefix, curr_prefix); free (curr_prefix); } } /* Set program_name, based on argv[0], and original installation prefix and directory, for relocatability. */ void set_program_name_and_installdir (const char *argv0, const char *orig_installprefix, const char *orig_installdir) { const char *argv0_stripped = argv0; /* Relocatable programs are renamed to .bin by install-reloc. Or, more generally, their suffix is changed from $exeext to .bin$exeext. Remove the ".bin" here. */ { size_t argv0_len = strlen (argv0); const size_t exeext_len = sizeof (EXEEXT) - sizeof (""); if (argv0_len > 4 + exeext_len) if (memcmp (argv0 + argv0_len - exeext_len - 4, ".bin", 4) == 0) { if (sizeof (EXEEXT) > sizeof ("")) { /* Compare using an inlined copy of c_strncasecmp(), because the filenames may have undergone a case conversion since they were packaged. In other words, EXEEXT may be ".exe" on one system and ".EXE" on another. */ static const char exeext[] = EXEEXT; const char *s1 = argv0 + argv0_len - exeext_len; const char *s2 = exeext; for (; *s1 != '\0'; s1++, s2++) { unsigned char c1 = *s1; unsigned char c2 = *s2; if ((c1 >= 'A' && c1 <= 'Z' ? c1 - 'A' + 'a' : c1) != (c2 >= 'A' && c2 <= 'Z' ? c2 - 'A' + 'a' : c2)) goto done_stripping; } } /* Remove ".bin" before EXEEXT or its equivalent. */ { char *shorter = (char *) xmalloc (argv0_len - 4 + 1); #ifdef NO_XMALLOC if (shorter != NULL) #endif { memcpy (shorter, argv0, argv0_len - exeext_len - 4); if (sizeof (EXEEXT) > sizeof ("")) memcpy (shorter + argv0_len - exeext_len - 4, argv0 + argv0_len - exeext_len - 4, exeext_len); shorter[argv0_len - 4] = '\0'; argv0_stripped = shorter; } } done_stripping: ; } } set_program_name (argv0_stripped); prepare_relocate (orig_installprefix, orig_installdir, argv0); } /* Return the full pathname of the current executable, based on the earlier call to set_program_name_and_installdir. Return NULL if unknown. */ char * get_full_program_name (void) { return executable_fullname; } #endif freedink-108.4+dfsg/gnulib/lib/closedir.c0000644000175000017500000000264212330466613016026 0ustar meme/* Stop reading the entries of a directory. Copyright (C) 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #if REPLACE_FCHDIR # include #endif #if HAVE_CLOSEDIR /* Override closedir(), to keep track of the open file descriptors. Needed because there is a function dirfd(). */ #else # include # include "dirent-private.h" #endif int closedir (DIR *dirp) { # if REPLACE_FCHDIR int fd = dirfd (dirp); # endif int retval; #if HAVE_CLOSEDIR # undef closedir retval = closedir (dirp); #else if (dirp->current != INVALID_HANDLE_VALUE) FindClose (dirp->current); free (dirp); retval = 0; #endif #if REPLACE_FCHDIR if (retval >= 0) _gl_unregister_fd (fd); #endif return retval; } freedink-108.4+dfsg/gnulib/lib/allocator.c0000644000175000017500000000025112330466613016174 0ustar meme#define _GL_USE_STDLIB_ALLOC 1 #include #include "allocator.h" #include struct allocator const stdlib_allocator = { malloc, realloc, free, NULL }; freedink-108.4+dfsg/gnulib/lib/wchar.in.h0000644000175000017500000010167512330466613015746 0ustar meme/* A substitute for ISO C99 , for platforms that have issues. Copyright (C) 2007-2014 Free Software Foundation, Inc. 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, see . */ /* Written by Eric Blake. */ /* * ISO C 99 for platforms that have issues. * * * For now, this just ensures proper prerequisite inclusion order and * the declaration of wcwidth(). */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_mbstate_t || defined __need_wint_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H /* Special invocation convention: - Inside glibc and uClibc header files. - On HP-UX 11.00 we have a sequence of nested includes -> -> , and the latter includes , once indirectly -> -> -> and once directly. In both situations 'wint_t' is not yet defined, therefore we cannot provide the function overrides; instead include only the system's . - On IRIX 6.5, similarly, we have an include -> , and the latter includes . But here, we have no way to detect whether is completely included or is still being included. */ #@INCLUDE_NEXT@ @NEXT_WCHAR_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_WCHAR_H #define _GL_ALREADY_INCLUDING_WCHAR_H #if @HAVE_FEATURES_H@ # include /* for __GLIBC__ */ #endif /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be included before . In some builds of uClibc, is nonexistent and wchar_t is defined by . But avoid namespace pollution on glibc systems. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include #endif #ifndef __GLIBC__ # include # include #endif /* Include the original if it exists. Some builds of uClibc lack it. */ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_WCHAR_H@ # @INCLUDE_NEXT@ @NEXT_WCHAR_H@ #endif #undef _GL_ALREADY_INCLUDING_WCHAR_H #ifndef _@GUARD_PREFIX@_WCHAR_H #define _@GUARD_PREFIX@_WCHAR_H /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Define wint_t and WEOF. (Also done in wctype.in.h.) */ #if !@HAVE_WINT_T@ && !defined wint_t # define wint_t int # ifndef WEOF # define WEOF -1 # endif #else /* MSVC defines wint_t as 'unsigned short' in . This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be "unchanged by default argument promotions". Override it. */ # if defined _MSC_VER # if !GNULIB_defined_wint_t # include typedef unsigned int rpl_wint_t; # undef wint_t # define wint_t rpl_wint_t # define GNULIB_defined_wint_t 1 # endif # endif # ifndef WEOF # define WEOF ((wint_t) -1) # endif #endif /* Override mbstate_t if it is too small. On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for implementing mbrtowc for encodings like UTF-8. */ #if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@ # if !GNULIB_defined_mbstate_t typedef int rpl_mbstate_t; # undef mbstate_t # define mbstate_t rpl_mbstate_t # define GNULIB_defined_mbstate_t 1 # endif #endif /* Convert a single-byte character to a wide character. */ #if @GNULIB_BTOWC@ # if @REPLACE_BTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef btowc # define btowc rpl_btowc # endif _GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (btowc, wint_t, (int c)); # else # if !@HAVE_BTOWC@ _GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (btowc, wint_t, (int c)); # endif _GL_CXXALIASWARN (btowc); #elif defined GNULIB_POSIXCHECK # undef btowc # if HAVE_RAW_DECL_BTOWC _GL_WARN_ON_USE (btowc, "btowc is unportable - " "use gnulib module btowc for portability"); # endif #endif /* Convert a wide character to a single-byte character. */ #if @GNULIB_WCTOB@ # if @REPLACE_WCTOB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wctob # define wctob rpl_wctob # endif _GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (wctob, int, (wint_t wc)); # else # if !defined wctob && !@HAVE_DECL_WCTOB@ /* wctob is provided by gnulib, or wctob exists but is not declared. */ _GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wctob, int, (wint_t wc)); # endif _GL_CXXALIASWARN (wctob); #elif defined GNULIB_POSIXCHECK # undef wctob # if HAVE_RAW_DECL_WCTOB _GL_WARN_ON_USE (wctob, "wctob is unportable - " "use gnulib module wctob for portability"); # endif #endif /* Test whether *PS is in the initial state. */ #if @GNULIB_MBSINIT@ # if @REPLACE_MBSINIT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbsinit # define mbsinit rpl_mbsinit # endif _GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps)); _GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps)); # else # if !@HAVE_MBSINIT@ _GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps)); # endif _GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps)); # endif _GL_CXXALIASWARN (mbsinit); #elif defined GNULIB_POSIXCHECK # undef mbsinit # if HAVE_RAW_DECL_MBSINIT _GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - " "use gnulib module mbsinit for portability"); # endif #endif /* Convert a multibyte character to a wide character. */ #if @GNULIB_MBRTOWC@ # if @REPLACE_MBRTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbrtowc # define mbrtowc rpl_mbrtowc # endif _GL_FUNCDECL_RPL (mbrtowc, size_t, (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); _GL_CXXALIAS_RPL (mbrtowc, size_t, (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); # else # if !@HAVE_MBRTOWC@ _GL_FUNCDECL_SYS (mbrtowc, size_t, (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); # endif _GL_CXXALIAS_SYS (mbrtowc, size_t, (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); # endif _GL_CXXALIASWARN (mbrtowc); #elif defined GNULIB_POSIXCHECK # undef mbrtowc # if HAVE_RAW_DECL_MBRTOWC _GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - " "use gnulib module mbrtowc for portability"); # endif #endif /* Recognize a multibyte character. */ #if @GNULIB_MBRLEN@ # if @REPLACE_MBRLEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbrlen # define mbrlen rpl_mbrlen # endif _GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); _GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); # else # if !@HAVE_MBRLEN@ _GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); # endif _GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); # endif _GL_CXXALIASWARN (mbrlen); #elif defined GNULIB_POSIXCHECK # undef mbrlen # if HAVE_RAW_DECL_MBRLEN _GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - " "use gnulib module mbrlen for portability"); # endif #endif /* Convert a string to a wide string. */ #if @GNULIB_MBSRTOWCS@ # if @REPLACE_MBSRTOWCS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbsrtowcs # define mbsrtowcs rpl_mbsrtowcs # endif _GL_FUNCDECL_RPL (mbsrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (mbsrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)); # else # if !@HAVE_MBSRTOWCS@ _GL_FUNCDECL_SYS (mbsrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mbsrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)); # endif _GL_CXXALIASWARN (mbsrtowcs); #elif defined GNULIB_POSIXCHECK # undef mbsrtowcs # if HAVE_RAW_DECL_MBSRTOWCS _GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - " "use gnulib module mbsrtowcs for portability"); # endif #endif /* Convert a string to a wide string. */ #if @GNULIB_MBSNRTOWCS@ # if @REPLACE_MBSNRTOWCS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbsnrtowcs # define mbsnrtowcs rpl_mbsnrtowcs # endif _GL_FUNCDECL_RPL (mbsnrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (mbsnrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps)); # else # if !@HAVE_MBSNRTOWCS@ _GL_FUNCDECL_SYS (mbsnrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mbsnrtowcs, size_t, (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps)); # endif _GL_CXXALIASWARN (mbsnrtowcs); #elif defined GNULIB_POSIXCHECK # undef mbsnrtowcs # if HAVE_RAW_DECL_MBSNRTOWCS _GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - " "use gnulib module mbsnrtowcs for portability"); # endif #endif /* Convert a wide character to a multibyte character. */ #if @GNULIB_WCRTOMB@ # if @REPLACE_WCRTOMB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcrtomb # define wcrtomb rpl_wcrtomb # endif _GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); _GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); # else # if !@HAVE_WCRTOMB@ _GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); # endif _GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); # endif _GL_CXXALIASWARN (wcrtomb); #elif defined GNULIB_POSIXCHECK # undef wcrtomb # if HAVE_RAW_DECL_WCRTOMB _GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - " "use gnulib module wcrtomb for portability"); # endif #endif /* Convert a wide string to a string. */ #if @GNULIB_WCSRTOMBS@ # if @REPLACE_WCSRTOMBS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcsrtombs # define wcsrtombs rpl_wcsrtombs # endif _GL_FUNCDECL_RPL (wcsrtombs, size_t, (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (wcsrtombs, size_t, (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)); # else # if !@HAVE_WCSRTOMBS@ _GL_FUNCDECL_SYS (wcsrtombs, size_t, (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (wcsrtombs, size_t, (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)); # endif _GL_CXXALIASWARN (wcsrtombs); #elif defined GNULIB_POSIXCHECK # undef wcsrtombs # if HAVE_RAW_DECL_WCSRTOMBS _GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - " "use gnulib module wcsrtombs for portability"); # endif #endif /* Convert a wide string to a string. */ #if @GNULIB_WCSNRTOMBS@ # if @REPLACE_WCSNRTOMBS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcsnrtombs # define wcsnrtombs rpl_wcsnrtombs # endif _GL_FUNCDECL_RPL (wcsnrtombs, size_t, (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (wcsnrtombs, size_t, (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps)); # else # if !@HAVE_WCSNRTOMBS@ _GL_FUNCDECL_SYS (wcsnrtombs, size_t, (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (wcsnrtombs, size_t, (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps)); # endif _GL_CXXALIASWARN (wcsnrtombs); #elif defined GNULIB_POSIXCHECK # undef wcsnrtombs # if HAVE_RAW_DECL_WCSNRTOMBS _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - " "use gnulib module wcsnrtombs for portability"); # endif #endif /* Return the number of screen columns needed for WC. */ #if @GNULIB_WCWIDTH@ # if @REPLACE_WCWIDTH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcwidth # define wcwidth rpl_wcwidth # endif _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); # else # if !@HAVE_DECL_WCWIDTH@ /* wcwidth exists but is not declared. */ _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcwidth, int, (wchar_t)); # endif _GL_CXXALIASWARN (wcwidth); #elif defined GNULIB_POSIXCHECK # undef wcwidth # if HAVE_RAW_DECL_WCWIDTH _GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - " "use gnulib module wcwidth for portability"); # endif #endif /* Search N wide characters of S for C. */ #if @GNULIB_WMEMCHR@ # if !@HAVE_WMEMCHR@ _GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t); wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (wmemchr, wchar_t *, (const wchar_t *, wchar_t, size_t), const wchar_t *, (const wchar_t *, wchar_t, size_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); _GL_CXXALIASWARN1 (wmemchr, const wchar_t *, (const wchar_t *s, wchar_t c, size_t n)); # else _GL_CXXALIASWARN (wmemchr); # endif #elif defined GNULIB_POSIXCHECK # undef wmemchr # if HAVE_RAW_DECL_WMEMCHR _GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - " "use gnulib module wmemchr for portability"); # endif #endif /* Compare N wide characters of S1 and S2. */ #if @GNULIB_WMEMCMP@ # if !@HAVE_WMEMCMP@ _GL_FUNCDECL_SYS (wmemcmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wmemcmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n)); _GL_CXXALIASWARN (wmemcmp); #elif defined GNULIB_POSIXCHECK # undef wmemcmp # if HAVE_RAW_DECL_WMEMCMP _GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - " "use gnulib module wmemcmp for portability"); # endif #endif /* Copy N wide characters of SRC to DEST. */ #if @GNULIB_WMEMCPY@ # if !@HAVE_WMEMCPY@ _GL_FUNCDECL_SYS (wmemcpy, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); # endif _GL_CXXALIAS_SYS (wmemcpy, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); _GL_CXXALIASWARN (wmemcpy); #elif defined GNULIB_POSIXCHECK # undef wmemcpy # if HAVE_RAW_DECL_WMEMCPY _GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - " "use gnulib module wmemcpy for portability"); # endif #endif /* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for overlapping memory areas. */ #if @GNULIB_WMEMMOVE@ # if !@HAVE_WMEMMOVE@ _GL_FUNCDECL_SYS (wmemmove, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); # endif _GL_CXXALIAS_SYS (wmemmove, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); _GL_CXXALIASWARN (wmemmove); #elif defined GNULIB_POSIXCHECK # undef wmemmove # if HAVE_RAW_DECL_WMEMMOVE _GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - " "use gnulib module wmemmove for portability"); # endif #endif /* Set N wide characters of S to C. */ #if @GNULIB_WMEMSET@ # if !@HAVE_WMEMSET@ _GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); # endif _GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); _GL_CXXALIASWARN (wmemset); #elif defined GNULIB_POSIXCHECK # undef wmemset # if HAVE_RAW_DECL_WMEMSET _GL_WARN_ON_USE (wmemset, "wmemset is unportable - " "use gnulib module wmemset for portability"); # endif #endif /* Return the number of wide characters in S. */ #if @GNULIB_WCSLEN@ # if !@HAVE_WCSLEN@ _GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s)); _GL_CXXALIASWARN (wcslen); #elif defined GNULIB_POSIXCHECK # undef wcslen # if HAVE_RAW_DECL_WCSLEN _GL_WARN_ON_USE (wcslen, "wcslen is unportable - " "use gnulib module wcslen for portability"); # endif #endif /* Return the number of wide characters in S, but at most MAXLEN. */ #if @GNULIB_WCSNLEN@ # if !@HAVE_WCSNLEN@ _GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)); _GL_CXXALIASWARN (wcsnlen); #elif defined GNULIB_POSIXCHECK # undef wcsnlen # if HAVE_RAW_DECL_WCSNLEN _GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - " "use gnulib module wcsnlen for portability"); # endif #endif /* Copy SRC to DEST. */ #if @GNULIB_WCSCPY@ # if !@HAVE_WCSCPY@ _GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); # endif _GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); _GL_CXXALIASWARN (wcscpy); #elif defined GNULIB_POSIXCHECK # undef wcscpy # if HAVE_RAW_DECL_WCSCPY _GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - " "use gnulib module wcscpy for portability"); # endif #endif /* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ #if @GNULIB_WCPCPY@ # if !@HAVE_WCPCPY@ _GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); # endif _GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); _GL_CXXALIASWARN (wcpcpy); #elif defined GNULIB_POSIXCHECK # undef wcpcpy # if HAVE_RAW_DECL_WCPCPY _GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - " "use gnulib module wcpcpy for portability"); # endif #endif /* Copy no more than N wide characters of SRC to DEST. */ #if @GNULIB_WCSNCPY@ # if !@HAVE_WCSNCPY@ _GL_FUNCDECL_SYS (wcsncpy, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); # endif _GL_CXXALIAS_SYS (wcsncpy, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); _GL_CXXALIASWARN (wcsncpy); #elif defined GNULIB_POSIXCHECK # undef wcsncpy # if HAVE_RAW_DECL_WCSNCPY _GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - " "use gnulib module wcsncpy for portability"); # endif #endif /* Copy no more than N characters of SRC to DEST, returning the address of the last character written into DEST. */ #if @GNULIB_WCPNCPY@ # if !@HAVE_WCPNCPY@ _GL_FUNCDECL_SYS (wcpncpy, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); # endif _GL_CXXALIAS_SYS (wcpncpy, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); _GL_CXXALIASWARN (wcpncpy); #elif defined GNULIB_POSIXCHECK # undef wcpncpy # if HAVE_RAW_DECL_WCPNCPY _GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - " "use gnulib module wcpncpy for portability"); # endif #endif /* Append SRC onto DEST. */ #if @GNULIB_WCSCAT@ # if !@HAVE_WCSCAT@ _GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); # endif _GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); _GL_CXXALIASWARN (wcscat); #elif defined GNULIB_POSIXCHECK # undef wcscat # if HAVE_RAW_DECL_WCSCAT _GL_WARN_ON_USE (wcscat, "wcscat is unportable - " "use gnulib module wcscat for portability"); # endif #endif /* Append no more than N wide characters of SRC onto DEST. */ #if @GNULIB_WCSNCAT@ # if !@HAVE_WCSNCAT@ _GL_FUNCDECL_SYS (wcsncat, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); # endif _GL_CXXALIAS_SYS (wcsncat, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); _GL_CXXALIASWARN (wcsncat); #elif defined GNULIB_POSIXCHECK # undef wcsncat # if HAVE_RAW_DECL_WCSNCAT _GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - " "use gnulib module wcsncat for portability"); # endif #endif /* Compare S1 and S2. */ #if @GNULIB_WCSCMP@ # if !@HAVE_WCSCMP@ _GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)); _GL_CXXALIASWARN (wcscmp); #elif defined GNULIB_POSIXCHECK # undef wcscmp # if HAVE_RAW_DECL_WCSCMP _GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - " "use gnulib module wcscmp for portability"); # endif #endif /* Compare no more than N wide characters of S1 and S2. */ #if @GNULIB_WCSNCMP@ # if !@HAVE_WCSNCMP@ _GL_FUNCDECL_SYS (wcsncmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsncmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n)); _GL_CXXALIASWARN (wcsncmp); #elif defined GNULIB_POSIXCHECK # undef wcsncmp # if HAVE_RAW_DECL_WCSNCMP _GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - " "use gnulib module wcsncmp for portability"); # endif #endif /* Compare S1 and S2, ignoring case. */ #if @GNULIB_WCSCASECMP@ # if !@HAVE_WCSCASECMP@ _GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)); _GL_CXXALIASWARN (wcscasecmp); #elif defined GNULIB_POSIXCHECK # undef wcscasecmp # if HAVE_RAW_DECL_WCSCASECMP _GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - " "use gnulib module wcscasecmp for portability"); # endif #endif /* Compare no more than N chars of S1 and S2, ignoring case. */ #if @GNULIB_WCSNCASECMP@ # if !@HAVE_WCSNCASECMP@ _GL_FUNCDECL_SYS (wcsncasecmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsncasecmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n)); _GL_CXXALIASWARN (wcsncasecmp); #elif defined GNULIB_POSIXCHECK # undef wcsncasecmp # if HAVE_RAW_DECL_WCSNCASECMP _GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - " "use gnulib module wcsncasecmp for portability"); # endif #endif /* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE category of the current locale. */ #if @GNULIB_WCSCOLL@ # if !@HAVE_WCSCOLL@ _GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); # endif _GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); _GL_CXXALIASWARN (wcscoll); #elif defined GNULIB_POSIXCHECK # undef wcscoll # if HAVE_RAW_DECL_WCSCOLL _GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - " "use gnulib module wcscoll for portability"); # endif #endif /* Transform S2 into array pointed to by S1 such that if wcscmp is applied to two transformed strings the result is the as applying 'wcscoll' to the original strings. */ #if @GNULIB_WCSXFRM@ # if !@HAVE_WCSXFRM@ _GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); # endif _GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); _GL_CXXALIASWARN (wcsxfrm); #elif defined GNULIB_POSIXCHECK # undef wcsxfrm # if HAVE_RAW_DECL_WCSXFRM _GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - " "use gnulib module wcsxfrm for portability"); # endif #endif /* Duplicate S, returning an identical malloc'd string. */ #if @GNULIB_WCSDUP@ # if !@HAVE_WCSDUP@ _GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s)); # endif _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s)); _GL_CXXALIASWARN (wcsdup); #elif defined GNULIB_POSIXCHECK # undef wcsdup # if HAVE_RAW_DECL_WCSDUP _GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - " "use gnulib module wcsdup for portability"); # endif #endif /* Find the first occurrence of WC in WCS. */ #if @GNULIB_WCSCHR@ # if !@HAVE_WCSCHR@ _GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcschr (const wchar_t *, wchar_t); wchar_t * std::wcschr (wchar_t *, wchar_t); } */ _GL_CXXALIAS_SYS_CAST2 (wcschr, wchar_t *, (const wchar_t *, wchar_t), const wchar_t *, (const wchar_t *, wchar_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc)); _GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); # else _GL_CXXALIASWARN (wcschr); # endif #elif defined GNULIB_POSIXCHECK # undef wcschr # if HAVE_RAW_DECL_WCSCHR _GL_WARN_ON_USE (wcschr, "wcschr is unportable - " "use gnulib module wcschr for portability"); # endif #endif /* Find the last occurrence of WC in WCS. */ #if @GNULIB_WCSRCHR@ # if !@HAVE_WCSRCHR@ _GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcsrchr (const wchar_t *, wchar_t); wchar_t * std::wcsrchr (wchar_t *, wchar_t); } */ _GL_CXXALIAS_SYS_CAST2 (wcsrchr, wchar_t *, (const wchar_t *, wchar_t), const wchar_t *, (const wchar_t *, wchar_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc)); _GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); # else _GL_CXXALIASWARN (wcsrchr); # endif #elif defined GNULIB_POSIXCHECK # undef wcsrchr # if HAVE_RAW_DECL_WCSRCHR _GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - " "use gnulib module wcsrchr for portability"); # endif #endif /* Return the length of the initial segmet of WCS which consists entirely of wide characters not in REJECT. */ #if @GNULIB_WCSCSPN@ # if !@HAVE_WCSCSPN@ _GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)); _GL_CXXALIASWARN (wcscspn); #elif defined GNULIB_POSIXCHECK # undef wcscspn # if HAVE_RAW_DECL_WCSCSPN _GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - " "use gnulib module wcscspn for portability"); # endif #endif /* Return the length of the initial segmet of WCS which consists entirely of wide characters in ACCEPT. */ #if @GNULIB_WCSSPN@ # if !@HAVE_WCSSPN@ _GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)); _GL_CXXALIASWARN (wcsspn); #elif defined GNULIB_POSIXCHECK # undef wcsspn # if HAVE_RAW_DECL_WCSSPN _GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - " "use gnulib module wcsspn for portability"); # endif #endif /* Find the first occurrence in WCS of any character in ACCEPT. */ #if @GNULIB_WCSPBRK@ # if !@HAVE_WCSPBRK@ _GL_FUNCDECL_SYS (wcspbrk, wchar_t *, (const wchar_t *wcs, const wchar_t *accept) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *); wchar_t * std::wcspbrk (wchar_t *, const wchar_t *); } */ _GL_CXXALIAS_SYS_CAST2 (wcspbrk, wchar_t *, (const wchar_t *, const wchar_t *), const wchar_t *, (const wchar_t *, const wchar_t *)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcspbrk, wchar_t *, (wchar_t *wcs, const wchar_t *accept)); _GL_CXXALIASWARN1 (wcspbrk, const wchar_t *, (const wchar_t *wcs, const wchar_t *accept)); # else _GL_CXXALIASWARN (wcspbrk); # endif #elif defined GNULIB_POSIXCHECK # undef wcspbrk # if HAVE_RAW_DECL_WCSPBRK _GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - " "use gnulib module wcspbrk for portability"); # endif #endif /* Find the first occurrence of NEEDLE in HAYSTACK. */ #if @GNULIB_WCSSTR@ # if !@HAVE_WCSSTR@ _GL_FUNCDECL_SYS (wcsstr, wchar_t *, (const wchar_t *haystack, const wchar_t *needle) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *); wchar_t * std::wcsstr (wchar_t *, const wchar_t *); } */ _GL_CXXALIAS_SYS_CAST2 (wcsstr, wchar_t *, (const wchar_t *, const wchar_t *), const wchar_t *, (const wchar_t *, const wchar_t *)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcsstr, wchar_t *, (wchar_t *haystack, const wchar_t *needle)); _GL_CXXALIASWARN1 (wcsstr, const wchar_t *, (const wchar_t *haystack, const wchar_t *needle)); # else _GL_CXXALIASWARN (wcsstr); # endif #elif defined GNULIB_POSIXCHECK # undef wcsstr # if HAVE_RAW_DECL_WCSSTR _GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - " "use gnulib module wcsstr for portability"); # endif #endif /* Divide WCS into tokens separated by characters in DELIM. */ #if @GNULIB_WCSTOK@ # if !@HAVE_WCSTOK@ _GL_FUNCDECL_SYS (wcstok, wchar_t *, (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); # endif _GL_CXXALIAS_SYS (wcstok, wchar_t *, (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); _GL_CXXALIASWARN (wcstok); #elif defined GNULIB_POSIXCHECK # undef wcstok # if HAVE_RAW_DECL_WCSTOK _GL_WARN_ON_USE (wcstok, "wcstok is unportable - " "use gnulib module wcstok for portability"); # endif #endif /* Determine number of column positions required for first N wide characters (or fewer if S ends before this) in S. */ #if @GNULIB_WCSWIDTH@ # if @REPLACE_WCSWIDTH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcswidth # define wcswidth rpl_wcswidth # endif _GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n)); # else # if !@HAVE_WCSWIDTH@ _GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n)); # endif _GL_CXXALIASWARN (wcswidth); #elif defined GNULIB_POSIXCHECK # undef wcswidth # if HAVE_RAW_DECL_WCSWIDTH _GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - " "use gnulib module wcswidth for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_WCHAR_H */ #endif /* _@GUARD_PREFIX@_WCHAR_H */ #endif freedink-108.4+dfsg/gnulib/lib/dosname.h0000644000175000017500000000373312330466613015657 0ustar meme/* File names on MS-DOS/Windows systems. Copyright (C) 2000-2001, 2004-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . From Paul Eggert and Jim Meyering. */ #ifndef _DOSNAME_H #define _DOSNAME_H #if (defined _WIN32 || defined __WIN32__ || \ defined __MSDOS__ || defined __CYGWIN__ || \ defined __EMX__ || defined __DJGPP__) /* This internal macro assumes ASCII, but all hosts that support drive letters use ASCII. */ # define _IS_DRIVE_LETTER(C) (((unsigned int) (C) | ('a' - 'A')) - 'a' \ <= 'z' - 'a') # define FILE_SYSTEM_PREFIX_LEN(Filename) \ (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0) # ifndef __CYGWIN__ # define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 # endif # define ISSLASH(C) ((C) == '/' || (C) == '\\') #else # define FILE_SYSTEM_PREFIX_LEN(Filename) 0 # define ISSLASH(C) ((C) == '/') #endif #ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE # define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 #endif #if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE # define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)]) # else # define IS_ABSOLUTE_FILE_NAME(F) \ (ISSLASH ((F)[0]) || FILE_SYSTEM_PREFIX_LEN (F) != 0) #endif #define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F)) #endif /* DOSNAME_H_ */ freedink-108.4+dfsg/gnulib/lib/canonicalize-lgpl.c0000644000175000017500000002672112330466613017621 0ustar meme/* Return the canonical absolute name of a given file. Copyright (C) 1996-2014 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 3 of the License, 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, see . */ #ifndef _LIBC /* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc optimizes away the name == NULL test below. */ # define _GL_ARG_NONNULL(params) # define _GL_USE_STDLIB_ALLOC 1 # include #endif #if !HAVE_CANONICALIZE_FILE_NAME || !FUNC_REALPATH_WORKS || defined _LIBC /* Specification. */ #include #include #include #include #include #if HAVE_SYS_PARAM_H || defined _LIBC # include #endif #include #include #include #ifdef _LIBC # include #else # define SHLIB_COMPAT(lib, introduced, obsoleted) 0 # define versioned_symbol(lib, local, symbol, version) extern int dummy # define compat_symbol(lib, local, symbol, version) # define weak_alias(local, symbol) # define __canonicalize_file_name canonicalize_file_name # define __realpath realpath # include "pathmax.h" # include "malloca.h" # include "dosname.h" # if HAVE_GETCWD # if IN_RELOCWRAPPER /* When building the relocatable program wrapper, use the system's getcwd function, not the gnulib override, otherwise we would get a link error. */ # undef getcwd # endif # ifdef VMS /* We want the directory in Unix syntax, not in VMS syntax. */ # define __getcwd(buf, max) getcwd (buf, max, 0) # else # define __getcwd getcwd # endif # else # define __getcwd(buf, max) getwd (buf) # endif # define __readlink readlink # define __set_errno(e) errno = (e) # ifndef MAXSYMLINKS # ifdef SYMLOOP_MAX # define MAXSYMLINKS SYMLOOP_MAX # else # define MAXSYMLINKS 20 # endif # endif #endif #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT # define DOUBLE_SLASH_IS_DISTINCT_ROOT 0 #endif #if !FUNC_REALPATH_WORKS || defined _LIBC /* Return the canonical absolute name of file NAME. A canonical name does not contain any ".", ".." components nor any repeated path separators ('/') or symlinks. All path components must exist. If RESOLVED is null, the result is malloc'd; otherwise, if the canonical name is PATH_MAX chars or more, returns null with 'errno' set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the name in RESOLVED. If the name cannot be resolved and RESOLVED is non-NULL, it contains the path of the first component that cannot be resolved. If the path can be resolved, RESOLVED holds the same value as the value returned. */ char * __realpath (const char *name, char *resolved) { char *rpath, *dest, *extra_buf = NULL; const char *start, *end, *rpath_limit; long int path_max; int num_links = 0; size_t prefix_len; if (name == NULL) { /* As per Single Unix Specification V2 we must return an error if either parameter is a null pointer. We extend this to allow the RESOLVED parameter to be NULL in case the we are expected to allocate the room for the return value. */ __set_errno (EINVAL); return NULL; } if (name[0] == '\0') { /* As per Single Unix Specification V2 we must return an error if the name argument points to an empty string. */ __set_errno (ENOENT); return NULL; } #ifdef PATH_MAX path_max = PATH_MAX; #else path_max = pathconf (name, _PC_PATH_MAX); if (path_max <= 0) path_max = 8192; #endif if (resolved == NULL) { rpath = malloc (path_max); if (rpath == NULL) { /* It's easier to set errno to ENOMEM than to rely on the 'malloc-posix' gnulib module. */ errno = ENOMEM; return NULL; } } else rpath = resolved; rpath_limit = rpath + path_max; /* This is always zero for Posix hosts, but can be 2 for MS-Windows and MS-DOS X:/foo/bar file names. */ prefix_len = FILE_SYSTEM_PREFIX_LEN (name); if (!IS_ABSOLUTE_FILE_NAME (name)) { if (!__getcwd (rpath, path_max)) { rpath[0] = '\0'; goto error; } dest = strchr (rpath, '\0'); start = name; prefix_len = FILE_SYSTEM_PREFIX_LEN (rpath); } else { dest = rpath; if (prefix_len) { memcpy (rpath, name, prefix_len); dest += prefix_len; } *dest++ = '/'; if (DOUBLE_SLASH_IS_DISTINCT_ROOT) { if (ISSLASH (name[1]) && !ISSLASH (name[2]) && !prefix_len) *dest++ = '/'; *dest = '\0'; } start = name + prefix_len; } for (end = start; *start; start = end) { #ifdef _LIBC struct stat64 st; #else struct stat st; #endif int n; /* Skip sequence of multiple path-separators. */ while (ISSLASH (*start)) ++start; /* Find end of path component. */ for (end = start; *end && !ISSLASH (*end); ++end) /* Nothing. */; if (end - start == 0) break; else if (end - start == 1 && start[0] == '.') /* nothing */; else if (end - start == 2 && start[0] == '.' && start[1] == '.') { /* Back up to previous component, ignore if at root already. */ if (dest > rpath + prefix_len + 1) for (--dest; dest > rpath && !ISSLASH (dest[-1]); --dest) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1 && !prefix_len && ISSLASH (*dest) && !ISSLASH (dest[1])) dest++; } else { size_t new_size; if (!ISSLASH (dest[-1])) *dest++ = '/'; if (dest + (end - start) >= rpath_limit) { ptrdiff_t dest_offset = dest - rpath; char *new_rpath; if (resolved) { __set_errno (ENAMETOOLONG); if (dest > rpath + prefix_len + 1) dest--; *dest = '\0'; goto error; } new_size = rpath_limit - rpath; if (end - start + 1 > path_max) new_size += end - start + 1; else new_size += path_max; new_rpath = (char *) realloc (rpath, new_size); if (new_rpath == NULL) { /* It's easier to set errno to ENOMEM than to rely on the 'realloc-posix' gnulib module. */ errno = ENOMEM; goto error; } rpath = new_rpath; rpath_limit = rpath + new_size; dest = rpath + dest_offset; } #ifdef _LIBC dest = __mempcpy (dest, start, end - start); #else memcpy (dest, start, end - start); dest += end - start; #endif *dest = '\0'; #ifdef _LIBC if (__lxstat64 (_STAT_VER, rpath, &st) < 0) #else if (lstat (rpath, &st) < 0) #endif goto error; if (S_ISLNK (st.st_mode)) { char *buf; size_t len; if (++num_links > MAXSYMLINKS) { __set_errno (ELOOP); goto error; } buf = malloca (path_max); if (!buf) { errno = ENOMEM; goto error; } n = __readlink (rpath, buf, path_max - 1); if (n < 0) { int saved_errno = errno; freea (buf); errno = saved_errno; goto error; } buf[n] = '\0'; if (!extra_buf) { extra_buf = malloca (path_max); if (!extra_buf) { freea (buf); errno = ENOMEM; goto error; } } len = strlen (end); if ((long int) (n + len) >= path_max) { freea (buf); __set_errno (ENAMETOOLONG); goto error; } /* Careful here, end may be a pointer into extra_buf... */ memmove (&extra_buf[n], end, len + 1); name = end = memcpy (extra_buf, buf, n); if (IS_ABSOLUTE_FILE_NAME (buf)) { size_t pfxlen = FILE_SYSTEM_PREFIX_LEN (buf); if (pfxlen) memcpy (rpath, buf, pfxlen); dest = rpath + pfxlen; *dest++ = '/'; /* It's an absolute symlink */ if (DOUBLE_SLASH_IS_DISTINCT_ROOT) { if (ISSLASH (buf[1]) && !ISSLASH (buf[2]) && !pfxlen) *dest++ = '/'; *dest = '\0'; } /* Install the new prefix to be in effect hereafter. */ prefix_len = pfxlen; } else { /* Back up to previous component, ignore if at root already: */ if (dest > rpath + prefix_len + 1) for (--dest; dest > rpath && !ISSLASH (dest[-1]); --dest) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1 && ISSLASH (*dest) && !ISSLASH (dest[1]) && !prefix_len) dest++; } } else if (!S_ISDIR (st.st_mode) && *end != '\0') { __set_errno (ENOTDIR); goto error; } } } if (dest > rpath + prefix_len + 1 && ISSLASH (dest[-1])) --dest; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1 && !prefix_len && ISSLASH (*dest) && !ISSLASH (dest[1])) dest++; *dest = '\0'; if (extra_buf) freea (extra_buf); return rpath; error: { int saved_errno = errno; if (extra_buf) freea (extra_buf); if (resolved == NULL) free (rpath); errno = saved_errno; } return NULL; } versioned_symbol (libc, __realpath, realpath, GLIBC_2_3); #endif /* !FUNC_REALPATH_WORKS || defined _LIBC */ #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3) char * attribute_compat_text_section __old_realpath (const char *name, char *resolved) { if (resolved == NULL) { __set_errno (EINVAL); return NULL; } return __realpath (name, resolved); } compat_symbol (libc, __old_realpath, realpath, GLIBC_2_0); #endif char * __canonicalize_file_name (const char *name) { return __realpath (name, NULL); } weak_alias (__canonicalize_file_name, canonicalize_file_name) #else /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; #endif freedink-108.4+dfsg/gnulib/lib/save-cwd.c0000644000175000017500000000600712330466613015732 0ustar meme/* save-cwd.c -- Save and restore current working directory. Copyright (C) 1995, 1997-1998, 2003-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #include #include "save-cwd.h" #include #include #include #include #include #include "chdir-long.h" #include "unistd--.h" #include "cloexec.h" #if GNULIB_FCNTL_SAFER # include "fcntl--.h" #else # define GNULIB_FCNTL_SAFER 0 #endif /* Record the location of the current working directory in CWD so that the program may change to other directories and later use restore_cwd to return to the recorded location. This function may allocate space using malloc (via getcwd) or leave a file descriptor open; use free_cwd to perform the necessary free or close. Upon failure, no memory is allocated, any locally opened file descriptors are closed; return non-zero -- in that case, free_cwd need not be called, but doing so is ok. Otherwise, return zero. The _raison d'etre_ for this interface is that the working directory is sometimes inaccessible, and getcwd is not robust or as efficient. So, we prefer to use the open/fchdir approach, but fall back on getcwd if necessary. This module works for most cases with just the getcwd-lgpl module, but to be truly robust, use the getcwd module. Some systems lack fchdir altogether: e.g., OS/2, pre-2001 Cygwin, SCO Xenix. Also, SunOS 4 and Irix 5.3 provide the function, yet it doesn't work for partitions on which auditing is enabled. If you're still using an obsolete system with these problems, please send email to the maintainer of this code. */ int save_cwd (struct saved_cwd *cwd) { cwd->name = NULL; cwd->desc = open (".", O_SEARCH); if (!GNULIB_FCNTL_SAFER) cwd->desc = fd_safer (cwd->desc); if (cwd->desc < 0) { cwd->name = getcwd (NULL, 0); return cwd->name ? 0 : -1; } set_cloexec_flag (cwd->desc, true); return 0; } /* Change to recorded location, CWD, in directory hierarchy. Upon failure, return -1 (errno is set by chdir or fchdir). Upon success, return zero. */ int restore_cwd (const struct saved_cwd *cwd) { if (0 <= cwd->desc) return fchdir (cwd->desc); else return chdir_long (cwd->name); } void free_cwd (struct saved_cwd *cwd) { if (cwd->desc >= 0) close (cwd->desc); free (cwd->name); } freedink-108.4+dfsg/gnulib/lib/size_max.h0000644000175000017500000000221112330466613016036 0ustar meme/* size_max.h -- declare SIZE_MAX through system headers Copyright (C) 2005-2006, 2009-2014 Free Software Foundation, Inc. Written by Simon Josefsson. 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, see . */ #ifndef GNULIB_SIZE_MAX_H #define GNULIB_SIZE_MAX_H /* Get SIZE_MAX declaration on systems like Solaris 7/8/9. */ # include /* Get SIZE_MAX declaration on systems like glibc 2. */ # if HAVE_STDINT_H # include # endif /* On systems where these include files don't define it, SIZE_MAX is defined in config.h. */ #endif /* GNULIB_SIZE_MAX_H */ freedink-108.4+dfsg/gnulib/lib/relocwrapper.c0000644000175000017500000001403312330466613016724 0ustar meme/* Relocating wrapper program. Copyright (C) 2003, 2005-2007, 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2003. 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 3 of the License, 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, see . */ /* Dependencies: relocwrapper -> progname -> progreloc -> areadlink -> careadlinkat -> allocator -> readlink -> canonicalize-lgpl -> malloca -> readlink -> relocatable -> setenv -> malloca -> c-ctype Macros that need to be set while compiling this file: - ENABLE_RELOCATABLE 1 - INSTALLPREFIX the base installation directory - INSTALLDIR the directory into which this program is installed - LIBPATHVAR the platform dependent runtime library path variable - LIBDIRS a comma-terminated list of strings representing the list of directories that contain the libraries at installation time We don't want to internationalize this wrapper because then it would depend on libintl and therefore need relocation itself. So use only libc functions, no gettext(), no error(), no xmalloc(), no xsetenv(). */ #define _GL_USE_STDLIB_ALLOC 1 #include #include #include #include #include #include #include "progname.h" #include "relocatable.h" #include "c-ctype.h" #include "verify.h" /* Use the system functions, not the gnulib overrides in this file. */ #undef fprintf /* Return a copy of the filename, with an extra ".bin" at the end. More generally, it replaces "${EXEEXT}" at the end with ".bin${EXEEXT}". */ static char * add_dotbin (const char *filename) { size_t filename_len = strlen (filename); char *result = (char *) malloc (filename_len + 4 + 1); if (result != NULL) { if (sizeof (EXEEXT) > sizeof ("")) { /* EXEEXT handling. */ const size_t exeext_len = sizeof (EXEEXT) - sizeof (""); static const char exeext[] = EXEEXT; if (filename_len > exeext_len) { /* Compare using an inlined copy of c_strncasecmp(), because the filenames may have undergone a case conversion since they were packaged. In other words, EXEEXT may be ".exe" on one system and ".EXE" on another. */ const char *s1 = filename + filename_len - exeext_len; const char *s2 = exeext; for (; *s1 != '\0'; s1++, s2++) { unsigned char c1 = *s1; unsigned char c2 = *s2; if (c_tolower (c1) != c_tolower (c2)) goto simple_append; } /* Insert ".bin" before EXEEXT or its equivalent. */ memcpy (result, filename, filename_len - exeext_len); memcpy (result + filename_len - exeext_len, ".bin", 4); memcpy (result + filename_len - exeext_len + 4, filename + filename_len - exeext_len, exeext_len + 1); return result; } } simple_append: /* Simply append ".bin". */ memcpy (result, filename, filename_len); memcpy (result + filename_len, ".bin", 4 + 1); return result; } else { fprintf (stderr, "%s: %s\n", program_name, "memory exhausted"); exit (1); } } /* List of directories that contain the libraries. */ static const char *libdirs[] = { LIBDIRS NULL }; /* Verify that at least one directory is given. */ verify (sizeof (libdirs) / sizeof (libdirs[0]) > 1); /* Relocate the list of directories that contain the libraries. */ static void relocate_libdirs () { size_t i; for (i = 0; i < sizeof (libdirs) / sizeof (libdirs[0]) - 1; i++) libdirs[i] = relocate (libdirs[i]); } /* Activate the list of directories in the LIBPATHVAR. */ static void activate_libdirs () { const char *old_value; size_t total; size_t i; char *value; char *p; old_value = getenv (LIBPATHVAR); if (old_value == NULL) old_value = ""; total = 0; for (i = 0; i < sizeof (libdirs) / sizeof (libdirs[0]) - 1; i++) total += strlen (libdirs[i]) + 1; total += strlen (old_value) + 1; value = (char *) malloc (total); if (value == NULL) { fprintf (stderr, "%s: %s\n", program_name, "memory exhausted"); exit (1); } p = value; for (i = 0; i < sizeof (libdirs) / sizeof (libdirs[0]) - 1; i++) { size_t len = strlen (libdirs[i]); memcpy (p, libdirs[i], len); p += len; *p++ = ':'; } if (old_value[0] != '\0') strcpy (p, old_value); else p[-1] = '\0'; if (setenv (LIBPATHVAR, value, 1) < 0) { fprintf (stderr, "%s: %s\n", program_name, "memory exhausted"); exit (1); } } int main (int argc, char *argv[]) { char *full_program_name; /* Set the program name and perform preparations for get_full_program_name() and relocate(). */ set_program_name_and_installdir (argv[0], INSTALLPREFIX, INSTALLDIR); /* Get the full program path. (Important if accessed through a symlink.) */ full_program_name = get_full_program_name (); if (full_program_name == NULL) full_program_name = argv[0]; /* Invoke the real program, with suffix ".bin". */ argv[0] = add_dotbin (full_program_name); relocate_libdirs (); activate_libdirs (); execv (argv[0], argv); fprintf (stderr, "%s: could not execute %s: %s\n", program_name, argv[0], strerror (errno)); exit (127); } freedink-108.4+dfsg/gnulib/lib/strcasecmp.c0000644000175000017500000000342712330466613016370 0ustar meme/* Case-insensitive string comparison function. Copyright (C) 1998-1999, 2005-2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ #include /* Specification. */ #include #include #include #define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) /* Compare strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function does not work with multibyte strings! */ int strcasecmp (const char *s1, const char *s2) { const unsigned char *p1 = (const unsigned char *) s1; const unsigned char *p2 = (const unsigned char *) s2; unsigned char c1, c2; if (p1 == p2) return 0; do { c1 = TOLOWER (*p1); c2 = TOLOWER (*p2); if (c1 == '\0') break; ++p1; ++p2; } while (c1 == c2); if (UCHAR_MAX <= INT_MAX) return c1 - c2; else /* On machines where 'char' and 'int' are types of the same size, the difference of two 'unsigned char' values - including the sign bit - doesn't fit in an 'int'. */ return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0); } freedink-108.4+dfsg/gnulib/lib/alloca.in.h0000644000175000017500000000372412330466613016071 0ustar meme/* Memory allocation on the stack. Copyright (C) 1995, 1999, 2001-2004, 2006-2014 Free Software Foundation, Inc. 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, see . */ /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H means there is a real alloca function. */ #ifndef _GL_ALLOCA_H #define _GL_ALLOCA_H /* alloca (N) returns a pointer to N bytes of memory allocated on the stack, which will last until the function returns. Use of alloca should be avoided: - inside arguments of function calls - undefined behaviour, - in inline functions - the allocation may actually last until the calling function returns, - for huge N (say, N >= 65536) - you never know how large (or small) the stack is, and when the stack cannot fulfill the memory allocation request, the program just crashes. */ #ifndef alloca # ifdef __GNUC__ # define alloca __builtin_alloca # elif defined _AIX # define alloca __alloca # elif defined _MSC_VER # include # define alloca _alloca # elif defined __DECC && defined __VMS # define alloca __ALLOCA # elif defined __TANDEM && defined _TNS_E_TARGET # ifdef __cplusplus extern "C" # endif void *_alloca (unsigned short); # pragma intrinsic (_alloca) # define alloca _alloca # else # include # ifdef __cplusplus extern "C" # endif void *alloca (size_t); # endif #endif #endif /* _GL_ALLOCA_H */ freedink-108.4+dfsg/gnulib/lib/malloc.c0000644000175000017500000000273212330466613015471 0ustar meme/* malloc() function that is glibc compatible. Copyright (C) 1997-1998, 2006-2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ /* written by Jim Meyering and Bruno Haible */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */ #ifdef malloc # define NEED_MALLOC_GNU 1 # undef malloc /* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */ #elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU # define NEED_MALLOC_GNU 1 #endif #include #include /* Allocate an N-byte block of memory from the heap. If N is zero, allocate a 1-byte block. */ void * rpl_malloc (size_t n) { void *result; #if NEED_MALLOC_GNU if (n == 0) n = 1; #endif result = malloc (n); #if !HAVE_MALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } freedink-108.4+dfsg/gnulib/lib/fcntl.c0000644000175000017500000002300112330466613015320 0ustar meme/* Provide file descriptor control. Copyright (C) 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Eric Blake . */ #include /* Specification. */ #include #include #include #include #include #if !HAVE_FCNTL # define rpl_fcntl fcntl #endif #undef fcntl #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include /* Get _get_osfhandle. */ # include "msvc-nothrow.h" /* Upper bound on getdtablesize(). See lib/getdtablesize.c. */ # define OPEN_MAX_MAX 0x10000 /* Duplicate OLDFD into the first available slot of at least NEWFD, which must be positive, with FLAGS determining whether the duplicate will be inheritable. */ static int dupfd (int oldfd, int newfd, int flags) { /* Mingw has no way to create an arbitrary fd. Iterate until all file descriptors less than newfd are filled up. */ HANDLE curr_process = GetCurrentProcess (); HANDLE old_handle = (HANDLE) _get_osfhandle (oldfd); unsigned char fds_to_close[OPEN_MAX_MAX / CHAR_BIT]; unsigned int fds_to_close_bound = 0; int result; BOOL inherit = flags & O_CLOEXEC ? FALSE : TRUE; int mode; if (newfd < 0 || getdtablesize () <= newfd) { errno = EINVAL; return -1; } if (old_handle == INVALID_HANDLE_VALUE || (mode = setmode (oldfd, O_BINARY)) == -1) { /* oldfd is not open, or is an unassigned standard file descriptor. */ errno = EBADF; return -1; } setmode (oldfd, mode); flags |= mode; for (;;) { HANDLE new_handle; int duplicated_fd; unsigned int index; if (!DuplicateHandle (curr_process, /* SourceProcessHandle */ old_handle, /* SourceHandle */ curr_process, /* TargetProcessHandle */ (PHANDLE) &new_handle, /* TargetHandle */ (DWORD) 0, /* DesiredAccess */ inherit, /* InheritHandle */ DUPLICATE_SAME_ACCESS)) /* Options */ { /* TODO: Translate GetLastError () into errno. */ errno = EMFILE; result = -1; break; } duplicated_fd = _open_osfhandle ((intptr_t) new_handle, flags); if (duplicated_fd < 0) { CloseHandle (new_handle); errno = EMFILE; result = -1; break; } if (newfd <= duplicated_fd) { result = duplicated_fd; break; } /* Set the bit duplicated_fd in fds_to_close[]. */ index = (unsigned int) duplicated_fd / CHAR_BIT; if (fds_to_close_bound <= index) { if (sizeof fds_to_close <= index) /* Need to increase OPEN_MAX_MAX. */ abort (); memset (fds_to_close + fds_to_close_bound, '\0', index + 1 - fds_to_close_bound); fds_to_close_bound = index + 1; } fds_to_close[index] |= 1 << ((unsigned int) duplicated_fd % CHAR_BIT); } /* Close the previous fds that turned out to be too small. */ { int saved_errno = errno; unsigned int duplicated_fd; for (duplicated_fd = 0; duplicated_fd < fds_to_close_bound * CHAR_BIT; duplicated_fd++) if ((fds_to_close[duplicated_fd / CHAR_BIT] >> (duplicated_fd % CHAR_BIT)) & 1) close (duplicated_fd); errno = saved_errno; } # if REPLACE_FCHDIR if (0 <= result) result = _gl_register_dup (oldfd, result); # endif return result; } #endif /* W32 */ /* Perform the specified ACTION on the file descriptor FD, possibly using the argument ARG further described below. This replacement handles the following actions, and forwards all others on to the native fcntl. An unrecognized ACTION returns -1 with errno set to EINVAL. F_DUPFD - duplicate FD, with int ARG being the minimum target fd. If successful, return the duplicate, which will be inheritable; otherwise return -1 and set errno. F_DUPFD_CLOEXEC - duplicate FD, with int ARG being the minimum target fd. If successful, return the duplicate, which will not be inheritable; otherwise return -1 and set errno. F_GETFD - ARG need not be present. If successful, return a non-negative value containing the descriptor flags of FD (only FD_CLOEXEC is portable, but other flags may be present); otherwise return -1 and set errno. */ int rpl_fcntl (int fd, int action, /* arg */...) { va_list arg; int result = -1; va_start (arg, action); switch (action) { #if !HAVE_FCNTL case F_DUPFD: { int target = va_arg (arg, int); result = dupfd (fd, target, 0); break; } #elif FCNTL_DUPFD_BUGGY || REPLACE_FCHDIR case F_DUPFD: { int target = va_arg (arg, int); /* Detect invalid target; needed for cygwin 1.5.x. */ if (target < 0 || getdtablesize () <= target) errno = EINVAL; else { /* Haiku alpha 2 loses fd flags on original. */ int flags = fcntl (fd, F_GETFD); if (flags < 0) { result = -1; break; } result = fcntl (fd, action, target); if (0 <= result && fcntl (fd, F_SETFD, flags) == -1) { int saved_errno = errno; close (result); result = -1; errno = saved_errno; } # if REPLACE_FCHDIR if (0 <= result) result = _gl_register_dup (fd, result); # endif } break; } /* F_DUPFD */ #endif /* FCNTL_DUPFD_BUGGY || REPLACE_FCHDIR */ case F_DUPFD_CLOEXEC: { int target = va_arg (arg, int); #if !HAVE_FCNTL result = dupfd (fd, target, O_CLOEXEC); break; #else /* HAVE_FCNTL */ /* Try the system call first, if the headers claim it exists (that is, if GNULIB_defined_F_DUPFD_CLOEXEC is 0), since we may be running with a glibc that has the macro but with an older kernel that does not support it. Cache the information on whether the system call really works, but avoid caching failure if the corresponding F_DUPFD fails for any reason. 0 = unknown, 1 = yes, -1 = no. */ static int have_dupfd_cloexec = GNULIB_defined_F_DUPFD_CLOEXEC ? -1 : 0; if (0 <= have_dupfd_cloexec) { result = fcntl (fd, action, target); if (0 <= result || errno != EINVAL) { have_dupfd_cloexec = 1; # if REPLACE_FCHDIR if (0 <= result) result = _gl_register_dup (fd, result); # endif } else { result = rpl_fcntl (fd, F_DUPFD, target); if (result < 0) break; have_dupfd_cloexec = -1; } } else result = rpl_fcntl (fd, F_DUPFD, target); if (0 <= result && have_dupfd_cloexec == -1) { int flags = fcntl (result, F_GETFD); if (flags < 0 || fcntl (result, F_SETFD, flags | FD_CLOEXEC) == -1) { int saved_errno = errno; close (result); errno = saved_errno; result = -1; } } break; #endif /* HAVE_FCNTL */ } /* F_DUPFD_CLOEXEC */ #if !HAVE_FCNTL case F_GETFD: { # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ HANDLE handle = (HANDLE) _get_osfhandle (fd); DWORD flags; if (handle == INVALID_HANDLE_VALUE || GetHandleInformation (handle, &flags) == 0) errno = EBADF; else result = (flags & HANDLE_FLAG_INHERIT) ? 0 : FD_CLOEXEC; # else /* !W32 */ /* Use dup2 to reject invalid file descriptors. No way to access this information, so punt. */ if (0 <= dup2 (fd, fd)) result = 0; # endif /* !W32 */ break; } /* F_GETFD */ #endif /* !HAVE_FCNTL */ /* Implementing F_SETFD on mingw is not trivial - there is no API for changing the O_NOINHERIT bit on an fd, and merely changing the HANDLE_FLAG_INHERIT bit on the underlying handle can lead to odd state. It may be possible by duplicating the handle, using _open_osfhandle with the right flags, then using dup2 to move the duplicate onto the original, but that is not supported for now. */ default: { #if HAVE_FCNTL void *p = va_arg (arg, void *); result = fcntl (fd, action, p); #else errno = EINVAL; #endif break; } } va_end (arg); return result; } freedink-108.4+dfsg/gnulib/lib/gettimeofday.c0000644000175000017500000000775112330466613016711 0ustar meme/* Provide gettimeofday for systems that don't have it or for which it's broken. Copyright (C) 2001-2003, 2005-2007, 2009-2014 Free Software Foundation, Inc. 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, see . */ /* written by Jim Meyering */ #include /* Specification. */ #include #include #if HAVE_SYS_TIMEB_H # include #endif #if GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME /* Work around the bug in some systems whereby gettimeofday clobbers the static buffer that localtime uses for its return value. The gettimeofday function from Mac OS X 10.0.4 (i.e., Darwin 1.3.7) has this problem. The tzset replacement is necessary for at least Solaris 2.5, 2.5.1, and 2.6. */ static struct tm tm_zero_buffer; static struct tm *localtime_buffer_addr = &tm_zero_buffer; # undef localtime extern struct tm *localtime (time_t const *); # undef gmtime extern struct tm *gmtime (time_t const *); /* This is a wrapper for localtime. It is used only on systems for which gettimeofday clobbers the static buffer used for localtime's result. On the first call, record the address of the static buffer that localtime uses for its result. */ struct tm * rpl_localtime (time_t const *timep) { struct tm *tm = localtime (timep); if (localtime_buffer_addr == &tm_zero_buffer) localtime_buffer_addr = tm; return tm; } /* Same as above, since gmtime and localtime use the same buffer. */ struct tm * rpl_gmtime (time_t const *timep) { struct tm *tm = gmtime (timep); if (localtime_buffer_addr == &tm_zero_buffer) localtime_buffer_addr = tm; return tm; } #endif /* GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME */ #if TZSET_CLOBBERS_LOCALTIME # undef tzset extern void tzset (void); /* This is a wrapper for tzset, for systems on which tzset may clobber the static buffer used for localtime's result. */ void rpl_tzset (void) { /* Save and restore the contents of the buffer used for localtime's result around the call to tzset. */ struct tm save = *localtime_buffer_addr; tzset (); *localtime_buffer_addr = save; } #endif /* This is a wrapper for gettimeofday. It is used only on systems that lack this function, or whose implementation of this function causes problems. */ int gettimeofday (struct timeval *restrict tv, void *restrict tz) { #undef gettimeofday #if HAVE_GETTIMEOFDAY # if GETTIMEOFDAY_CLOBBERS_LOCALTIME /* Save and restore the contents of the buffer used for localtime's result around the call to gettimeofday. */ struct tm save = *localtime_buffer_addr; # endif # if defined timeval /* 'struct timeval' overridden by gnulib? */ # undef timeval struct timeval otv; int result = gettimeofday (&otv, (struct timezone *) tz); if (result == 0) { tv->tv_sec = otv.tv_sec; tv->tv_usec = otv.tv_usec; } # else int result = gettimeofday (tv, (struct timezone *) tz); # endif # if GETTIMEOFDAY_CLOBBERS_LOCALTIME *localtime_buffer_addr = save; # endif return result; #else # if HAVE__FTIME struct _timeb timebuf; _ftime (&timebuf); tv->tv_sec = timebuf.time; tv->tv_usec = timebuf.millitm * 1000; # else # if !defined OK_TO_USE_1S_CLOCK # error "Only 1-second nominal clock resolution found. Is that intended?" \ "If so, compile with the -DOK_TO_USE_1S_CLOCK option." # endif tv->tv_sec = time (NULL); tv->tv_usec = 0; # endif return 0; #endif } freedink-108.4+dfsg/gnulib/lib/getdtablesize.c0000644000175000017500000000625412330466613017053 0ustar meme/* getdtablesize() function for platforms that don't have it. Copyright (C) 2008-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2008. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include # include "msvc-inval.h" # if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int _setmaxstdio_nothrow (int newmax) { int result; TRY_MSVC_INVAL { result = _setmaxstdio (newmax); } CATCH_MSVC_INVAL { result = -1; } DONE_MSVC_INVAL; return result; } # define _setmaxstdio _setmaxstdio_nothrow # endif /* Cache for the previous getdtablesize () result. Safe to cache because Windows also lacks setrlimit. */ static int dtablesize; int getdtablesize (void) { if (dtablesize == 0) { /* We are looking for the number N such that the valid file descriptors are 0..N-1. It can be obtained through a loop as follows: { int fd; for (fd = 3; fd < 65536; fd++) if (dup2 (0, fd) == -1) break; return fd; } On Windows XP, the result is 2048. The drawback of this loop is that it allocates memory for a libc internal array that is never freed. The number N can also be obtained as the upper bound for _getmaxstdio (). _getmaxstdio () returns the maximum number of open FILE objects. The sanity check in _setmaxstdio reveals the maximum number of file descriptors. This too allocates memory, but it is freed when we call _setmaxstdio with the original value. */ int orig_max_stdio = _getmaxstdio (); unsigned int bound; for (bound = 0x10000; _setmaxstdio (bound) < 0; bound = bound / 2) ; _setmaxstdio (orig_max_stdio); dtablesize = bound; } return dtablesize; } #elif HAVE_GETDTABLESIZE # include # undef getdtablesize int rpl_getdtablesize(void) { /* To date, this replacement is only compiled for Cygwin 1.7.25, which auto-increased the RLIMIT_NOFILE soft limit until it hits the compile-time constant hard limit of 3200. Although that version of cygwin supported a child process inheriting a smaller soft limit, the smaller limit is not enforced, so we might as well just report the hard limit. */ struct rlimit lim; if (!getrlimit (RLIMIT_NOFILE, &lim) && lim.rlim_max != RLIM_INFINITY) return lim.rlim_max; return getdtablesize (); } #endif freedink-108.4+dfsg/gnulib/lib/hash-pjw.c0000644000175000017500000000233512330466613015742 0ustar meme/* hash-pjw.c -- compute a hash value from a NUL-terminated string. Copyright (C) 2001, 2003, 2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include #include "hash-pjw.h" #include #define SIZE_BITS (sizeof (size_t) * CHAR_BIT) /* A hash function for NUL-terminated char* strings using the method described by Bruno Haible. See http://www.haible.de/bruno/hashfunc.html. */ size_t hash_pjw (const void *x, size_t tablesize) { const char *s; size_t h = 0; for (s = x; *s; s++) h = *s + ((h << 9) | (h >> (SIZE_BITS - 9))); return h % tablesize; } freedink-108.4+dfsg/gnulib/lib/pipe-safer.c0000644000175000017500000000265612330466613016262 0ustar meme/* Invoke pipe, but avoid some glitches. Copyright (C) 2005-2006, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering. */ #include #include "unistd-safer.h" #include #include /* Like pipe, but ensure that neither of the file descriptors is STDIN_FILENO, STDOUT_FILENO, or STDERR_FILENO. Fail with ENOSYS on platforms that lack pipe. */ int pipe_safer (int fd[2]) { #if HAVE_PIPE if (pipe (fd) == 0) { int i; for (i = 0; i < 2; i++) { fd[i] = fd_safer (fd[i]); if (fd[i] < 0) { int e = errno; close (fd[1 - i]); errno = e; return -1; } } return 0; } #else errno = ENOSYS; #endif return -1; } freedink-108.4+dfsg/gnulib/lib/printf-args.h0000644000175000017500000000753312330466613016467 0ustar meme/* Decomposed printf argument list. Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _PRINTF_ARGS_H #define _PRINTF_ARGS_H /* This file can be parametrized with the following macros: ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. PRINTF_FETCHARGS Name of the function to be declared. STATIC Set to 'static' to declare the function static. */ /* Default parameters. */ #ifndef PRINTF_FETCHARGS # define PRINTF_FETCHARGS printf_fetchargs #endif /* Get size_t. */ #include /* Get wchar_t. */ #if HAVE_WCHAR_T # include #endif /* Get wint_t. */ #if HAVE_WINT_T # include #endif /* Get va_list. */ #include /* Argument types */ typedef enum { TYPE_NONE, TYPE_SCHAR, TYPE_UCHAR, TYPE_SHORT, TYPE_USHORT, TYPE_INT, TYPE_UINT, TYPE_LONGINT, TYPE_ULONGINT, #if HAVE_LONG_LONG_INT TYPE_LONGLONGINT, TYPE_ULONGLONGINT, #endif TYPE_DOUBLE, TYPE_LONGDOUBLE, TYPE_CHAR, #if HAVE_WINT_T TYPE_WIDE_CHAR, #endif TYPE_STRING, #if HAVE_WCHAR_T TYPE_WIDE_STRING, #endif TYPE_POINTER, TYPE_COUNT_SCHAR_POINTER, TYPE_COUNT_SHORT_POINTER, TYPE_COUNT_INT_POINTER, TYPE_COUNT_LONGINT_POINTER #if HAVE_LONG_LONG_INT , TYPE_COUNT_LONGLONGINT_POINTER #endif #if ENABLE_UNISTDIO /* The unistdio extensions. */ , TYPE_U8_STRING , TYPE_U16_STRING , TYPE_U32_STRING #endif } arg_type; /* Polymorphic argument */ typedef struct { arg_type type; union { signed char a_schar; unsigned char a_uchar; short a_short; unsigned short a_ushort; int a_int; unsigned int a_uint; long int a_longint; unsigned long int a_ulongint; #if HAVE_LONG_LONG_INT long long int a_longlongint; unsigned long long int a_ulonglongint; #endif float a_float; double a_double; long double a_longdouble; int a_char; #if HAVE_WINT_T wint_t a_wide_char; #endif const char* a_string; #if HAVE_WCHAR_T const wchar_t* a_wide_string; #endif void* a_pointer; signed char * a_count_schar_pointer; short * a_count_short_pointer; int * a_count_int_pointer; long int * a_count_longint_pointer; #if HAVE_LONG_LONG_INT long long int * a_count_longlongint_pointer; #endif #if ENABLE_UNISTDIO /* The unistdio extensions. */ const uint8_t * a_u8_string; const uint16_t * a_u16_string; const uint32_t * a_u32_string; #endif } a; } argument; /* Number of directly allocated arguments (no malloc() needed). */ #define N_DIRECT_ALLOC_ARGUMENTS 7 typedef struct { size_t count; argument *arg; argument direct_alloc_arg[N_DIRECT_ALLOC_ARGUMENTS]; } arguments; /* Fetch the arguments, putting them into a. */ #ifdef STATIC STATIC #else extern #endif int PRINTF_FETCHARGS (va_list args, arguments *a); #endif /* _PRINTF_ARGS_H */ freedink-108.4+dfsg/gnulib/lib/getcwd-lgpl.c0000644000175000017500000000606612330466613016437 0ustar meme/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of gnulib. 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 3 of the License, 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, see . */ #include /* Specification */ #include #include #include #include #if GNULIB_GETCWD /* Favor GPL getcwd.c if both getcwd and getcwd-lgpl modules are in use. */ typedef int dummy; #else /* Get the name of the current working directory, and put it in SIZE bytes of BUF. Returns NULL if the directory couldn't be determined (perhaps because the absolute name was longer than PATH_MAX, or because of missing read/search permissions on parent directories) or SIZE was too small. If successful, returns BUF. If BUF is NULL, an array is allocated with 'malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ # undef getcwd char * rpl_getcwd (char *buf, size_t size) { char *ptr; char *result; /* Handle single size operations. */ if (buf) { if (!size) { errno = EINVAL; return NULL; } return getcwd (buf, size); } if (size) { buf = malloc (size); if (!buf) { errno = ENOMEM; return NULL; } result = getcwd (buf, size); if (!result) { int saved_errno = errno; free (buf); errno = saved_errno; } return result; } /* Flexible sizing requested. Avoid over-allocation for the common case of a name that fits within a 4k page, minus some space for local variables, to be sure we don't skip over a guard page. */ { char tmp[4032]; size = sizeof tmp; ptr = getcwd (tmp, size); if (ptr) { result = strdup (ptr); if (!result) errno = ENOMEM; return result; } if (errno != ERANGE) return NULL; } /* My what a large directory name we have. */ do { size <<= 1; ptr = realloc (buf, size); if (ptr == NULL) { free (buf); errno = ENOMEM; return NULL; } buf = ptr; result = getcwd (buf, size); } while (!result && errno == ERANGE); if (!result) { int saved_errno = errno; free (buf); errno = saved_errno; } else { /* Trim to fit, if possible. */ result = realloc (buf, strlen (buf) + 1); if (!result) result = buf; } return result; } #endif freedink-108.4+dfsg/gnulib/lib/areadlink.h0000644000175000017500000000231112330466613016152 0ustar meme/* Read symbolic links without size limitation. Copyright (C) 2001, 2003-2004, 2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Jim Meyering */ #include extern char *areadlink (char const *filename); extern char *areadlink_with_size (char const *filename, size_t size_hint); #if GNULIB_AREADLINKAT extern char *areadlinkat (int fd, char const *filename); #endif #if GNULIB_AREADLINKAT_WITH_SIZE extern char *areadlinkat_with_size (int fd, char const *filename, size_t size_hint); #endif freedink-108.4+dfsg/gnulib/lib/printf-parse.c0000644000175000017500000005317112330466613016637 0ustar meme/* Formatted output to strings. Copyright (C) 1999-2000, 2002-2003, 2006-2014 Free Software Foundation, Inc. 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, see . */ /* This file can be parametrized with the following macros: CHAR_T The element type of the format string. CHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters in the format string are ASCII. DIRECTIVE Structure denoting a format directive. Depends on CHAR_T. DIRECTIVES Structure denoting the set of format directives of a format string. Depends on CHAR_T. PRINTF_PARSE Function that parses a format string. Depends on CHAR_T. STATIC Set to 'static' to declare the function static. ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. */ #ifndef PRINTF_PARSE # include #endif /* Specification. */ #ifndef PRINTF_PARSE # include "printf-parse.h" #endif /* Default parameters. */ #ifndef PRINTF_PARSE # define PRINTF_PARSE printf_parse # define CHAR_T char # define DIRECTIVE char_directive # define DIRECTIVES char_directives #endif /* Get size_t, NULL. */ #include /* Get intmax_t. */ #if defined IN_LIBINTL || defined IN_LIBASPRINTF # if HAVE_STDINT_H_WITH_UINTMAX # include # endif # if HAVE_INTTYPES_H_WITH_UINTMAX # include # endif #else # include #endif /* malloc(), realloc(), free(). */ #include /* memcpy(). */ #include /* errno. */ #include /* Checked size_t computations. */ #include "xsize.h" #if CHAR_T_ONLY_ASCII /* c_isascii(). */ # include "c-ctype.h" #endif #ifdef STATIC STATIC #endif int PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) { const CHAR_T *cp = format; /* pointer into format */ size_t arg_posn = 0; /* number of regular arguments consumed */ size_t d_allocated; /* allocated elements of d->dir */ size_t a_allocated; /* allocated elements of a->arg */ size_t max_width_length = 0; size_t max_precision_length = 0; d->count = 0; d_allocated = N_DIRECT_ALLOC_DIRECTIVES; d->dir = d->direct_alloc_dir; a->count = 0; a_allocated = N_DIRECT_ALLOC_ARGUMENTS; a->arg = a->direct_alloc_arg; #define REGISTER_ARG(_index_,_type_) \ { \ size_t n = (_index_); \ if (n >= a_allocated) \ { \ size_t memory_size; \ argument *memory; \ \ a_allocated = xtimes (a_allocated, 2); \ if (a_allocated <= n) \ a_allocated = xsum (n, 1); \ memory_size = xtimes (a_allocated, sizeof (argument)); \ if (size_overflow_p (memory_size)) \ /* Overflow, would lead to out of memory. */ \ goto out_of_memory; \ memory = (argument *) (a->arg != a->direct_alloc_arg \ ? realloc (a->arg, memory_size) \ : malloc (memory_size)); \ if (memory == NULL) \ /* Out of memory. */ \ goto out_of_memory; \ if (a->arg == a->direct_alloc_arg) \ memcpy (memory, a->arg, a->count * sizeof (argument)); \ a->arg = memory; \ } \ while (a->count <= n) \ a->arg[a->count++].type = TYPE_NONE; \ if (a->arg[n].type == TYPE_NONE) \ a->arg[n].type = (_type_); \ else if (a->arg[n].type != (_type_)) \ /* Ambiguous type for positional argument. */ \ goto error; \ } while (*cp != '\0') { CHAR_T c = *cp++; if (c == '%') { size_t arg_index = ARG_NONE; DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */ /* Initialize the next directive. */ dp->dir_start = cp - 1; dp->flags = 0; dp->width_start = NULL; dp->width_end = NULL; dp->width_arg_index = ARG_NONE; dp->precision_start = NULL; dp->precision_end = NULL; dp->precision_arg_index = ARG_NONE; dp->arg_index = ARG_NONE; /* Test for positional argument. */ if (*cp >= '0' && *cp <= '9') { const CHAR_T *np; for (np = cp; *np >= '0' && *np <= '9'; np++) ; if (*np == '$') { size_t n = 0; for (np = cp; *np >= '0' && *np <= '9'; np++) n = xsum (xtimes (n, 10), *np - '0'); if (n == 0) /* Positional argument 0. */ goto error; if (size_overflow_p (n)) /* n too large, would lead to out of memory later. */ goto error; arg_index = n - 1; cp = np + 1; } } /* Read the flags. */ for (;;) { if (*cp == '\'') { dp->flags |= FLAG_GROUP; cp++; } else if (*cp == '-') { dp->flags |= FLAG_LEFT; cp++; } else if (*cp == '+') { dp->flags |= FLAG_SHOWSIGN; cp++; } else if (*cp == ' ') { dp->flags |= FLAG_SPACE; cp++; } else if (*cp == '#') { dp->flags |= FLAG_ALT; cp++; } else if (*cp == '0') { dp->flags |= FLAG_ZERO; cp++; } #if __GLIBC__ >= 2 && !defined __UCLIBC__ else if (*cp == 'I') { dp->flags |= FLAG_LOCALIZED; cp++; } #endif else break; } /* Parse the field width. */ if (*cp == '*') { dp->width_start = cp; cp++; dp->width_end = cp; if (max_width_length < 1) max_width_length = 1; /* Test for positional argument. */ if (*cp >= '0' && *cp <= '9') { const CHAR_T *np; for (np = cp; *np >= '0' && *np <= '9'; np++) ; if (*np == '$') { size_t n = 0; for (np = cp; *np >= '0' && *np <= '9'; np++) n = xsum (xtimes (n, 10), *np - '0'); if (n == 0) /* Positional argument 0. */ goto error; if (size_overflow_p (n)) /* n too large, would lead to out of memory later. */ goto error; dp->width_arg_index = n - 1; cp = np + 1; } } if (dp->width_arg_index == ARG_NONE) { dp->width_arg_index = arg_posn++; if (dp->width_arg_index == ARG_NONE) /* arg_posn wrapped around. */ goto error; } REGISTER_ARG (dp->width_arg_index, TYPE_INT); } else if (*cp >= '0' && *cp <= '9') { size_t width_length; dp->width_start = cp; for (; *cp >= '0' && *cp <= '9'; cp++) ; dp->width_end = cp; width_length = dp->width_end - dp->width_start; if (max_width_length < width_length) max_width_length = width_length; } /* Parse the precision. */ if (*cp == '.') { cp++; if (*cp == '*') { dp->precision_start = cp - 1; cp++; dp->precision_end = cp; if (max_precision_length < 2) max_precision_length = 2; /* Test for positional argument. */ if (*cp >= '0' && *cp <= '9') { const CHAR_T *np; for (np = cp; *np >= '0' && *np <= '9'; np++) ; if (*np == '$') { size_t n = 0; for (np = cp; *np >= '0' && *np <= '9'; np++) n = xsum (xtimes (n, 10), *np - '0'); if (n == 0) /* Positional argument 0. */ goto error; if (size_overflow_p (n)) /* n too large, would lead to out of memory later. */ goto error; dp->precision_arg_index = n - 1; cp = np + 1; } } if (dp->precision_arg_index == ARG_NONE) { dp->precision_arg_index = arg_posn++; if (dp->precision_arg_index == ARG_NONE) /* arg_posn wrapped around. */ goto error; } REGISTER_ARG (dp->precision_arg_index, TYPE_INT); } else { size_t precision_length; dp->precision_start = cp - 1; for (; *cp >= '0' && *cp <= '9'; cp++) ; dp->precision_end = cp; precision_length = dp->precision_end - dp->precision_start; if (max_precision_length < precision_length) max_precision_length = precision_length; } } { arg_type type; /* Parse argument type/size specifiers. */ { int flags = 0; for (;;) { if (*cp == 'h') { flags |= (1 << (flags & 1)); cp++; } else if (*cp == 'L') { flags |= 4; cp++; } else if (*cp == 'l') { flags += 8; cp++; } else if (*cp == 'j') { if (sizeof (intmax_t) > sizeof (long)) { /* intmax_t = long long */ flags += 16; } else if (sizeof (intmax_t) > sizeof (int)) { /* intmax_t = long */ flags += 8; } cp++; } else if (*cp == 'z' || *cp == 'Z') { /* 'z' is standardized in ISO C 99, but glibc uses 'Z' because the warning facility in gcc-2.95.2 understands only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ if (sizeof (size_t) > sizeof (long)) { /* size_t = long long */ flags += 16; } else if (sizeof (size_t) > sizeof (int)) { /* size_t = long */ flags += 8; } cp++; } else if (*cp == 't') { if (sizeof (ptrdiff_t) > sizeof (long)) { /* ptrdiff_t = long long */ flags += 16; } else if (sizeof (ptrdiff_t) > sizeof (int)) { /* ptrdiff_t = long */ flags += 8; } cp++; } #if defined __APPLE__ && defined __MACH__ /* On Mac OS X 10.3, PRIdMAX is defined as "qd". We cannot change it to "lld" because PRIdMAX must also be understood by the system's printf routines. */ else if (*cp == 'q') { if (64 / 8 > sizeof (long)) { /* int64_t = long long */ flags += 16; } else { /* int64_t = long */ flags += 8; } cp++; } #endif #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* On native Windows, PRIdMAX is defined as "I64d". We cannot change it to "lld" because PRIdMAX must also be understood by the system's printf routines. */ else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4') { if (64 / 8 > sizeof (long)) { /* __int64 = long long */ flags += 16; } else { /* __int64 = long */ flags += 8; } cp += 3; } #endif else break; } /* Read the conversion character. */ c = *cp++; switch (c) { case 'd': case 'i': #if HAVE_LONG_LONG_INT /* If 'long long' exists and is larger than 'long': */ if (flags >= 16 || (flags & 4)) type = TYPE_LONGLONGINT; else #endif /* If 'long long' exists and is the same as 'long', we parse "lld" into TYPE_LONGINT. */ if (flags >= 8) type = TYPE_LONGINT; else if (flags & 2) type = TYPE_SCHAR; else if (flags & 1) type = TYPE_SHORT; else type = TYPE_INT; break; case 'o': case 'u': case 'x': case 'X': #if HAVE_LONG_LONG_INT /* If 'long long' exists and is larger than 'long': */ if (flags >= 16 || (flags & 4)) type = TYPE_ULONGLONGINT; else #endif /* If 'unsigned long long' exists and is the same as 'unsigned long', we parse "llu" into TYPE_ULONGINT. */ if (flags >= 8) type = TYPE_ULONGINT; else if (flags & 2) type = TYPE_UCHAR; else if (flags & 1) type = TYPE_USHORT; else type = TYPE_UINT; break; case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': case 'a': case 'A': if (flags >= 16 || (flags & 4)) type = TYPE_LONGDOUBLE; else type = TYPE_DOUBLE; break; case 'c': if (flags >= 8) #if HAVE_WINT_T type = TYPE_WIDE_CHAR; #else goto error; #endif else type = TYPE_CHAR; break; #if HAVE_WINT_T case 'C': type = TYPE_WIDE_CHAR; c = 'c'; break; #endif case 's': if (flags >= 8) #if HAVE_WCHAR_T type = TYPE_WIDE_STRING; #else goto error; #endif else type = TYPE_STRING; break; #if HAVE_WCHAR_T case 'S': type = TYPE_WIDE_STRING; c = 's'; break; #endif case 'p': type = TYPE_POINTER; break; case 'n': #if HAVE_LONG_LONG_INT /* If 'long long' exists and is larger than 'long': */ if (flags >= 16 || (flags & 4)) type = TYPE_COUNT_LONGLONGINT_POINTER; else #endif /* If 'long long' exists and is the same as 'long', we parse "lln" into TYPE_COUNT_LONGINT_POINTER. */ if (flags >= 8) type = TYPE_COUNT_LONGINT_POINTER; else if (flags & 2) type = TYPE_COUNT_SCHAR_POINTER; else if (flags & 1) type = TYPE_COUNT_SHORT_POINTER; else type = TYPE_COUNT_INT_POINTER; break; #if ENABLE_UNISTDIO /* The unistdio extensions. */ case 'U': if (flags >= 16) type = TYPE_U32_STRING; else if (flags >= 8) type = TYPE_U16_STRING; else type = TYPE_U8_STRING; break; #endif case '%': type = TYPE_NONE; break; default: /* Unknown conversion character. */ goto error; } } if (type != TYPE_NONE) { dp->arg_index = arg_index; if (dp->arg_index == ARG_NONE) { dp->arg_index = arg_posn++; if (dp->arg_index == ARG_NONE) /* arg_posn wrapped around. */ goto error; } REGISTER_ARG (dp->arg_index, type); } dp->conversion = c; dp->dir_end = cp; } d->count++; if (d->count >= d_allocated) { size_t memory_size; DIRECTIVE *memory; d_allocated = xtimes (d_allocated, 2); memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); if (size_overflow_p (memory_size)) /* Overflow, would lead to out of memory. */ goto out_of_memory; memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir ? realloc (d->dir, memory_size) : malloc (memory_size)); if (memory == NULL) /* Out of memory. */ goto out_of_memory; if (d->dir == d->direct_alloc_dir) memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE)); d->dir = memory; } } #if CHAR_T_ONLY_ASCII else if (!c_isascii (c)) { /* Non-ASCII character. Not supported. */ goto error; } #endif } d->dir[d->count].dir_start = cp; d->max_width_length = max_width_length; d->max_precision_length = max_precision_length; return 0; error: if (a->arg != a->direct_alloc_arg) free (a->arg); if (d->dir != d->direct_alloc_dir) free (d->dir); errno = EINVAL; return -1; out_of_memory: if (a->arg != a->direct_alloc_arg) free (a->arg); if (d->dir != d->direct_alloc_dir) free (d->dir); errno = ENOMEM; return -1; } #undef PRINTF_PARSE #undef DIRECTIVES #undef DIRECTIVE #undef CHAR_T_ONLY_ASCII #undef CHAR_T freedink-108.4+dfsg/gnulib/lib/strerror.c0000644000175000017500000000404312330466613016101 0ustar meme/* strerror.c --- POSIX compatible system error routine Copyright (C) 2007-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include #include #include #include "intprops.h" #include "strerror-override.h" #include "verify.h" /* Use the system functions, not the gnulib overrides in this file. */ #undef sprintf char * strerror (int n) #undef strerror { static char buf[STACKBUF_LEN]; size_t len; /* Cast away const, due to the historical signature of strerror; callers should not be modifying the string. */ const char *msg = strerror_override (n); if (msg) return (char *) msg; msg = strerror (n); /* Our strerror_r implementation might use the system's strerror buffer, so all other clients of strerror have to see the error copied into a buffer that we manage. This is not thread-safe, even if the system strerror is, but portable programs shouldn't be using strerror if they care about thread-safety. */ if (!msg || !*msg) { static char const fmt[] = "Unknown error %d"; verify (sizeof buf >= sizeof (fmt) + INT_STRLEN_BOUND (n)); sprintf (buf, fmt, n); errno = EINVAL; return buf; } /* Fix STACKBUF_LEN if this ever aborts. */ len = strlen (msg); if (sizeof buf <= len) abort (); return memcpy (buf, msg, len + 1); } freedink-108.4+dfsg/gnulib/lib/readlink.c0000644000175000017500000000446312330466613016016 0ustar meme/* Stub for readlink(). Copyright (C) 2003-2007, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include #include #if !HAVE_READLINK /* readlink() substitute for systems that don't have a readlink() function, such as DJGPP 2.03 and mingw32. */ ssize_t readlink (const char *name, char *buf _GL_UNUSED, size_t bufsize _GL_UNUSED) { struct stat statbuf; /* In general we should use lstat() here, not stat(). But on platforms without symbolic links, lstat() - if it exists - would be equivalent to stat(), therefore we can use stat(). This saves us a configure check. */ if (stat (name, &statbuf) >= 0) errno = EINVAL; return -1; } #else /* HAVE_READLINK */ # undef readlink /* readlink() wrapper that uses correct types, for systems like cygwin 1.5.x where readlink returns int, and which rejects trailing slash, for Solaris 9. */ ssize_t rpl_readlink (const char *name, char *buf, size_t bufsize) { # if READLINK_TRAILING_SLASH_BUG size_t len = strlen (name); if (len && name[len - 1] == '/') { /* Even if name without the slash is a symlink to a directory, both lstat() and stat() must resolve the trailing slash to the directory rather than the symlink. We can therefore safely use stat() to distinguish between EINVAL and ENOTDIR/ENOENT, avoiding extra overhead of rpl_lstat(). */ struct stat st; if (stat (name, &st) == 0) errno = EINVAL; return -1; } # endif /* READLINK_TRAILING_SLASH_BUG */ return readlink (name, buf, bufsize); } #endif /* HAVE_READLINK */ freedink-108.4+dfsg/gnulib/lib/malloca.h0000644000175000017500000001107312330466613015635 0ustar meme/* Safe automatic memory allocation. Copyright (C) 2003-2007, 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2003. 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, see . */ #ifndef _MALLOCA_H #define _MALLOCA_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* safe_alloca(N) is equivalent to alloca(N) when it is safe to call alloca(N); otherwise it returns NULL. It either returns N bytes of memory allocated on the stack, that lasts until the function returns, or NULL. Use of safe_alloca should be avoided: - inside arguments of function calls - undefined behaviour, - in inline functions - the allocation may actually last until the calling function returns. */ #if HAVE_ALLOCA /* The OS usually guarantees only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely allocate anything larger than 4096 bytes. Also care for the possibility of a few compiler-allocated temporary stack slots. This must be a macro, not a function. */ # define safe_alloca(N) ((N) < 4032 ? alloca (N) : NULL) #else # define safe_alloca(N) ((void) (N), NULL) #endif /* malloca(N) is a safe variant of alloca(N). It allocates N bytes of memory allocated on the stack, that must be freed using freea() before the function returns. Upon failure, it returns NULL. */ #if HAVE_ALLOCA # define malloca(N) \ ((N) < 4032 - sa_increment \ ? (void *) ((char *) alloca ((N) + sa_increment) + sa_increment) \ : mmalloca (N)) #else # define malloca(N) \ mmalloca (N) #endif extern void * mmalloca (size_t n); /* Free a block of memory allocated through malloca(). */ #if HAVE_ALLOCA extern void freea (void *p); #else # define freea free #endif /* nmalloca(N,S) is an overflow-safe variant of malloca (N * S). It allocates an array of N objects, each with S bytes of memory, on the stack. S must be positive and N must be nonnegative. The array must be freed using freea() before the function returns. */ #if 1 /* Cf. the definition of xalloc_oversized. */ # define nmalloca(n, s) \ ((n) > (size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) \ ? NULL \ : malloca ((n) * (s))) #else extern void * nmalloca (size_t n, size_t s); #endif #ifdef __cplusplus } #endif /* ------------------- Auxiliary, non-public definitions ------------------- */ /* Determine the alignment of a type at compile time. */ #if defined __GNUC__ || defined __IBM__ALIGNOF__ # define sa_alignof __alignof__ #elif defined __cplusplus template struct sa_alignof_helper { char __slot1; type __slot2; }; # define sa_alignof(type) offsetof (sa_alignof_helper, __slot2) #elif defined __hpux /* Work around a HP-UX 10.20 cc bug with enums constants defined as offsetof values. */ # define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8) #elif defined _AIX /* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof values. */ # define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8) #else # define sa_alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2) #endif enum { /* The desired alignment of memory allocations is the maximum alignment among all elementary types. */ sa_alignment_long = sa_alignof (long), sa_alignment_double = sa_alignof (double), #if HAVE_LONG_LONG_INT sa_alignment_longlong = sa_alignof (long long), #endif sa_alignment_longdouble = sa_alignof (long double), sa_alignment_max = ((sa_alignment_long - 1) | (sa_alignment_double - 1) #if HAVE_LONG_LONG_INT | (sa_alignment_longlong - 1) #endif | (sa_alignment_longdouble - 1) ) + 1, /* The increment that guarantees room for a magic word must be >= sizeof (int) and a multiple of sa_alignment_max. */ sa_increment = ((sizeof (int) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max }; #endif /* _MALLOCA_H */ freedink-108.4+dfsg/gnulib/lib/xstrndup.h0000644000175000017500000000177412330466613016123 0ustar meme/* Duplicate a bounded initial segment of a string, with out-of-memory checking. Copyright (C) 2003, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Return a newly allocated copy of at most N bytes of STRING. In other words, return a copy of the initial segment of length N of STRING. */ extern char *xstrndup (const char *string, size_t n); freedink-108.4+dfsg/gnulib/lib/stdint.in.h0000644000175000017500000004456412330466613016152 0ustar meme/* Copyright (C) 2001-2002, 2004-2014 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. This file is part of gnulib. 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, see . */ /* * ISO C 99 for platforms that lack it. * */ #ifndef _@GUARD_PREFIX@_STDINT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* When including a system file that in turn includes , use the system , not our substitute. This avoids problems with (for example) VMS, whose includes . */ #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* On Android (Bionic libc), includes this file before having defined 'time_t'. Therefore in this case avoid including other system header files; just include the system's . Ideally we should test __BIONIC__ here, but it is only defined after has been included; hence test __ANDROID__ instead. */ #if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #else /* Get those types that are already defined in other system include files, so that we can "#define int8_t signed char" below without worrying about a later system include file containing a "typedef signed char int8_t;" that will get messed up by our macro. Our macros should all be consistent with the system versions, except for the "fast" types and macros, which we recommend against using in public interfaces due to compiler differences. */ #if @HAVE_STDINT_H@ # if defined __sgi && ! defined __c99 /* Bypass IRIX's if in C89 mode, since it merely annoys users with "This header file is to be used only for c99 mode compilations" diagnostics. */ # define __STDINT_H__ # endif /* Some pre-C++11 implementations need this. */ # ifdef __cplusplus # ifndef __STDC_CONSTANT_MACROS # define __STDC_CONSTANT_MACROS 1 # endif # ifndef __STDC_LIMIT_MACROS # define __STDC_LIMIT_MACROS 1 # endif # endif /* Other systems may have an incomplete or buggy . Include it before , since any "#include " in would reinclude us, skipping our contents because _@GUARD_PREFIX@_STDINT_H is defined. The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #endif #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H #define _@GUARD_PREFIX@_STDINT_H /* defines some of the stdint.h types as well, on glibc, IRIX 6.5, and OpenBSD 3.8 (via ). AIX 5.2 isn't needed and causes troubles. Mac OS X 10.4.6 includes (which is us), but relies on the system definitions, so include after @NEXT_STDINT_H@. */ #if @HAVE_SYS_TYPES_H@ && ! defined _AIX # include #endif /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX. */ #include #if @HAVE_INTTYPES_H@ /* In OpenBSD 3.8, includes , which defines int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. also defines intptr_t and uintptr_t. */ # include #elif @HAVE_SYS_INTTYPES_H@ /* Solaris 7 has the types except the *_fast*_t types, and the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ # include #endif #if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ /* Linux libc4 >= 4.6.7 and libc5 have a that defines int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is included by . */ # include #endif #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* Minimum and maximum values for an integer type under the usual assumption. Return an unspecified value if BITS == 0, adding a check to pacify picky compilers. */ #define _STDINT_MIN(signed, bits, zero) \ ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero)) #define _STDINT_MAX(signed, bits, zero) \ ((signed) \ ? ~ _STDINT_MIN (signed, bits, zero) \ : /* The expression for the unsigned case. The subtraction of (signed) \ is a nop in the unsigned case and avoids "signed integer overflow" \ warnings in the signed case. */ \ ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) #if !GNULIB_defined_stdint_types /* 7.18.1.1. Exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef int8_t #undef uint8_t typedef signed char gl_int8_t; typedef unsigned char gl_uint8_t; #define int8_t gl_int8_t #define uint8_t gl_uint8_t #undef int16_t #undef uint16_t typedef short int gl_int16_t; typedef unsigned short int gl_uint16_t; #define int16_t gl_int16_t #define uint16_t gl_uint16_t #undef int32_t #undef uint32_t typedef int gl_int32_t; typedef unsigned int gl_uint32_t; #define int32_t gl_int32_t #define uint32_t gl_uint32_t /* If the system defines INT64_MAX, assume int64_t works. That way, if the underlying platform defines int64_t to be a 64-bit long long int, the code below won't mistakenly define it to be a 64-bit long int, which would mess up C++ name mangling. We must use #ifdef rather than #if, to avoid an error with HP-UX 10.20 cc. */ #ifdef INT64_MAX # define GL_INT64_T #else /* Do not undefine int64_t if gnulib is not being used with 64-bit types, since otherwise it breaks platforms like Tandem/NSK. */ # if LONG_MAX >> 31 >> 31 == 1 # undef int64_t typedef long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif defined _MSC_VER # undef int64_t typedef __int64 gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif @HAVE_LONG_LONG_INT@ # undef int64_t typedef long long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # endif #endif #ifdef UINT64_MAX # define GL_UINT64_T #else # if ULONG_MAX >> 31 >> 31 >> 1 == 1 # undef uint64_t typedef unsigned long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif defined _MSC_VER # undef uint64_t typedef unsigned __int64 gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif @HAVE_UNSIGNED_LONG_LONG_INT@ # undef uint64_t typedef unsigned long long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # endif #endif /* Avoid collision with Solaris 2.5.1 etc. */ #define _UINT8_T #define _UINT32_T #define _UINT64_T /* 7.18.1.2. Minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef int_least8_t #undef uint_least8_t #undef int_least16_t #undef uint_least16_t #undef int_least32_t #undef uint_least32_t #undef int_least64_t #undef uint_least64_t #define int_least8_t int8_t #define uint_least8_t uint8_t #define int_least16_t int16_t #define uint_least16_t uint16_t #define int_least32_t int32_t #define uint_least32_t uint32_t #ifdef GL_INT64_T # define int_least64_t int64_t #endif #ifdef GL_UINT64_T # define uint_least64_t uint64_t #endif /* 7.18.1.3. Fastest minimum-width integer types */ /* Note: Other substitutes may define these types differently. It is not recommended to use these types in public header files. */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. The following code normally uses types consistent with glibc, as that lessens the chance of incompatibility with older GNU hosts. */ #undef int_fast8_t #undef uint_fast8_t #undef int_fast16_t #undef uint_fast16_t #undef int_fast32_t #undef uint_fast32_t #undef int_fast64_t #undef uint_fast64_t typedef signed char gl_int_fast8_t; typedef unsigned char gl_uint_fast8_t; #ifdef __sun /* Define types compatible with SunOS 5.10, so that code compiled under earlier SunOS versions works with code compiled under SunOS 5.10. */ typedef int gl_int_fast32_t; typedef unsigned int gl_uint_fast32_t; #else typedef long int gl_int_fast32_t; typedef unsigned long int gl_uint_fast32_t; #endif typedef gl_int_fast32_t gl_int_fast16_t; typedef gl_uint_fast32_t gl_uint_fast16_t; #define int_fast8_t gl_int_fast8_t #define uint_fast8_t gl_uint_fast8_t #define int_fast16_t gl_int_fast16_t #define uint_fast16_t gl_uint_fast16_t #define int_fast32_t gl_int_fast32_t #define uint_fast32_t gl_uint_fast32_t #ifdef GL_INT64_T # define int_fast64_t int64_t #endif #ifdef GL_UINT64_T # define uint_fast64_t uint64_t #endif /* 7.18.1.4. Integer types capable of holding object pointers */ #undef intptr_t #undef uintptr_t typedef long int gl_intptr_t; typedef unsigned long int gl_uintptr_t; #define intptr_t gl_intptr_t #define uintptr_t gl_uintptr_t /* 7.18.1.5. Greatest-width integer types */ /* Note: These types are compiler dependent. It may be unwise to use them in public header files. */ /* If the system defines INTMAX_MAX, assume that intmax_t works, and similarly for UINTMAX_MAX and uintmax_t. This avoids problems with assuming one type where another is used by the system. */ #ifndef INTMAX_MAX # undef INTMAX_C # undef intmax_t # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 typedef long long int gl_intmax_t; # define intmax_t gl_intmax_t # elif defined GL_INT64_T # define intmax_t int64_t # else typedef long int gl_intmax_t; # define intmax_t gl_intmax_t # endif #endif #ifndef UINTMAX_MAX # undef UINTMAX_C # undef uintmax_t # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 typedef unsigned long long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # elif defined GL_UINT64_T # define uintmax_t uint64_t # else typedef unsigned long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # endif #endif /* Verify that intmax_t and uintmax_t have the same size. Too much code breaks if this is not the case. If this check fails, the reason is likely to be found in the autoconf macros. */ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ? 1 : -1]; #define GNULIB_defined_stdint_types 1 #endif /* !GNULIB_defined_stdint_types */ /* 7.18.2. Limits of specified-width integer types */ /* 7.18.2.1. Limits of exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef INT8_MIN #undef INT8_MAX #undef UINT8_MAX #define INT8_MIN (~ INT8_MAX) #define INT8_MAX 127 #define UINT8_MAX 255 #undef INT16_MIN #undef INT16_MAX #undef UINT16_MAX #define INT16_MIN (~ INT16_MAX) #define INT16_MAX 32767 #define UINT16_MAX 65535 #undef INT32_MIN #undef INT32_MAX #undef UINT32_MAX #define INT32_MIN (~ INT32_MAX) #define INT32_MAX 2147483647 #define UINT32_MAX 4294967295U #if defined GL_INT64_T && ! defined INT64_MAX /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 evaluates the latter incorrectly in preprocessor expressions. */ # define INT64_MIN (- INTMAX_C (1) << 63) # define INT64_MAX INTMAX_C (9223372036854775807) #endif #if defined GL_UINT64_T && ! defined UINT64_MAX # define UINT64_MAX UINTMAX_C (18446744073709551615) #endif /* 7.18.2.2. Limits of minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef INT_LEAST8_MIN #undef INT_LEAST8_MAX #undef UINT_LEAST8_MAX #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define UINT_LEAST8_MAX UINT8_MAX #undef INT_LEAST16_MIN #undef INT_LEAST16_MAX #undef UINT_LEAST16_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define UINT_LEAST16_MAX UINT16_MAX #undef INT_LEAST32_MIN #undef INT_LEAST32_MAX #undef UINT_LEAST32_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define UINT_LEAST32_MAX UINT32_MAX #undef INT_LEAST64_MIN #undef INT_LEAST64_MAX #ifdef GL_INT64_T # define INT_LEAST64_MIN INT64_MIN # define INT_LEAST64_MAX INT64_MAX #endif #undef UINT_LEAST64_MAX #ifdef GL_UINT64_T # define UINT_LEAST64_MAX UINT64_MAX #endif /* 7.18.2.3. Limits of fastest minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. */ #undef INT_FAST8_MIN #undef INT_FAST8_MAX #undef UINT_FAST8_MAX #define INT_FAST8_MIN SCHAR_MIN #define INT_FAST8_MAX SCHAR_MAX #define UINT_FAST8_MAX UCHAR_MAX #undef INT_FAST16_MIN #undef INT_FAST16_MAX #undef UINT_FAST16_MAX #define INT_FAST16_MIN INT_FAST32_MIN #define INT_FAST16_MAX INT_FAST32_MAX #define UINT_FAST16_MAX UINT_FAST32_MAX #undef INT_FAST32_MIN #undef INT_FAST32_MAX #undef UINT_FAST32_MAX #ifdef __sun # define INT_FAST32_MIN INT_MIN # define INT_FAST32_MAX INT_MAX # define UINT_FAST32_MAX UINT_MAX #else # define INT_FAST32_MIN LONG_MIN # define INT_FAST32_MAX LONG_MAX # define UINT_FAST32_MAX ULONG_MAX #endif #undef INT_FAST64_MIN #undef INT_FAST64_MAX #ifdef GL_INT64_T # define INT_FAST64_MIN INT64_MIN # define INT_FAST64_MAX INT64_MAX #endif #undef UINT_FAST64_MAX #ifdef GL_UINT64_T # define UINT_FAST64_MAX UINT64_MAX #endif /* 7.18.2.4. Limits of integer types capable of holding object pointers */ #undef INTPTR_MIN #undef INTPTR_MAX #undef UINTPTR_MAX #define INTPTR_MIN LONG_MIN #define INTPTR_MAX LONG_MAX #define UINTPTR_MAX ULONG_MAX /* 7.18.2.5. Limits of greatest-width integer types */ #ifndef INTMAX_MAX # undef INTMAX_MIN # ifdef INT64_MAX # define INTMAX_MIN INT64_MIN # define INTMAX_MAX INT64_MAX # else # define INTMAX_MIN INT32_MIN # define INTMAX_MAX INT32_MAX # endif #endif #ifndef UINTMAX_MAX # ifdef UINT64_MAX # define UINTMAX_MAX UINT64_MAX # else # define UINTMAX_MAX UINT32_MAX # endif #endif /* 7.18.3. Limits of other integer types */ /* ptrdiff_t limits */ #undef PTRDIFF_MIN #undef PTRDIFF_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) # define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) # else # define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) # define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) # endif #else # define PTRDIFF_MIN \ _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) # define PTRDIFF_MAX \ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) #endif /* sig_atomic_t limits */ #undef SIG_ATOMIC_MIN #undef SIG_ATOMIC_MAX #define SIG_ATOMIC_MIN \ _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) #define SIG_ATOMIC_MAX \ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) /* size_t limit */ #undef SIZE_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define SIZE_MAX _STDINT_MAX (0, 64, 0ul) # else # define SIZE_MAX _STDINT_MAX (0, 32, 0ul) # endif #else # define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) #endif /* wchar_t limits */ /* Get WCHAR_MIN, WCHAR_MAX. This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested includes -> -> -> , and the latter includes and assumes its types are already defined. */ #if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) /* BSD/OS 4.0.1 has a bug: , and must be included before . */ # include # include # include # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H # include # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H #endif #undef WCHAR_MIN #undef WCHAR_MAX #define WCHAR_MIN \ _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) #define WCHAR_MAX \ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) /* wint_t limits */ #undef WINT_MIN #undef WINT_MAX #define WINT_MIN \ _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) #define WINT_MAX \ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) /* 7.18.4. Macros for integer constants */ /* 7.18.4.1. Macros for minimum-width integer constants */ /* According to ISO C 99 Technical Corrigendum 1 */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ #undef INT8_C #undef UINT8_C #define INT8_C(x) x #define UINT8_C(x) x #undef INT16_C #undef UINT16_C #define INT16_C(x) x #define UINT16_C(x) x #undef INT32_C #undef UINT32_C #define INT32_C(x) x #define UINT32_C(x) x ## U #undef INT64_C #undef UINT64_C #if LONG_MAX >> 31 >> 31 == 1 # define INT64_C(x) x##L #elif defined _MSC_VER # define INT64_C(x) x##i64 #elif @HAVE_LONG_LONG_INT@ # define INT64_C(x) x##LL #endif #if ULONG_MAX >> 31 >> 31 >> 1 == 1 # define UINT64_C(x) x##UL #elif defined _MSC_VER # define UINT64_C(x) x##ui64 #elif @HAVE_UNSIGNED_LONG_LONG_INT@ # define UINT64_C(x) x##ULL #endif /* 7.18.4.2. Macros for greatest-width integer constants */ #ifndef INTMAX_C # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 # define INTMAX_C(x) x##LL # elif defined GL_INT64_T # define INTMAX_C(x) INT64_C(x) # else # define INTMAX_C(x) x##L # endif #endif #ifndef UINTMAX_C # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 # define UINTMAX_C(x) x##ULL # elif defined GL_UINT64_T # define UINTMAX_C(x) UINT64_C(x) # else # define UINTMAX_C(x) x##UL # endif #endif #endif /* _@GUARD_PREFIX@_STDINT_H */ #endif /* !(defined __ANDROID__ && ...) */ #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ freedink-108.4+dfsg/gnulib/lib/fchdir.c0000644000175000017500000001337612330466613015467 0ustar meme/* fchdir replacement. Copyright (C) 2006-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include #include #include #include #include #include #include #include #include "dosname.h" #include "filenamecat.h" #ifndef REPLACE_OPEN_DIRECTORY # define REPLACE_OPEN_DIRECTORY 0 #endif /* This replacement assumes that a directory is not renamed while opened through a file descriptor. FIXME: On mingw, this would be possible to enforce if we were to also open a HANDLE to each directory currently visited by a file descriptor, since mingw refuses to rename any in-use file system object. */ /* Array of file descriptors opened. If REPLACE_OPEN_DIRECTORY or if it points to a directory, it stores info about this directory. */ typedef struct { char *name; /* Absolute name of the directory, or NULL. */ /* FIXME - add a DIR* member to make dirfd possible on mingw? */ } dir_info_t; static dir_info_t *dirs; static size_t dirs_allocated; /* Try to ensure dirs has enough room for a slot at index fd; free any contents already in that slot. Return false and set errno to ENOMEM on allocation failure. */ static bool ensure_dirs_slot (size_t fd) { if (fd < dirs_allocated) free (dirs[fd].name); else { size_t new_allocated; dir_info_t *new_dirs; new_allocated = 2 * dirs_allocated + 1; if (new_allocated <= fd) new_allocated = fd + 1; new_dirs = (dirs != NULL ? (dir_info_t *) realloc (dirs, new_allocated * sizeof *dirs) : (dir_info_t *) malloc (new_allocated * sizeof *dirs)); if (new_dirs == NULL) return false; memset (new_dirs + dirs_allocated, 0, (new_allocated - dirs_allocated) * sizeof *dirs); dirs = new_dirs; dirs_allocated = new_allocated; } return true; } /* Return an absolute name of DIR in malloc'd storage. */ static char * get_name (char const *dir) { char *cwd; char *result; int saved_errno; if (IS_ABSOLUTE_FILE_NAME (dir)) return strdup (dir); /* We often encounter "."; treat it as a special case. */ cwd = getcwd (NULL, 0); if (!cwd || (dir[0] == '.' && dir[1] == '\0')) return cwd; result = mfile_name_concat (cwd, dir, NULL); saved_errno = errno; free (cwd); errno = saved_errno; return result; } /* Hook into the gnulib replacements for open() and close() to keep track of the open file descriptors. */ /* Close FD, cleaning up any fd to name mapping if fd was visiting a directory. */ void _gl_unregister_fd (int fd) { if (fd >= 0 && fd < dirs_allocated) { free (dirs[fd].name); dirs[fd].name = NULL; } } /* Mark FD as visiting FILENAME. FD must be non-negative, and refer to an open file descriptor. If REPLACE_OPEN_DIRECTORY is non-zero, this should only be called if FD is visiting a directory. Close FD and return -1 if there is insufficient memory to track the directory name; otherwise return FD. */ int _gl_register_fd (int fd, const char *filename) { struct stat statbuf; assert (0 <= fd); if (REPLACE_OPEN_DIRECTORY || (fstat (fd, &statbuf) == 0 && S_ISDIR (statbuf.st_mode))) { if (!ensure_dirs_slot (fd) || (dirs[fd].name = get_name (filename)) == NULL) { int saved_errno = errno; close (fd); errno = saved_errno; return -1; } } return fd; } /* Mark NEWFD as a duplicate of OLDFD; useful from dup, dup2, dup3, and fcntl. Both arguments must be valid and distinct file descriptors. Close NEWFD and return -1 if OLDFD is tracking a directory, but there is insufficient memory to track the same directory in NEWFD; otherwise return NEWFD. */ int _gl_register_dup (int oldfd, int newfd) { assert (0 <= oldfd && 0 <= newfd && oldfd != newfd); if (oldfd < dirs_allocated && dirs[oldfd].name) { /* Duplicated a directory; must ensure newfd is allocated. */ if (!ensure_dirs_slot (newfd) || (dirs[newfd].name = strdup (dirs[oldfd].name)) == NULL) { int saved_errno = errno; close (newfd); errno = saved_errno; newfd = -1; } } else if (newfd < dirs_allocated) { /* Duplicated a non-directory; ensure newfd is cleared. */ free (dirs[newfd].name); dirs[newfd].name = NULL; } return newfd; } /* If FD is currently visiting a directory, then return the name of that directory. Otherwise, return NULL and set errno. */ const char * _gl_directory_name (int fd) { if (0 <= fd && fd < dirs_allocated && dirs[fd].name != NULL) return dirs[fd].name; /* At this point, fd is either invalid, or open but not a directory. If dup2 fails, errno is correctly EBADF. */ if (0 <= fd) { if (dup2 (fd, fd) == fd) errno = ENOTDIR; } else errno = EBADF; return NULL; } /* Implement fchdir() in terms of chdir(). */ int fchdir (int fd) { const char *name = _gl_directory_name (fd); return name ? chdir (name) : -1; } freedink-108.4+dfsg/gnulib/lib/vasnprintf.h0000644000175000017500000000560012330466613016416 0ustar meme/* vsprintf with automatic memory allocation. Copyright (C) 2002-2004, 2007-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _VASNPRINTF_H #define _VASNPRINTF_H /* Get va_list. */ #include /* Get size_t. */ #include /* The __attribute__ feature is available in gcc versions 2.5 and later. The __-protected variants of the attributes 'format' and 'printf' are accepted by gcc versions 2.6.4 (effectively 2.7) and later. We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because gnulib and libintl do '#define printf __printf__' when they override the 'printf' function. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) #else # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ #endif #ifdef __cplusplus extern "C" { #endif /* Write formatted output to a string dynamically allocated with malloc(). You can pass a preallocated buffer for the result in RESULTBUF and its size in *LENGTHP; otherwise you pass RESULTBUF = NULL. If successful, return the address of the string (this may be = RESULTBUF if no dynamic memory allocation was necessary) and set *LENGTHP to the number of resulting bytes, excluding the trailing NUL. Upon error, set errno and return NULL. When dynamic memory allocation occurs, the preallocated buffer is left alone (with possibly modified contents). This makes it possible to use a statically allocated or stack-allocated buffer, like this: char buf[100]; size_t len = sizeof (buf); char *output = vasnprintf (buf, &len, format, args); if (output == NULL) ... error handling ...; else { ... use the output string ...; if (output != buf) free (output); } */ #if REPLACE_VASNPRINTF # define asnprintf rpl_asnprintf # define vasnprintf rpl_vasnprintf #endif extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4)); extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 0)); #ifdef __cplusplus } #endif #endif /* _VASNPRINTF_H */ freedink-108.4+dfsg/gnulib/lib/close.c0000644000175000017500000000270712330466613015331 0ustar meme/* close replacement. Copyright (C) 2008-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Specification. */ #include #include #include "fd-hook.h" #include "msvc-inval.h" #undef close #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int close_nothrow (int fd) { int result; TRY_MSVC_INVAL { result = close (fd); } CATCH_MSVC_INVAL { result = -1; errno = EBADF; } DONE_MSVC_INVAL; return result; } #else # define close_nothrow close #endif /* Override close() to call into other gnulib modules. */ int rpl_close (int fd) { #if WINDOWS_SOCKETS int retval = execute_all_close_hooks (close_nothrow, fd); #else int retval = close_nothrow (fd); #endif #if REPLACE_FCHDIR if (retval >= 0) _gl_unregister_fd (fd); #endif return retval; } freedink-108.4+dfsg/gnulib/lib/hash.c0000644000175000017500000011517512330466613015153 0ustar meme/* hash - hashing table processing. Copyright (C) 1998-2004, 2006-2007, 2009-2014 Free Software Foundation, Inc. Written by Jim Meyering, 1992. 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 3 of the License, 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, see . */ /* A generic hash table package. */ /* Define USE_OBSTACK to 1 if you want the allocator to use obstacks instead of malloc. If you change USE_OBSTACK, you have to recompile! */ #include #include "hash.h" #include "bitrotate.h" #include "xalloc-oversized.h" #include #include #include #if USE_OBSTACK # include "obstack.h" # ifndef obstack_chunk_alloc # define obstack_chunk_alloc malloc # endif # ifndef obstack_chunk_free # define obstack_chunk_free free # endif #endif struct hash_entry { void *data; struct hash_entry *next; }; struct hash_table { /* The array of buckets starts at BUCKET and extends to BUCKET_LIMIT-1, for a possibility of N_BUCKETS. Among those, N_BUCKETS_USED buckets are not empty, there are N_ENTRIES active entries in the table. */ struct hash_entry *bucket; struct hash_entry const *bucket_limit; size_t n_buckets; size_t n_buckets_used; size_t n_entries; /* Tuning arguments, kept in a physically separate structure. */ const Hash_tuning *tuning; /* Three functions are given to 'hash_initialize', see the documentation block for this function. In a word, HASHER randomizes a user entry into a number up from 0 up to some maximum minus 1; COMPARATOR returns true if two user entries compare equally; and DATA_FREER is the cleanup function for a user entry. */ Hash_hasher hasher; Hash_comparator comparator; Hash_data_freer data_freer; /* A linked list of freed struct hash_entry structs. */ struct hash_entry *free_entry_list; #if USE_OBSTACK /* Whenever obstacks are used, it is possible to allocate all overflowed entries into a single stack, so they all can be freed in a single operation. It is not clear if the speedup is worth the trouble. */ struct obstack entry_stack; #endif }; /* A hash table contains many internal entries, each holding a pointer to some user-provided data (also called a user entry). An entry indistinctly refers to both the internal entry and its associated user entry. A user entry contents may be hashed by a randomization function (the hashing function, or just "hasher" for short) into a number (or "slot") between 0 and the current table size. At each slot position in the hash table, starts a linked chain of entries for which the user data all hash to this slot. A bucket is the collection of all entries hashing to the same slot. A good "hasher" function will distribute entries rather evenly in buckets. In the ideal case, the length of each bucket is roughly the number of entries divided by the table size. Finding the slot for a data is usually done in constant time by the "hasher", and the later finding of a precise entry is linear in time with the size of the bucket. Consequently, a larger hash table size (that is, a larger number of buckets) is prone to yielding shorter chains, *given* the "hasher" function behaves properly. Long buckets slow down the lookup algorithm. One might use big hash table sizes in hope to reduce the average length of buckets, but this might become inordinate, as unused slots in the hash table take some space. The best bet is to make sure you are using a good "hasher" function (beware that those are not that easy to write! :-), and to use a table size larger than the actual number of entries. */ /* If an insertion makes the ratio of nonempty buckets to table size larger than the growth threshold (a number between 0.0 and 1.0), then increase the table size by multiplying by the growth factor (a number greater than 1.0). The growth threshold defaults to 0.8, and the growth factor defaults to 1.414, meaning that the table will have doubled its size every second time 80% of the buckets get used. */ #define DEFAULT_GROWTH_THRESHOLD 0.8f #define DEFAULT_GROWTH_FACTOR 1.414f /* If a deletion empties a bucket and causes the ratio of used buckets to table size to become smaller than the shrink threshold (a number between 0.0 and 1.0), then shrink the table by multiplying by the shrink factor (a number greater than the shrink threshold but smaller than 1.0). The shrink threshold and factor default to 0.0 and 1.0, meaning that the table never shrinks. */ #define DEFAULT_SHRINK_THRESHOLD 0.0f #define DEFAULT_SHRINK_FACTOR 1.0f /* Use this to initialize or reset a TUNING structure to some sensible values. */ static const Hash_tuning default_tuning = { DEFAULT_SHRINK_THRESHOLD, DEFAULT_SHRINK_FACTOR, DEFAULT_GROWTH_THRESHOLD, DEFAULT_GROWTH_FACTOR, false }; /* Information and lookup. */ /* The following few functions provide information about the overall hash table organization: the number of entries, number of buckets and maximum length of buckets. */ /* Return the number of buckets in the hash table. The table size, the total number of buckets (used plus unused), or the maximum number of slots, are the same quantity. */ size_t hash_get_n_buckets (const Hash_table *table) { return table->n_buckets; } /* Return the number of slots in use (non-empty buckets). */ size_t hash_get_n_buckets_used (const Hash_table *table) { return table->n_buckets_used; } /* Return the number of active entries. */ size_t hash_get_n_entries (const Hash_table *table) { return table->n_entries; } /* Return the length of the longest chain (bucket). */ size_t hash_get_max_bucket_length (const Hash_table *table) { struct hash_entry const *bucket; size_t max_bucket_length = 0; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry const *cursor = bucket; size_t bucket_length = 1; while (cursor = cursor->next, cursor) bucket_length++; if (bucket_length > max_bucket_length) max_bucket_length = bucket_length; } } return max_bucket_length; } /* Do a mild validation of a hash table, by traversing it and checking two statistics. */ bool hash_table_ok (const Hash_table *table) { struct hash_entry const *bucket; size_t n_buckets_used = 0; size_t n_entries = 0; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry const *cursor = bucket; /* Count bucket head. */ n_buckets_used++; n_entries++; /* Count bucket overflow. */ while (cursor = cursor->next, cursor) n_entries++; } } if (n_buckets_used == table->n_buckets_used && n_entries == table->n_entries) return true; return false; } void hash_print_statistics (const Hash_table *table, FILE *stream) { size_t n_entries = hash_get_n_entries (table); size_t n_buckets = hash_get_n_buckets (table); size_t n_buckets_used = hash_get_n_buckets_used (table); size_t max_bucket_length = hash_get_max_bucket_length (table); fprintf (stream, "# entries: %lu\n", (unsigned long int) n_entries); fprintf (stream, "# buckets: %lu\n", (unsigned long int) n_buckets); fprintf (stream, "# buckets used: %lu (%.2f%%)\n", (unsigned long int) n_buckets_used, (100.0 * n_buckets_used) / n_buckets); fprintf (stream, "max bucket length: %lu\n", (unsigned long int) max_bucket_length); } /* Hash KEY and return a pointer to the selected bucket. If TABLE->hasher misbehaves, abort. */ static struct hash_entry * safe_hasher (const Hash_table *table, const void *key) { size_t n = table->hasher (key, table->n_buckets); if (! (n < table->n_buckets)) abort (); return table->bucket + n; } /* If ENTRY matches an entry already in the hash table, return the entry from the table. Otherwise, return NULL. */ void * hash_lookup (const Hash_table *table, const void *entry) { struct hash_entry const *bucket = safe_hasher (table, entry); struct hash_entry const *cursor; if (bucket->data == NULL) return NULL; for (cursor = bucket; cursor; cursor = cursor->next) if (entry == cursor->data || table->comparator (entry, cursor->data)) return cursor->data; return NULL; } /* Walking. */ /* The functions in this page traverse the hash table and process the contained entries. For the traversal to work properly, the hash table should not be resized nor modified while any particular entry is being processed. In particular, entries should not be added, and an entry may be removed only if there is no shrink threshold and the entry being removed has already been passed to hash_get_next. */ /* Return the first data in the table, or NULL if the table is empty. */ void * hash_get_first (const Hash_table *table) { struct hash_entry const *bucket; if (table->n_entries == 0) return NULL; for (bucket = table->bucket; ; bucket++) if (! (bucket < table->bucket_limit)) abort (); else if (bucket->data) return bucket->data; } /* Return the user data for the entry following ENTRY, where ENTRY has been returned by a previous call to either 'hash_get_first' or 'hash_get_next'. Return NULL if there are no more entries. */ void * hash_get_next (const Hash_table *table, const void *entry) { struct hash_entry const *bucket = safe_hasher (table, entry); struct hash_entry const *cursor; /* Find next entry in the same bucket. */ cursor = bucket; do { if (cursor->data == entry && cursor->next) return cursor->next->data; cursor = cursor->next; } while (cursor != NULL); /* Find first entry in any subsequent bucket. */ while (++bucket < table->bucket_limit) if (bucket->data) return bucket->data; /* None found. */ return NULL; } /* Fill BUFFER with pointers to active user entries in the hash table, then return the number of pointers copied. Do not copy more than BUFFER_SIZE pointers. */ size_t hash_get_entries (const Hash_table *table, void **buffer, size_t buffer_size) { size_t counter = 0; struct hash_entry const *bucket; struct hash_entry const *cursor; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) { if (counter >= buffer_size) return counter; buffer[counter++] = cursor->data; } } } return counter; } /* Call a PROCESSOR function for each entry of a hash table, and return the number of entries for which the processor function returned success. A pointer to some PROCESSOR_DATA which will be made available to each call to the processor function. The PROCESSOR accepts two arguments: the first is the user entry being walked into, the second is the value of PROCESSOR_DATA as received. The walking continue for as long as the PROCESSOR function returns nonzero. When it returns zero, the walking is interrupted. */ size_t hash_do_for_each (const Hash_table *table, Hash_processor processor, void *processor_data) { size_t counter = 0; struct hash_entry const *bucket; struct hash_entry const *cursor; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) { if (! processor (cursor->data, processor_data)) return counter; counter++; } } } return counter; } /* Allocation and clean-up. */ /* Return a hash index for a NUL-terminated STRING between 0 and N_BUCKETS-1. This is a convenience routine for constructing other hashing functions. */ #if USE_DIFF_HASH /* About hashings, Paul Eggert writes to me (FP), on 1994-01-01: "Please see B. J. McKenzie, R. Harries & T. Bell, Selecting a hashing algorithm, Software--practice & experience 20, 2 (Feb 1990), 209-224. Good hash algorithms tend to be domain-specific, so what's good for [diffutils'] io.c may not be good for your application." */ size_t hash_string (const char *string, size_t n_buckets) { # define HASH_ONE_CHAR(Value, Byte) \ ((Byte) + rotl_sz (Value, 7)) size_t value = 0; unsigned char ch; for (; (ch = *string); string++) value = HASH_ONE_CHAR (value, ch); return value % n_buckets; # undef HASH_ONE_CHAR } #else /* not USE_DIFF_HASH */ /* This one comes from 'recode', and performs a bit better than the above as per a few experiments. It is inspired from a hashing routine found in the very old Cyber 'snoop', itself written in typical Greg Mansfield style. (By the way, what happened to this excellent man? Is he still alive?) */ size_t hash_string (const char *string, size_t n_buckets) { size_t value = 0; unsigned char ch; for (; (ch = *string); string++) value = (value * 31 + ch) % n_buckets; return value; } #endif /* not USE_DIFF_HASH */ /* Return true if CANDIDATE is a prime number. CANDIDATE should be an odd number at least equal to 11. */ static bool _GL_ATTRIBUTE_CONST is_prime (size_t candidate) { size_t divisor = 3; size_t square = divisor * divisor; while (square < candidate && (candidate % divisor)) { divisor++; square += 4 * divisor; divisor++; } return (candidate % divisor ? true : false); } /* Round a given CANDIDATE number up to the nearest prime, and return that prime. Primes lower than 10 are merely skipped. */ static size_t _GL_ATTRIBUTE_CONST next_prime (size_t candidate) { /* Skip small primes. */ if (candidate < 10) candidate = 10; /* Make it definitely odd. */ candidate |= 1; while (SIZE_MAX != candidate && !is_prime (candidate)) candidate += 2; return candidate; } void hash_reset_tuning (Hash_tuning *tuning) { *tuning = default_tuning; } /* If the user passes a NULL hasher, we hash the raw pointer. */ static size_t raw_hasher (const void *data, size_t n) { /* When hashing unique pointers, it is often the case that they were generated by malloc and thus have the property that the low-order bits are 0. As this tends to give poorer performance with small tables, we rotate the pointer value before performing division, in an attempt to improve hash quality. */ size_t val = rotr_sz ((size_t) data, 3); return val % n; } /* If the user passes a NULL comparator, we use pointer comparison. */ static bool raw_comparator (const void *a, const void *b) { return a == b; } /* For the given hash TABLE, check the user supplied tuning structure for reasonable values, and return true if there is no gross error with it. Otherwise, definitively reset the TUNING field to some acceptable default in the hash table (that is, the user loses the right of further modifying tuning arguments), and return false. */ static bool check_tuning (Hash_table *table) { const Hash_tuning *tuning = table->tuning; float epsilon; if (tuning == &default_tuning) return true; /* Be a bit stricter than mathematics would require, so that rounding errors in size calculations do not cause allocations to fail to grow or shrink as they should. The smallest allocation is 11 (due to next_prime's algorithm), so an epsilon of 0.1 should be good enough. */ epsilon = 0.1f; if (epsilon < tuning->growth_threshold && tuning->growth_threshold < 1 - epsilon && 1 + epsilon < tuning->growth_factor && 0 <= tuning->shrink_threshold && tuning->shrink_threshold + epsilon < tuning->shrink_factor && tuning->shrink_factor <= 1 && tuning->shrink_threshold + epsilon < tuning->growth_threshold) return true; table->tuning = &default_tuning; return false; } /* Compute the size of the bucket array for the given CANDIDATE and TUNING, or return 0 if there is no possible way to allocate that many entries. */ static size_t _GL_ATTRIBUTE_PURE compute_bucket_size (size_t candidate, const Hash_tuning *tuning) { if (!tuning->is_n_buckets) { float new_candidate = candidate / tuning->growth_threshold; if (SIZE_MAX <= new_candidate) return 0; candidate = new_candidate; } candidate = next_prime (candidate); if (xalloc_oversized (candidate, sizeof (struct hash_entry *))) return 0; return candidate; } /* Allocate and return a new hash table, or NULL upon failure. The initial number of buckets is automatically selected so as to _guarantee_ that you may insert at least CANDIDATE different user entries before any growth of the hash table size occurs. So, if have a reasonably tight a-priori upper bound on the number of entries you intend to insert in the hash table, you may save some table memory and insertion time, by specifying it here. If the IS_N_BUCKETS field of the TUNING structure is true, the CANDIDATE argument has its meaning changed to the wanted number of buckets. TUNING points to a structure of user-supplied values, in case some fine tuning is wanted over the default behavior of the hasher. If TUNING is NULL, the default tuning parameters are used instead. If TUNING is provided but the values requested are out of bounds or might cause rounding errors, return NULL. The user-supplied HASHER function, when not NULL, accepts two arguments ENTRY and TABLE_SIZE. It computes, by hashing ENTRY contents, a slot number for that entry which should be in the range 0..TABLE_SIZE-1. This slot number is then returned. The user-supplied COMPARATOR function, when not NULL, accepts two arguments pointing to user data, it then returns true for a pair of entries that compare equal, or false otherwise. This function is internally called on entries which are already known to hash to the same bucket index, but which are distinct pointers. The user-supplied DATA_FREER function, when not NULL, may be later called with the user data as an argument, just before the entry containing the data gets freed. This happens from within 'hash_free' or 'hash_clear'. You should specify this function only if you want these functions to free all of your 'data' data. This is typically the case when your data is simply an auxiliary struct that you have malloc'd to aggregate several values. */ Hash_table * hash_initialize (size_t candidate, const Hash_tuning *tuning, Hash_hasher hasher, Hash_comparator comparator, Hash_data_freer data_freer) { Hash_table *table; if (hasher == NULL) hasher = raw_hasher; if (comparator == NULL) comparator = raw_comparator; table = malloc (sizeof *table); if (table == NULL) return NULL; if (!tuning) tuning = &default_tuning; table->tuning = tuning; if (!check_tuning (table)) { /* Fail if the tuning options are invalid. This is the only occasion when the user gets some feedback about it. Once the table is created, if the user provides invalid tuning options, we silently revert to using the defaults, and ignore further request to change the tuning options. */ goto fail; } table->n_buckets = compute_bucket_size (candidate, tuning); if (!table->n_buckets) goto fail; table->bucket = calloc (table->n_buckets, sizeof *table->bucket); if (table->bucket == NULL) goto fail; table->bucket_limit = table->bucket + table->n_buckets; table->n_buckets_used = 0; table->n_entries = 0; table->hasher = hasher; table->comparator = comparator; table->data_freer = data_freer; table->free_entry_list = NULL; #if USE_OBSTACK obstack_init (&table->entry_stack); #endif return table; fail: free (table); return NULL; } /* Make all buckets empty, placing any chained entries on the free list. Apply the user-specified function data_freer (if any) to the datas of any affected entries. */ void hash_clear (Hash_table *table) { struct hash_entry *bucket; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry *cursor; struct hash_entry *next; /* Free the bucket overflow. */ for (cursor = bucket->next; cursor; cursor = next) { if (table->data_freer) table->data_freer (cursor->data); cursor->data = NULL; next = cursor->next; /* Relinking is done one entry at a time, as it is to be expected that overflows are either rare or short. */ cursor->next = table->free_entry_list; table->free_entry_list = cursor; } /* Free the bucket head. */ if (table->data_freer) table->data_freer (bucket->data); bucket->data = NULL; bucket->next = NULL; } } table->n_buckets_used = 0; table->n_entries = 0; } /* Reclaim all storage associated with a hash table. If a data_freer function has been supplied by the user when the hash table was created, this function applies it to the data of each entry before freeing that entry. */ void hash_free (Hash_table *table) { struct hash_entry *bucket; struct hash_entry *cursor; struct hash_entry *next; /* Call the user data_freer function. */ if (table->data_freer && table->n_entries) { for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) table->data_freer (cursor->data); } } } #if USE_OBSTACK obstack_free (&table->entry_stack, NULL); #else /* Free all bucket overflowed entries. */ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { for (cursor = bucket->next; cursor; cursor = next) { next = cursor->next; free (cursor); } } /* Also reclaim the internal list of previously freed entries. */ for (cursor = table->free_entry_list; cursor; cursor = next) { next = cursor->next; free (cursor); } #endif /* Free the remainder of the hash table structure. */ free (table->bucket); free (table); } /* Insertion and deletion. */ /* Get a new hash entry for a bucket overflow, possibly by recycling a previously freed one. If this is not possible, allocate a new one. */ static struct hash_entry * allocate_entry (Hash_table *table) { struct hash_entry *new; if (table->free_entry_list) { new = table->free_entry_list; table->free_entry_list = new->next; } else { #if USE_OBSTACK new = obstack_alloc (&table->entry_stack, sizeof *new); #else new = malloc (sizeof *new); #endif } return new; } /* Free a hash entry which was part of some bucket overflow, saving it for later recycling. */ static void free_entry (Hash_table *table, struct hash_entry *entry) { entry->data = NULL; entry->next = table->free_entry_list; table->free_entry_list = entry; } /* This private function is used to help with insertion and deletion. When ENTRY matches an entry in the table, return a pointer to the corresponding user data and set *BUCKET_HEAD to the head of the selected bucket. Otherwise, return NULL. When DELETE is true and ENTRY matches an entry in the table, unlink the matching entry. */ static void * hash_find_entry (Hash_table *table, const void *entry, struct hash_entry **bucket_head, bool delete) { struct hash_entry *bucket = safe_hasher (table, entry); struct hash_entry *cursor; *bucket_head = bucket; /* Test for empty bucket. */ if (bucket->data == NULL) return NULL; /* See if the entry is the first in the bucket. */ if (entry == bucket->data || table->comparator (entry, bucket->data)) { void *data = bucket->data; if (delete) { if (bucket->next) { struct hash_entry *next = bucket->next; /* Bump the first overflow entry into the bucket head, then save the previous first overflow entry for later recycling. */ *bucket = *next; free_entry (table, next); } else { bucket->data = NULL; } } return data; } /* Scan the bucket overflow. */ for (cursor = bucket; cursor->next; cursor = cursor->next) { if (entry == cursor->next->data || table->comparator (entry, cursor->next->data)) { void *data = cursor->next->data; if (delete) { struct hash_entry *next = cursor->next; /* Unlink the entry to delete, then save the freed entry for later recycling. */ cursor->next = next->next; free_entry (table, next); } return data; } } /* No entry found. */ return NULL; } /* Internal helper, to move entries from SRC to DST. Both tables must share the same free entry list. If SAFE, only move overflow entries, saving bucket heads for later, so that no allocations will occur. Return false if the free entry list is exhausted and an allocation fails. */ static bool transfer_entries (Hash_table *dst, Hash_table *src, bool safe) { struct hash_entry *bucket; struct hash_entry *cursor; struct hash_entry *next; for (bucket = src->bucket; bucket < src->bucket_limit; bucket++) if (bucket->data) { void *data; struct hash_entry *new_bucket; /* Within each bucket, transfer overflow entries first and then the bucket head, to minimize memory pressure. After all, the only time we might allocate is when moving the bucket head, but moving overflow entries first may create free entries that can be recycled by the time we finally get to the bucket head. */ for (cursor = bucket->next; cursor; cursor = next) { data = cursor->data; new_bucket = safe_hasher (dst, data); next = cursor->next; if (new_bucket->data) { /* Merely relink an existing entry, when moving from a bucket overflow into a bucket overflow. */ cursor->next = new_bucket->next; new_bucket->next = cursor; } else { /* Free an existing entry, when moving from a bucket overflow into a bucket header. */ new_bucket->data = data; dst->n_buckets_used++; free_entry (dst, cursor); } } /* Now move the bucket head. Be sure that if we fail due to allocation failure that the src table is in a consistent state. */ data = bucket->data; bucket->next = NULL; if (safe) continue; new_bucket = safe_hasher (dst, data); if (new_bucket->data) { /* Allocate or recycle an entry, when moving from a bucket header into a bucket overflow. */ struct hash_entry *new_entry = allocate_entry (dst); if (new_entry == NULL) return false; new_entry->data = data; new_entry->next = new_bucket->next; new_bucket->next = new_entry; } else { /* Move from one bucket header to another. */ new_bucket->data = data; dst->n_buckets_used++; } bucket->data = NULL; src->n_buckets_used--; } return true; } /* For an already existing hash table, change the number of buckets through specifying CANDIDATE. The contents of the hash table are preserved. The new number of buckets is automatically selected so as to _guarantee_ that the table may receive at least CANDIDATE different user entries, including those already in the table, before any other growth of the hash table size occurs. If TUNING->IS_N_BUCKETS is true, then CANDIDATE specifies the exact number of buckets desired. Return true iff the rehash succeeded. */ bool hash_rehash (Hash_table *table, size_t candidate) { Hash_table storage; Hash_table *new_table; size_t new_size = compute_bucket_size (candidate, table->tuning); if (!new_size) return false; if (new_size == table->n_buckets) return true; new_table = &storage; new_table->bucket = calloc (new_size, sizeof *new_table->bucket); if (new_table->bucket == NULL) return false; new_table->n_buckets = new_size; new_table->bucket_limit = new_table->bucket + new_size; new_table->n_buckets_used = 0; new_table->n_entries = 0; new_table->tuning = table->tuning; new_table->hasher = table->hasher; new_table->comparator = table->comparator; new_table->data_freer = table->data_freer; /* In order for the transfer to successfully complete, we need additional overflow entries when distinct buckets in the old table collide into a common bucket in the new table. The worst case possible is a hasher that gives a good spread with the old size, but returns a constant with the new size; if we were to guarantee table->n_buckets_used-1 free entries in advance, then the transfer would be guaranteed to not allocate memory. However, for large tables, a guarantee of no further allocation introduces a lot of extra memory pressure, all for an unlikely corner case (most rehashes reduce, rather than increase, the number of overflow entries needed). So, we instead ensure that the transfer process can be reversed if we hit a memory allocation failure mid-transfer. */ /* Merely reuse the extra old space into the new table. */ #if USE_OBSTACK new_table->entry_stack = table->entry_stack; #endif new_table->free_entry_list = table->free_entry_list; if (transfer_entries (new_table, table, false)) { /* Entries transferred successfully; tie up the loose ends. */ free (table->bucket); table->bucket = new_table->bucket; table->bucket_limit = new_table->bucket_limit; table->n_buckets = new_table->n_buckets; table->n_buckets_used = new_table->n_buckets_used; table->free_entry_list = new_table->free_entry_list; /* table->n_entries and table->entry_stack already hold their value. */ return true; } /* We've allocated new_table->bucket (and possibly some entries), exhausted the free list, and moved some but not all entries into new_table. We must undo the partial move before returning failure. The only way to get into this situation is if new_table uses fewer buckets than the old table, so we will reclaim some free entries as overflows in the new table are put back into distinct buckets in the old table. There are some pathological cases where a single pass through the table requires more intermediate overflow entries than using two passes. Two passes give worse cache performance and takes longer, but at this point, we're already out of memory, so slow and safe is better than failure. */ table->free_entry_list = new_table->free_entry_list; if (! (transfer_entries (table, new_table, true) && transfer_entries (table, new_table, false))) abort (); /* table->n_entries already holds its value. */ free (new_table->bucket); return false; } /* Insert ENTRY into hash TABLE if there is not already a matching entry. Return -1 upon memory allocation failure. Return 1 if insertion succeeded. Return 0 if there is already a matching entry in the table, and in that case, if MATCHED_ENT is non-NULL, set *MATCHED_ENT to that entry. This interface is easier to use than hash_insert when you must distinguish between the latter two cases. More importantly, hash_insert is unusable for some types of ENTRY values. When using hash_insert, the only way to distinguish those cases is to compare the return value and ENTRY. That works only when you can have two different ENTRY values that point to data that compares "equal". Thus, when the ENTRY value is a simple scalar, you must use hash_insert_if_absent. ENTRY must not be NULL. */ int hash_insert_if_absent (Hash_table *table, void const *entry, void const **matched_ent) { void *data; struct hash_entry *bucket; /* The caller cannot insert a NULL entry, since hash_lookup returns NULL to indicate "not found", and hash_find_entry uses "bucket->data == NULL" to indicate an empty bucket. */ if (! entry) abort (); /* If there's a matching entry already in the table, return that. */ if ((data = hash_find_entry (table, entry, &bucket, false)) != NULL) { if (matched_ent) *matched_ent = data; return 0; } /* If the growth threshold of the buckets in use has been reached, increase the table size and rehash. There's no point in checking the number of entries: if the hashing function is ill-conditioned, rehashing is not likely to improve it. */ if (table->n_buckets_used > table->tuning->growth_threshold * table->n_buckets) { /* Check more fully, before starting real work. If tuning arguments became invalid, the second check will rely on proper defaults. */ check_tuning (table); if (table->n_buckets_used > table->tuning->growth_threshold * table->n_buckets) { const Hash_tuning *tuning = table->tuning; float candidate = (tuning->is_n_buckets ? (table->n_buckets * tuning->growth_factor) : (table->n_buckets * tuning->growth_factor * tuning->growth_threshold)); if (SIZE_MAX <= candidate) return -1; /* If the rehash fails, arrange to return NULL. */ if (!hash_rehash (table, candidate)) return -1; /* Update the bucket we are interested in. */ if (hash_find_entry (table, entry, &bucket, false) != NULL) abort (); } } /* ENTRY is not matched, it should be inserted. */ if (bucket->data) { struct hash_entry *new_entry = allocate_entry (table); if (new_entry == NULL) return -1; /* Add ENTRY in the overflow of the bucket. */ new_entry->data = (void *) entry; new_entry->next = bucket->next; bucket->next = new_entry; table->n_entries++; return 1; } /* Add ENTRY right in the bucket head. */ bucket->data = (void *) entry; table->n_entries++; table->n_buckets_used++; return 1; } /* hash_insert0 is the deprecated name for hash_insert_if_absent. . */ int hash_insert0 (Hash_table *table, void const *entry, void const **matched_ent) { return hash_insert_if_absent (table, entry, matched_ent); } /* If ENTRY matches an entry already in the hash table, return the pointer to the entry from the table. Otherwise, insert ENTRY and return ENTRY. Return NULL if the storage required for insertion cannot be allocated. This implementation does not support duplicate entries or insertion of NULL. */ void * hash_insert (Hash_table *table, void const *entry) { void const *matched_ent; int err = hash_insert_if_absent (table, entry, &matched_ent); return (err == -1 ? NULL : (void *) (err == 0 ? matched_ent : entry)); } /* If ENTRY is already in the table, remove it and return the just-deleted data (the user may want to deallocate its storage). If ENTRY is not in the table, don't modify the table and return NULL. */ void * hash_delete (Hash_table *table, const void *entry) { void *data; struct hash_entry *bucket; data = hash_find_entry (table, entry, &bucket, true); if (!data) return NULL; table->n_entries--; if (!bucket->data) { table->n_buckets_used--; /* If the shrink threshold of the buckets in use has been reached, rehash into a smaller table. */ if (table->n_buckets_used < table->tuning->shrink_threshold * table->n_buckets) { /* Check more fully, before starting real work. If tuning arguments became invalid, the second check will rely on proper defaults. */ check_tuning (table); if (table->n_buckets_used < table->tuning->shrink_threshold * table->n_buckets) { const Hash_tuning *tuning = table->tuning; size_t candidate = (tuning->is_n_buckets ? table->n_buckets * tuning->shrink_factor : (table->n_buckets * tuning->shrink_factor * tuning->growth_threshold)); if (!hash_rehash (table, candidate)) { /* Failure to allocate memory in an attempt to shrink the table is not fatal. But since memory is low, we can at least be kind and free any spare entries, rather than keeping them tied up in the free entry list. */ #if ! USE_OBSTACK struct hash_entry *cursor = table->free_entry_list; struct hash_entry *next; while (cursor) { next = cursor->next; free (cursor); cursor = next; } table->free_entry_list = NULL; #endif } } } } return data; } /* Testing. */ #if TESTING void hash_print (const Hash_table *table) { struct hash_entry *bucket = (struct hash_entry *) table->bucket; for ( ; bucket < table->bucket_limit; bucket++) { struct hash_entry *cursor; if (bucket) printf ("%lu:\n", (unsigned long int) (bucket - table->bucket)); for (cursor = bucket; cursor; cursor = cursor->next) { char const *s = cursor->data; /* FIXME */ if (s) printf (" %s\n", s); } } } #endif /* TESTING */ freedink-108.4+dfsg/gnulib/lib/hash-pjw.h0000644000175000017500000000213212330466613015742 0ustar meme/* hash-pjw.h -- declaration for a simple hash function Copyright (C) 2001, 2003, 2009-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ #include /* Compute a hash code for a NUL-terminated string starting at X, and return the hash code modulo TABLESIZE. The result is platform dependent: it depends on the size of the 'size_t' type and on the signedness of the 'char' type. */ extern size_t hash_pjw (void const *x, size_t tablesize) _GL_ATTRIBUTE_PURE; freedink-108.4+dfsg/gnulib/lib/lstat.c0000644000175000017500000000667412330466613015362 0ustar meme/* Work around a bug of lstat on some systems Copyright (C) 1997-2006, 2008-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* written by Jim Meyering */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_lstat doesn't recurse to rpl_lstat. */ #define __need_system_sys_stat_h #include #if !HAVE_LSTAT /* On systems that lack symlinks, our replacement already defined lstat as stat, so there is nothing further to do other than avoid an empty file. */ typedef int dummy; #else /* HAVE_LSTAT */ /* Get the original definition of lstat. It might be defined as a macro. */ # include # include # undef __need_system_sys_stat_h static int orig_lstat (const char *filename, struct stat *buf) { return lstat (filename, buf); } /* Specification. */ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ # include "sys/stat.h" # include # include /* lstat works differently on Linux and Solaris systems. POSIX (see "pathname resolution" in the glossary) requires that programs like 'ls' take into consideration the fact that FILE has a trailing slash when FILE is a symbolic link. On Linux and Solaris 10 systems, the lstat function already has the desired semantics (in treating 'lstat ("symlink/", sbuf)' just like 'lstat ("symlink/.", sbuf)', but on Solaris 9 and earlier it does not. If FILE has a trailing slash and specifies a symbolic link, then use stat() to get more info on the referent of FILE. If the referent is a non-directory, then set errno to ENOTDIR and return -1. Otherwise, return stat's result. */ int rpl_lstat (const char *file, struct stat *sbuf) { size_t len; int lstat_result = orig_lstat (file, sbuf); if (lstat_result != 0) return lstat_result; /* This replacement file can blindly check against '/' rather than using the ISSLASH macro, because all platforms with '\\' either lack symlinks (mingw) or have working lstat (cygwin) and thus do not compile this file. 0 len should have already been filtered out above, with a failure return of ENOENT. */ len = strlen (file); if (file[len - 1] != '/' || S_ISDIR (sbuf->st_mode)) return 0; /* At this point, a trailing slash is only permitted on symlink-to-dir; but it should have found information on the directory, not the symlink. Call stat() to get info about the link's referent. Our replacement stat guarantees valid results, even if the symlink is not pointing to a directory. */ if (!S_ISLNK (sbuf->st_mode)) { errno = ENOTDIR; return -1; } return stat (file, sbuf); } #endif /* HAVE_LSTAT */ freedink-108.4+dfsg/gnulib/lib/strerror-override.c0000644000175000017500000002146512330466613017725 0ustar meme/* strerror-override.c --- POSIX compatible system error routine Copyright (C) 2010-2014 Free Software Foundation, Inc. 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 3 of the License, 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, see . */ /* Written by Bruno Haible , 2010. */ #include #include "strerror-override.h" #include #if GNULIB_defined_EWINSOCK /* native Windows platforms */ # if HAVE_WINSOCK2_H # include # endif #endif /* If ERRNUM maps to an errno value defined by gnulib, return a string describing the error. Otherwise return NULL. */ const char * strerror_override (int errnum) { /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */ switch (errnum) { #if REPLACE_STRERROR_0 case 0: return "Success"; #endif #if GNULIB_defined_ESOCK /* native Windows platforms with older */ case EINPROGRESS: return "Operation now in progress"; case EALREADY: return "Operation already in progress"; case ENOTSOCK: return "Socket operation on non-socket"; case EDESTADDRREQ: return "Destination address required"; case EMSGSIZE: return "Message too long"; case EPROTOTYPE: return "Protocol wrong type for socket"; case ENOPROTOOPT: return "Protocol not available"; case EPROTONOSUPPORT: return "Protocol not supported"; case EOPNOTSUPP: return "Operation not supported"; case EAFNOSUPPORT: return "Address family not supported by protocol"; case EADDRINUSE: return "Address already in use"; case EADDRNOTAVAIL: return "Cannot assign requested address"; case ENETDOWN: return "Network is down"; case ENETUNREACH: return "Network is unreachable"; case ECONNRESET: return "Connection reset by peer"; case ENOBUFS: return "No buffer space available"; case EISCONN: return "Transport endpoint is already connected"; case ENOTCONN: return "Transport endpoint is not connected"; case ETIMEDOUT: return "Connection timed out"; case ECONNREFUSED: return "Connection refused"; case ELOOP: return "Too many levels of symbolic links"; case EHOSTUNREACH: return "No route to host"; case EWOULDBLOCK: return "Operation would block"; #endif #if GNULIB_defined_ESTREAMS /* native Windows platforms with older */ case ETXTBSY: return "Text file busy"; case ENODATA: return "No data available"; case ENOSR: return "Out of streams resources"; case ENOSTR: return "Device not a stream"; case ETIME: return "Timer expired"; case EOTHER: return "Other error"; #endif #if GNULIB_defined_EWINSOCK /* native Windows platforms */ case ESOCKTNOSUPPORT: return "Socket type not supported"; case EPFNOSUPPORT: return "Protocol family not supported"; case ESHUTDOWN: return "Cannot send after transport endpoint shutdown"; case ETOOMANYREFS: return "Too many references: cannot splice"; case EHOSTDOWN: return "Host is down"; case EPROCLIM: return "Too many processes"; case EUSERS: return "Too many users"; case EDQUOT: return "Disk quota exceeded"; case ESTALE: return "Stale NFS file handle"; case EREMOTE: return "Object is remote"; # if HAVE_WINSOCK2_H /* WSA_INVALID_HANDLE maps to EBADF */ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */ /* WSA_INVALID_PARAMETER maps to EINVAL */ case WSA_OPERATION_ABORTED: return "Overlapped operation aborted"; case WSA_IO_INCOMPLETE: return "Overlapped I/O event object not in signaled state"; case WSA_IO_PENDING: return "Overlapped operations will complete later"; /* WSAEINTR maps to EINTR */ /* WSAEBADF maps to EBADF */ /* WSAEACCES maps to EACCES */ /* WSAEFAULT maps to EFAULT */ /* WSAEINVAL maps to EINVAL */ /* WSAEMFILE maps to EMFILE */ /* WSAEWOULDBLOCK maps to EWOULDBLOCK */ /* WSAEINPROGRESS maps to EINPROGRESS */ /* WSAEALREADY maps to EALREADY */ /* WSAENOTSOCK maps to ENOTSOCK */ /* WSAEDESTADDRREQ maps to EDESTADDRREQ */ /* WSAEMSGSIZE maps to EMSGSIZE */ /* WSAEPROTOTYPE maps to EPROTOTYPE */ /* WSAENOPROTOOPT maps to ENOPROTOOPT */ /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */ /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */ /* WSAEOPNOTSUPP maps to EOPNOTSUPP */ /* WSAEPFNOSUPPORT is EPFNOSUPPORT */ /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */ /* WSAEADDRINUSE maps to EADDRINUSE */ /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */ /* WSAENETDOWN maps to ENETDOWN */ /* WSAENETUNREACH maps to ENETUNREACH */ /* WSAENETRESET maps to ENETRESET */ /* WSAECONNABORTED maps to ECONNABORTED */ /* WSAECONNRESET maps to ECONNRESET */ /* WSAENOBUFS maps to ENOBUFS */ /* WSAEISCONN maps to EISCONN */ /* WSAENOTCONN maps to ENOTCONN */ /* WSAESHUTDOWN is ESHUTDOWN */ /* WSAETOOMANYREFS is ETOOMANYREFS */ /* WSAETIMEDOUT maps to ETIMEDOUT */ /* WSAECONNREFUSED maps to ECONNREFUSED */ /* WSAELOOP maps to ELOOP */ /* WSAENAMETOOLONG maps to ENAMETOOLONG */ /* WSAEHOSTDOWN is EHOSTDOWN */ /* WSAEHOSTUNREACH maps to EHOSTUNREACH */ /* WSAENOTEMPTY maps to ENOTEMPTY */ /* WSAEPROCLIM is EPROCLIM */ /* WSAEUSERS is EUSERS */ /* WSAEDQUOT is EDQUOT */ /* WSAESTALE is ESTALE */ /* WSAEREMOTE is EREMOTE */ case WSASYSNOTREADY: return "Network subsystem is unavailable"; case WSAVERNOTSUPPORTED: return "Winsock.dll version out of range"; case WSANOTINITIALISED: return "Successful WSAStartup not yet performed"; case WSAEDISCON: return "Graceful shutdown in progress"; case WSAENOMORE: case WSA_E_NO_MORE: return "No more results"; case WSAECANCELLED: case WSA_E_CANCELLED: return "Call was canceled"; case WSAEINVALIDPROCTABLE: return "Procedure call table is invalid"; case WSAEINVALIDPROVIDER: return "Service provider is invalid"; case WSAEPROVIDERFAILEDINIT: return "Service provider failed to initialize"; case WSASYSCALLFAILURE: return "System call failure"; case WSASERVICE_NOT_FOUND: return "Service not found"; case WSATYPE_NOT_FOUND: return "Class type not found"; case WSAEREFUSED: return "Database query was refused"; case WSAHOST_NOT_FOUND: return "Host not found"; case WSATRY_AGAIN: return "Nonauthoritative host not found"; case WSANO_RECOVERY: return "Nonrecoverable error"; case WSANO_DATA: return "Valid name, no data record of requested type"; /* WSA_QOS_* omitted */ # endif #endif #if GNULIB_defined_ENOMSG case ENOMSG: return "No message of desired type"; #endif #if GNULIB_defined_EIDRM case EIDRM: return "Identifier removed"; #endif #if GNULIB_defined_ENOLINK case ENOLINK: return "Link has been severed"; #endif #if GNULIB_defined_EPROTO case EPROTO: return "Protocol error"; #endif #if GNULIB_defined_EMULTIHOP case EMULTIHOP: return "Multihop attempted"; #endif #if GNULIB_defined_EBADMSG case EBADMSG: return "Bad message"; #endif #if GNULIB_defined_EOVERFLOW case EOVERFLOW: return "Value too large for defined data type"; #endif #if GNULIB_defined_ENOTSUP case ENOTSUP: return "Not supported"; #endif #if GNULIB_defined_ENETRESET case ENETRESET: return "Network dropped connection on reset"; #endif #if GNULIB_defined_ECONNABORTED case ECONNABORTED: return "Software caused connection abort"; #endif #if GNULIB_defined_ESTALE case ESTALE: return "Stale NFS file handle"; #endif #if GNULIB_defined_EDQUOT case EDQUOT: return "Disk quota exceeded"; #endif #if GNULIB_defined_ECANCELED case ECANCELED: return "Operation canceled"; #endif #if GNULIB_defined_EOWNERDEAD case EOWNERDEAD: return "Owner died"; #endif #if GNULIB_defined_ENOTRECOVERABLE case ENOTRECOVERABLE: return "State not recoverable"; #endif #if GNULIB_defined_EILSEQ case EILSEQ: return "Invalid or incomplete multibyte or wide character"; #endif default: return NULL; } } freedink-108.4+dfsg/gnulib/lib/strings.in.h0000644000175000017500000000765612330466613016337 0ustar meme/* A substitute . Copyright (C) 2007-2014 Free Software Foundation, Inc. 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, see . */ #ifndef _@GUARD_PREFIX@_STRINGS_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* Minix 3.1.8 has a bug: must be included before . But avoid namespace pollution on glibc systems. */ #if defined __minix && !defined __GLIBC__ # include #endif /* The include_next requires a split double-inclusion guard. */ #if @HAVE_STRINGS_H@ # @INCLUDE_NEXT@ @NEXT_STRINGS_H@ #endif #ifndef _@GUARD_PREFIX@_STRINGS_H #define _@GUARD_PREFIX@_STRINGS_H #if ! @HAVE_DECL_STRNCASECMP@ /* Get size_t. */ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ #ifdef __cplusplus extern "C" { #endif /* Find the index of the least-significant set bit. */ #if @GNULIB_FFS@ # if !@HAVE_FFS@ _GL_FUNCDECL_SYS (ffs, int, (int i)); # endif _GL_CXXALIAS_SYS (ffs, int, (int i)); _GL_CXXALIASWARN (ffs); #elif defined GNULIB_POSIXCHECK # undef ffs # if HAVE_RAW_DECL_FFS _GL_WARN_ON_USE (ffs, "ffs is not portable - use the ffs module"); # endif #endif /* Compare strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function does not work in multibyte locales. */ #if ! @HAVE_STRCASECMP@ extern int strcasecmp (char const *s1, char const *s2) _GL_ARG_NONNULL ((1, 2)); #endif #if defined GNULIB_POSIXCHECK /* strcasecmp() does not work with multibyte strings: POSIX says that it operates on "strings", and "string" in POSIX is defined as a sequence of bytes, not of characters. */ # undef strcasecmp # if HAVE_RAW_DECL_STRCASECMP _GL_WARN_ON_USE (strcasecmp, "strcasecmp cannot work correctly on character " "strings in multibyte locales - " "use mbscasecmp if you care about " "internationalization, or use c_strcasecmp , " "gnulib module c-strcase) if you want a locale " "independent function"); # endif #endif /* Compare no more than N bytes of strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function cannot work correctly in multibyte locales. */ #if ! @HAVE_DECL_STRNCASECMP@ extern int strncasecmp (char const *s1, char const *s2, size_t n) _GL_ARG_NONNULL ((1, 2)); #endif #if defined GNULIB_POSIXCHECK /* strncasecmp() does not work with multibyte strings: POSIX says that it operates on "strings", and "string" in POSIX is defined as a sequence of bytes, not of characters. */ # undef strncasecmp # if HAVE_RAW_DECL_STRNCASECMP _GL_WARN_ON_USE (strncasecmp, "strncasecmp cannot work correctly on character " "strings in multibyte locales - " "use mbsncasecmp or mbspcasecmp if you care about " "internationalization, or use c_strncasecmp , " "gnulib module c-strcase) if you want a locale " "independent function"); # endif #endif #ifdef __cplusplus } #endif #endif /* _@GUARD_PREFIX@_STRING_H */ #endif /* _@GUARD_PREFIX@_STRING_H */ freedink-108.4+dfsg/gnulib/po/0000755000175000017500000000000012421730245013716 5ustar memefreedink-108.4+dfsg/gnulib/po/be.gmo0000644000175000017500000000154412421730234015012 0ustar meme<\pq-4YDUnknown system errorfailed to return to initial working directorymemory exhaustedProject-Id-Version: coreutils 5.0.91 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2003-10-30 01:10+0200 Last-Translator: Ales Nyakhaychyk Language-Team: Belarusian Language: be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: KBabel 1.0.2 Невядомая сыстэмная памылканемагчыма вярнуцца ў пачатковую працоўную тэчкупамяць вычарпанаfreedink-108.4+dfsg/gnulib/po/ca.po0000644000175000017500000003063412421730234014645 0ustar meme# GNU Mailutils Catalan translation. # Copyright © 2002, 2003, 2004, 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the mailutils package. # Jordi Mallach , 2002, 2003, 2004, 2005. # msgid "" msgstr "" "Project-Id-Version: mailutils 0.6.90\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2005-05-21 04:10+0200\n" "Last-Translator: Jordi Mallach \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "S'ha produït un error desconegut del sistema" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: l'opció «%s» és ambigua\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: l'opció «--%s» no accepta arguments\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: l'opció «%c%s» no accepta arguments\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: l'opció «%s» requereix un argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: l'opció «--%s» no es reconeix\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: l'opció «%c%s» no es reconeix\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: l'opció no és vàlida -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: l'opció requereix un argument -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: l'opció «-W %s» és ambigua\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: l'opció «-W %s» no accepta arguments\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: l'opció «%s» requereix un argument\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "openat: no s'ha pogut registrar el directori de treball actual" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "no s'ha pogut tornar al directori inicial de treball" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "la memòria s'ha exhaurit" # Usa quote() en els 2 args. ivb #~ msgid "invalid argument %s for %s" #~ msgstr "l'argument %s no és vàlid per %s" # Usa quote() en els 2 args. ivb #~ msgid "ambiguous argument %s for %s" #~ msgstr "l'argument %s és ambigu per %s" #~ msgid "Valid arguments are:" #~ msgstr "Els arguments vàlids són:" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: El paràmetre ARGP_HELP_FMT requereix un valor" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: El paràmetre d'ARGP_HELP_FMT és desconegut" # pfft, escombraries... jm #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Hi ha escombraries en ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Els arguments necessaris o opcionals per a les opcions llargues també són " #~ "necessaris o opcionals per a qualsevol opció curta corresponent." #~ msgid "Usage:" #~ msgstr "Forma d'ús:" #~ msgid " or: " #~ msgstr " ó: " #~ msgid " [OPTION...]" #~ msgstr " [OPCIÓ...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Proveu «%s --help» o «%s --usage» per a obtindre més informació.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Informeu dels errors a %s.\n" #~ msgid "Give this help list" #~ msgstr "Mostra aquesta llista d'ajuda" #~ msgid "Give a short usage message" #~ msgstr "Mostra un curt missatge sobre l'ús" #~ msgid "NAME" #~ msgstr "NOM" #~ msgid "Set the program name" #~ msgstr "Estableix el nom del programa" #, fuzzy #~ msgid "SECS" #~ msgstr "SEGONS" #~ msgid "Hang for SECS seconds (default 3600)" #~ msgstr "Penja durant SEGS segons (per defecte 3600)" #~ msgid "Print program version" #~ msgstr "Mostra la versió del programa" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(ERROR DEL PROGRAMA) Cap versió coneguda!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Massa arguments\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(ERROR DEL PROGRAMA) L'opció s'hauria d'haver reconegut!?" #, fuzzy #~ msgid "program error" #~ msgstr "error de lectura" # "underflow", bonico el paraulo.. jm #, fuzzy #~ msgid "stack overflow" #~ msgstr "pila buida" #~ msgid "write error" #~ msgstr "error d'escriptura" # Usa quote(). ivb #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "no s'ha pogut obrir %s per llegir" # Usa quote(). ivb #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "no s'ha pogut obrir %s per a escriure" # uniq no usa quote(). ivb #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "error en llegir %s" # uniq no usa quote(). ivb #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "error en escriure %s" # uniq no usa quote(). ivb #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "error en llegir %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "no s'ha pogut obrir" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: ha fallat el desplaçament" #~ msgid "regular empty file" #~ msgstr "fitxer ordinari buit" #~ msgid "regular file" #~ msgstr "fitxer ordinari" #~ msgid "directory" #~ msgstr "directori" #~ msgid "block special file" #~ msgstr "fitxer especial de blocs" #~ msgid "character special file" #~ msgstr "fitxer especial de caràcters" #~ msgid "fifo" #~ msgstr "cua FIFO" #~ msgid "symbolic link" #~ msgstr "enllaç simbòlic" #~ msgid "socket" #~ msgstr "connector" #~ msgid "message queue" #~ msgstr "cua de missatges" #~ msgid "semaphore" #~ msgstr "semàfor" #~ msgid "shared memory object" #~ msgstr "objecte de memòria compartida" #~ msgid "typed memory object" #~ msgstr "objecte de memòria amb tipus" #~ msgid "weird file" #~ msgstr "fitxer estrany" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "els fitxers FIFO no són suportats" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "els fitxers FIFO no són suportats" #, fuzzy #~ msgid "Memory allocation failure" #~ msgstr "L'operació ha fallat" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "els fitxers FIFO no són suportats" #, fuzzy #~ msgid "System error" #~ msgstr "error d'escriptura" #, fuzzy #~ msgid "Request not canceled" #~ msgstr "No es troba l'element sol·licitat" #, fuzzy #~ msgid "Unknown error" #~ msgstr "S'ha produït un error desconegut del sistema" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: l'opció és il·legal -- %c\n" # FIXME: xmalloc.h: _STRTOL_ERROR lacks i18n. ivb # Açò quedarà com «invalid mida de bloc `MIDA'» mentre no ho facen. ivb #~ msgid "block size" #~ msgstr "mida de bloc" # Els 4 usen quote(). ivb #~ msgid "%s exists but is not a directory" #~ msgstr "%s existeix però no és un directori" # Els 3 usen quote(). ivb #~ msgid "cannot change owner and/or group of %s" #~ msgstr "no s'ha pogut canviar el propietari o grup de %s" # Els 3 usen quote(). ivb #~ msgid "cannot create directory %s" #~ msgstr "no s'ha pogut crear el directori %s" # Usa quote(). ivb #~ msgid "cannot chdir to directory %s" #~ msgstr "no s'ha pogut canviar al directori %s" # Els 2 usen quote(). ivb #~ msgid "cannot change permissions of %s" #~ msgstr "no s'han pogut canviar els permisos de %s" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "%s: no s'ha pogut obrir per a escriure" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "No es pot crear la llista" #~ msgid "`" #~ msgstr "«" #~ msgid "'" #~ msgstr "»" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: l'expressió regular no és vàlida: %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "la classe de caràcters «%s» no és vàlida" #, fuzzy #~ msgid "Invalid back reference" #~ msgstr "El número no és vàlid" #, fuzzy #~ msgid "Invalid content of \\{\\}" #~ msgstr "L'opció no és vàlida -- %s" #, fuzzy #~ msgid "Invalid range end" #~ msgstr "el rang de pàgines no és vàlid: «%s»" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "la memòria s'ha exhaurit" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: l'expressió regular no és vàlida: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "error en la recerca de l'expressió regular" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: l'expressió regular no és vàlida: %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "error en la recerca de l'expressió regular" #~ msgid "^[yY]" #~ msgstr "^[sS]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "iconv function not usable" #~ msgstr "la funció iconv() no és útil" #~ msgid "iconv function not available" #~ msgstr "la funció iconv() no es troba disponible" #~ msgid "character out of range" #~ msgstr "el caràcter es troba fora del rang" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "no s'ha pogut convertir U+%04X al joc de caràcters local" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "no s'ha pogut convertir U+%04X al joc de caràcters local: %s" #~ msgid "invalid user" #~ msgstr "l'usuari no és vàlid" #~ msgid "invalid group" #~ msgstr "el grup no és vàlid" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "no s'ha pogut obtenir el grup d'entrada d'un UID numèric" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "Aquest és programari lliure; podeu redistribuir-lo i/o modificar-lo sota " #~ "els\n" #~ "termes de la Llicència Pública General GNU tal i com ha estat publicada " #~ "per la\n" #~ "Free Software Foundation; bé sota la versió 2 de la Llicència o bé (si " #~ "ho\n" #~ "preferiu) sota qualsevol versió posterior.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Escrit per %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Escrit per %s i %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Escrit per %s, %s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrit per %s, %s, %s\n" #~ "i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrit per %s, %s, %s,\n" #~ "%s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Escrit per %s, %s, %s,\n" #~ "%s, %s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Escrit per %s, %s, %s,\n" #~ "%s, %s, %s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrit per %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrit per %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Escrit per %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s i d'altres.\n" #~ msgid "string comparison failed" #~ msgstr "ha fallat la comparació de cadenes" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Establiu la variable LC_ALL a «C» per evitar el problema." # Usa quote() en les 2. ivb #~ msgid "The strings compared were %s and %s." #~ msgstr "Les cadenes comparades eren %s i %s." freedink-108.4+dfsg/gnulib/po/cs.po0000644000175000017500000004743612421730234014677 0ustar meme# Czech translations for GNU textutils # This file is distributed under the same license as the gnulib package. # Copyright (C) 1996 Free Software Foundation, Inc. # # Vladimir Michl , 1996. # Marek Černocký , 2011. # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-12-04 08:50+0100\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Neznámá chyba systému" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: přepínač „%s“ není jednoznačný; možnosti:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: přepínač „--%s“ musí být zadán bez argumentu\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: přepínač „%c%s“ musí být zadán bez argumentu\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: přepínač „--%s“ vyžaduje argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: neznámý přepínač „--%s“\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: neznámý přepínač „%c%s“\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: neplatný přepínač -- „%c“\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: přepínač vyžaduje argument -- „%c“\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: přepínač „-W %s“ není jednoznačný\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: přepínač „-W %s“ musí být zadán bez argumentu\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: přepínač „-W %s“ vyžaduje argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "nelze zaznamenat aktuální pracovní složku" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "selhalo vrácení počáteční pracovní složky" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "paměť byla vyčerpána" #~ msgid "invalid argument %s for %s" #~ msgstr "argument %s je pro %s neplatný" #~ msgid "ambiguous argument %s for %s" #~ msgstr "argument %s je pro %s nejednoznačný" #~ msgid "Valid arguments are:" #~ msgstr "Platné argumenty jsou:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: hodnota %s je menší nebo rovna %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: Parametr ARGP_HELP_FMT vyžaduje hodnotu" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: Parametr ARGP_HELP_FMT musí být kladný" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Neznámý parametr ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Nesmysly v ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Povinné či volitelné, argumenty pro dlouhé přepínače jsou povinné či " #~ "volitelné, i pro případné odpovídající krátké přepínače." #~ msgid "Usage:" #~ msgstr "Použití:" #~ msgid " or: " #~ msgstr " nebo:" #~ msgid " [OPTION...]" #~ msgstr " [PŘEPÍNAČ…]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Více informací získáte příkazem „%s --help“ nebo „%s --usage“.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Chyby hlaste na %s.\n" #~ msgid "give this help list" #~ msgstr "poskytne tuto přehledovou nápovědu" #~ msgid "give a short usage message" #~ msgstr "poskytne stručnou informaci o používání" #~ msgid "NAME" #~ msgstr "NÁZEV" #~ msgid "set the program name" #~ msgstr "nastavit název programu" #~ msgid "SECS" #~ msgstr "SEK" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "zastavit na SEK sekund (výchozí je 3600)" #~ msgid "print program version" #~ msgstr "vypsat verzi programu" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(CHYBA PROGRAMU) Neznámá verze!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Příliš mnoho argumentů\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(CHYBA PROGRAMU) Měl by být rozpoznán přepínač!?" #~ msgid "program error" #~ msgstr "chyba programu" #~ msgid "stack overflow" #~ msgstr "přetečení zásobníku" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "nelze najít dočasnou složku, zkusí se nastavit $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "nelze vytvořit dočasnou složku pomocí šablony „%s“" #~ msgid "cannot remove temporary file %s" #~ msgstr "nelze odstranit dočasný soubor %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "nelze odstranit dočasnou složku %s" #~ msgid "error closing file" #~ msgstr "chyba při zavírání souboru" #~ msgid "write error" #~ msgstr "chyba při zápisu" #~ msgid "preserving permissions for %s" #~ msgstr "zachování práv k souboru %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "chyba při otevírání souboru „%s“ pro čtení" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "nelze otevřít záložní soubor „%s“ pro zápis" #~ msgid "error reading \"%s\"" #~ msgstr "chyba při čtení souboru „%s“" #~ msgid "error writing \"%s\"" #~ msgstr "chyba při zápisu do souboru „%s“" #~ msgid "error after reading \"%s\"" #~ msgstr "chyba po přečtení souboru „%s“" #~ msgid "fdopen() failed" #~ msgstr "selhala funkce fdopen()" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "Překladač C# nebyl nalezen, zkuste nainstalovat pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "Virtuální stroj C# nebyl nalezen, zkuste nainstalovat pnet" #~ msgid "%s subprocess failed" #~ msgstr "selhal podřízený proces %s" #~ msgid "regular empty file" #~ msgstr "prázdný běžný soubor" #~ msgid "regular file" #~ msgstr "běžný soubor" #~ msgid "directory" #~ msgstr "složka" #~ msgid "block special file" #~ msgstr "speciální soubor blokového zařízení" #~ msgid "character special file" #~ msgstr "speciální soubor znakového zařízení" #~ msgid "fifo" #~ msgstr "fronta fifo" #~ msgid "symbolic link" #~ msgstr "symbolický odkaz" #~ msgid "socket" #~ msgstr "soket" #~ msgid "message queue" #~ msgstr "fronta zpráv" #~ msgid "semaphore" #~ msgstr "semafor" #~ msgid "shared memory object" #~ msgstr "sdílený paměťový objekt" #~ msgid "typed memory object" #~ msgstr "typový paměťový objekt" #~ msgid "weird file" #~ msgstr "podivný soubor" #~ msgid "Address family for hostname not supported" #~ msgstr "Pro název počítače není rodina adres podporována" #~ msgid "Temporary failure in name resolution" #~ msgstr "Dočasné selhání při překladu názvu" #~ msgid "Bad value for ai_flags" #~ msgstr "Špatná hodnota pro příznaky ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Nenapravitelné selhání při překladu názvu" #~ msgid "ai_family not supported" #~ msgstr "ai_family není podporována" #~ msgid "Memory allocation failure" #~ msgstr "Selhalo přidělení paměti" #~ msgid "No address associated with hostname" #~ msgstr "K názvu počítače není přiřazena žádná adresa" #~ msgid "Name or service not known" #~ msgstr "Název nebo služba nejsou známy" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Název služby není podporován pro ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype není podporován" #~ msgid "System error" #~ msgstr "Chyba systému" #~ msgid "Argument buffer too small" #~ msgstr "Vyrovnávací paměť argumentů je příliš malá" #~ msgid "Processing request in progress" #~ msgstr "Probíhá zpracování požadavku" #~ msgid "Request canceled" #~ msgstr "Požadavek byl zrušen" #~ msgid "Request not canceled" #~ msgstr "Požadavek nebyl zrušen" #~ msgid "All requests done" #~ msgstr "Všechny požadavky dokončeny" #~ msgid "Interrupted by a signal" #~ msgstr "Přerušeno signálem" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Řetězec s parametry není správně kódován" #~ msgid "Unknown error" #~ msgstr "Neznámá chyba" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "neplatný argument source_version pro compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "neplatný argument target_version pro compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "selhalo vytvoření „%s“" #~ msgid "error while writing \"%s\" file" #~ msgstr "chyba při zápisu souboru „%s“" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Překladač jazyka Java nebyl nalezen, zkuste nainstalovat gcj nebo " #~ "nastavit proměnnou $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Virtuální stroj Java nebyl nalezen, zkuste nainstalovat gij nebo nastavit " #~ "proměnnou $JAVAC" #~ msgid "%s subprocess I/O error" #~ msgstr "V/V chyba podřízeného procesu %s" #~ msgid "cannot change permissions of %s" #~ msgstr "nelze změnit oprávnění k %s" #~ msgid "cannot create directory %s" #~ msgstr "nelze vytvořit složku %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Selhalo otevření /dev/zero pro čtení" #~ msgid "creation of reading thread failed" #~ msgstr "vytvoření čtecího vlákna selhalo" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "nelze nastavit neblokující V/V pro podřízený proces %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "komunikace s podřízeným procesem %s selhala" #~ msgid "write to %s subprocess failed" #~ msgstr "zápis do podřízeného procesu %s selhal" #~ msgid "read from %s subprocess failed" #~ msgstr "čtení z podřízeného procesu %s selhalo" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "podřízený proces %s byl ukončen s návratovým kódem %d" #~ msgid "creation of threads failed" #~ msgstr "vytvoření vlákna selhalo" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "podřízený proces %s byl ukončen s návratovým kódem %d" #~ msgid "Franc,ois Pinard" #~ msgstr "Franc, ois Pinard" #~ msgid "`" #~ msgstr "„" #~ msgid "'" #~ msgstr "“" #~ msgid "Success" #~ msgstr "Úspěch" #~ msgid "No match" #~ msgstr "Žádná shoda" #~ msgid "Invalid regular expression" #~ msgstr "neplatný regulární výraz" #~ msgid "Invalid collation character" #~ msgstr "neplatný znak pro porovnávání" #~ msgid "Invalid character class name" #~ msgstr "neplatný název třídy znaku" #~ msgid "Trailing backslash" #~ msgstr "Zpětné lomítko na konci" #~ msgid "Invalid back reference" #~ msgstr "Neplatný zpětný odkaz" #~ msgid "Unmatched [ or [^" #~ msgstr "Chybí odpovídající závorka k [ nebo [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Chybí odpovídající závorka k ( nebo \\(" #~ msgid "Unmatched \\{" #~ msgstr "Chybí odpovídající závorka k \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Neplatný obsah \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Neplatný konec rozsahu" #~ msgid "Memory exhausted" #~ msgstr "Paměť byla vyčerpána" #~ msgid "Invalid preceding regular expression" #~ msgstr "Neplatný předchozí regulární výraz" #~ msgid "Premature end of regular expression" #~ msgstr "Předčasný konec regulárního výrazu" #~ msgid "Regular expression too big" #~ msgstr "Regulární výraz je příliš velký" #~ msgid "Unmatched ) or \\)" #~ msgstr "Chybí odpovídající závorka k ) nebo \\)" #~ msgid "No previous regular expression" #~ msgstr "Žádný předchozí regulární výraz" #~ msgid "^[yY]" #~ msgstr "^[aAyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "nastavení oprávnění k %s" #~ msgid "Hangup" #~ msgstr "Zavěsit" #~ msgid "Interrupt" #~ msgstr "Přerušení" #~ msgid "Quit" #~ msgstr "Ukončit" #~ msgid "Illegal instruction" #~ msgstr "Neplatná instrukce" #~ msgid "Trace/breakpoint trap" #~ msgstr "Krokování/bod přerušení" #~ msgid "Aborted" #~ msgstr "Přerušen" #~ msgid "Floating point exception" #~ msgstr "Výjimka ve výpočtu s plovoucí čárkou" #~ msgid "Killed" #~ msgstr "Zabit" #~ msgid "Bus error" #~ msgstr "Chyba sběrnice" #~ msgid "Segmentation fault" #~ msgstr "Porušení ochrany paměti" #~ msgid "Broken pipe" #~ msgstr "Porušená roura" #~ msgid "Alarm clock" #~ msgstr "Alarm od hodin" #~ msgid "Terminated" #~ msgstr "Ukončen" #~ msgid "Urgent I/O condition" #~ msgstr "Urgentní stav V/V" #~ msgid "Stopped (signal)" #~ msgstr "Pozastavit (signál)" #~ msgid "Stopped" #~ msgstr "Pozastaven" #~ msgid "Continued" #~ msgstr "Pokračuje" #~ msgid "Child exited" #~ msgstr "Potomek skončil" #~ msgid "Stopped (tty input)" #~ msgstr "Pozastaven (vstup tty)" #~ msgid "Stopped (tty output)" #~ msgstr "Pozastaven (výstup tty)" #~ msgid "I/O possible" #~ msgstr "Možný V/V" #~ msgid "CPU time limit exceeded" #~ msgstr "Překročeno časové omezení procesoru" #~ msgid "File size limit exceeded" #~ msgstr "Překročeno omezení velikosti souboru" #~ msgid "Virtual timer expired" #~ msgstr "Virtuální časovač doběhl" #~ msgid "Profiling timer expired" #~ msgstr "Profilovací časovač doběhl" #~ msgid "Window changed" #~ msgstr "Změnilo se okno" #~ msgid "User defined signal 1" #~ msgstr "Uživatelsky definovaný signál 1" #~ msgid "User defined signal 2" #~ msgstr "Uživatelsky definovaný signál 2" #~ msgid "EMT trap" #~ msgstr "Krokování emulátoru (EMT)" #~ msgid "Bad system call" #~ msgstr "Chybné systémové volání" #~ msgid "Stack fault" #~ msgstr "Porušení zásobníku" #~ msgid "Information request" #~ msgstr "Žádost o informace" #~ msgid "Power failure" #~ msgstr "Selhalo napájení" #~ msgid "Resource lost" #~ msgstr "Prostředek přestal být k dispozici" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "chyba zápisu do zavřené roury nebo soketu" #~ msgid "cannot create pipe" #~ msgstr "nelze vytvořit rouru" #~ msgid "Real-time signal %d" #~ msgstr "Signál reálného času %d" #~ msgid "Unknown signal %d" #~ msgstr "Neznámý signál %d" #~ msgid "iconv function not usable" #~ msgstr "funkce iconv není použitelná" #~ msgid "iconv function not available" #~ msgstr "funkce iconv není dostupná" #~ msgid "character out of range" #~ msgstr "znak je mimo rozsah" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "znak U+%04X nelze převést do místní znakové sady" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "znak U+%04X nelze převést do místní znakové sady: %s" #~ msgid "invalid user" #~ msgstr "neplatný uživatel" #~ msgid "invalid group" #~ msgstr "neplatná skupina" #~ msgid "invalid spec" #~ msgstr "neplatné zadání" #~ msgid "unable to display error message" #~ msgstr "nelze zobrazit chybovou zprávu" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Zabalil %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Zabalil %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licence GPLv3+: GNU GPL verze 3 nebo novější .\n" #~ "Jde o svobodný software: můžete jej volně měnit a šířit.\n" #~ "Nejsou poskytovány ŽÁDNÉ ZÁRUKY, mimo těch daných zákonem.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Napsal %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Napsali %s a %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Napsali %s, %s a %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Napsali %s, %s, %s\n" #~ "a %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Napsali %s, %s, %s,\n" #~ "%s a %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Napsali %s, %s, %s,\n" #~ "%s, %s a %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Napsali %s, %s, %s,\n" #~ "%s, %s, %s a %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Napsali %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "a %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Napsali %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s a %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Napsali %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s a další.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Chyby hlaste na: %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Chyby balíčku %s hlaste na: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Domovská stránka projektu %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Domovská stránka projektu %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Obecná nápověda k používání softwaru GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "selhala funkce _open_osfhandle" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "nelze obnovit fd %d: selhala funkce dup2" #~ msgid "%s subprocess" #~ msgstr "podřízený proces %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "podřízený proces %s obdržel kritický signál %d" #~ msgid "stdin" #~ msgstr "standardní vstup" #~ msgid "stdout" #~ msgstr "standardní výstup" #~ msgid "stderr" #~ msgstr "standardní chybový výstup" #~ msgid "unknown stream" #~ msgstr "neznámý proud" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "selhalo opětovné otevření %s v režimu %s" #~ msgid "string comparison failed" #~ msgstr "selhalo porovnání řetězců" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Problém obejdete nastavením LC_ALL='C'." #~ msgid "The strings compared were %s and %s." #~ msgstr "Porovnávané řetězce byly %s a %s." #~ msgid "cannot perform formatted output" #~ msgstr "nelze provést formátovaný výstup" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "neplatný argument „%3$s“ pro %1$s%2$s" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "neplatná přípona v argumentu „%3$s“ pro %1$s%2$s" #~ msgid "%s%s argument `%s' too large" #~ msgstr "argument „%3$s“ pro %1$s%2$s je příliš velký" freedink-108.4+dfsg/gnulib/po/en@quot.header0000644000175000017500000000226312420230524016500 0ustar meme# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # freedink-108.4+dfsg/gnulib/po/zh_TW.po0000644000175000017500000002407612421730234015320 0ustar meme# traditional Chinese translation of coreutils. # Copyright (C) 1998, 2002, 2005 Free Software Foundation, Inc. # # # Merged from textutils, sh-utils and fileutils translation: # # Yip Chi Lap , 1998. # # Yuan-Chung Cheng , 1998. # # Abel Cheung , 2002. # # Pofeng Lee , 1998, 2002. # # Abel Cheung , 2005. # msgid "" msgstr "" "Project-Id-Version: coreutils 5.3.0\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2005-07-02 04:13+0800\n" "Last-Translator: Abel Cheung \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "不明的系統錯誤" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s:選項‘%s’不明確\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s:選項‘--%s’不可配合參數使用\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s:選項‘%c%s’不可配合參數使用\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s:選項‘%s’需要參數\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s:無法識別的選項‘--%s’\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s:無法識別的選項‘%c%s’\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s:無效的選項 ─ %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s:選項需要參數 ─ %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s:選項‘-W %s’不明確\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s:選項‘-W %s’不可配合參數使用\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s:選項‘%s’需要參數\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "無法建立目錄%s" #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "無法建立目錄%s" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "記憶體耗盡" #~ msgid "invalid argument %s for %s" #~ msgstr "%2$s的參數%1$s無效" #~ msgid "ambiguous argument %s for %s" #~ msgstr "%2$s的參數%1$s不明確" #~ msgid "Valid arguments are:" #~ msgstr "有效的參數為:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "長選項必須用的參數在使用短選項時也是必須的。\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "用法:%s [選項] [檔案]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "請嘗試執行‘%s --help’來獲取更多資訊。\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "請向 <%s> 回報錯誤。\n" #~ msgid "NAME" #~ msgstr "名稱" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "%s:找不到正確格式的 %s 總和檢查值" #, fuzzy #~ msgid "program error" #~ msgstr "讀取時發生錯誤" #~ msgid "write error" #~ msgstr "寫入時發生錯誤" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "無法開啟 %s 來讀取資料" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "無法開啟%s來讀取資料" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "讀取 %s 時發生錯誤" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "寫入 %s 時發生錯誤" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "讀取 %s 時發生錯誤" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "開啟時發生錯誤" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "關閉時發生錯誤" #~ msgid "regular empty file" #~ msgstr "普通空白檔案" #~ msgid "regular file" #~ msgstr "普通檔案" #~ msgid "directory" #~ msgstr "目錄" #~ msgid "block special file" #~ msgstr "區塊特殊檔案" #~ msgid "character special file" #~ msgstr "字元特殊檔案" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "符號連結" #~ msgid "socket" #~ msgstr "socket" #~ msgid "message queue" #~ msgstr "訊息佇列" #~ msgid "semaphore" #~ msgstr "semaphore" #~ msgid "shared memory object" #~ msgstr "共用記憶體物件" #, fuzzy #~ msgid "typed memory object" #~ msgstr "共用記憶體物件" #~ msgid "weird file" #~ msgstr "不正常的檔案" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "不支援 FIFO 檔案" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "不支援 FIFO 檔案" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "不支援 FIFO 檔案" #, fuzzy #~ msgid "System error" #~ msgstr "寫入時發生錯誤" #, fuzzy #~ msgid "Unknown error" #~ msgstr "不明的系統錯誤" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s:不合法的選項 ─ %c\n" #, fuzzy #~ msgid "block size" #~ msgstr "區塊特殊檔案" #~ msgid "%s exists but is not a directory" #~ msgstr "%s已存在但不是目錄" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "無法更改%s的擁有者和/或所屬群組" #~ msgid "cannot create directory %s" #~ msgstr "無法建立目錄%s" #~ msgid "cannot chdir to directory %s" #~ msgstr "無法進入%s目錄" #~ msgid "cannot change permissions of %s" #~ msgstr "無法更改%s的權限" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "%s:無法開啟來寫入資料" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "無法建立 %s 鏈結" #~ msgid "`" #~ msgstr "‘" #~ msgid "'" #~ msgstr "’" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s:無效的正規表示式:%s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "無效的字元種類‘%s’" #, fuzzy #~ msgid "Invalid range end" #~ msgstr "無效的類型‘%s’" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "記憶體耗盡" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s:無效的正規表示式:%s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "在正規運算式搜尋時發生錯誤" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s:無效的正規表示式:%s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "在正規運算式搜尋時發生錯誤" #~ msgid "^[yY]" #~ msgstr "^[yY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "iconv function not usable" #~ msgstr "iconv 功能無法使用" #~ msgid "iconv function not available" #~ msgstr "iconv 功能不存在" #~ msgid "character out of range" #~ msgstr "字元值超出可接受的範圍以外" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "無法將 U+%04X 轉換至使用者的字元集" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "無法將 U+%04X 轉換至使用者的字元集:%s" #~ msgid "invalid user" #~ msgstr "無效的使用者" #~ msgid "invalid group" #~ msgstr "無效的群組" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "無法取得 UID 數值所代表的登入群組" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "本程式是自由軟體;你可以根據 Free Software Foundation 所公佈的 GNU\n" #~ "General Public License 第二版或(自由選擇)較新的版本中的條款去重新\n" #~ "散佈及/或修改本軟體。\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "由 %s 編寫。\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "由 %s 和 %s 編寫。\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "由 %s, %s 和 %s 編寫。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "由 %s, %s, %s\n" #~ "和 %s 編寫。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "由 %s, %s, %s,\n" #~ "%s 和 %s 編寫。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "由 %s, %s, %s,\n" #~ "%s, %s 和 %s 編寫。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "由 %s, %s, %s, %s,\n" #~ "%s, %s 和 %s 編寫。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "由 %s, %s, %s, %s,\n" #~ "%s, %s, %s 和 %s 編寫。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "由 %s, %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "和 %s 編寫。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "由 %s, %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "和 %s 等等編寫。\n" #~ msgid "string comparison failed" #~ msgstr "字串比較出現錯誤" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "請設定 LC_ALL='C' 避免問題出現。" #~ msgid "The strings compared were %s and %s." #~ msgstr "要比較的字串為%s及%s。" freedink-108.4+dfsg/gnulib/po/es.po0000644000175000017500000005516012421730234014672 0ustar meme# Mensajes en español para gnulib 3.0.0.6062.a6b16. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Cristian Othón Martínez Vera , 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011. # # Los mensajes iniciales de esta traducción provienen de la traducción # de mailutils. # # Un agradecimiento especial a Santiago Vila por sus atinados comentarios # sobre esta traducción. # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-08-24 11:23-0500\n" "Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Error desconocido de sistema" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: la opción '%s' es ambigua; posibilidades:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: la opción '--%s' no admite un argumento\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: la opción '%c%s' no admite un argumento\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: la opción '--%s' requiere de un argumento\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: no se reconoce la opción '--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: no se reconoce la opción '%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: opción inválida -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: la opción requiere de un argumento -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: la opción '-W %s' es ambigua\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: la opción '-W %s' no admite un argumento\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: la opción '-W %s' requiere de un argumento\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "no se puede registrar el directorio de trabajo actual" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "no se puede volver al directorio de trabajo inicial" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "memoria agotada" #~ msgid "invalid argument %s for %s" #~ msgstr "argumento %s inválido para %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "argumento %s ambiguo para %s" #~ msgid "Valid arguments are:" #~ msgstr "Los argumentos válidos son:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: el valor %s es menor o igual a %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: El parámetro ARGP_HELP_FMT requiere de un valor" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: El parámetro ARGP_HELP_FMT debe ser positivo" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Parámetro de ARGP_HELP_FMT desconocido" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Basura en ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Los argumentos obligatorios u opcionales para las opciones largas también " #~ "son obligatorios u opcionales para cualquier opción corta correspondiente." #~ msgid "Usage:" #~ msgstr "Modo de empleo:" #~ msgid " or: " #~ msgstr " o:" #~ msgid " [OPTION...]" #~ msgstr " [OPCIÓN...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Pruebe `%s --help' ó `%s --usage' para más información.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Reporte bichos a %s.\n" #~ msgid "give this help list" #~ msgstr "da esta lista de ayuda" #~ msgid "give a short usage message" #~ msgstr "da un mensaje corto de modo de empleo" #~ msgid "NAME" #~ msgstr "NOMBRE" #~ msgid "set the program name" #~ msgstr "establece el nombre del programa" #~ msgid "SECS" #~ msgstr "SEGUNDOS" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "espera por SECS segundos (3600 por defecto)" #~ msgid "print program version" #~ msgstr "muestra la versión del programa" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(ERROR DEL PROGRAMA) ¿¡Sin versión conocida!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Demasiados argumentos\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(ERROR DEL PROGRAMA) ¿¡La opción debería reconocerse!?" #~ msgid "program error" #~ msgstr "error del programa" #~ msgid "stack overflow" #~ msgstr "desbordamiento de la pila" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "no se puede encontrar un directorio temporal, pruebe definir $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "no se puede crear un directorio temporal usando la plantilla \"%s\"" #~ msgid "cannot remove temporary file %s" #~ msgstr "no se puede borrar el fichero temporal %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "no se puede borrar el directorio temporal %s" #~ msgid "error closing file" #~ msgstr "error al cerrar el fichero" #~ msgid "write error" #~ msgstr "error de escritura" #~ msgid "preserving permissions for %s" #~ msgstr "se conservan los permisos de %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "error al abrir \"%s\" para lectura" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "no se puede abrir el fichero de respaldo \"%s\" para escritura" #~ msgid "error reading \"%s\"" #~ msgstr "error al leer \"%s\"" #~ msgid "error writing \"%s\"" #~ msgstr "error al escribir en \"%s\"" #~ msgid "error after reading \"%s\"" #~ msgstr "error después de leer \"%s\"" #~ msgid "fdopen() failed" #~ msgstr "falló fdopen()" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "No se encontró un compilador de C#, pruebe instalando pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "No se encontró una máquina virtual de C#, pruebe instalando pnet" #~ msgid "%s subprocess failed" #~ msgstr "%s: falló el subproceso" #~ msgid "regular empty file" #~ msgstr "fichero regular vacío" #~ msgid "regular file" #~ msgstr "fichero regular" #~ msgid "directory" #~ msgstr "directorio" #~ msgid "block special file" #~ msgstr "fichero especial de bloques" #~ msgid "character special file" #~ msgstr "fichero especial de caracteres" #~ msgid "fifo" #~ msgstr "`fifo'" #~ msgid "symbolic link" #~ msgstr "enlace simbólico" #~ msgid "socket" #~ msgstr "`socket'" #~ msgid "message queue" #~ msgstr "cola de mensajes" #~ msgid "semaphore" #~ msgstr "semáforo" #~ msgid "shared memory object" #~ msgstr "objeto de memoria compartida" #~ msgid "typed memory object" #~ msgstr "objeto de memoria con tipo" #~ msgid "weird file" #~ msgstr "fichero extraño" #~ msgid "Address family for hostname not supported" #~ msgstr "No se admiten las familias de direcciones para hostname" #~ msgid "Temporary failure in name resolution" #~ msgstr "Fallo temporal en la resolución del nombre" #~ msgid "Bad value for ai_flags" #~ msgstr "Valor erróneo para ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Falla irrecuperable en la resolución del nombre" #~ msgid "ai_family not supported" #~ msgstr "no se admite ai_family" #~ msgid "Memory allocation failure" #~ msgstr "Falló la llamada al sistema `malloc'" #~ msgid "No address associated with hostname" #~ msgstr "No existe una dirección asociada con el nombre de anfitrión" #~ msgid "Name or service not known" #~ msgstr "Nombre o servicio desconocido" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "No se admite servname para ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "no se admite ai_socktype" #~ msgid "System error" #~ msgstr "Error del sistema" #~ msgid "Argument buffer too small" #~ msgstr "Almacenamiento temporal de argumentos demasiado pequeño" #~ msgid "Processing request in progress" #~ msgstr "Petición de procesamiento en progreso" #~ msgid "Request canceled" #~ msgstr "Se canceló la petición" #~ msgid "Request not canceled" #~ msgstr "No se canceló la petición" #~ msgid "All requests done" #~ msgstr "Se completaron todas las peticiones" #~ msgid "Interrupted by a signal" #~ msgstr "Interrupción por una señal" #~ msgid "Parameter string not correctly encoded" #~ msgstr "La cadena de parámetro no está codificada correctamente" #~ msgid "Unknown error" #~ msgstr "Error desconocido" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "argumento source_version inválido para compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "argumento target_version inválido para compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "no se puede crear \"%s\"" #~ msgid "error while writing \"%s\" file" #~ msgstr "error al escribir el fichero \"%s\"" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "No se encontró un compilador de Java, pruebe instalando gcj o definiendo " #~ "$JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "No se encontró una máquina virtual de Java, pruebe instalando gij o " #~ "definiendo $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "%s: error de E/S del subproceso" #~ msgid "cannot change permissions of %s" #~ msgstr "no se pueden cambiar los permisos de %s" #~ msgid "cannot create directory %s" #~ msgstr "no se puede crear el directorio %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Falló al abrir /dev/zero para lectura" #~ msgid "creation of reading thread failed" #~ msgstr "falló la creación del hilo de lectura" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "no se puede establecer E/S sin bloqueo para el subproceso %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "falló la comunicación con el subproceso %s" #~ msgid "write to %s subprocess failed" #~ msgstr "falló la escritura al subproceso %s" #~ msgid "read from %s subprocess failed" #~ msgstr "falló la lectura del subproceso %s" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "el subproceso %s terminó con el código de salida %d" #~ msgid "creation of threads failed" #~ msgstr "falló la creación de hilos" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "subproceso %s terminado con el código de salida %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" # Vamos a probar con el símbolo de cita tradicional en español, # a ver qué tal queda la cosa. #~ msgid "`" #~ msgstr "«" #~ msgid "'" #~ msgstr "»" #~ msgid "Success" #~ msgstr "Éxito" #~ msgid "No match" #~ msgstr "Sin coincidencia" #~ msgid "Invalid regular expression" #~ msgstr "Expresión regular inválida" #~ msgid "Invalid collation character" #~ msgstr "Carácter de ordenamiento inválido" #~ msgid "Invalid character class name" #~ msgstr "Nombre de clase de carácter inválido" #~ msgid "Trailing backslash" #~ msgstr "Barra invertida sobrante" #~ msgid "Invalid back reference" #~ msgstr "Referencia hacia atrás inválida" #~ msgid "Unmatched [ or [^" #~ msgstr "[ o [^ sin pareja" #~ msgid "Unmatched ( or \\(" #~ msgstr "( o \\( sin pareja" #~ msgid "Unmatched \\{" #~ msgstr "\\{ sin pareja" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Contenido inválido de \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Fin de rango inválido" #~ msgid "Memory exhausted" #~ msgstr "Memoria agotada" #~ msgid "Invalid preceding regular expression" #~ msgstr "Expresión regular precedente inválida" #~ msgid "Premature end of regular expression" #~ msgstr "Final prematuro de la expresión regular" #~ msgid "Regular expression too big" #~ msgstr "Expresión regular demasiado grande" #~ msgid "Unmatched ) or \\)" #~ msgstr ") o \\) sin pareja" #~ msgid "No previous regular expression" #~ msgstr "No hay una expresión regular previa" # Esto es para responder "sí" cuando nos pregunte. #~ msgid "^[yY]" #~ msgstr "^[sS]" # Y esto es para responder "no" cuando nos pregunte. #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "se cambian los permisos de %s" #~ msgid "Hangup" #~ msgstr "Colgar" #~ msgid "Interrupt" #~ msgstr "Interrumpir" #~ msgid "Quit" #~ msgstr "Salir" #~ msgid "Illegal instruction" #~ msgstr "Instrucción ilegal" #~ msgid "Trace/breakpoint trap" #~ msgstr "Captura de rastreo/punto de quiebre" #~ msgid "Aborted" #~ msgstr "Abortar" #~ msgid "Floating point exception" #~ msgstr "Excepción de coma flotante" #~ msgid "Killed" #~ msgstr "Matar" #~ msgid "Bus error" #~ msgstr "Error de bus" #~ msgid "Segmentation fault" #~ msgstr "Falta de segmentación" #~ msgid "Broken pipe" #~ msgstr "Tubería rota" #~ msgid "Alarm clock" #~ msgstr "Reloj de alarma" #~ msgid "Terminated" #~ msgstr "Terminar" #~ msgid "Urgent I/O condition" #~ msgstr "Condición de E/S urgente" #~ msgid "Stopped (signal)" #~ msgstr "Detener (señal)" #~ msgid "Stopped" #~ msgstr "Detener" #~ msgid "Continued" #~ msgstr "Continuar" #~ msgid "Child exited" #~ msgstr "Salió el hijo" #~ msgid "Stopped (tty input)" #~ msgstr "Detener (entrada de tty)" #~ msgid "Stopped (tty output)" #~ msgstr "Detener (salida de tty)" #~ msgid "I/O possible" #~ msgstr "Posible E/S" #~ msgid "CPU time limit exceeded" #~ msgstr "Excede el límite de tiempo de CPU" #~ msgid "File size limit exceeded" #~ msgstr "Excede el límite de tamaño de fichero" #~ msgid "Virtual timer expired" #~ msgstr "Expira el temporizador virtual" #~ msgid "Profiling timer expired" #~ msgstr "Expira el temporizador de análisis de perfil" #~ msgid "Window changed" #~ msgstr "Cambio de ventana" #~ msgid "User defined signal 1" #~ msgstr "Señal 1 definida por el usuario" #~ msgid "User defined signal 2" #~ msgstr "Señal 2 definida por el usuario" #~ msgid "EMT trap" #~ msgstr "Captura EMT" #~ msgid "Bad system call" #~ msgstr "Llamada al sistema errónea" #~ msgid "Stack fault" #~ msgstr "Falta en la pila" #~ msgid "Information request" #~ msgstr "Petición de información" #~ msgid "Power failure" #~ msgstr "Falla de energía" #~ msgid "Resource lost" #~ msgstr "Recurso perdido" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "error al escribir a una tubería o socket cerrados" #~ msgid "cannot create pipe" #~ msgstr "no se puede una tubería" #~ msgid "Real-time signal %d" #~ msgstr "Señal de tiempo real %d" #~ msgid "Unknown signal %d" #~ msgstr "Señal %d desconocida" #~ msgid "iconv function not usable" #~ msgstr "la función iconv no es utilizable" #~ msgid "iconv function not available" #~ msgstr "la función iconv no está disponible" #~ msgid "character out of range" #~ msgstr "carácter fuera de rango" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "no se puede convertir U+%04X al conjunto de caracteres local" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "no se puede convertir U+%04X al conjunto de caracteres local: %s" # Me niego a considerar "inválido" como palabra "políticamente incorrecta". # Si algún "impedido físico" lee este mensaje y se molesta por ello, entonces # es que además de impedido físico es tonto, pues todo el mundo sabe que, # *en el contexto informático*, inválido e ilegal significan # "no permitido por la causa que sea". # Luego, que unas veces sea inválido y otras ilegal, son matices que el # original tiene y creo necesario respetar en la traducción. # # [ Tomás Bautista sugiere "inexistente", y también para grupo ] # # FIXME: # Eso sí, un día tendré que preguntar a los de GNU en qué se diferencia # "invalid" de "not allowed" de "not recognized" y todo eso... sv # #~ msgid "invalid user" #~ msgstr "usuario inválido" #~ msgid "invalid group" #~ msgstr "grupo inválido" # Me niego a considerar "inválido" como palabra "políticamente incorrecta". # Si algún "impedido físico" lee este mensaje y se molesta por ello, entonces # es que además de impedido físico es tonto, pues todo el mundo sabe que, # *en el contexto informático*, inválido e ilegal significan # "no permitido por la causa que sea". # Luego, que unas veces sea inválido y otras ilegal, son matices que el # original tiene y creo necesario respetar en la traducción. # # [ Tomás Bautista sugiere "inexistente", y también para grupo ] # # FIXME: # Eso sí, un día tendré que preguntar a los de GNU en qué se diferencia # "invalid" de "not allowed" de "not recognized" y todo eso... sv # #~ msgid "invalid spec" #~ msgstr "especificación inválida" #~ msgid "unable to display error message" #~ msgstr "no se puede mostrar el mensaje de error" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Empaquetado por %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Empaquetado por %s\n" #~ msgid "(C)" #~ msgstr "(C)" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licencia GPLv3+: GPL de GNU versión 3 o posterior\n" #~ ".\n" #~ "Esto es software libre: tiene la libertad de cambiarlo y redistribuirlo.\n" #~ "No tiene GARANTÍA, en la extensión permitida por la ley.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Escrito por %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Escrito por %s y %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Escrito por %s, %s, y %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "y %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, y %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, y %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, y %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "y %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, y %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, y otros.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Reporte bichos a: %s.\n" #~ "Reporte errores de traducción a: es@li.org\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Reporte bichos de %s a: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Página web de %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Página web de %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Ayuda general para usar software de GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "falló _open_osfhandle" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "no se puede restaurar el df %d: falló dup2" #~ msgid "%s subprocess" #~ msgstr "subproceso %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "el subproceso %s recibió la señal fatal %d" #~ msgid "stdin" #~ msgstr "entrada estándard" #~ msgid "stdout" #~ msgstr "salida estándard" #~ msgid "stderr" #~ msgstr "salida de error estándard" #~ msgid "unknown stream" #~ msgstr "flujo desconocido" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "falló al reabrir %s con modo %s" #~ msgid "string comparison failed" #~ msgstr "la comparación de cadenas falló" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "" #~ "Establezca LC_ALL='C' para solucionar este problema de forma temporal." #~ msgid "The strings compared were %s and %s." #~ msgstr "Las cadenas comparadas eran %s y %s." #~ msgid "cannot perform formatted output" #~ msgstr "no se puede mostrar la salida con formato" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "argumento `$3%s' inválido para $1%s$2%s" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "sufijo inválido en el argumento `$3%s' para $1%s$2%s" #~ msgid "%s%s argument `%s' too large" #~ msgstr "el argumento `$3%s' es demasiado grande para $1%s$2%s" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: opción ilegal -- %c\n" #~ msgid "" #~ "\n" #~ "Report bugs to <%s>.\n" #~ msgstr "" #~ "\n" #~ "Reporte bichos a <%s>.\n" #~ msgid "block size" #~ msgstr "tamaño del bloque" #~ msgid "%s exists but is not a directory" #~ msgstr "%s existe pero no es un directorio" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "no se puede cambiar el propietario y/o el grupo de %s" #~ msgid "cannot chdir to directory %s" #~ msgstr "no se puede cambiar al directorio %s" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "no se puede obtener el grupo de login de un UID numérico" #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Este programa es software libre; se pueden redistribuir copias del " #~ "mismo \n" #~ "bajo los términos de la Licencia Pública General de GNU\n" #~ ".\n" #~ "NO HAY GARANTÍA, a la extensión permitida por la ley.\n" #~ "\n" freedink-108.4+dfsg/gnulib/po/be.po0000644000175000017500000002437212421730234014652 0ustar meme# SOME DESCRIPTIVE TITLE. # Copyright (C) 2002, 2003 Free Software Foundation, Inc. # This file is distributed under the same license as the coreutils package. # Ales Nyakhaychyk , 2002, 2003. # msgid "" msgstr "" "Project-Id-Version: coreutils 5.0.91\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2003-10-30 01:10+0200\n" "Last-Translator: Ales Nyakhaychyk \n" "Language-Team: Belarusian \n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: KBabel 1.0.2\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Невядомая сыстэмная памылка" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: выбар `%s' неадназначны\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: выбар `--%s' не дазваляе довад\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: выбар `%c%s' не дазваляе довад\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: выбар `%s' патрабуе довад\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: нераспазнаны выбар `--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: нераспазнаны выбар `%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: нерэчаісны выбар -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: выбар патрабуе довад -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: выбар `-W %s' неадназначыны\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: выбар `-W %s' не дазваляе довад\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: выбар `%s' патрабуе довад\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "немагчыма вярнуцца ў пачатковую працоўную тэчку" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "немагчыма вярнуцца ў пачатковую працоўную тэчку" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "памяць вычарпана" #~ msgid "invalid argument %s for %s" #~ msgstr "нерэчаісны довад %s для %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "неадназначны довад %s для %s" #~ msgid "Valid arguments are:" #~ msgstr "Рэчаісныя довады:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Довады, абавязковыя для доўгіх выбараў, абавязковыя й для кароткіх.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Выкарыстаньне: %s [ВЫБАР]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Паспрабуйце \"%s --help\" для больш падрабязных зьвестак.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Паведамляйце пра памылкі на <%s>.\n" #~ msgid "NAME" #~ msgstr "НАЗВА" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "зашмат довадаў\n" #, fuzzy #~ msgid "program error" #~ msgstr "памылка чытаньня" #~ msgid "write error" #~ msgstr "памылка запісу" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "немагыма адчыніць %s для чытаньня" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "немагыма адчыніць %s для чытаньня" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "памылка чытаньня %s" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "памылка запісу %s" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "памылка чытаньня %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "памылка адкрыцьця" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: збой seek" #~ msgid "regular empty file" #~ msgstr "звычайны парожні файл" #~ msgid "regular file" #~ msgstr "звычайны файл" #~ msgid "directory" #~ msgstr "тэчка" #~ msgid "block special file" #~ msgstr "асаблівы кавалкавы файл" #~ msgid "character special file" #~ msgstr "асаблівы знакавы файл" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "знакавае лучыва" #~ msgid "socket" #~ msgstr "socket" #~ msgid "message queue" #~ msgstr "чарга паведамленьняў" #~ msgid "semaphore" #~ msgstr "сэмафор" #~ msgid "shared memory object" #~ msgstr "абьект з агульнай памяцьцю" #, fuzzy #~ msgid "typed memory object" #~ msgstr "абьект з агульнай памяцьцю" #~ msgid "weird file" #~ msgstr "лёсавы файл" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "fifo файлы непадтрымліваюцца" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "fifo файлы непадтрымліваюцца" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "fifo файлы непадтрымліваюцца" #, fuzzy #~ msgid "System error" #~ msgstr "памылка запісу" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Невядомая сыстэмная памылка" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: недапушчальны выраб -- %c\n" #~ msgid "block size" #~ msgstr "памер кавалку" #~ msgid "%s exists but is not a directory" #~ msgstr "%s існуе, але гэта ня тэчка" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "немагчыма зьмяніць уладальніка й/ці групу %s" #~ msgid "cannot create directory %s" #~ msgstr "немагчыма стварыць тэчку %s" #~ msgid "cannot chdir to directory %s" #~ msgstr "немагчыма перайсьці да тэчкі %s" #~ msgid "cannot change permissions of %s" #~ msgstr "немагчыма зьмяніць правы %s" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "збой пры захаваньні правоў для %s" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "немагчыма стварыць лучыва %s" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: нерэчаісны звычайны выраз: %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "нерэчаісны знак %s у радку рэжыму %s" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "памяць вычарпана" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: нерэчаісны звычайны выраз: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "памылка ў пошуку звычайнага выразу" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: нерэчаісны звычайны выраз: %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "памылка ў пошуку звычайнага выразу" #~ msgid "^[yY]" #~ msgstr "^[тТ]" #~ msgid "^[nN]" #~ msgstr "^[нН]" #~ msgid "iconv function not usable" #~ msgstr "функцыя iconv непрыгодна для выкарыстаньня" #~ msgid "iconv function not available" #~ msgstr "недаступна функцыя iconv" #~ msgid "character out of range" #~ msgstr "знак па за дапушчальнымі межамі" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "немагчыма пераўтварыць U+%04X у мясцовы набор знакаў" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "немагчыма пераўтварыць U+%04X у мясцовы набор знакаў: %s" #~ msgid "invalid user" #~ msgstr "нерэчаісны карыстальнік" #~ msgid "invalid group" #~ msgstr "нерэчаісная група" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "немагчыма атрымаць уліковую групу лічбавага UID" #~ msgid "Written by %s.\n" #~ msgstr "Стваральнік %s.\n" #, fuzzy #~ msgid "Written by %s and %s.\n" #~ msgstr "Стваральнік %s.\n" #, fuzzy #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Стваральнік %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "Стваральнік %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "Стваральнік %s.\n" #~ msgid "string comparison failed" #~ msgstr "памылка параўнаньня радку" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Усталюйце LC_ALL='C' каб працаваць без пытаньняў." #~ msgid "The strings compared were %s and %s." #~ msgstr "Радкі былі параўнаны тут %s і тут %s." freedink-108.4+dfsg/gnulib/po/eo.gmo0000644000175000017500000000357712421730234015037 0ustar memexy,,,'-D r((%-:h*y).I.x.+/(2,[,. :-Q    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2013-02-06 15:17-0300 Last-Translator: Felipe Castro Language-Team: Esperanto Language: eo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s: malvalida modifilo -- '%c' %s: la modifilo '%c%s' ne permesas argumenton %s: la modifilo '%s' estas plursenca; eblecoj:%s: la modifilo '--%s' ne permesas argumenton %s: la modifilo '--%s' postulas argumenton %s: la modifilo '-W %s' ne permesas argumenton %s: la modifilo '-W %s' estas plursenca %s: la modifilo '-W %s' postulas argumenton %s: la modifilo postulas argumenton -- '%c' %s: nerekonata modifilo '%c%s' %s: nerekonata modifilo '--%s' Nekonata sistem-eraroni fiaskis reveni al la komenca labordosierujomemoro estas plenigitane eblas registri la aktualan labordosierujonfreedink-108.4+dfsg/gnulib/po/cs.gmo0000644000175000017500000000403712421730234015031 0ustar memexy,,,'-D r((%-:h*y&l;8;.D<s0//%A%g1-    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-12-04 08:50+0100 Last-Translator: Marek Černocký Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; %s: neplatný přepínač -- „%c“ %s: přepínač „%c%s“ musí být zadán bez argumentu %s: přepínač „%s“ není jednoznačný; možnosti:%s: přepínač „--%s“ musí být zadán bez argumentu %s: přepínač „--%s“ vyžaduje argument %s: přepínač „-W %s“ musí být zadán bez argumentu %s: přepínač „-W %s“ není jednoznačný %s: přepínač „-W %s“ vyžaduje argument %s: přepínač vyžaduje argument -- „%c“ %s: neznámý přepínač „%c%s“ %s: neznámý přepínač „--%s“ Neznámá chyba systémuselhalo vrácení počáteční pracovní složkypaměť byla vyčerpánanelze zaznamenat aktuální pracovní složkufreedink-108.4+dfsg/gnulib/po/hu.gmo0000644000175000017500000000411712421730234015037 0ustar memexy,,,'-D r((%-:h*y(o9<9<I7-:6')^)95    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2014-06-25 19:51+0200 Last-Translator: Balázs Úr Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Lokalize 1.5 %s: érvénytelen kapcsoló -- „%c” %s: a(z) „%c%s” kapcsoló nem enged meg argumentumot %s: a(z) „%s” kapcsoló nem egyértelmű; lehetőségek:%s: a(z) „--%s” kapcsoló nem enged meg argumentumot %s: a(z) „--%s” kapcsolóhoz egy argumentum szükséges %s: a „-W %s” kapcsoló nem enged meg argumentumot %s: a „-W %s” kapcsoló nem egyértelmű %s: a „-W %s” kapcsolóhoz egy argumentum szükséges %s: a kapcsoló egy argumentumot igényel -- „%c” %s: a(z) „%c%s” kapcsoló ismeretlen %s: a(z) „--%s” kapcsoló ismeretlen Ismeretlen rendszerhibaa visszatérés meghiúsult a kiinduló munkakönyvtárbaelfogyott a memóriaaz aktuális munkakönyvtár feljegyzése meghiúsultfreedink-108.4+dfsg/gnulib/po/sr.po0000644000175000017500000005747412421730234014721 0ustar meme# Serbian translation of gnulib. # Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Мирослав Николић , 2013. msgid "" msgstr "" "Project-Id-Version: gnulib-3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2013-11-17 16:47+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Непозната грешка система" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: опција „%s“ је нејасна; могућности:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: опција „--%s“ не дозвољава аргумент\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: опција „%c%s“ не дозвољава аргумент\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: опција „--%s“ захтева аргумент\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: непозната опција „--%s“\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: непозната опција „%c%s“\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: неисправна опција -- „%c“\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: опција захтева аргумент -- „%c“\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: опција „-W %s“ је нејасна\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: опција „-W %s“ не дозвољава аргумент\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: опција „-W %s“ захтева аргумент\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "не могу да снимим тренутни радни директоријум" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "не могу да се вратим у почетни радни директоријум" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "меморија је потрошена" #~ msgid "invalid argument %s for %s" #~ msgstr "неисправан аргумент „%s“ за „%s“" #~ msgid "ambiguous argument %s for %s" #~ msgstr "нејасан аргумент „%s“ за „%s“" #~ msgid "Valid arguments are:" #~ msgstr "Исправни аргументи су:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: %s вредност је мања од или једнака са %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: „ARGP_HELP_FMT“ параметар захтева вредност" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: „ARGP_HELP_FMT“ параметар мора бити позитиван" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Непознат параметар „ARGP_HELP_FMT“" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Ђубре у „ARGP_HELP_FMT“-у: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Обавезни или опционални аргументи за дуге опције су такође обавезни или " #~ "опционални за све одговарајуће кратке опције." #~ msgid "Usage:" #~ msgstr "Употреба:" #~ msgid " or: " #~ msgstr " или: " #~ msgid " [OPTION...]" #~ msgstr " [ОПЦИЈА...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Покушајте „%s --help“ или „%s --usage“ за више података.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Грешке пријавите на %s.\n" #~ msgid "give this help list" #~ msgstr "приказује овај списак помоћи" #~ msgid "give a short usage message" #~ msgstr "приказује кратку поруку коришћења" #~ msgid "NAME" #~ msgstr "НАЗИВ" #~ msgid "set the program name" #~ msgstr "поставља назив програма" #~ msgid "SECS" #~ msgstr "СЕКУНДЕ" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "стаје за СЕКУНДЕ секунде (основно је 3600)" #~ msgid "print program version" #~ msgstr "исписује издање програма" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(ГРЕШКА ПРОГРАМА) Није познато издање!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Превише аргумената\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(ГРЕШКА ПРОГРАМА) Опција треба да буде препозната!?" #~ msgid "program error" #~ msgstr "грешка програма" #~ msgid "stack overflow" #~ msgstr "стек је препуњен" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "не могу да пронађем привремени директоријум, покушавам да подесим " #~ "„$TMPDIR“" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "не могу да направим привремени директоријум користећи шаблон „%s“" #~ msgid "cannot remove temporary file %s" #~ msgstr "не могу да уклоним привремену датотеку „%s“" #~ msgid "cannot remove temporary directory %s" #~ msgstr "не могу да уклоним привремени директоријум „%s“" #~ msgid "error closing file" #~ msgstr "грешка затварања датотеке" #~ msgid "write error" #~ msgstr "грешка записивања" #~ msgid "preserving permissions for %s" #~ msgstr "причувавам овлашћења за %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "грешка приликом отварања „%s“ за читање" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "не могу да отворим датотеку резерве „%s“ за упис" #~ msgid "error reading \"%s\"" #~ msgstr "грешка читања „%s“" #~ msgid "error writing \"%s\"" #~ msgstr "грешка писања „%s“" #~ msgid "error after reading \"%s\"" #~ msgstr "грешка након читања „%s“" #~ msgid "fdopen() failed" #~ msgstr "није успела функција „fdopen()“" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "нисам нашао Ц# преводиоца, покушајте да инсталирате пнет" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "нисам нашао Ц# виртуелну машину, покушајте да инсталирате пнет" #~ msgid "%s subprocess failed" #~ msgstr "%s потпроцес није успео" #~ msgid "regular empty file" #~ msgstr "обична празна датотека" #~ msgid "regular file" #~ msgstr "обична датотека" #~ msgid "directory" #~ msgstr "директоријум" #~ msgid "block special file" #~ msgstr "посебна датотека блока" #~ msgid "character special file" #~ msgstr "посебна датотека знака" #~ msgid "fifo" #~ msgstr "пупи" #~ msgid "symbolic link" #~ msgstr "симболичка веза" #~ msgid "socket" #~ msgstr "прикључница" #~ msgid "message queue" #~ msgstr "ред порука" #~ msgid "semaphore" #~ msgstr "семафор" #~ msgid "shared memory object" #~ msgstr "заједнички меморијски објекат" #~ msgid "typed memory object" #~ msgstr "типски меморијски објекат" #~ msgid "weird file" #~ msgstr "чудна датотека" #~ msgid "Address family for hostname not supported" #~ msgstr "Породица адреса за назив домаћина није подржана" #~ msgid "Temporary failure in name resolution" #~ msgstr "Привремени неуспех одређивања назива" #~ msgid "Bad value for ai_flags" #~ msgstr "Неисправна вредност за аи_опције" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Непоправљива грешка при одређивању назива" #~ msgid "ai_family not supported" #~ msgstr "аи_породица није подржана" #~ msgid "Memory allocation failure" #~ msgstr "Расподела меморије није успела" #~ msgid "No address associated with hostname" #~ msgstr "Ниједна адреса није придружена називу домаћина" #~ msgid "Name or service not known" #~ msgstr "Није позната услуга или назив" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Назив сервера није подржан за аи_врступрикључка" #~ msgid "ai_socktype not supported" #~ msgstr "аи_врстаприкључка није подржана" #~ msgid "System error" #~ msgstr "Системска грешка" #~ msgid "Argument buffer too small" #~ msgstr "Међумеморија аргумента је премала" #~ msgid "Processing request in progress" #~ msgstr "Захтев обрађивања је у току" #~ msgid "Request canceled" #~ msgstr "Захтев је отказан" #~ msgid "Request not canceled" #~ msgstr "Захтев није отказан" #~ msgid "All requests done" #~ msgstr "Сви захтеви су готови" #~ msgid "Interrupted by a signal" #~ msgstr "Прекинуто сигналом" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Ниска параметра није исправно кодирана" #~ msgid "Unknown error" #~ msgstr "Непозната грешка" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "неисправан аргумент издања_извора за преведи_јава_разред" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "неисправан аргумент издања_мете за преведи_јава_разред" #~ msgid "failed to create \"%s\"" #~ msgstr "нисам успео да направим „%s“" #~ msgid "error while writing \"%s\" file" #~ msgstr "грешка приликом писања датотеке „%s“" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Нисам нашао Јава преводиоца, покушајте да инсталирате гцј или поставите " #~ "„$JAVAC“" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Нисам нашао виртуелну машину Јаве, покушајте да инсталирате гиј или да " #~ "поставите „$JAVA“" #~ msgid "%s subprocess I/O error" #~ msgstr "У/И грешка %s потпроцеса" #~ msgid "cannot change permissions of %s" #~ msgstr "не могу да променим овлашћења за „%s“" #~ msgid "cannot create directory %s" #~ msgstr "не могу да направим директоријум „%s“" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Нисам успео да отворим „/dev/zero“ за читање" #~ msgid "creation of reading thread failed" #~ msgstr "стварање нити за читање није успело" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "не могу да поставим неблокирајући У/И на потпроцес %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "комуницирање са %s потпроцесом није успело" #~ msgid "write to %s subprocess failed" #~ msgstr "писање у %s потпроцес није успело" #~ msgid "read from %s subprocess failed" #~ msgstr "читање из %s потпроцеса није успело" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "потпроцес %s је окончан са излазном шифром %d" #~ msgid "creation of threads failed" #~ msgstr "стварање нити није успело" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "%s потпроцес је окончан са излазном шифром %d" #~ msgid "Franc,ois Pinard" #~ msgstr "Франсуа Пинард" #~ msgid "`" #~ msgstr "„" #~ msgid "'" #~ msgstr "“" #~ msgid "Success" #~ msgstr "Успешно" #~ msgid "No match" #~ msgstr "Нема подударања" #~ msgid "Invalid regular expression" #~ msgstr "Неправилан регуларан израз" #~ msgid "Invalid collation character" #~ msgstr "Неисправан знак поретка" #~ msgid "Invalid character class name" #~ msgstr "Неисправан назив класе знака" #~ msgid "Trailing backslash" #~ msgstr "Пратећа контра коса црта" #~ msgid "Invalid back reference" #~ msgstr "Неисправна повратна упута" #~ msgid "Unmatched [ or [^" #~ msgstr "Непоклопљено [ или [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Непоклопљено ( или \\(" #~ msgid "Unmatched \\{" #~ msgstr "Непоклопљено \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Неисправан садржај \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Неисправан крај опсега" #~ msgid "Memory exhausted" #~ msgstr "Меморија је потрошена" #~ msgid "Invalid preceding regular expression" #~ msgstr "Неисправан регуларан израз који претходи" #~ msgid "Premature end of regular expression" #~ msgstr "Прерани крај регуларног израза" #~ msgid "Regular expression too big" #~ msgstr "Регуларни израз је превелик" #~ msgid "Unmatched ) or \\)" #~ msgstr "Непоклопљено ) или \\)" #~ msgid "No previous regular expression" #~ msgstr "Нема претходног регуларног израза" #~ msgid "^[yY]" #~ msgstr "^[yY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "подешавам овлашћења за %s" #~ msgid "Hangup" #~ msgstr "Обустави" #~ msgid "Interrupt" #~ msgstr "Прекини" #~ msgid "Quit" #~ msgstr "Изађи" #~ msgid "Illegal instruction" #~ msgstr "Неисправна инструкција" #~ msgid "Trace/breakpoint trap" #~ msgstr "Замка праћења/тачке прекида" #~ msgid "Aborted" #~ msgstr "Прекинуто" #~ msgid "Floating point exception" #~ msgstr "Изузетак са покретним зарезом" #~ msgid "Killed" #~ msgstr "Убијено" #~ msgid "Bus error" #~ msgstr "Грешка сабирнице" #~ msgid "Segmentation fault" #~ msgstr "Грешка сегментације" #~ msgid "Broken pipe" #~ msgstr "Прекинута спојка" #~ msgid "Alarm clock" #~ msgstr "Будилник" #~ msgid "Terminated" #~ msgstr "Окончан" #~ msgid "Urgent I/O condition" #~ msgstr "Хитни У/И услов" #~ msgid "Stopped (signal)" #~ msgstr "Заустављен (сигнал)" #~ msgid "Stopped" #~ msgstr "Заустављен" #~ msgid "Continued" #~ msgstr "Настављен" #~ msgid "Child exited" #~ msgstr "Потпроцес је напуштен" #~ msgid "Stopped (tty input)" #~ msgstr "Заустављен (улаз конзоле)" #~ msgid "Stopped (tty output)" #~ msgstr "Заустављен (излаз конзоле)" #~ msgid "I/O possible" #~ msgstr "I/O је могућ" #~ msgid "CPU time limit exceeded" #~ msgstr "Прекорачено је временско ограничење процесора" #~ msgid "File size limit exceeded" #~ msgstr "Прекорачено је ограничење величине датотеке" #~ msgid "Virtual timer expired" #~ msgstr "Виртуелни одбројавач је истекао" #~ msgid "Profiling timer expired" #~ msgstr "Одбројавач профилисања је истекао" #~ msgid "Window changed" #~ msgstr "Прозор је измењен" #~ msgid "User defined signal 1" #~ msgstr "Кориснички одређени сигнал 1" #~ msgid "User defined signal 2" #~ msgstr "Кориснички одређени сигнал 2" #~ msgid "EMT trap" #~ msgstr "ЕМТ замка" #~ msgid "Bad system call" #~ msgstr "Лош системски позив" #~ msgid "Stack fault" #~ msgstr "Неуспех стека" #~ msgid "Information request" #~ msgstr "Захтев зе информацијама" #~ msgid "Power failure" #~ msgstr "Неуспех напајања" #~ msgid "Resource lost" #~ msgstr "Губитак изворишта" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "грешка писања на затворену спојку или прикључницу" #~ msgid "cannot create pipe" #~ msgstr "не могу да направим спојку" #~ msgid "Real-time signal %d" #~ msgstr "Сигнал у стварном времену %d" #~ msgid "Unknown signal %d" #~ msgstr "Непознати сигнал %d" #~ msgid "iconv function not usable" #~ msgstr "иконв функција није употребљива" #~ msgid "iconv function not available" #~ msgstr "иконв функција није доступна" #~ msgid "character out of range" #~ msgstr "знак је ван опсега" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "не могу да претворим U+%04X у месни скуп знакова" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "не могу да претворим U+%04X у месни скуп знакова: %s" #~ msgid "invalid user" #~ msgstr "неисправан корисник" #~ msgid "invalid group" #~ msgstr "неисправна група" #~ msgid "invalid spec" #~ msgstr "неисправна одредница" #~ msgid "unable to display error message" #~ msgstr "не могу да прикажем поруку грешке" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Запаковао је %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Запаковао је %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Лиценца ОЈЛв3+: ГНУ ОЈЛ издање 3 или касније .\n" #~ "Ово је слободан софтвер: слободни сте да га мењате и расподељујете.\n" #~ "Не постоји НИКАКВА ГАРАНЦИЈА, у оквирима дозвољеним законом.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Написао је %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Написали су %s и %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Написали су %s, %s, и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Написали су %s, %s, %s,\n" #~ "и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Написали су %s, %s, %s,\n" #~ "%s, и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Написали су %s, %s, %s,\n" #~ "%s, %s, и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Написали су %s, %s, %s,\n" #~ "%s, %s, %s, и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Написали су %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Написали су %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Написали су %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, и други.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Грешке пријавите на: %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Грешке програма „%s“ пријавите на: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s матична страница: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s матична страница: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "Општа помоћ користећи ГНУ софтвер: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "„_open_osfhandle“ није успело" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "не могу да повратим фд %d: „dup2“ није успело" #~ msgid "%s subprocess" #~ msgstr "%s потпроцес" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s потпроцес је добио кобни сигнал %d" #~ msgid "stdin" #~ msgstr "стдулаз" #~ msgid "stdout" #~ msgstr "стдизлаз" #~ msgid "stderr" #~ msgstr "стдгрешка" #~ msgid "unknown stream" #~ msgstr "непознат ток" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "нисам успео да поново отворим „%s“ са режимом %s" #~ msgid "string comparison failed" #~ msgstr "није успело поређење ниске" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Поставите LC_ALL='C' да решите проблем." #~ msgid "The strings compared were %s and %s." #~ msgstr "Поређене ниске су „%s“ и „%s“." #~ msgid "cannot perform formatted output" #~ msgstr "не могу да извршим обликовани излаз" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "неисправан %s%s аргумент „%s“" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "неисправан суфикс у %s%s аргумент „%s“" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s аргумент „%s“ је превелик" freedink-108.4+dfsg/gnulib/po/fi.gmo0000644000175000017500000000373512421730234015026 0ustar memexy,,,'-D r((%-:h*y#\-=-*.E0t++&&$K6i .    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-12-10 19:05+0200 Last-Translator: Jorma Karvonen Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural= ( n!=1) ; %s: epäkelpo valitsin -- ’%c’ %s: valitsin ’%c%s’ ei salli argumenttia %s: valitsin ’%s’ ei ole yksiselitteinen; mahdollisuudet:%s: valitsin ’--%s’ ei salli argumenttia %s: valitsin ’--%s’ vaatii argumentin %s: valitsin ’-W %s’ ei salli argumenttia %s: valitsin ’-W %s’ ei ole yksiselitteinen %s: valitsin ’-W %s’ vaatii argumentin %s: valitsin vaatii argumentin -- ’%c’ %s: tunnistamaton valitsin ’%c%s’ %s: tunnistamaton valitsin ’--%s’ Tuntematon järjestelmävirhealkuperäiseen työhakemistoon palaaminen epäonnistuimuisti loppuiei kyetä tallentaman nykyistä työhakemistoafreedink-108.4+dfsg/gnulib/po/ms.gmo0000644000175000017500000000124712421730234015043 0ustar meme<\pq-~!D/fUnknown system errorfailed to return to initial working directorymemory exhaustedProject-Id-Version: coreutils 5.0.90 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2003-08-10 16:00+0800 Last-Translator: Hasbullah Bin Pit Language-Team: Malay Language: ms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ralat sistem yang tidak diketahuigagal untuk kembali ke direktori kerja pemulaanmemori keletihanfreedink-108.4+dfsg/gnulib/po/sl.gmo0000644000175000017500000000371012421730234015037 0ustar memexy,,,'-D r((%-:h*y+(+ %6,\ &$!!:+S3    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-05-20 13:08+0200 Last-Translator: Primož Peterlin Language-Team: Slovenian Language: sl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0); %s: neveljavna izbira -- '%c' %s: izbira »%c%s« ne dovoljuje argumenta %s: izbira »%s« je dvoumna; možnosti:%s: izbira »--%s« ne dovoljuje argumenta %s: izbira »--%s« zahteva argument %s: izbira »-W %s« ne dovoljuje argumenta %s: izbira »-W %s« je dvoumna %s: izbira »-W %s« zahteva argument %s: izbira zahteva argument -- '%c' %s: neprepoznana izbira »%c%s« %s: neprepoznana izbira »--%s« Neznana sistemska napakavrnitev v začetni delovni imenik ni uspelazmanjkalo pomnilnikani mogoče zabeležiti trenutnega delovnega imenikafreedink-108.4+dfsg/gnulib/po/pt.po0000644000175000017500000001506112421730234014702 0ustar meme# Portuguese translation of the "sh-utils" messages # Copyright (C) 1996 Free Software Foundation, Inc. # Antnio Joo Serras Rendas , 1996 # msgid "" msgstr "" "Project-Id-Version: sh-utils 1.12i\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 1996-11-08 20:03+0100\n" "Last-Translator: Antnio Joo Serras Rendas \n" "Language-Team: Portugus \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: gnulib/lib/error.c:188 #, fuzzy msgid "Unknown system error" msgstr "operador binrio desconhecido" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "demasiados argumentos\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "opo invlida `%s'" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "opo invlida `%s'" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "opo invlida `%s'" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "demasiados argumentos\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "demasiados argumentos\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "no consigo obter a directoria actual" #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "no consigo obter a directoria actual" #: gnulib/lib/xalloc-die.c:34 #, fuzzy msgid "memory exhausted" msgstr "memria virtual esgotada" #, fuzzy #~ msgid "invalid argument %s for %s" #~ msgstr "argumento invlido `%s'" #, fuzzy #~ msgid "ambiguous argument %s for %s" #~ msgstr "falta um argumento a `%s'" #, fuzzy #~ msgid "Valid arguments are:" #~ msgstr "argumento invlido `%s'" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Utilizao: %s [OPO]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Tente `%s --help' para mais informao.\n" #, fuzzy #~ msgid "Print program version" #~ msgstr "erro de leitura" #, fuzzy #~ msgid "program error" #~ msgstr "erro de leitura" #~ msgid "write error" #~ msgstr "erro na escrita" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "no consigo mover `%s' para `%s'" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "no consigo mover `%s' para `%s'" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "%s: apagar directoria `%s'? " #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "%s: apagar directoria `%s'? " #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "%s: apagar directoria `%s'? " #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "ficheiros especiais de tipo bloco no suportados" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "regular file" #~ msgstr "`%s' no um ficheiro normal" #, fuzzy #~ msgid "directory" #~ msgstr "`%s' no uma directoria" #, fuzzy #~ msgid "block special file" #~ msgstr "ficheiros especiais de tipo bloco no suportados" #, fuzzy #~ msgid "character special file" #~ msgstr "ficheiros especiais de tipo caracter no suportados" #, fuzzy #~ msgid "symbolic link" #~ msgstr "no consigo ler ligao (link) simblica `%s'" #, fuzzy #~ msgid "weird file" #~ msgstr "`%s' no um ficheiro normal" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "ficheiros \"fifo\" no suportados" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "ficheiros \"fifo\" no suportados" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "ficheiros \"fifo\" no suportados" #, fuzzy #~ msgid "System error" #~ msgstr "erro na escrita" #, fuzzy #~ msgid "Unknown error" #~ msgstr "operador binrio desconhecido" #, fuzzy #~ msgid "%s: illegal option -- %c\n" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "block size" #~ msgstr "tipo de ordenao" #, fuzzy #~ msgid "%s exists but is not a directory" #~ msgstr "`%s' no uma directoria" #, fuzzy #~ msgid "cannot change owner and/or group of %s" #~ msgstr "aviso: no consigo mudar para a directoria %s" #, fuzzy #~ msgid "cannot create directory %s" #~ msgstr "no consigo obter a directoria actual" #, fuzzy #~ msgid "cannot chdir to directory %s" #~ msgstr "aviso: no consigo mudar para a directoria %s" #, fuzzy #~ msgid "cannot change permissions of %s" #~ msgstr "aviso: no consigo mudar para a directoria %s" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "aviso: no consigo mudar para a directoria %s" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "no consigo obter a directoria actual" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "data invlida `%s'" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "memria virtual esgotada" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "character out of range" #~ msgstr "ficheiros especiais de tipo caracter no suportados" #, fuzzy #~ msgid "invalid user" #~ msgstr "\\%c: caracter de escape invlido" #, fuzzy #~ msgid "invalid group" #~ msgstr "opo invlida `%s'" #, fuzzy #~ msgid "The strings compared were %s and %s." #~ msgstr "no consigo %s `%s' para `%s'" freedink-108.4+dfsg/gnulib/po/eu.po0000644000175000017500000002251612421730234014673 0ustar meme# translation of coreutils-5.2.1.po to Euskara # Basque translation of 5.2.1. # Copyright (C) 2004 Free Software Foundation, Inc. # This file is distributed under the same license as the Coreutils-5.2.1 package. # Mikel Olasagasti , 2004. # msgid "" msgstr "" "Project-Id-Version: coreutils-5.2.1\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2005-01-04 20:27+0100\n" "Last-Translator: Mikel Olasagasti \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Sistema-errore ezezaguna" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: '%s' aukera anbiguoa da\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: '--%s' aukerak ez du argumenturik onartzen\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: '%c%s' aukerak ez du argumenturik onartzen\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: '%s' aukerak argumentu bat behar du\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: '--%s' aukera ezezaguna\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: '%c%s' aukera ezezaguna\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: -- %c aukera baliogabea\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: aukerak --%c argumentu bat behar du\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: '-W %s' aukera anbiguoa da\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: '-W.%s' aukerak ez du argumenturik onartzen\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: '%s' aukerak argumentu bat behar du\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "Inprimatu Fitxategi-izena - e e" #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "Inprimatu Fitxategi-izena - e e" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "memoria agortuta" #~ msgid "invalid argument %s for %s" #~ msgstr "%s baliogabeko argumentua da %s-(r)entzat" #~ msgid "ambiguous argument %s for %s" #~ msgstr "%s argumentu anbiguoa da %s-(r)entzat" #~ msgid "Valid arguments are:" #~ msgstr "Baliozko argumentuak hauek dira:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Beharrezkoak diren argumentuak aukera luzeetan, beharrezkoak dira aukera " #~ "txikietan ere.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Erabilera: %s [AUKERA]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Saiatu `%s --help' erabiltzen informazio gehiagorako.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Programa-erroreen berri emateko idatzi hona: <%s>.\n" #~ msgid "NAME" #~ msgstr "IZENA" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "e" #, fuzzy #~ msgid "program error" #~ msgstr "irakurketa errorea" #~ msgid "write error" #~ msgstr "idazketa errorea" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "errepikatu arte" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "errepikatu arte" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "errorea %s irakurtzen" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "errorea %s idazten" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "errorea %s irakurtzen" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "irekitzeak huts egin du" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "baliogabea" #~ msgid "regular empty file" #~ msgstr "fitxategi erregular hutsa" #~ msgid "regular file" #~ msgstr "Espresio erregularra" #~ msgid "directory" #~ msgstr "direktorioa" #, fuzzy #~ msgid "block special file" #~ msgstr "bloke tamainua" #, fuzzy #~ msgid "character special file" #~ msgstr "offset karakterea zero da" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "esteka sinbolikoa" #~ msgid "socket" #~ msgstr "socket-a" #~ msgid "message queue" #~ msgstr "Bidali ilara" #~ msgid "semaphore" #~ msgstr "semaforoa" #~ msgid "shared memory object" #~ msgstr "memoria partekatuaren objektua" #, fuzzy #~ msgid "typed memory object" #~ msgstr "memoria partekatuaren objektua" #~ msgid "weird file" #~ msgstr "fitxategi arraroa" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "fifo fitxategiek ez dute euskarririk" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "fifo fitxategiek ez dute euskarririk" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "fifo fitxategiek ez dute euskarririk" #, fuzzy #~ msgid "System error" #~ msgstr "idazketa errorea" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Sistema-errore ezezaguna" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: -- %c aukera ilegala\n" #~ msgid "block size" #~ msgstr "bloke tamainua" #~ msgid "%s exists but is not a directory" #~ msgstr "%s badago baina ez da direktorio bat" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "ezin da %s-(r)en jabetza eta/edo taldea aldatu" #~ msgid "cannot create directory %s" #~ msgstr "ezin da %s direktorioa sortu" #, fuzzy #~ msgid "cannot chdir to directory %s" #~ msgstr "ezin da %s direktoriora aldatu" #~ msgid "cannot change permissions of %s" #~ msgstr "ezin da %s-(r)en baimenak aldatu" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "baimenak errepikatu arte" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "ezin da %s esteka sortu" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "baliogabea" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "baliogabea" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "memoria agortuta" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "baliogabea" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "in bilatu" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "baliogabea" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "in bilatu" #~ msgid "^[yY]" #~ msgstr "^[bB]" #~ msgid "^[nN]" #~ msgstr "^[eE]" #~ msgid "character out of range" #~ msgstr "karakterea barrutitik kanpora" #~ msgid "invalid user" #~ msgstr "baliogabeko erabiltzailea" #~ msgid "invalid group" #~ msgstr "baliogabeko taldea" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "ezin da UID zenbaki baten saio taldea lortu" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "programa da eta edo - Orokorra Publikoa Lizentzia bider Libre Softwarea " #~ "edo e e" #~ msgid "Written by %s.\n" #~ msgstr "%s-k idatzia.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "%s-k eta %s-k idatzia.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "%s, %s eta %s-k idatzia.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "%s, %s, %s,\n" #~ "eta %s-k idatzia.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s,\n" #~ "%s eta %s-k idatzia.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s,\n" #~ "%s, %s eta %s-k idatzia.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s,\n" #~ "%s, %s, %s, eta %s-k idatzia.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "%s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "eta %s-k idatzia.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s,\n" #~ "%s, %s, %s, %s,%s, eta %s-k idatzia.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "%s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s,eta beste batzuk idatzia.\n" #~ msgid "string comparison failed" #~ msgstr "kate konparaketak huts egin du" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Ezarri LC_ALL='C' arazo hau une batez konpontzeko" #~ msgid "The strings compared were %s and %s." #~ msgstr "Alderatutako bi kateak %s eta %s izan dira." freedink-108.4+dfsg/gnulib/po/fr.po0000644000175000017500000005250412421730234014671 0ustar meme# Messages français pour GNU concernant gnulib. # Copyright © 1996-, 2008, 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # # Michel Robitaille , 1996-. # Nicolas Provost , 2008. # David Prévot , 2011. msgid "" msgstr "" "Project-Id-Version: gnulib-3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-12-07 20:41-0400\n" "Last-Translator: David Prévot \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 1.2\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Erreur système inconnue" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s : l'option « %s » est ambiguë, possibilités :" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s : l'option « --%s » ne prend pas d'argument\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s : l'option « %c%s » ne prend pas d'argument\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s : l'option « --%s » nécessite un argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s : option « --%s » non reconnue\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s : option « %c%s » non reconnue\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s : option non valable -- « %c »\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s : l'option nécessite un argument -- « %c »\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s : l'option « -W %s » est ambiguë\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s : l'option « -W %s » ne prend pas d'argument\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s : l'option « -W %s » nécessite un argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "impossible de mémoriser le répertoire de travail courant" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "échec de retour au répertoire initial de travail" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "mémoire épuisée" #~ msgid "invalid argument %s for %s" #~ msgstr "argument %s non valable pour %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "argument %s ambigu pour %s" #~ msgid "Valid arguments are:" #~ msgstr "Les arguments valables sont :" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT : la valeur %s est inférieure ou égale à %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s : le paramètre ARGP_HELP_FMT nécessite une valeur" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s : le paramètre ARGP_HELP_FMT doit être positif" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s : paramètre ARGP_HELP_FMT inconnu" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Problème dans ARGP_HELP_FMT : %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Les arguments obligatoires pour la forme longue des options le sont aussi " #~ "pour les formes courtes associées." #~ msgid "Usage:" #~ msgstr "Utilisation :" #~ msgid " or: " #~ msgstr " ou : " #~ msgid " [OPTION...]" #~ msgstr " [OPTION...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "Essayez « %s --help » ou « %s --usage » pour obtenir plus de " #~ "renseignements.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Signalez toute anomalie à %s.\n" #~ msgid "give this help list" #~ msgstr "affiche cette aide" #~ msgid "give a short usage message" #~ msgstr "donne un court message d'utilisation" #~ msgid "NAME" #~ msgstr "NOM" #~ msgid "set the program name" #~ msgstr "définit le nom du programme" #~ msgid "SECS" #~ msgstr "SECS" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "suspension pendant SECS secondes (par défaut 3600)" #~ msgid "print program version" #~ msgstr "affiche la version du programme" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(Erreur du programme) pas de version connue !" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s : trop d'arguments\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(Erreur du programme) l'option aurait dû être reconnue !" #~ msgid "program error" #~ msgstr "erreur du programme" #~ msgid "stack overflow" #~ msgstr "dépassement de pile" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "impossible de trouver un répertoire temporaire, essayez de définir $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "" #~ "impossible de créer un répertoire temporaire en utilisant le modèle " #~ "« %s »." #~ msgid "cannot remove temporary file %s" #~ msgstr "impossible de supprimer le ficher temporaire %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "impossible de supprimer le répertoire temporaire %s" #~ msgid "error closing file" #~ msgstr "erreur de fermeture de fichier" #~ msgid "write error" #~ msgstr "erreur d'écriture" #~ msgid "preserving permissions for %s" #~ msgstr "conservation des permissions de %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "erreur à l'ouverture de « %s » en lecture" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "impossible d'ouvrir le fichier de sauvegarde « %s » en écriture" #~ msgid "error reading \"%s\"" #~ msgstr "erreur de lecture de « %s »" #~ msgid "error writing \"%s\"" #~ msgstr "erreur d'écriture de « %s »" #~ msgid "error after reading \"%s\"" #~ msgstr "erreur après la lecture de « %s »" #~ msgid "fdopen() failed" #~ msgstr "échec de fdopen()" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "compilateur C# non trouvé, essayez d'installer pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "machine virtuelle C# non trouvée, essayez d'installer pnet" #~ msgid "%s subprocess failed" #~ msgstr "échec de sous-processus %s" #~ msgid "regular empty file" #~ msgstr "fichier régulier vide" #~ msgid "regular file" #~ msgstr "fichier régulier" #~ msgid "directory" #~ msgstr "répertoire" #~ msgid "block special file" #~ msgstr "fichier spécial de blocs" #~ msgid "character special file" #~ msgstr "fichier spécial de caractères" #~ msgid "fifo" #~ msgstr "PEPS (FIFO)" #~ msgid "symbolic link" #~ msgstr "lien symbolique" #~ msgid "socket" #~ msgstr "socket" #~ msgid "message queue" #~ msgstr "file de messages" #~ msgid "semaphore" #~ msgstr "sémaphore" #~ msgid "shared memory object" #~ msgstr "objet de mémoire partagée" #~ msgid "typed memory object" #~ msgstr "objet mémoire typé" #~ msgid "weird file" #~ msgstr "fichier bizarre" #~ msgid "Address family for hostname not supported" #~ msgstr "Famille d'adresses du nom d'hôte non pris en charge" #~ msgid "Temporary failure in name resolution" #~ msgstr "Échec temporaire lors de la résolution de noms" #~ msgid "Bad value for ai_flags" #~ msgstr "Mauvaise valeur pour ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Échec définitif lors de la résolution de noms" #~ msgid "ai_family not supported" #~ msgstr "ai_family non pris en charge" #~ msgid "Memory allocation failure" #~ msgstr "Échec d'allocation mémoire" #~ msgid "No address associated with hostname" #~ msgstr "Aucune adresse associée au nom d'hôte" #~ msgid "Name or service not known" #~ msgstr "Nom ou service inconnu" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Nom de serveur non pris en charge pour ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype non pris en charge" #~ msgid "System error" #~ msgstr "Erreur système" #~ msgid "Argument buffer too small" #~ msgstr "Mémoire tampon d'argument trop petite" #~ msgid "Processing request in progress" #~ msgstr "Traitement de la requête en cours" #~ msgid "Request canceled" #~ msgstr "Requête annulée" #~ msgid "Request not canceled" #~ msgstr "Requête non annulée" #~ msgid "All requests done" #~ msgstr "Requêtes toutes traitées" #~ msgid "Interrupted by a signal" #~ msgstr "Interruption par un signal" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Chaîne de paramètre mal encodé" #~ msgid "Unknown error" #~ msgstr "Erreur inconnue" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "argument source_version non valable pour compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "argument target_version non valable pour compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "échec de création de « %s »" #~ msgid "error while writing \"%s\" file" #~ msgstr "erreur lors de l'écriture du fichier « %s »" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "compilateur Java non trouvé, essayez d'installer gcj ou de définir $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "machine virtuelle Java non trouvée, essayez d'installer gij ou de définir " #~ "$JAVAC" #~ msgid "%s subprocess I/O error" #~ msgstr "erreur d'entrée sortie du sous-processus %s" #~ msgid "cannot change permissions of %s" #~ msgstr "impossible de modifier les permissions de %s" #~ msgid "cannot create directory %s" #~ msgstr "impossible de créer le répertoire %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Échec d'ouverture de /dev/zero en lecture" #~ msgid "creation of reading thread failed" #~ msgstr "échec de création du processus de lecture" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "" #~ "impossible de configurer l'entrée sortie non bloquante au sous-processus " #~ "%s" #~ msgid "communication with %s subprocess failed" #~ msgstr "échec de communication avec le sous-processus %s" #~ msgid "write to %s subprocess failed" #~ msgstr "échec d'écriture vers le sous-processus %s" #~ msgid "read from %s subprocess failed" #~ msgstr "échec de lecture depuis le sous-processus %s" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "le sous-processus %s s'est terminé avec le code de retour %d" #~ msgid "creation of threads failed" #~ msgstr "échec de création de processus" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "le sous-processus de %s s'est terminé avec le code de retour %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "« " #~ msgid "'" #~ msgstr " »" #~ msgid "Success" #~ msgstr "Succès" #~ msgid "No match" #~ msgstr "Pas de correspondance" #~ msgid "Invalid regular expression" #~ msgstr "Expression rationnelle non valable" #~ msgid "Invalid collation character" #~ msgstr "Caractère d'assemblage non valable" #~ msgid "Invalid character class name" #~ msgstr "Nom de classe de caractères non valable" #~ msgid "Trailing backslash" #~ msgstr "Barre oblique inverse en fin de ligne" #~ msgid "Invalid back reference" #~ msgstr "Référence antérieure non valable" #~ msgid "Unmatched [ or [^" #~ msgstr "[ ou [^ non appairé" #~ msgid "Unmatched ( or \\(" #~ msgstr "( ou \\( non appairée" #~ msgid "Unmatched \\{" #~ msgstr "\\{ non appairée" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Le contenu de \\{\\} n'est pas valable" #~ msgid "Invalid range end" #~ msgstr "Borne finale de l'intervalle non valable" #~ msgid "Memory exhausted" #~ msgstr "Mémoire épuisée" #~ msgid "Invalid preceding regular expression" #~ msgstr "Expression rationnelle précédente non valable" #~ msgid "Premature end of regular expression" #~ msgstr "Fin prématurée d'expression rationnelle" #~ msgid "Regular expression too big" #~ msgstr "Expression rationnelle trop grande" #~ msgid "Unmatched ) or \\)" #~ msgstr ") ou \\) non appairée" #~ msgid "No previous regular expression" #~ msgstr "Pas d'expression rationnelle précédente" #~ msgid "^[yY]" #~ msgstr "^[oOyY].*" #~ msgid "^[nN]" #~ msgstr "^[nN].*" #~ msgid "setting permissions for %s" #~ msgstr "impossible de définir les permissions de %s" #~ msgid "Hangup" #~ msgstr "Raccrocher" #~ msgid "Interrupt" #~ msgstr "Interrompre" #~ msgid "Quit" #~ msgstr "Quitter" #~ msgid "Illegal instruction" #~ msgstr "Instruction illégale" #~ msgid "Trace/breakpoint trap" #~ msgstr "Piège de trace ou point de d'arrêt " #~ msgid "Aborted" #~ msgstr "Abandonné" #~ msgid "Floating point exception" #~ msgstr "Exception de virgule flottante" #~ msgid "Killed" #~ msgstr "Tué" #~ msgid "Bus error" #~ msgstr "Erreur de bus" #~ msgid "Segmentation fault" #~ msgstr "Erreur de segmentation" #~ msgid "Broken pipe" #~ msgstr "Tube rompu" #~ msgid "Alarm clock" #~ msgstr "Réveil" #~ msgid "Terminated" #~ msgstr "Terminé" #~ msgid "Urgent I/O condition" #~ msgstr "Condition d'entrée sortie urgente" #~ msgid "Stopped (signal)" #~ msgstr "Arrêté (signal)" #~ msgid "Stopped" #~ msgstr "Arrêté" #~ msgid "Continued" #~ msgstr "Continué" #~ msgid "Child exited" #~ msgstr "Fin du processus fils" #~ msgid "Stopped (tty input)" #~ msgstr "Arrêté (entrée de tty)" #~ msgid "Stopped (tty output)" #~ msgstr "Arrêté (sortie de tty)" #~ msgid "I/O possible" #~ msgstr "Entrée sortie possible" #~ msgid "CPU time limit exceeded" #~ msgstr "Temps limite de processeur dépassé" #~ msgid "File size limit exceeded" #~ msgstr "Taille limite de fichier dépassée" #~ msgid "Virtual timer expired" #~ msgstr "Temporisation virtuelle dépassée" #~ msgid "Profiling timer expired" #~ msgstr "Temporisation de profilage dépassée" #~ msgid "Window changed" #~ msgstr "Fenêtre modifiée" #~ msgid "User defined signal 1" #~ msgstr "Signal 1 défini par utilisateur" #~ msgid "User defined signal 2" #~ msgstr "Signal 2 défini par utilisateur" #~ msgid "EMT trap" #~ msgstr "Piège EMT" #~ msgid "Bad system call" #~ msgstr "Mauvais appel système" #~ msgid "Stack fault" #~ msgstr "Défaut de pile" #~ msgid "Information request" #~ msgstr "Demande de renseignements" #~ msgid "Power failure" #~ msgstr "Échec d'alimentation" #~ msgid "Resource lost" #~ msgstr "Ressource perdue" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "Erreur d'écriture vers un tube ou un socket fermé" #~ msgid "cannot create pipe" #~ msgstr "impossible de créer un tube (« pipe »)" #~ msgid "Real-time signal %d" #~ msgstr "Signal %d en temps réel" #~ msgid "Unknown signal %d" #~ msgstr "Signal %d inconnu" #~ msgid "iconv function not usable" #~ msgstr "fonction iconv non utilisable" #~ msgid "iconv function not available" #~ msgstr "fonction iconv non disponible" #~ msgid "character out of range" #~ msgstr "caractère hors limites" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "impossible de convertir U+%04X dans le jeu de caractères local" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "impossible de convertir U+%04X dans le jeu de caractères local : %s" #~ msgid "invalid user" #~ msgstr "utilisateur non valable" #~ msgid "invalid group" #~ msgstr "groupe non valable" #~ msgid "invalid spec" #~ msgstr "spécification non valable" #~ msgid "unable to display error message" #~ msgstr "impossible d'afficher le message d'erreur" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Empaqueté par %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Empaqueté par %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licence GPLv3+ : GNU GPL version 3 ou ultérieure \n" #~ "Logiciel libre : vous êtes libre de le modifier ou de le redistribuer.\n" #~ "Il n'y a AUCUNE GARANTIE, dans les limites permises par la loi.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Écrit par %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Écrit par %s et %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Écrit par %s, %s et %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Écrit par %s, %s, %s,\n" #~ "et %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Écrit par %s, %s, %s,\n" #~ "%s et %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Écrit par %s, %s, %s,\n" #~ "%s, %s, et %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Écrit par %s, %s, %s,\n" #~ "%s, %s, %s, et %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Écrit par %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "et %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Écrit par %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s et %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Écrit par %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s et d'autres.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Signalez toute anomalie à : %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Signalez les anomalies de %s à : %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "page d'accueil de %s : <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "page d'accueil de %s : \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Aide globale sur les logiciels GNU : \n" #~ msgid "_open_osfhandle failed" #~ msgstr "échec de _open_osfhandle" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "" #~ "impossible de restaurer le descripteur de fichier (fd) %d : échec de dup2" #~ msgid "%s subprocess" #~ msgstr "sous-processus %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "le sous-processus %s a reçu un signal fatal %d" #~ msgid "stdin" #~ msgstr "entrée standard (stdin)" #~ msgid "stdout" #~ msgstr "sortie standard (stdout)" #~ msgid "stderr" #~ msgstr "sortie d'erreur (stderr)" #~ msgid "unknown stream" #~ msgstr "flux inconnu" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "impossible de rouvrir %s en mode %s" #~ msgid "string comparison failed" #~ msgstr "échec de comparaison de chaîne" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Définir LC_ALL='C' pour contourner le problème." #~ msgid "The strings compared were %s and %s." #~ msgstr "Les chaînes comparées étaient %s et %s." #~ msgid "cannot perform formatted output" #~ msgstr "impossible mettre en forme la sortie formatée" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "argument %s%s non valable « %s »" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "suffixe non valable dans l'argument %s%s « %s »" #~ msgid "%s%s argument `%s' too large" #~ msgstr "argument %s%s « %s » trop grand" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s : option illégale -- %c\n" #, fuzzy #~ msgid "" #~ "\n" #~ "Report bugs to <%s>.\n" #~ msgstr "Rapportez toute anomalie à %s.\n" #~ msgid "block size" #~ msgstr "taille de bloc" #~ msgid "%s exists but is not a directory" #~ msgstr "%s existe mais n'est pas un répertoire" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "ne peut modifier le propriétraire et/ou le groupe de %s" #~ msgid "cannot chdir to directory %s" #~ msgstr "ne peut aller vers le répertoire %s" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "" #~ "ne peut obtenir le groupe d'établissement de session à partir du UID " #~ "numérique" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "Ce programme est un logiciel libre; vous pouvez le redistribuer ou le\n" #~ "modifier selon les termes de la License Publique Générale de GNU, " #~ "publiée\n" #~ "par la Free Software Foundation (soit la version 2 ou soit, à votre\n" #~ "discrétion, toute version ultérieure).\n" #~ "\n" freedink-108.4+dfsg/gnulib/po/pt_BR.po0000644000175000017500000005261612421730234015274 0ustar meme# Brazilian Portuguese translation for gnulib # Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Cyro Mendes De Moraes Neto , 1998. # Rodrigo Stulzer Lopes , 2001. # Juan Carlos Castro y Castro , 2003. # Rafael Ferreira , 2013. # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2013-12-15 02:12-0300\n" "Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.7\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Erro desconhecido de sistema" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: a opção \"%s\" está ambígua; possibilidades:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a opção \"--%s\" não admite argumentos\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: a opção \"%c%s\" não admite argumentos\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: a opção \"--%s\" exige um argumento\n" # , c-format #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opção desconhecida \"--%s\"\n" # , c-format #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opção desconhecida \"%c%s\"\n" # , c-format #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: opção inválida -- \"%c\"\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: a opção exige um argumento -- \"%c\"\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: a opção \"-W %s\" está ambígua\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: a opção \"-W %s\" não admite argumentos\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: a opção \"-W %s\" exige um argumento\n" # , c-format #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "não foi possível registrar no diretório de trabalho atual" # , c-format #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "falha em retornar para o diretório de trabalho inicial" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "memória esgotada" # , c-format #~ msgid "invalid argument %s for %s" #~ msgstr "%s é um argumento inválido para %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "%s é um argumento ambíguo para %s" #~ msgid "Valid arguments are:" #~ msgstr "Os argumentos válidos são:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: O valor %s é menor do que ou igual a %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: O parâmetro ARGP_HELP_FMT requer um valor" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: O parâmetro ARGP_HELP_FMT deve ser positivo" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Parâmetro ARGP_HELP_FMT desconhecido" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Lixo em ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Argumentos obrigatórios ou opcionais para opções longas também o são para " #~ "quaisquer opções curtas correspondentes." #~ msgid "Usage:" #~ msgstr "Uso:" #~ msgid " or: " #~ msgstr " ou: " # , c-format #~ msgid " [OPTION...]" #~ msgstr " [OPÇÃO...]" # , c-format #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Tente \"%s --help\" ou \"%s --usage\" para mais informação.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Relate problemas para %s.\n" #~ msgid "give this help list" #~ msgstr "fornece esta lista de ajuda" #~ msgid "give a short usage message" #~ msgstr "fornece uma mensagem de uso curta" #~ msgid "NAME" #~ msgstr "NOME" #~ msgid "set the program name" #~ msgstr "define o nome do programa" #~ msgid "SECS" #~ msgstr "SEGS" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "segura por SEGS segundos (padrão 3600)" #~ msgid "print program version" #~ msgstr "mostra a versão do programa" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(ERRO NO PROGRAMA) Nenhuma versão conhecida!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Número excessivo de argumentos\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(ERRO NO PROGRAMA) A opção deveria ter sido reconhecida!?" #~ msgid "program error" #~ msgstr "erro no programa" #~ msgid "stack overflow" #~ msgstr "estouro de pilha" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "não foi possível localizar um diretório temporário, tente configurar " #~ "$TMPDIR" # , c-format #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "não é possível criar um diretório temporário usando o modelo \"%s\"" # , c-format #~ msgid "cannot remove temporary file %s" #~ msgstr "não é possível remover o arquivo temporário %s" # , c-format #~ msgid "cannot remove temporary directory %s" #~ msgstr "não é possível remover um diretório temporário %s" #~ msgid "error closing file" #~ msgstr "erro ao fechar o arquivo" #~ msgid "write error" #~ msgstr "erro de escrita" # , c-format #~ msgid "preserving permissions for %s" #~ msgstr "preservando permissões de %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "erro ao abrir \"%s\" para leitura" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "não foi possível abrir o arquivo backup \"%s\" para escrita" # , c-format #~ msgid "error reading \"%s\"" #~ msgstr "erro ao ler \"%s\"" # , c-format #~ msgid "error writing \"%s\"" #~ msgstr "erro ao escrever \"%s\"" # , c-format #~ msgid "error after reading \"%s\"" #~ msgstr "erro após leitura de \"%s\"" #~ msgid "fdopen() failed" #~ msgstr "fdopen() falhou" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "O compilador de C# não foi encontrado, tente instalar pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "A máquina virtual de C# não foi encontrado, tente instalar pnet" # , c-format #~ msgid "%s subprocess failed" #~ msgstr "%s: o subprocesso falhou" #~ msgid "regular empty file" #~ msgstr "arquivo comum vazio" #~ msgid "regular file" #~ msgstr "arquivo comum" #~ msgid "directory" #~ msgstr "diretório" #~ msgid "block special file" #~ msgstr "arquivo especial de bloco" #~ msgid "character special file" #~ msgstr "arquivo especial caractere" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "link simbólico" #~ msgid "socket" #~ msgstr "soquete" #~ msgid "message queue" #~ msgstr "fila de mensagens" #~ msgid "semaphore" #~ msgstr "semáforo" #~ msgid "shared memory object" #~ msgstr "objeto de memória compartilhada" #~ msgid "typed memory object" #~ msgstr "objeto de memória tipificada" #~ msgid "weird file" #~ msgstr "arquivo estranho" #~ msgid "Address family for hostname not supported" #~ msgstr "Não há suporte para família de endereços para nome de máquina" #~ msgid "Temporary failure in name resolution" #~ msgstr "Falha temporária na resolução de nome" #~ msgid "Bad value for ai_flags" #~ msgstr "Valor inválido para ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Falha irrecuperável na resolução de nome" #~ msgid "ai_family not supported" #~ msgstr "Não há suporte para a ai_family" #~ msgid "Memory allocation failure" #~ msgstr "Falha na alocação de memória" #~ msgid "No address associated with hostname" #~ msgstr "Nenhum endereço associado ao nome de máquina" #~ msgid "Name or service not known" #~ msgstr "Nome ou serviço desconhecido" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname sem suporte no ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "Não há suporte a ai_socktype" #~ msgid "System error" #~ msgstr "Erro de sistema" #~ msgid "Argument buffer too small" #~ msgstr "Buffer de argumentos é pequeno demais" #~ msgid "Processing request in progress" #~ msgstr "Processamento de requisição em andamento" #~ msgid "Request canceled" #~ msgstr "Requisição cancelada" #~ msgid "Request not canceled" #~ msgstr "Requisição não cancelada" #~ msgid "All requests done" #~ msgstr "Todas as requisições foram realizadas" #~ msgid "Interrupted by a signal" #~ msgstr "Interrompido por um sinal" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Texto do parâmetro codificado incorretamente" #~ msgid "Unknown error" #~ msgstr "Erro desconhecido" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "argumento source_version inválido para compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "argumento target_version inválido para compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "falha ao criar \"%s\"" # , c-format #~ msgid "error while writing \"%s\" file" #~ msgstr "erro ao escrever o arquivo \"%s\"" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "O compilador de Java não foi encontrado, tente instalar gcj ou configurar " #~ "$JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "A máquina virtual de Java não foi encontrada, tente instalar gij ou " #~ "configurar $JAVA" # , c-format #~ msgid "%s subprocess I/O error" #~ msgstr "%s: erro de E/S no subprocesso" # , c-format #~ msgid "cannot change permissions of %s" #~ msgstr "não foi possível mudar permissões de %s" # , c-format #~ msgid "cannot create directory %s" #~ msgstr "não foi possível criar o diretório %s" # , c-format #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Falha ao abrir /dev/zero para leitura" #~ msgid "creation of reading thread failed" #~ msgstr "a criação da thread de leitura falhou" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "" #~ "não foi possível configurar E/S não bloqueante para o subprocesso %s" # , c-format #~ msgid "communication with %s subprocess failed" #~ msgstr "a comunicação com o subprocesso %s falhou" # , c-format #~ msgid "write to %s subprocess failed" #~ msgstr "escrita no subprocesso %s falhou" # , c-format #~ msgid "read from %s subprocess failed" #~ msgstr "leitura de subprocesso %s falhou" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "o subprocesso %s terminou com o código de saída %d" #~ msgid "creation of threads failed" #~ msgstr "a criação das threads falhou" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "o subprocesso %s terminou com o código de saída %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "\"" #~ msgid "'" #~ msgstr "\"" #~ msgid "Success" #~ msgstr "Sucesso" #~ msgid "No match" #~ msgstr "Nenhuma ocorrência do padrão" # , c-format #~ msgid "Invalid regular expression" #~ msgstr "Expressão regular inválida" # , c-format #~ msgid "Invalid collation character" #~ msgstr "Caractere de colagem inválido" # , c-format #~ msgid "Invalid character class name" #~ msgstr "Nome inválido de categoria de caracteres" #~ msgid "Trailing backslash" #~ msgstr "Barra invertida excedente ao final" #~ msgid "Invalid back reference" #~ msgstr "Retrorreferência inválida" #~ msgid "Unmatched [ or [^" #~ msgstr "[ ou [^ sem correspondente" #~ msgid "Unmatched ( or \\(" #~ msgstr "( ou \\( sem correspondente" #~ msgid "Unmatched \\{" #~ msgstr "\\{ sem correspondente" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Conteúdo de \\{\\} inválido" # , c-format #~ msgid "Invalid range end" #~ msgstr "Fim de intervalo inválido" #~ msgid "Memory exhausted" #~ msgstr "Memória esgotada" # , c-format #~ msgid "Invalid preceding regular expression" #~ msgstr "A expressão regular precedente é inválida" #~ msgid "Premature end of regular expression" #~ msgstr "Fim prematuro de expressão regular" # , c-format #~ msgid "Regular expression too big" #~ msgstr "expressão regular grande demais" #~ msgid "Unmatched ) or \\)" #~ msgstr ") ou \\) sem correspondente" #~ msgid "No previous regular expression" #~ msgstr "Nenhuma expressão regular anterior" #~ msgid "^[yY]" #~ msgstr "^[SsyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" # , c-format #~ msgid "setting permissions for %s" #~ msgstr "definindo permissões de %s" #~ msgid "Hangup" #~ msgstr "Desconexão" #~ msgid "Interrupt" #~ msgstr "Interrupção" #~ msgid "Quit" #~ msgstr "Desistência" #~ msgid "Illegal instruction" #~ msgstr "Instrução ilegal" #~ msgid "Trace/breakpoint trap" #~ msgstr "Armadilha de ponto de interrupção/interceptações" #~ msgid "Aborted" #~ msgstr "Abortado" #~ msgid "Floating point exception" #~ msgstr "Exceção de ponto flutuante" #~ msgid "Killed" #~ msgstr "Morto" #~ msgid "Bus error" #~ msgstr "Erro no barramento" #~ msgid "Segmentation fault" #~ msgstr "Falha de segmentação" #~ msgid "Broken pipe" #~ msgstr "Conexão interrompida" #~ msgid "Alarm clock" #~ msgstr "Despertador" #~ msgid "Terminated" #~ msgstr "Terminado" #~ msgid "Urgent I/O condition" #~ msgstr "Condição de E/S urgente" #~ msgid "Stopped (signal)" #~ msgstr "Suspenso (sinal)" #~ msgid "Stopped" #~ msgstr "Suspenso" #~ msgid "Continued" #~ msgstr "Continuado" #~ msgid "Child exited" #~ msgstr "Processo filho saiu" #~ msgid "Stopped (tty input)" #~ msgstr "Suspenso (entrada tty)" #~ msgid "Stopped (tty output)" #~ msgstr "Suspenso (saída tty)" #~ msgid "I/O possible" #~ msgstr "E/S possível" #~ msgid "CPU time limit exceeded" #~ msgstr "Limite de tempo na CPU excedido" #~ msgid "File size limit exceeded" #~ msgstr "Limite de tamanho de arquivo excedido" #~ msgid "Virtual timer expired" #~ msgstr "Temporizador virtual expirou" #~ msgid "Profiling timer expired" #~ msgstr "Temporizador de perfilamento expirou" #~ msgid "Window changed" #~ msgstr "Janela alterada" #~ msgid "User defined signal 1" #~ msgstr "Sinal 1 definido pelo usuário" #~ msgid "User defined signal 2" #~ msgstr "Sinal 2 definido pelo usuário" #~ msgid "EMT trap" #~ msgstr "Armadilha de EMT" #~ msgid "Bad system call" #~ msgstr "Chamada inválida de sistema" #~ msgid "Stack fault" #~ msgstr "Falha na pilha" #~ msgid "Information request" #~ msgstr "Requisição de informação" #~ msgid "Power failure" #~ msgstr "Falha de energia" #~ msgid "Resource lost" #~ msgstr "Recurso perdido" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "erro de escrita para um redirecionamento (pipe) ou soquete fechado" # , c-format #~ msgid "cannot create pipe" #~ msgstr "não foi possível criar redirecionamento" #~ msgid "Real-time signal %d" #~ msgstr "Sinal de tempo real %d" #~ msgid "Unknown signal %d" #~ msgstr "Sinal desconhecido %d" #~ msgid "iconv function not usable" #~ msgstr "função iconv não utilizável" #~ msgid "iconv function not available" #~ msgstr "função iconv não disponível" # , c-format #~ msgid "character out of range" #~ msgstr "caractere fora do intervalo" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "" #~ "não foi possível converter U+%04X para o conjunto de caracteres local" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "" #~ "não foi possível converter U+%04X para o conjunto de caracteres local: %s" #~ msgid "invalid user" #~ msgstr "usuário inválido" #~ msgid "invalid group" #~ msgstr "grupo inválido" #~ msgid "invalid spec" #~ msgstr "especificação inválida" #~ msgid "unable to display error message" #~ msgstr "não foi possível exibir uma mensagem de erro" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Empacotado por %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Empacotado por %s\n" #~ msgid "(C)" #~ msgstr "(C)" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licença GPLv3+: GNU GPL versão 3 ou posterior \n" #~ "Este é um software livre: você é livre para alterá-lo e redistribuí-lo.\n" #~ "NÃO HÁ GARANTIA, na máxima extensão permitida pela lei.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Escrito por %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Escrito por %s e %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Escrito por %s, %s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s\n" #~ "e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s e outros.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Relate problemas para: %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Relate problemas do %s para: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Página do %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Página do %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Ajuda geral no uso de softwares GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle falhou" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "não foi possível restaurar descritor de arquivo %d: dup2 falhou" # , c-format #~ msgid "%s subprocess" #~ msgstr "%s: subprocesso" # , c-format #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "o subprocesso %s obteve sinal fatal %d" #~ msgid "stdin" #~ msgstr "entrada padrão" #~ msgid "stdout" #~ msgstr "saída padrão" #~ msgid "stderr" #~ msgstr "erro padrão" #~ msgid "unknown stream" #~ msgstr "fluxo desconhecido" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "falha ao reabrir %s com modo %s" #~ msgid "string comparison failed" #~ msgstr "a comparação de textos falhou" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Defina LC_ALL='C' para contornar o problema." #~ msgid "The strings compared were %s and %s." #~ msgstr "Os textos comparados foram %s e %s." #~ msgid "cannot perform formatted output" #~ msgstr "não foi possível fazer a saída formatada" # , c-format #~ msgid "invalid %s%s argument `%s'" #~ msgstr "argumento inválido para %s%s: \"%s\"" # , c-format #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "sufixo inválido no argumento para %s%s: \"%s\"" #~ msgid "%s%s argument `%s' too large" #~ msgstr "argumento de %s%s \"%s\" é grande demais" # , c-format #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: opção inválida -- %c\n" #~ msgid "block size" #~ msgstr "tamanho do bloco" #~ msgid "%s exists but is not a directory" #~ msgstr "%s existe, mas não é um diretório" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "não pode substituir dono e/ou grupo de %s" # , c-format #~ msgid "cannot chdir to directory %s" #~ msgstr "impossível mudar para diretório %s" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "nao foi possivel obter um grupo e login de um UID numerico " #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "Este programa é um software livre, você pode redistribuí-lo e/ou modificá-" #~ "lo\n" #~ "sobre os termos da licença pública geral GNU (GPL - General Public " #~ "License)\n" #~ "publicada pela Free Software Foundation, versão 2 ou posteriores.\n" #~ "\n" freedink-108.4+dfsg/gnulib/po/et.gmo0000644000175000017500000000304012421730234015025 0ustar meme 01,M,z- (?_-t*++,(!Df0 .  %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '--%s' doesn't allow an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 2.0.0.3462.e9796 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-05-19 15:10+0300 Last-Translator: Toomas Soome Language-Team: Estonian Language: et MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=2; plural=(n != 1); %s: vigane vti -- '%c' %s: vti '%c%s' ei luba kasutada argumenti %s: vti '--%s' ei luba kasutada argumenti %s: vti '-W %s' ei luba kasutada argumenti %s: vti '-W %s' on segane %s: vti nuab argumenti -- '%c' %s: tundmatu vti '%c%s' %s: tundmatu vti '--%s' Tundmatu ssteemne vigaesialgsesse tkataloogi ei nnestu tagasi minnamlu on otsasei nnestu registreerida jooksvat tkataloogifreedink-108.4+dfsg/gnulib/po/vi.po0000644000175000017500000005303112421730234014674 0ustar meme# Vietnamese translation for GNU Lib. # Bản dịch Tiếng Việt dành cho GNU Lib. # Copyright © 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Clytie Siddall , 2006-2010. # Trần Ngọc Quân , 2012-2014. # msgid "" msgstr "" "Project-Id-Version: gnulib-3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2014-01-13 08:31+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.5.5\n" "X-Poedit-SourceCharset: utf-8\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Gặp lỗi hệ thống chưa biết" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: tùy chọn “%s” chưa rõ ràng; khả năng là:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: tùy chọn “--%s” không cho phép đối số\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: tùy chọn “%c%s” không cho phép đối số\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: tùy chọn “--%s” yêu cầu một đối số\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: không nhận ra tùy chọn “--%s”\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: không nhận ra tùy chọn “%c%s”\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: tùy chọn không hợp lệ -- “%c”\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: tùy chọn yêu cầu một đối số -- “%c”\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: tùy chọn “-W %s” chưa rõ ràng\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: tùy chọn “-W %s” không cho phép đối số\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: tùy chọn “-W %s” yêu cầu một đối số\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "không thể ghi lại thư mục làm việc hiện thời" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "gặp lỗi khi quay trở về thư mục làm việc ban đầu" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "hết bộ nhớ" #~ msgid "invalid argument %s for %s" #~ msgstr "đối số không hợp lệ %s cho %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "đối số chưa rõ ràng %s dành cho %s" #~ msgid "Valid arguments are:" #~ msgstr "Các đối số hợp lệ:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: giá trị %s nhỏ hơn hoặc bằng %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: tham số “ARGP_HELP_FMT” cần được gán giá trị" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: tham số “ARGP_HELP_FMT” phải là số dương" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Không biết tham số “ARGP_HELP_FMT”" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Gặp rác trong “ARGP_HELP_FMT”: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Các đối số là bắt buộc hay chỉ là tùy chọn khi dùng với tùy chọn dài thì " #~ "tùy chọn ngắn tương ứng cũng vậy." #~ msgid "Usage:" #~ msgstr "Cách dùng:" #~ msgid " or: " #~ msgstr " hoặc:" #~ msgid " [OPTION...]" #~ msgstr " [TÙY_CHỌN...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "Hãy chạy “%s --help” (trợ giúp) hay “%s --usage” (cách dùng) để xem thông " #~ "tin thêm.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Hãy thông báo lỗi cho %s.\n" #~ msgid "give this help list" #~ msgstr "hiển thị trợ giúp này" #~ msgid "give a short usage message" #~ msgstr "hiển thị cách dùng dạng ngắn gọn" #~ msgid "NAME" #~ msgstr "TÊN" #~ msgid "set the program name" #~ msgstr "đặt tên chương trình" #~ msgid "SECS" #~ msgstr "GIÂY" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "treo trong vòng GIÂY giây (mặc định là 3600)" #~ msgid "print program version" #~ msgstr "in ra phiên bản chương trình" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(LỖI CHƯƠNG TRÌNH) Không có phiên bản đã biết ?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Quá nhiều đối số\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(LỖI CHƯƠNG TRÌNH) Tùy chọn đáng ra nên được nhận diện!?" #~ msgid "program error" #~ msgstr "lỗi chương trình" #~ msgid "stack overflow" #~ msgstr "tràn ngăn xếp" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "không tìm thấy thư mục tạm thời, hãy thử đặt biến môi trường $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "không thể tạo một thư mục tạm thời dùng mẫu “%s”" #~ msgid "cannot remove temporary file %s" #~ msgstr "không thể gỡ bỏ tập tin tạm thời %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "không thể gỡ bỏ thư mục tạm thời %s" #~ msgid "error closing file" #~ msgstr "lỗi đóng tập tin" #~ msgid "write error" #~ msgstr "lỗi ghi" #~ msgid "preserving permissions for %s" #~ msgstr "đang bảo tồn quyền hạn cho %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "gặp lỗi khi mở “%s” để đọc" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "không thể mở tập tin sao lưu dự phòng “%s” để ghi" #~ msgid "error reading \"%s\"" #~ msgstr "gặp lỗi khi đọc “%s”" #~ msgid "error writing \"%s\"" #~ msgstr "gặp lỗi khi ghi “%s”" #~ msgid "error after reading \"%s\"" #~ msgstr "gặp lỗi sau khi đọc “%s”" #~ msgid "fdopen() failed" #~ msgstr "fdopen() bị lỗi" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "Không tìm thấy trình biên dịch C# nên thử cài đặt pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "Không tìm thấy cơ chế ảo C# nên thử cài đặt pnet" #~ msgid "%s subprocess failed" #~ msgstr "Tiến trình con %s bị lỗi" #~ msgid "regular empty file" #~ msgstr "tập tin rỗng kiểu thường" #~ msgid "regular file" #~ msgstr "tập tin thông thường" #~ msgid "directory" #~ msgstr "thư mục" #~ msgid "block special file" #~ msgstr "tập tin đặc biệt khối" #~ msgid "character special file" #~ msgstr "tập tin đặc biệt ký tự" #~ msgid "fifo" #~ msgstr "fifo (vào trước, ra trước)" #~ msgid "symbolic link" #~ msgstr "liên kết mềm" #~ msgid "socket" #~ msgstr "ổ cắm" #~ msgid "message queue" #~ msgstr "hàng đợi thông điệp" #~ msgid "semaphore" #~ msgstr "cờ hiệu" #~ msgid "shared memory object" #~ msgstr "đối tượng bộ nhớ dùng chung" #~ msgid "typed memory object" #~ msgstr "đốí tượng bộ nhớ đánh kiểu" #~ msgid "weird file" #~ msgstr "tập tin kỳ quặc" #~ msgid "Address family for hostname not supported" #~ msgstr "Họ địa chỉ dành cho tên máy không được hỗ trợ" #~ msgid "Temporary failure in name resolution" #~ msgstr "Tạm thời không thể quyết định tên" #~ msgid "Bad value for ai_flags" #~ msgstr "Giá trị sai đối với “ai_flags” (cờ)" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Lỗi không thể phục hồi khi phân giải tên" #~ msgid "ai_family not supported" #~ msgstr "Không hỗ trợ “ai_family”" #~ msgid "Memory allocation failure" #~ msgstr "Lỗi cấp phát bộ nhớ" #~ msgid "No address associated with hostname" #~ msgstr "Không có địa chỉ liên quan đến tên máy" #~ msgid "Name or service not known" #~ msgstr "Không nhận ra tên hay dịch vụ" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Không hỗ trợ tên máy phục vụ đối với “ai_socktype” (kiểu ổ cắm)" #~ msgid "ai_socktype not supported" #~ msgstr "Không hỗ trợ “ai-socktype” (kiểu ổ cắm)" #~ msgid "System error" #~ msgstr "Lỗi hệ thống" #~ msgid "Argument buffer too small" #~ msgstr "Vùng đệm đối số quá ngắn" #~ msgid "Processing request in progress" #~ msgstr "Yêu cầu xử lý đang chạy" #~ msgid "Request canceled" #~ msgstr "Yêu cầu bị hủy bỏ" #~ msgid "Request not canceled" #~ msgstr "Yêu cầu chưa bị hủy bỏ" #~ msgid "All requests done" #~ msgstr "Mọi yêu cầu hoàn tất" #~ msgid "Interrupted by a signal" #~ msgstr "bị tín hiệu gián đoạn" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Chuỗi tham số không phải được mã hóa đúng" #~ msgid "Unknown error" #~ msgstr "Gặp lỗi không rõ" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "" #~ "đối số phiên bản nguồn “source_version” không hợp lệ đối với hạn Java " #~ "biên dịch “compile_java_class”" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "" #~ "đối số phiên bản đích “source_version” không hợp lệ đối với hạn Java biên " #~ "dịch “compile_java_class”" #~ msgid "failed to create \"%s\"" #~ msgstr "gặp lỗi khi tạo “%s”" #~ msgid "error while writing \"%s\" file" #~ msgstr "gặp lỗi khi ghi tập tin “%s”" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Không tìm thấy trình biên dịch Java nên thử cài đặt trình “gcj” hoặc đặt " #~ "biến môi trường “$JAVAC”." #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Không tìm thấy cơ chế ảo Java nên thử cài đặt trình “gcj” hoặc đặt biến " #~ "môi trường “$JAVAC”." #~ msgid "%s subprocess I/O error" #~ msgstr "Lỗi V/R tiến trình con %s" #~ msgid "cannot change permissions of %s" #~ msgstr "không thể thay đổi quyền hạn của %s" #~ msgid "cannot create directory %s" #~ msgstr "không thể tạo thư mục %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Gặp lỗi khi mở thiết bị “/dev/zero” để đọc" #~ msgid "creation of reading thread failed" #~ msgstr "gặp lỗi khi tạo tuyến trình đọc" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "không thể cài đặt V/R không chặn đối với tiến trình con %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "lỗi liên lạc với tiến trình con %s" #~ msgid "write to %s subprocess failed" #~ msgstr "gặp lỗi khi ghi vào tiến trình con %s" #~ msgid "read from %s subprocess failed" #~ msgstr "gặp lỗi khi đọc từ tiến trình con %s" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "tiến trình con %s đã kết thúc với mã thoát %d" #~ msgid "creation of threads failed" #~ msgstr "gặp lỗi khi tạo tuyến trình" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "tiến trình con %s đã kết thúc với mã thoát %d" #~ msgid "Franc,ois Pinard" #~ msgstr "Franc,ois Pinard" #~ msgid "`" #~ msgstr "“" #~ msgid "'" #~ msgstr "”" #~ msgid "Success" #~ msgstr "Thành công" #~ msgid "No match" #~ msgstr "Không khớp" #~ msgid "Invalid regular expression" #~ msgstr "Biểu thức chính quy không hợp lệ" #~ msgid "Invalid collation character" #~ msgstr "Ký tự đối chiếu không hợp lệ" #~ msgid "Invalid character class name" #~ msgstr "Tên loại ký tự không hợp lệ" #~ msgid "Trailing backslash" #~ msgstr "Có xuyệc ngược theo sau" #~ msgid "Invalid back reference" #~ msgstr "Tham chiếu ngược không hợp lệ" #~ msgid "Unmatched [ or [^" #~ msgstr "Chưa khớp ký tự “[” hay “[^”" #~ msgid "Unmatched ( or \\(" #~ msgstr "Chưa khớp ký tự “(” hay “\\(”" #~ msgid "Unmatched \\{" #~ msgstr "Chưa khớp ký tự “\\{”" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Nội dung của “\\{\\}” không hợp lệ" #~ msgid "Invalid range end" #~ msgstr "Kết thúc phạm vi không hợp lệ" #~ msgid "Memory exhausted" #~ msgstr "Hết bộ nhớ" #~ msgid "Invalid preceding regular expression" #~ msgstr "Biểu thức chính quy đi trước không hợp lệ" #~ msgid "Premature end of regular expression" #~ msgstr "Biểu thức chính quy kết thúc quá sớm" #~ msgid "Regular expression too big" #~ msgstr "Biểu thức chính quy quá lớn" #~ msgid "Unmatched ) or \\)" #~ msgstr "Chưa khớp ký tự “)” hay “\\)”" #~ msgid "No previous regular expression" #~ msgstr "Không có biểu thức chính quy đi trước" #~ msgid "^[yY]" #~ msgstr "^[cC]" #~ msgid "^[nN]" #~ msgstr "^[kK]" #~ msgid "setting permissions for %s" #~ msgstr "đang đặt quyền hạn cho %s" #~ msgid "Hangup" #~ msgstr "Ngưng" #~ msgid "Interrupt" #~ msgstr "Ngắt" #~ msgid "Quit" #~ msgstr "Thoát" #~ msgid "Illegal instruction" #~ msgstr "Câu lệnh sai" #~ msgid "Trace/breakpoint trap" #~ msgstr "Bẫy vết/điểm ngắt" #~ msgid "Aborted" #~ msgstr "Bị hủy bỏ" #~ msgid "Floating point exception" #~ msgstr "Ngoại lệ số thực dấu chấm động" #~ msgid "Killed" #~ msgstr "Bị buộc kết thúc" #~ msgid "Bus error" #~ msgstr "Lỗi bus" #~ msgid "Segmentation fault" #~ msgstr "Lỗi phân đoạn" #~ msgid "Broken pipe" #~ msgstr "Ống dẫn bị hỏng" #~ msgid "Alarm clock" #~ msgstr "Đồng hồ báo động" #~ msgid "Terminated" #~ msgstr "Bị chấm dứt" #~ msgid "Urgent I/O condition" #~ msgstr "Điều kiện V/R khẩn" #~ msgid "Stopped (signal)" #~ msgstr "Bị ngừng (ký hiệu)" #~ msgid "Stopped" #~ msgstr "Bị ngừng" #~ msgid "Continued" #~ msgstr "Đã tiếp tục" #~ msgid "Child exited" #~ msgstr "Tiến trình con đã thoát" #~ msgid "Stopped (tty input)" #~ msgstr "Bị ngừng (đầu vào TTY)" #~ msgid "Stopped (tty output)" #~ msgstr "Bị ngừng (đầu ra TTY)" #~ msgid "I/O possible" #~ msgstr "Có thể V/R" #~ msgid "CPU time limit exceeded" #~ msgstr "Vượt quá thời hạn CPU" #~ msgid "File size limit exceeded" #~ msgstr "Vượt quá giới hạn kích cỡ tập tin" #~ msgid "Virtual timer expired" #~ msgstr "Hàm đếm thời gian ảo đã hết hạn" #~ msgid "Profiling timer expired" #~ msgstr "Hàm đếm thời gian đo hiệu năng sử dụng đã hết hạn" #~ msgid "Window changed" #~ msgstr "Cửa sổ bị thay đổi" #~ msgid "User defined signal 1" #~ msgstr "Tín hiệu do người dùng xác định 1" #~ msgid "User defined signal 2" #~ msgstr "Tín hiệu do người dùng xác định 2" #~ msgid "EMT trap" #~ msgstr "Bẫy EMT" #~ msgid "Bad system call" #~ msgstr "Cú gọi hệ thống sai" #~ msgid "Stack fault" #~ msgstr "Lỗi ngăn xếp" #~ msgid "Information request" #~ msgstr "Yêu cầu thông tin" #~ msgid "Power failure" #~ msgstr "Bị mất điện đột ngột" #~ msgid "Resource lost" #~ msgstr "Tài nguyên bị mất" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "lỗi ghi vào một đường ống hay ổ cắm bị đóng" #~ msgid "cannot create pipe" #~ msgstr "không thể tạo ống dẫn" #~ msgid "Real-time signal %d" #~ msgstr "Tín hiệu thời gian thật %d" #~ msgid "Unknown signal %d" #~ msgstr "Không rõ tín hiệu %d" #~ msgid "iconv function not usable" #~ msgstr "hàm iconv không khả dụng" #~ msgid "iconv function not available" #~ msgstr "không có hàm iconv" #~ msgid "character out of range" #~ msgstr "Ký tự ở ngoại phạm vi" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "không thể chuyển đổi U+%04X sang bộ ký tự địa phương" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "không thể chuyển đổi U+%04X sang bộ ký tự địa phương: %s" #~ msgid "invalid user" #~ msgstr "người dùng không hợp lệ" #~ msgid "invalid group" #~ msgstr "nhóm không hợp lệ" #~ msgid "invalid spec" #~ msgstr "đặc tả không hợp lệ" #~ msgid "unable to display error message" #~ msgstr "không thể hiển thị thông điệp lỗi" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Gói đóng bởi %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Gói đóng bởi %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "GPLv3+: Giấy Phép Công Cộng GNU, phiên bản 3 hay mới hơn \n" #~ "Đây là phần mềm tự do: bạn có quyền thay đổi và phát hành lại nó.\n" #~ "KHÔNG CÓ BẢO HÀNH GÌ CẢ, với điều kiện được pháp luật cho phép.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Tác giả: %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Tác giả: %s và %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Tác giả: %s, %s, và %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Tác giả: %s, %s, %s,\n" #~ "và %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Tác giả: %s, %s, %s,\n" #~ "%s, và %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Tác gia: %s, %s, %s,\n" #~ "%s, %s, và %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Tác giả: %s, %s, %s,\n" #~ "%s, %s, %s, và %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Tác giả: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "và %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Tác giả: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, và %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Tác giả: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, và các người khác.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Hãy thông báo lỗi cho: %s\n" #~ "Thông báo lỗi dịch cho: .\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "" #~ "Hãy thông báo lỗi %s cho: %s\n" #~ "Thông báo lỗi dịch cho: .\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Trang chủ %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Trang chủ %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Trợ giúp chung về cách sử dụng phần mềm GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle bị lỗi" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "không thể phục hồi bộ mô tả tập tin %d: “dup2” bị lỗi" #~ msgid "%s subprocess" #~ msgstr "Tiến trình con %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "Tiến trình con %s đã nhận tín hiệu nghiêm trọng %d" #~ msgid "stdin" #~ msgstr "đầu vào tiêu chuẩn" #~ msgid "stdout" #~ msgstr "đầu ra tiêu chuẩn" #~ msgid "stderr" #~ msgstr "đầu ra lỗi tiêu chuẩn" #~ msgid "unknown stream" #~ msgstr "không hiểu luồng dữ liệu" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "gặp lỗi khi mở lại %s trong chế độ %s" #~ msgid "string comparison failed" #~ msgstr "gặp lỗi khi so sánh chuỗi" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Hãy đặt “LC_ALL='C'” để sửa chữa trục trặc này." #~ msgid "The strings compared were %s and %s." #~ msgstr "Hai chuỗi được so sánh là %s và %s." #~ msgid "cannot perform formatted output" #~ msgstr "không thể thực hiện kết xuất có định dạng" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "đối số %s%s không hợp lệ “%s”" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "hậu tố không hợp lệ trong đối số %s%s “%s”" #~ msgid "%s%s argument `%s' too large" #~ msgstr "Đối số %s%s “%s” quá lớn" freedink-108.4+dfsg/gnulib/po/gl.po0000644000175000017500000003725312421730234014670 0ustar meme# Galician translation of gnulib. # This file is distributed under the same license as the gnulib package. # Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. # Copyright (C) 2012 Leandro Regueiro. # # Jacobo Tarrio , 2000, 2001, 2002. # Leandro Regueiro , 2012. # # Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas # colaborar connosco, podes atopar máis información en http://www.trasno.net # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-11-11 13:26+0200\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Erro do sistema descoñecido" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: a opción «%s» é ambigua; as posibilidades son:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a opción «--%s» non permite ningún argumento\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: a opción «%c%s» non permite ningún argumento\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: a opción «--%s» require un argumento\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opción «--%s» non recoñecida\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opción «%c%s» non recoñecida\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: opción incorrecta -- «%c»\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: a opción require un argumento -- «%c»\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: a opción «-W %s» é ambigua\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: a opción «-W %s» non permite ningún argumento\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: a opción «-W %s» require un argumento\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "non foi posíbel gravar o directorio de traballo actual" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "non foi posíbel volver ao directorio de traballo inicial" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "memoria esgotada" #~ msgid "invalid argument %s for %s" #~ msgstr "argumento incorrecto %s para %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "argumento %s ambiguo para %s" #~ msgid "Valid arguments are:" #~ msgstr "Os argumentos válidos son:" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Os argumentos obrigatorios ou opcionais das opcións longas son tamén " #~ "obrigatorios ou opcionais para calquera opción curta que se corresponda." #~ msgid "Usage:" #~ msgstr "Uso:" #~ msgid " or: " #~ msgstr " ou: " #~ msgid " [OPTION...]" #~ msgstr " [OPCIÓN...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Execute «%s --help» ou «%s --usage» para obter máis información.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Envíe os informes de fallo a %s.\n" #~ msgid "give this help list" #~ msgstr "devolve esta lista de axuda" #~ msgid "give a short usage message" #~ msgstr "devolve unha mensaxe curta sobre o uso" #~ msgid "NAME" #~ msgstr "NOME" #~ msgid "set the program name" #~ msgstr "define o nome do programa" #~ msgid "SECS" #~ msgstr "SECS" #~ msgid "print program version" #~ msgstr "mostra a versión do programa" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Demasiados argumentos\n" #~ msgid "program error" #~ msgstr "erro do programa" #~ msgid "stack overflow" #~ msgstr "desbordamento da pila" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "non é posíbel crear un directorio temporal empregando o patrón «%s»" #~ msgid "cannot remove temporary file %s" #~ msgstr "non é posíbel retirar o ficheiro temporal %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "non é posíbel retirar o directorio temporal %s" #~ msgid "error closing file" #~ msgstr "produciuse un erro ao pechar o ficheiro" #~ msgid "write error" #~ msgstr "erro de escritura" #~ msgid "preserving permissions for %s" #~ msgstr "conservando os permisos para %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "produciuse un erro ao abrir «%s» para lectura" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "" #~ "non é posíbel abrir o ficheiro de copia de seguridade «%s» para escribir" #~ msgid "error reading \"%s\"" #~ msgstr "produciuse un erro ao ler «%s»" #~ msgid "error writing \"%s\"" #~ msgstr "produciuse un erro ao escribir «%s»" #~ msgid "error after reading \"%s\"" #~ msgstr "produciuse un erro despois de ler «%s»" #~ msgid "fdopen() failed" #~ msgstr "fdopen() fallou" #~ msgid "regular empty file" #~ msgstr "ficheiro normal baleiro" #~ msgid "regular file" #~ msgstr "ficheiro normal" #~ msgid "directory" #~ msgstr "directorio" #~ msgid "block special file" #~ msgstr "ficheiro especial de bloque" #~ msgid "character special file" #~ msgstr "ficheiro especial de carácter" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "ligazón simbólica" #~ msgid "message queue" #~ msgstr "cola de mensaxes" #~ msgid "semaphore" #~ msgstr "semáforo" #~ msgid "shared memory object" #~ msgstr "obxecto de memoria compartida" #~ msgid "weird file" #~ msgstr "ficheiro estraño" #~ msgid "ai_family not supported" #~ msgstr "ai_family non admitido" #~ msgid "Name or service not known" #~ msgstr "Nome ou servizo descoñecido" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype non admitido" #~ msgid "System error" #~ msgstr "Erro do sistema" #~ msgid "Request canceled" #~ msgstr "Solicitude cancelada" #~ msgid "Request not canceled" #~ msgstr "Solicitude non cancelada" #~ msgid "Unknown error" #~ msgstr "Erro descoñecido" #~ msgid "failed to create \"%s\"" #~ msgstr "produciuse un erro ao crear «%s»" #~ msgid "error while writing \"%s\" file" #~ msgstr "produciuse un erro ao escribir o ficheiro «%s»" #~ msgid "cannot change permissions of %s" #~ msgstr "non foi posíbel cambiar os permisos de %s" #~ msgid "cannot create directory %s" #~ msgstr "non foi posíbel crear o directorio %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Produciuse un erro ao abrir /dev/zero para ler" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "«" #~ msgid "'" #~ msgstr "»" #~ msgid "Success" #~ msgstr "Éxito" #~ msgid "No match" #~ msgstr "Sen coincidencias" #~ msgid "Invalid regular expression" #~ msgstr "Expresión regular non válida" #~ msgid "Invalid collation character" #~ msgstr "Carácter de ordenación incorrecto" #~ msgid "Invalid character class name" #~ msgstr "Nome da clase de caracteres incorrecto" #~ msgid "Trailing backslash" #~ msgstr "Barra invertida ao final" #~ msgid "Unmatched [ or [^" #~ msgstr "[ ou [^ sen parella" #~ msgid "Unmatched ( or \\(" #~ msgstr "( ou \\( sen parella" #~ msgid "Unmatched \\{" #~ msgstr "\\{ sen parella" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Contido de \\{\\} non válido" #~ msgid "Invalid range end" #~ msgstr "Fin de intervalo non válido" #~ msgid "Memory exhausted" #~ msgstr "Memoria esgotada" #~ msgid "Invalid preceding regular expression" #~ msgstr "Expresión regular precedente non válida" #~ msgid "Premature end of regular expression" #~ msgstr "Fin prematura da expresión regular" #~ msgid "Regular expression too big" #~ msgstr "Expresión regular grande de máis" #~ msgid "Unmatched ) or \\)" #~ msgstr ") ou \\) sen parella" #~ msgid "No previous regular expression" #~ msgstr "Non hai ningunha expresión regular anterior" #~ msgid "^[yY]" #~ msgstr "^[sSyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "definindo os permisos para %s" #~ msgid "Quit" #~ msgstr "Saír" #~ msgid "Illegal instruction" #~ msgstr "Instrución inaceptábel" #~ msgid "Aborted" #~ msgstr "Interrompido" #~ msgid "Floating point exception" #~ msgstr "Excepción de coma flotante" #~ msgid "Killed" #~ msgstr "Matado" #~ msgid "Bus error" #~ msgstr "Erro de bus" #~ msgid "Broken pipe" #~ msgstr "Canalización danada" #~ msgid "Alarm clock" #~ msgstr "Reloxo de alarma" #~ msgid "Terminated" #~ msgstr "Terminado" #~ msgid "Stopped" #~ msgstr "Detido" #~ msgid "Continued" #~ msgstr "Continuado" #~ msgid "Child exited" #~ msgstr "O proceso fillo saíu" #~ msgid "Stopped (tty input)" #~ msgstr "Detido (entrada pola terminal)" #~ msgid "Stopped (tty output)" #~ msgstr "Detido (saída pola terminal)" #~ msgid "I/O possible" #~ msgstr "A E/S é posíbel" #~ msgid "CPU time limit exceeded" #~ msgstr "Excedeuse o límite de tempo de CPU" #~ msgid "File size limit exceeded" #~ msgstr "Excedeuse o límite de tamaño do ficheiro" #~ msgid "Virtual timer expired" #~ msgstr "Temporizador virtual esgotado" #~ msgid "User defined signal 1" #~ msgstr "Sinal 1 definido polo usuario" #~ msgid "User defined signal 2" #~ msgstr "Sinal 2 definido polo usuario" #~ msgid "Bad system call" #~ msgstr "Chamada ao sistema errónea" #~ msgid "Stack fault" #~ msgstr "Fallo de pila" #~ msgid "Information request" #~ msgstr "Solicitude de información" #~ msgid "Power failure" #~ msgstr "Fallo de subministración eléctrica" #~ msgid "Resource lost" #~ msgstr "Recurso perdido" #~ msgid "cannot create pipe" #~ msgstr "non é posíbel crear a canalización" #~ msgid "Unknown signal %d" #~ msgstr "Sinal %d descoñecido" #~ msgid "iconv function not usable" #~ msgstr "a función iconv non é utilizábel" #~ msgid "iconv function not available" #~ msgstr "a función iconv non está dispoñíbel" #~ msgid "character out of range" #~ msgstr "carácter fóra de intervalo" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "non é posíbel converter U+%04X ao xogo de caracteres local" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "non é posíbel converter U+%04X ao xogo de caracteres local: %s" #~ msgid "invalid user" #~ msgstr "usuario incorrecto" #~ msgid "invalid group" #~ msgstr "grupo incorrecto" #~ msgid "unable to display error message" #~ msgstr "non é posíbel mostrar a mensaxe de erro" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Empaquetado por %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Empaquetado por %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licenza GPL3v+: GNU GPL versión3 ou posterior \n" #~ "Isto é software libre: pode modificalo e redistribuílo.\n" #~ "Non hai NINGUNHA GARANTÍA, ata onde o permita a lei.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Escrito por %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Escrito por %s e %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Escrito por %s, %s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Escrito por %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, e outros.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Envíe os informes de fallo a: %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Envíe os informes de fallo en %s a %s.\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Páxina web de %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Páxina web de %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "Axuda xeral ao usar software GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle fallou" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "non foi posíbel restaurar o fd %d: dup2 fallou" #~ msgid "stdin" #~ msgstr "stdin" #~ msgid "stdout" #~ msgstr "stdout" #~ msgid "stderr" #~ msgstr "stderr" #~ msgid "unknown stream" #~ msgstr "fluxo descoñecido" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "produciuse un erro ao volver abrir %s en modo %s" #~ msgid "string comparison failed" #~ msgstr "produciuse un erro ao comparar as cadeas" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Defina LC_ALL='C' para paliar o problema." #~ msgid "The strings compared were %s and %s." #~ msgstr "As cadeas que se compararon foron %s e %s." #~ msgid "invalid %s%s argument `%s'" #~ msgstr "o argumento «%s» de %s%s é incorrecto" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "sufixo incorrecto %s%s no argumento «%s»" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: opción incorrecta -- %c\n" #~ msgid "block size" #~ msgstr "tamaño de bloque" #~ msgid "%s exists but is not a directory" #~ msgstr "%s existe pero non é un directorio" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "non se pode cambia-lo propietario e/ou grupo de %s" #~ msgid "cannot chdir to directory %s" #~ msgstr "non se pode cambiar ao directorio %s" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "non se pode obte-lo grupo de login dun UID numérico" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "Este programa é software libre; pode redistribuílo e/ou modificalo baixo\n" #~ "os termos da Licencia Pública Xeral de GNU tal como a publicou a Free\n" #~ "Software Foundation; xa ben a versión 2 ou (á súa elección) calquera\n" #~ "versión posterior.\n" #~ "\n" freedink-108.4+dfsg/gnulib/po/da.po0000644000175000017500000004572012421730234014650 0ustar meme# Danish messages for gnulib. # Copyright 1997, 2002, 2003, 2004, 2005, 2007, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Peter Antman , 1997. # Thomas Olsson , 1997. # Daniel Resare , 1999, 2000. # Gran Uddeborg , 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010. # Keld Simonsen , 2011 # # $Revision: 1.8 $ # msgid "" msgstr "" "Project-Id-Version: gnulib 2.0.0.3462.e9796\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-01-20 22:11+0100\n" "Last-Translator: Keld Simonsen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Ukendt systemfejl" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: flaget '%s' er flertydigt\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: flaget '--%s' tager intet argument\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: flaget '%c%s' tager intet argument\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: flaget '%s' krver et argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: ukendt flag '--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: ukendt flag '%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ugyldig flag -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: flaget krver et argument -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: flaget '-W %s' er flertydigt\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: flaget '-W %s' tager intet argument\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flaget '%s' krver et argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "kan ikke notere aktuelt arbejdskatalog" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "kunne ikke g tilbage til det oprindelige arbejdskatalog" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "hukommelsen opbrugt" #~ msgid "invalid argument %s for %s" #~ msgstr "Ugyldigt argument %s til %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "flertydigt argument %s til %s" #~ msgid "Valid arguments are:" #~ msgstr "gyldige argumenter er:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: vrdien p %s er mindre end eller lig med %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT-parameteren krver en vrdi" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT-parameteren skal vre positiv" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Ukendt ARGP_HELP_FMT-parameter" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Snavs i ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Obligatoriske eller valgfrie argumenter til lange flag er ogs " #~ "obligatoriske eller valgfrie for tilsvarende korte flag." #~ msgid "Usage:" #~ msgstr "Brug:" #~ msgid " or: " #~ msgstr " eller: " #~ msgid " [OPTION...]" #~ msgstr " [FLAG...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Forsg med '%s --help' eller '%s --usage' for mere information.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "Rapportr fejl til %s.\n" #~ "Send synspunkter p oversttelsen til \n" #~ msgid "give this help list" #~ msgstr "giv denne hjlpeliste" #~ msgid "give a short usage message" #~ msgstr "giv en kort meddelelse om brug" #~ msgid "NAME" #~ msgstr "NAVN" #~ msgid "set the program name" #~ msgstr "angiv progravnavnet" #~ msgid "SECS" #~ msgstr "S" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "hng i S sekunder (som standard 3600)" #~ msgid "print program version" #~ msgstr "udskriv programversion" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(PROGRAMFEJL) Ingen version kendt!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: For mange argumenter\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(PROGRAMFEJL) Flaget burde vre blevet genkendt!?" #~ msgid "program error" #~ msgstr "programfejl" #~ msgid "stack overflow" #~ msgstr "stakoverlb" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "kan ikke finde et temporrt katalog, forsg at stte $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "kan ikke oprette et temporrt katalog ved brug af skabelonen '%s'" #~ msgid "cannot remove temporary file %s" #~ msgstr "kan ikke fjerne temporr fil %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "kan ikke fjerne temporrt katalog %s" #~ msgid "error closing file" #~ msgstr "fejl ved lukning af fil" #~ msgid "write error" #~ msgstr "skrivefejl" #~ msgid "preserving permissions for %s" #~ msgstr "bevarer rettigheder p %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "fejl ved bning af '%s' for lsning" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "kan ikke bne sikkerhedskopifil '%s' for skrivning" #~ msgid "error reading \"%s\"" #~ msgstr "fejl ved lsning af '%s'" #~ msgid "error writing \"%s\"" #~ msgstr "fejl ved skrivning af '%s'" #~ msgid "error after reading \"%s\"" #~ msgstr "fejl efter lsning af '%s'" #~ msgid "fdopen() failed" #~ msgstr "fdopen() mislykkedes" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "C#-overstter ikke fundet, forsg at installere pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "virtuel C#-maskine ikke fundet, forsg at installere pnet" #~ msgid "%s subprocess failed" #~ msgstr "%s-underproces mislykkedes" #~ msgid "regular empty file" #~ msgstr "tom normal fil" #~ msgid "regular file" #~ msgstr "normal fil" #~ msgid "directory" #~ msgstr "katalog" #~ msgid "block special file" #~ msgstr "blokspecialfil" #~ msgid "character special file" #~ msgstr "tegnspecialfil" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "symbolsk lnke" #~ msgid "socket" #~ msgstr "sokkel (socket)" #~ msgid "message queue" #~ msgstr "meddelelsek" #~ msgid "semaphore" #~ msgstr "semafor" #~ msgid "shared memory object" #~ msgstr "objekt af delt hukommelse" #~ msgid "typed memory object" #~ msgstr "objekt af typet hukommelse" #~ msgid "weird file" #~ msgstr "mrkelig fil" #~ msgid "Address family for hostname not supported" #~ msgstr "Adressefamilien for vrtsnavnet understttes ikke" #~ msgid "Temporary failure in name resolution" #~ msgstr "Midlertidig fejl i navneopslag" #~ msgid "Bad value for ai_flags" #~ msgstr "Fejlagtig vrdi for ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Ureparrbar fejl i navneopslag" #~ msgid "ai_family not supported" #~ msgstr "ai_family understttes ikke" #~ msgid "Memory allocation failure" #~ msgstr "Hukommelsesallokeringsfejl" #~ msgid "No address associated with hostname" #~ msgstr "Ingen adresse associeret med vrtsnavnet" #~ msgid "Name or service not known" #~ msgstr "Navn eller tjeneste ikke kendt" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname understttes ikke for ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype understttes ikke" #~ msgid "System error" #~ msgstr "Systemfejl" #~ msgid "Argument buffer too small" #~ msgstr "Argumentbufferen for lille" #~ msgid "Processing request in progress" #~ msgstr "Bearbejder pgende anmodning" #~ msgid "Request canceled" #~ msgstr "Anmodning annuleret" #~ msgid "Request not canceled" #~ msgstr "Anmodning ikke annuleret" #~ msgid "All requests done" #~ msgstr "Alle anmodninger udfrt" #~ msgid "Interrupted by a signal" #~ msgstr "Afbrudt af et signal" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parameterstreng ikke korrekt kodet" #~ msgid "Unknown error" #~ msgstr "Ukendt fejl" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "ugyldigt source_version-argument til compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "ugyldigt target_version-argument til compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "det gik ikke at oprette '%s'" #~ msgid "error while writing \"%s\" file" #~ msgstr "fejl ved skrivning af filen '%s'" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Javaoverstter ikke fundet, forsg at installere gcj eller stte $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Virtuel Javamaskine ikke fundet, forsg at installere gij eller stte " #~ "$JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "%s-underproces I/O-fejl" #~ msgid "cannot change permissions of %s" #~ msgstr "kan ikke ndre rettigheder p %s" #~ msgid "cannot create directory %s" #~ msgstr "kan ikke oprette kataloget %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Mislykkedes med at bne /dev/zero for lsning" #~ msgid "creation of reading thread failed" #~ msgstr "oprettelse af lsetrd mislykkedes" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "kan ikke opstte ikke-blokerende I/O til %s-underproces" #~ msgid "communication with %s subprocess failed" #~ msgstr "kommunikation med %s-underproces mislykkedes" #~ msgid "write to %s subprocess failed" #~ msgstr "skrivning til %s-underproces mislykkedes" #~ msgid "read from %s subprocess failed" #~ msgstr "lsning fra %s-underproces mislykkedes" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "underproces %s afsluttet med slutstatus %d" #~ msgid "creation of threads failed" #~ msgstr "oprettelse af trde mislykkedes" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "%s-underproces afslutted med slutstatus %d" #~ msgid "cannot create pipe" #~ msgstr "kan ikke oprette datakanal" #~ msgid "`" #~ msgstr "'" #~ msgid "'" #~ msgstr "'" #~ msgid "Success" #~ msgstr "Lykkedes" #~ msgid "No match" #~ msgstr "Ingen trffer" #~ msgid "Invalid regular expression" #~ msgstr "Fejlagtigt regulrt udtryk" #~ msgid "Invalid collation character" #~ msgstr "Ugyldigt sorteringstegn" #~ msgid "Invalid character class name" #~ msgstr "Ugyldigt tegnklassenavn" #~ msgid "Trailing backslash" #~ msgstr "Afsluttende baglns skrstreg" #~ msgid "Invalid back reference" #~ msgstr "Ugyldig bagudreference" #~ msgid "Unmatched [ or [^" #~ msgstr "Ensomt [ eller [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Ensomt ( eller \\(" #~ msgid "Unmatched \\{" #~ msgstr "Ensomt \\\\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Ugyldigt indhold i \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Ugyldigt intervalslut" #~ msgid "Memory exhausted" #~ msgstr "Hukommelse opbrugt" #~ msgid "Invalid preceding regular expression" #~ msgstr "Fejlagtigt foregende regulrt udtryk" #~ msgid "Premature end of regular expression" #~ msgstr "For tidlig afslutning af regulrt udtryk" #~ msgid "Regular expression too big" #~ msgstr "For stort regulrt udtryk" #~ msgid "Unmatched ) or \\)" #~ msgstr "Ensomt ) eller \\)" #~ msgid "No previous regular expression" #~ msgstr "Intet foregende regulrt udtryk" #~ msgid "^[yY]" #~ msgstr "^[yYjJ]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "ndrer rettigheder p %s" #~ msgid "Hangup" #~ msgstr "Lagt p" #~ msgid "Interrupt" #~ msgstr "Afbrudt" #~ msgid "Quit" #~ msgstr "Afslut" #~ msgid "Illegal instruction" #~ msgstr "Utilladt instruktion" #~ msgid "Trace/breakpoint trap" #~ msgstr "Sporings-/afbrudspunktsflde" #~ msgid "Aborted" #~ msgstr "Afbrudt (abort)" #~ msgid "Floating point exception" #~ msgstr "Undtagelse ved flydende tal" #~ msgid "Killed" #~ msgstr "Drbt" #~ msgid "Bus error" #~ msgstr "Busfejl" #~ msgid "Segmentation fault" #~ msgstr "Segmenteringsfejl" #~ msgid "Broken pipe" #~ msgstr "Brudt datakanal" #~ msgid "Alarm clock" #~ msgstr "Alarmklokke" #~ msgid "Terminated" #~ msgstr "Afsluttet" #~ msgid "Urgent I/O condition" #~ msgstr "Hastende I/O-situation" #~ msgid "Stopped (signal)" #~ msgstr "Stoppet (signal)" #~ msgid "Stopped" #~ msgstr "Stoppet" #~ msgid "Continued" #~ msgstr "Genoptaget" #~ msgid "Child exited" #~ msgstr "Barn afsluttede" #~ msgid "Stopped (tty input)" #~ msgstr "Stoppet (terminallsning)" #~ msgid "Stopped (tty output)" #~ msgstr "Stoppet (terminalskrivning)" #~ msgid "I/O possible" #~ msgstr "I/O muligt" #~ msgid "CPU time limit exceeded" #~ msgstr "Grnse p CPU-tid overskredet" #~ msgid "File size limit exceeded" #~ msgstr "Grnse p filstrrelse overskredet" #~ msgid "Virtual timer expired" #~ msgstr "Alarmklokke - virtuel tid - udlb" #~ msgid "Profiling timer expired" #~ msgstr "Profileringsklokke udlb" #~ msgid "Window changed" #~ msgstr "ndret vindue" #~ msgid "User defined signal 1" #~ msgstr "Brugersignal 1" #~ msgid "User defined signal 2" #~ msgstr "Brugersignal 2" #~ msgid "EMT trap" #~ msgstr "Emulatorflde" #~ msgid "Bad system call" #~ msgstr "Fejlagtigt systemkald" #~ msgid "Stack fault" #~ msgstr "Stakfejl" #~ msgid "Information request" #~ msgstr "Informationsanmodning" #~ msgid "Power failure" #~ msgstr "Strmafbrud" #~ msgid "Resource lost" #~ msgstr "Tabt resurse" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "fejl ved skrivning til en lukket datakanal eller sokkel" #~ msgid "Real-time signal %d" #~ msgstr "Realtidsignal %d" #~ msgid "Unknown signal %d" #~ msgstr "Ukendt signal %d" #~ msgid "iconv function not usable" #~ msgstr "iconv-funktion ikke brugbar" #~ msgid "iconv function not available" #~ msgstr "iconv-funktion ikke tilgngelig" #~ msgid "character out of range" #~ msgstr "tegn udenfor interval" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "kan ikke konvertere U+%04X til lokalt tegnst" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "kan ikke konvertere U+%04X til lokalt tegnst: %s" #~ msgid "invalid user" #~ msgstr "ugyldig bruger" #~ msgid "invalid group" #~ msgstr "ugyldig gruppe" #~ msgid "invalid spec" #~ msgstr "ugyldig specifikation" #~ msgid "unable to display error message" #~ msgstr "kan ikke vise fejlmeddelelse" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Pakket af %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Pakket af %s\n" #~ msgid "(C)" #~ msgstr "" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licens GPLv3+: GNU GPL version 3 eller senere .\n" #~ "Dette er frit programmel: du m ndre og videredistribuere det.\n" #~ "Der gives INGEN GARANTI, s vidt lov tillader.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Skrevet af %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Skrevet af %s og %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Skrevet af %s, %s og %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Skrevet af %s, %s, %s\n" #~ "og %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Skrevet af %s, %s, %s,\n" #~ "%s og %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Skrevet af %s, %s, %s,\n" #~ "%s, %s og %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Skrevet af %s, %s, %s,\n" #~ "%s, %s, %s og %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Skrevet af %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "og %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Skrevet af %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s og %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Skrevet af %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s med flere.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Rapportr fejl til: %s\n" #~ "Sende synspunkter p oversttelsen til: tp-sv@listor.tp-sv.se\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Rapportr %s-fejl til: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s hjemmeside: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s hjemmeside: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Almindelig hjlp til at bruge GNU-programmer: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle mislykkedes" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "kan ikke genskabe fb %d: dup2 mislykkedes" #~ msgid "%s subprocess" #~ msgstr "%s-underproces" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s-underproces fik delggende signal %d" #~ msgid "stdin" #~ msgstr "standard ind" #~ msgid "stdout" #~ msgstr "standard ud" #~ msgid "stderr" #~ msgstr "standard fejl" #~ msgid "unknown stream" #~ msgstr "ukendt strm" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "kunne ikke genbne %s i tilstand %s" #~ msgid "string comparison failed" #~ msgstr "strengsammenligning mislykkedes" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "St LC_ALL='C' for at omg problemet." #~ msgid "The strings compared were %s and %s." #~ msgstr "De sammenlignede strenge var %s og %s." #~ msgid "cannot perform formatted output" #~ msgstr "kan ikke udfre formateret udskrift" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "fejlagtigt %s%s-argument '%s'" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "fejlagtigt suffiks i %s%s-argument '%s'" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s argument '%s' er for stort" freedink-108.4+dfsg/gnulib/po/et.po0000644000175000017500000003553512421730234014677 0ustar meme# This file is distributed under the same license as the gnulib package. # Estonian translations for gnulib # Copyright (C) 2000 Free Software Foundation, Inc. # Toomas Soome , 2011. # msgid "" msgstr "" "Project-Id-Version: gnulib 2.0.0.3462.e9796\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-05-19 15:10+0300\n" "Last-Translator: Toomas Soome \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-15\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Tundmatu ssteemne viga" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: vti '%s' on segane\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: vti '--%s' ei luba kasutada argumenti\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: vti '%c%s' ei luba kasutada argumenti\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: vti '%s' nuab argumenti\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: tundmatu vti '--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: tundmatu vti '%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: vigane vti -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: vti nuab argumenti -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: vti '-W %s' on segane\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: vti '-W %s' ei luba kasutada argumenti\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: vti '%s' nuab argumenti\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "ei nnestu registreerida jooksvat tkataloogi" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "esialgsesse tkataloogi ei nnestu tagasi minna" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "mlu on otsas" #~ msgid "invalid argument %s for %s" #~ msgstr "vigane argument %s vtmel `%s'" #~ msgid "ambiguous argument %s for %s" #~ msgstr "segane argument %s vtmele `%s'" #~ msgid "Valid arguments are:" #~ msgstr "Lubatud argumendid on:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: %s vrtus on viksem vi vrdne kui %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT parameeter nuab vrtust" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT parameeter peab olema positiivne" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Tundmatu ARGP_HELP_FMT parameeter" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Prgi ARGP_HELP_FMT sees: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Kohustuslikud argumendid pikkadele vtmetele on kohustuslikud ka " #~ "lhikestele." #~ msgid "Usage:" #~ msgstr "Kasutamine:" #~ msgid " or: " #~ msgstr " vi: " #~ msgid " [OPTION...]" #~ msgstr " [VTI]..." #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Lisainfo saamiseks proovige `%s --help' vi `%s --usage'.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Vigadest teatage palun aadressil %s.\n" #~ msgid "give this help list" #~ msgstr "anna see abiinfo" #~ msgid "give a short usage message" #~ msgstr "anna kasutamise lhikirjeldus" #~ msgid "NAME" #~ msgstr "NIMI" #~ msgid "set the program name" #~ msgstr "sea programmi nimi" #~ msgid "SECS" #~ msgstr "SEK" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "oota SEK sekundit (vaikimisi 3600)" #~ msgid "print program version" #~ msgstr "vljasta programmi versioon" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(PROGRAMMI VIGA) Versioon ei ole teada!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Liiga palju argumente\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(PROGRAMMI VIGA) Vti pidanuks olema teada!?" #~ msgid "program error" #~ msgstr "programmi viga" #~ msgid "stack overflow" #~ msgstr "pinu letitumine" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "ei leia ajutist kataloogi, proovige seada $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "vormiga \"%s\" ei saa ajutist kataloogi luua" #~ msgid "cannot remove temporary file %s" #~ msgstr "ajutist faili %s ei nnestu kustutada" #~ msgid "cannot remove temporary directory %s" #~ msgstr "ajutist kataloogi %s ei nnestu kustutada" #~ msgid "error closing file" #~ msgstr "viga faili sulgemisel" #~ msgid "write error" #~ msgstr "viga kirjutamisel" #~ msgid "preserving permissions for %s" #~ msgstr "silitan %s iguseid" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "viga \"%s\" lugemiseks avamisel" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "Varukoopia faili \"%s\" ei nnestu kirjutamiseks avada" #~ msgid "error reading \"%s\"" #~ msgstr "viga \"%s\" lugemisel" #~ msgid "error writing \"%s\"" #~ msgstr "viga \"%s\" kirjutamisel" #~ msgid "error after reading \"%s\"" #~ msgstr "viga peale \"%s\" lugemist" #~ msgid "fdopen() failed" #~ msgstr "fdopen() ebannestus" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "C# kompilaatorit pole, proovige paigaldada pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "C# virtuaalmasinat pole, proovige paigaldada pnet" #~ msgid "%s subprocess failed" #~ msgstr "%s: alamprotsess sai vea" #~ msgid "regular empty file" #~ msgstr "tavaline thi fail" #~ msgid "regular file" #~ msgstr "tavaline fail" #~ msgid "directory" #~ msgstr "Kataloog" #~ msgid "block special file" #~ msgstr "blokkseadme fail" #~ msgid "character special file" #~ msgstr "smbolseadme fail" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "nimeviide" #~ msgid "socket" #~ msgstr "sokkel" #~ msgid "message queue" #~ msgstr "teadete jrjekord" #~ msgid "semaphore" #~ msgstr "semafor" #~ msgid "shared memory object" #~ msgstr "jagatud mlu objekt" #~ msgid "typed memory object" #~ msgstr "tbitud mlu objekt" #~ msgid "weird file" #~ msgstr "veider fail" #~ msgid "Address family for hostname not supported" #~ msgstr "Aadressiperekonda vi hostinime ei toetata" #~ msgid "Temporary failure in name resolution" #~ msgstr "Ajutine trge nime lahendamisel" #~ msgid "Bad value for ai_flags" #~ msgstr "Vigane ai_flags vrtus" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "nime lahendamisl tekkis taastumatu trge" #~ msgid "ai_family not supported" #~ msgstr "ai_family ei toetata" #~ msgid "Memory allocation failure" #~ msgstr "Trge mlu haaramisel" #~ msgid "No address associated with hostname" #~ msgstr "Hosti nimega ei ole aadresse seostatud" #~ msgid "Name or service not known" #~ msgstr "Nimi vi teenus on tundmatu" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "ai_socktype ei toeta teenuse nime" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype ei toetata" #~ msgid "System error" #~ msgstr "Ssteemne viga" #~ msgid "Argument buffer too small" #~ msgstr "Argumentide puhver on liiga vike" #~ msgid "Processing request in progress" #~ msgstr "Pringu ttlemine kib" #~ msgid "Request canceled" #~ msgstr "Pring katkestati" #~ msgid "Request not canceled" #~ msgstr "Pringut ei katkestatud" #~ msgid "All requests done" #~ msgstr "Kik pringud tidetud" #~ msgid "Interrupted by a signal" #~ msgstr "Katkestatud signaaliga" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parameetersne ei ole korrektselt kodeeritud" #~ msgid "Unknown error" #~ msgstr "Tundmatu viga" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "funktsiooni compile_java_class argument source_version on vigane" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "funktsiooni compile_java_class argument target_version on vigane" #~ msgid "failed to create \"%s\"" #~ msgstr "\"%s\" ei nnestu luua" #~ msgid "error while writing \"%s\" file" #~ msgstr "viga faili \"%s\" kirjutamisel" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "Java kompilaatorit pole, proovige paigaldada gcj vi seada $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "Java virtuaalmasinat pole, proovige paigaldada gcj vi seada $JAVAC" #~ msgid "%s subprocess I/O error" #~ msgstr "%s: alamprotsess sai S/V vea" #~ msgid "cannot change permissions of %s" #~ msgstr "ei nnestu muuta %s igusi" #~ msgid "cannot create directory %s" #~ msgstr "kataloogi `%s' ei nnestu luua" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Faili /dev/zero saa lugemiseks avada" #~ msgid "creation of reading thread failed" #~ msgstr "lugemise lime loomine ebannestus" #~ msgid "communication with %s subprocess failed" #~ msgstr "hendus %s alamprotsessiga ebannestus" #~ msgid "write to %s subprocess failed" #~ msgstr "kirjutamine %s alamprotsessi sai vea" #~ msgid "read from %s subprocess failed" #~ msgstr "lugemine %s alamprotsessist sai vea" #~ msgid "creation of threads failed" #~ msgstr "limede loomine ebannestus" #~ msgid "cannot create pipe" #~ msgstr "ei nnestu luua toru" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #~ msgid "Invalid regular expression" #~ msgstr "Vigane regulaaravaldis" #~ msgid "Invalid collation character" #~ msgstr "Vigane vrdlussmbol" #~ msgid "Invalid character class name" #~ msgstr "Vigane smbolite klassi nimi" #~ msgid "Invalid back reference" #~ msgstr "Vigane tagasiviide" #~ msgid "Invalid range end" #~ msgstr "Vigane vahemiku lpp" #~ msgid "Memory exhausted" #~ msgstr "Mlu on otsas" #~ msgid "Invalid preceding regular expression" #~ msgstr "Vigane eelnev regulaaravaldis" #~ msgid "Premature end of regular expression" #~ msgstr "Enneaegne regulaaravaldise lpp" #~ msgid "Regular expression too big" #~ msgstr "Regulaaravaldis on liiga pikk" #~ msgid "No previous regular expression" #~ msgstr "Eelmist regulaaravaldist pole" #~ msgid "^[yY]" #~ msgstr "^[jJ]" #~ msgid "^[nN]" #~ msgstr "^[eE]" #~ msgid "setting permissions for %s" #~ msgstr "ei nnestu seada %s igusi" #~ msgid "Bus error" #~ msgstr "Siini viga" #~ msgid "Power failure" #~ msgstr "Toite viga" #~ msgid "iconv function not usable" #~ msgstr "iconv funktsioon ei ole kasutatav" #~ msgid "iconv function not available" #~ msgstr "iconv funktsioon puudub" #~ msgid "character out of range" #~ msgstr "smbol on piirkonnast vljas" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "U+%04X ei saa lokaalsesse kooditabelisse teisendada" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "U+%04X ei saa lokaalsesse kooditabelisse teisendada: %s" #~ msgid "invalid user" #~ msgstr "vigane kasutaja" #~ msgid "invalid group" #~ msgstr "vigane grupp" #~ msgid "invalid spec" #~ msgstr "vigane spetsifikatsioon" #~ msgid "(C)" #~ msgstr "" #~ msgid "Written by %s.\n" #~ msgstr "Kirjutanud %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Kirjutanud %s ja %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Kirjutanud %s, %s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Kirjutanud %s, %s, %s\n" #~ "ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Kirjutanud %s, %s, %s,\n" #~ "%s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Kirjutanud %s, %s, %s,\n" #~ "%s, %s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Kirjutanud %s, %s, %s,\n" #~ "%s, %s, %s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Kirjutanud %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Kirjutanud %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Kirjutanud %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s ja teised.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Vigadest teatage palun aadressil: %s.\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "%s vigadest teatage palun aadressil: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s koduleht: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s koduleht: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "ldine abiinfo GNU tarkvara kasutamisest: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle ebannestus" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "failipidet %d ei nnestu taastada: dup2 ebannestus" #~ msgid "%s subprocess" #~ msgstr "%s alamprotsess" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s alamprotsess sai fataalse signaali %d" #~ msgid "stdin" #~ msgstr "standardsisend" #~ msgid "stdout" #~ msgstr "standardvljund" #~ msgid "stderr" #~ msgstr "standardvead" #~ msgid "unknown stream" #~ msgstr "undmatu voog" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "reopen %s moodiga %s ebannestus" #~ msgid "string comparison failed" #~ msgstr "snede vrdlus ebannestus" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Probleemi lahendamiseks seadke LC_ALL=C." #~ msgid "The strings compared were %s and %s." #~ msgstr "Vrreldi snesid %s ja %s." #~ msgid "cannot perform formatted output" #~ msgstr "ei nnestu luua vormindatud vljundit" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "vigane %s%s argument `%s'" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "vigane sufiks %s%s argument `%s'" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s argument `%s' on liiga suur" freedink-108.4+dfsg/gnulib/po/it.po0000644000175000017500000005404412421730234014677 0ustar meme# Italian translation of gnulib # Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Marco d'Itri , 1998, 1999. # Giovanni Bortolozzo , 1998. # Milo Casagrande , 2008, 2009, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: gnulib-3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-08-22 21:58+0200\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Errore di sistema sconosciuto" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: l'opzione \"%s\" è ambigua. Possibilità:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: l'opzione \"--%s\" non accetta un argomento\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: l'opzione \"%c%s\" non accetta un argomento\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: l'opzione \"--%s\" richiede un argomento\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opzione \"--%s\" non riconosciuta\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opzione \"%c%s\" non riconosciuta\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: opzione non valida -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: l'opzione \"-W %s\" è ambigua\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: l'opzione \"-W %s\" non accetta un argomento\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: l'opzione \"-W %s\" richiede un argomento\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "impossibile registrare la directory di lavoro corrente" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "ritorno alla directory di lavoro iniziale non riuscito" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "memoria esaurita" #~ msgid "invalid argument %s for %s" #~ msgstr "argomento %s non valido per %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "argomento %s ambiguo per %s" #~ msgid "Valid arguments are:" #~ msgstr "Sono argomenti validi:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: il valore %s è minore o uguale a %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: il parametro ARGP_HELP_FMT richiede un valore" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: il parametro ARGP_HELP_FMT deve essere positivo" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: parametro ARGP_HELP_FMT sconosciuto" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Spazzatura in ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Gli argomenti obbligatori o facoltativi per le opzioni estese lo sono " #~ "anche per le corrispondenti opzioni brevi." #~ msgid "Usage:" #~ msgstr "Uso:" #~ msgid " or: " #~ msgstr " o: " #~ msgid " [OPTION...]" #~ msgstr " [OPZIONE...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Usare \"%s --help\" o \"%s --usage\" per ulteriori informazioni.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Segnalare i bug a %s.\n" #~ msgid "give this help list" #~ msgstr "Mostra questo aiuto" #~ msgid "give a short usage message" #~ msgstr "Mostra un breve messaggio sull'uso" #~ msgid "NAME" #~ msgstr "NOME" #~ msgid "set the program name" #~ msgstr "Imposta il nome del programma" #~ msgid "SECS" #~ msgstr "SEC" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "Resta in attesa per SEC secondi (predefinito 3600)" #~ msgid "print program version" #~ msgstr "Stampa la versione del programma" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(ERRORE DEL PROGRAMMA) Nessuna versione conosciuta." #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: troppi argomenti\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "" #~ "(ERRORE DEL PROGRAMMA) L'opzione dovrebbe essere stata riconosciuta." #~ msgid "program error" #~ msgstr "errore del programma" #~ msgid "stack overflow" #~ msgstr "overflow dello stack" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "impossibile trovare una directory temporanea, provare a impostare $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "" #~ "impossibile creare una directory temporanea usando il modello \"%s\"" #~ msgid "cannot remove temporary file %s" #~ msgstr "impossibile rimuovere il file temporaneo %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "impossibile rimuovere la directory temporanea %s" #~ msgid "error closing file" #~ msgstr "errore nel chiudere il file" #~ msgid "write error" #~ msgstr "errore di scrittura" #~ msgid "preserving permissions for %s" #~ msgstr "preservazione dei permessi per %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "errore nell'aprire \"%s\" in lettura" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "impossibile aprire il file di backup \"%s\" in scrittura" #~ msgid "error reading \"%s\"" #~ msgstr "errore nel leggere \"%s\"" #~ msgid "error writing \"%s\"" #~ msgstr "errore nello scrivere \"%s\"" #~ msgid "error after reading \"%s\"" #~ msgstr "errore dopo la lettura di \"%s\"" #~ msgid "fdopen() failed" #~ msgstr "fdopen() non riuscita" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "compilatore C# non trovato, provare a installare pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "macchina virtuale C# non trovata, provare a installare pnet" #~ msgid "%s subprocess failed" #~ msgstr "%s: sottoprocesso non riuscito" #~ msgid "regular empty file" #~ msgstr "file normale vuoto" #~ msgid "regular file" #~ msgstr "file normale" #~ msgid "directory" #~ msgstr "directory" #~ msgid "block special file" #~ msgstr "file speciale a blocchi" #~ msgid "character special file" #~ msgstr "file speciale a caratteri" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "collegamento simbolico" #~ msgid "socket" #~ msgstr "socket" #~ msgid "message queue" #~ msgstr "coda di messaggi" #~ msgid "semaphore" #~ msgstr "semaforo" #~ msgid "shared memory object" #~ msgstr "oggetto di memoria condivisa" # (ndt) sono accettati: # - suggerimenti # - collegamenti dove si spieghi cosa sia un 'typed memory object' # Ma dove si spieghi VERAMENTE e CONCRETAMENTE cos'è. #~ msgid "typed memory object" #~ msgstr "oggetto di memoria con nome" #~ msgid "weird file" #~ msgstr "file strano" #~ msgid "Address family for hostname not supported" #~ msgstr "Famiglia di indirizzi per il nome host non supportata" #~ msgid "Temporary failure in name resolution" #~ msgstr "Errore temporaneo nella risoluzione del nome" #~ msgid "Bad value for ai_flags" #~ msgstr "Valore per ai_flags errato" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Errore irreversibile nella risoluzione del nome" #~ msgid "ai_family not supported" #~ msgstr "ai_family non supportato" #~ msgid "Memory allocation failure" #~ msgstr "Allocazione memoria non riuscita" #~ msgid "No address associated with hostname" #~ msgstr "Nessun indirizzo associato col nome host" #~ msgid "Name or service not known" #~ msgstr "Nome o servizio sconosciuto" # (ndt) # # define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Nome servizio non supportato per ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype non supportato" #~ msgid "System error" #~ msgstr "Errore di sistema" #~ msgid "Argument buffer too small" #~ msgstr "Buffer argomento troppo piccolo" #~ msgid "Processing request in progress" #~ msgstr "Elaborazione richiesta in corso" #~ msgid "Request canceled" #~ msgstr "Richiesta annullata" #~ msgid "Request not canceled" #~ msgstr "Richiesta non annullata" #~ msgid "All requests done" #~ msgstr "Tutte le richieste completate" #~ msgid "Interrupted by a signal" #~ msgstr "Interrotto da un segnale" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Stringa del parametro non codificata correttamente" #~ msgid "Unknown error" #~ msgstr "Errore sconosciuto" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "argomento source_version in compile_java_class non valido" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "argomento target_version in compile_java_class non valido" #~ msgid "failed to create \"%s\"" #~ msgstr "creazione di \"%s\" non riuscita" #~ msgid "error while writing \"%s\" file" #~ msgstr "errore durante la scrittura del file \"%s\"" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "compilatore Java non trovato, provare a installare gcj o impostare $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "macchina virtuale Java non trovato, provare a installare gij o impostare " #~ "$JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "errore di I/O nel sottoprocesso %s" #~ msgid "cannot change permissions of %s" #~ msgstr "impossibile cambiare i permessi di %s" #~ msgid "cannot create directory %s" #~ msgstr "impossibile creare la directory %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Apertura di /dev/zero in lettura non riuscita" #~ msgid "creation of reading thread failed" #~ msgstr "creazione del thread di lettura non riuscita" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "impossibile impostare I/O non bloccante sul sottoprocesso di %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "comunicazione col sottoprocesso di %s non riuscita" #~ msgid "write to %s subprocess failed" #~ msgstr "scrittura sul sottoprocesso di %s non riuscita" #~ msgid "read from %s subprocess failed" #~ msgstr "lettura dal sottoprocesso di %s non riuscita" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "sottoprocesso %s terminato con codice d'uscita %d" #~ msgid "creation of threads failed" #~ msgstr "creazione dei thread non riuscita" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "sottoprocesso di %s terminato con codice d'uscita %d" #~ msgid "Franc,ois Pinard" #~ msgstr "Francois Pinard" #~ msgid "`" #~ msgstr "\"" #~ msgid "'" #~ msgstr "\"" #~ msgid "Success" #~ msgstr "Successo" #~ msgid "No match" #~ msgstr "Nessuna corrispondenza" #~ msgid "Invalid regular expression" #~ msgstr "Espressione regolare non valida" # (ndt) http://en.wikipedia.org/wiki/Collation #~ msgid "Invalid collation character" #~ msgstr "Carattere di collazione non valido" #~ msgid "Invalid character class name" #~ msgstr "Nome classe del carattere non valida" #~ msgid "Trailing backslash" #~ msgstr "Backslash finale" #~ msgid "Invalid back reference" #~ msgstr "Riferimento all'indietro non valido" #~ msgid "Unmatched [ or [^" #~ msgstr "[ o [^ senza corrispondenza" #~ msgid "Unmatched ( or \\(" #~ msgstr "( o \\( senza corrispondenza" #~ msgid "Unmatched \\{" #~ msgstr "\\{ senza corrispondenza" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Contenuto di \\{\\} non valido" #~ msgid "Invalid range end" #~ msgstr "Fine dell'intervallo non valida" #~ msgid "Memory exhausted" #~ msgstr "Memoria esaurita" #~ msgid "Invalid preceding regular expression" #~ msgstr "Espressione regolare precedente non valida" #~ msgid "Premature end of regular expression" #~ msgstr "Fine prematura dell'espressione regolare" #~ msgid "Regular expression too big" #~ msgstr "Espressione regolare troppo grande" #~ msgid "Unmatched ) or \\)" #~ msgstr ") o \\) senza corrispondenza" #~ msgid "No previous regular expression" #~ msgstr "Nessuna espressione regolare precedente" #~ msgid "^[yY]" #~ msgstr "^[sSyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "impostazione dei permessi per %s" # (ndt) ho preferito mettere tra parentesi il vero nome della costante del segnale, sono cose abbastanza tecniche e forse con un riferimento reale più comprensibili # # http://en.wikipedia.org/wiki/SIGHUP #~ msgid "Hangup" #~ msgstr "Chiusura" # http://en.wikipedia.org/wiki/SIGINT_(POSIX) #~ msgid "Interrupt" #~ msgstr "Interruzione" # http://en.wikipedia.org/wiki/SIGQUIT #~ msgid "Quit" #~ msgstr "Uscita (con core dump)" # http://en.wikipedia.org/wiki/SIGILL #~ msgid "Illegal instruction" #~ msgstr "Istruzione non consentita" # http://en.wikipedia.org/wiki/Trap_(computing) # http://en.wikipedia.org/wiki/SIGTRAP #~ msgid "Trace/breakpoint trap" #~ msgstr "Rilevato trace/breakpoint" # http://en.wikipedia.org/wiki/SIGABRT #~ msgid "Aborted" #~ msgstr "Annullato" # http://en.wikipedia.org/wiki/SIGFPE #~ msgid "Floating point exception" #~ msgstr "Eccezione in virgola mobile" #~ msgid "Killed" #~ msgstr "Ucciso" # http://en.wikipedia.org/wiki/Bus_error # http://en.wikipedia.org/wiki/SIGBUS #~ msgid "Bus error" #~ msgstr "Errore di bus" # http://en.wikipedia.org/wiki/Segmentation_fault # http://en.wikipedia.org/wiki/SIGSEGV #~ msgid "Segmentation fault" #~ msgstr "Errore di segmentazione" # http://en.wikipedia.org/wiki/SIGPIPE #~ msgid "Broken pipe" #~ msgstr "Pipe interrotta" # (ndt) non so se convenga lasciarlo invariato... ma forse anche le altre... # http://en.wikipedia.org/wiki/SIGALRM #~ msgid "Alarm clock" #~ msgstr "Sveglia" # http://en.wikipedia.org/wiki/SIGTERM #~ msgid "Terminated" #~ msgstr "Terminato" # http://en.wikipedia.org/wiki/SIGURG #~ msgid "Urgent I/O condition" #~ msgstr "Condizione di I/O urgente" # http://en.wikipedia.org/wiki/SIGSTOP #~ msgid "Stopped (signal)" #~ msgstr "Fermato" # http://en.wikipedia.org/wiki/SIGTSTP #~ msgid "Stopped" #~ msgstr "Fermato (da terminale)" # http://en.wikipedia.org/wiki/SIGCONT #~ msgid "Continued" #~ msgstr "Continuato" # http://en.wikipedia.org/wiki/SIGCHLD #~ msgid "Child exited" #~ msgstr "Processo figlio uscito" # http://en.wikipedia.org/wiki/SIGTTIN #~ msgid "Stopped (tty input)" #~ msgstr "Fermato per input tty" # http://en.wikipedia.org/wiki/SIGTTOU #~ msgid "Stopped (tty output)" #~ msgstr "Fermato per output tty" # (ndt) questa pare non sia posix, wikipedia riporta la stessa di SIGABRT #~ msgid "I/O possible" #~ msgstr "I/O consentito" # http://en.wikipedia.org/wiki/SIGXCPU #~ msgid "CPU time limit exceeded" #~ msgstr "Superato il limite di tempo CPU" # http://en.wikipedia.org/wiki/SIGXFSZ #~ msgid "File size limit exceeded" #~ msgstr "Superato il limite di dimensione file" # http://en.wikipedia.org/wiki/SIGVTALRM #~ msgid "Virtual timer expired" #~ msgstr "Timer virtuale terminato" # http://en.wikipedia.org/wiki/SIGPROF #~ msgid "Profiling timer expired" #~ msgstr "Timer di profiling terminato" # http://en.wikipedia.org/wiki/SIGWINCH #~ msgid "Window changed" #~ msgstr "Finestra modificata" # http://en.wikipedia.org/wiki/SIGUSR1 #~ msgid "User defined signal 1" #~ msgstr "Segnale 1 definito dall'utente" #~ msgid "User defined signal 2" #~ msgstr "Segnale 2 definito dall'utente" # http://en.wikipedia.org/wiki/SIGEMT #~ msgid "EMT trap" #~ msgstr "Rilevato EMT" # http://en.wikipedia.org/wiki/SIGSYS #~ msgid "Bad system call" #~ msgstr "Chiamata di sistema errata" # http://en.wikipedia.org/wiki/SIGSTKFLT #~ msgid "Stack fault" #~ msgstr "Errore sullo stack" # http://en.wikipedia.org/wiki/SIGINFO #~ msgid "Information request" #~ msgstr "Richiesta informazioni" # http://en.wikipedia.org/wiki/SIGPWR #~ msgid "Power failure" #~ msgstr "Mancanza alimentazione elettrica" # http://en.wikipedia.org/wiki/SIGLOST #~ msgid "Resource lost" #~ msgstr "Risorsa persa" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "errore nello scrivere su una pipe o un socket chiusi" #~ msgid "cannot create pipe" #~ msgstr "impossibile creare la pipe" #~ msgid "Real-time signal %d" #~ msgstr "Segnale real-time %d" #~ msgid "Unknown signal %d" #~ msgstr "Segnale %d sconosciuto" #~ msgid "iconv function not usable" #~ msgstr "funzione iconv non utilizzabile" #~ msgid "iconv function not available" #~ msgstr "funzione iconv non disponibile" #~ msgid "character out of range" #~ msgstr "carattere fuori dall'intervallo" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "impossibile convertire U+%04X nel set di caratteri locale" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "impossibile convertire U+%04X nel set di caratteri locale: %s" #~ msgid "invalid user" #~ msgstr "utente non valido" #~ msgid "invalid group" #~ msgstr "gruppo non valido" # (ndt) evinta da un commento al codice: # # /* Set U and G to nonzero length strings corresponding to user and # group specifiers or to NULL. If U is not NULL, it is a newly # allocated string. */ # #~ msgid "invalid spec" #~ msgstr "specificatore non valido" #~ msgid "unable to display error message" #~ msgstr "impossibile visualizzare il messaggio di errore" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Pacchetto creato da %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Pacchetto creato da %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licenza GPLv3+: GNU GPL versione 3 o successiva .\n" #~ "Questo programma è software libero: siete liberi di modificarlo e " #~ "ridistribuirlo.\n" #~ "Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Scritto da %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Scritto da %s e %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Scritto da %s, %s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Scritto da %s, %s, %s\n" #~ "e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Scritto da %s, %s, %s,\n" #~ "%s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Scritto da %s, %s, %s,\n" #~ "%s, %s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Scritto da %s, %s, %s,\n" #~ "%s, %s, %s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Scritto da %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Scritto da %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s e %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Scritto da %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s e altri.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Segnalare i bug a: %s\n" #~ "Segnalare i bug di traduzione a: \n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Segnalare i bug di %s a: %s.\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Sito web di %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Sito web di %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Aiuto per l'utilizzo di software GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle non riuscita" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "impossibile ripristinare fd %d: dup2 non riuscita" #~ msgid "%s subprocess" #~ msgstr "sottoprocesso %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "il sottoprocesso %s ha ricevuto un segnale %d fatale" #~ msgid "stdin" #~ msgstr "stdin" #~ msgid "stdout" #~ msgstr "stdout" #~ msgid "stderr" #~ msgstr "stderr" #~ msgid "unknown stream" #~ msgstr "stream sconosciuto" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "riapertura di %s in modalità %s non riuscita" #~ msgid "string comparison failed" #~ msgstr "confronto delle stringhe non riuscito" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Impostare LC_ALL='C' per aggirare il problema." #~ msgid "The strings compared were %s and %s." #~ msgstr "Le stringhe confrontate erano %s e %s." #~ msgid "cannot perform formatted output" #~ msgstr "impossibile mostrare l'output formattato" # (ndt) # quello che viene sostituito pare sia: # * il primo, hypens (con valore '--') # * il secondo, option # * il terzo, arg # quindi qualche cosa del genere: # invalid --option argument 'arg' # # (altre idee sono benvenute!) #~ msgid "invalid %s%s argument `%s'" #~ msgstr "l'argomento \"%3$s\" di %1$s%2$s non è valido" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "il suffisso nell'argomento \"%3$s\" di %1$s%2$s non è valido" #~ msgid "%s%s argument `%s' too large" #~ msgstr "l'argomento \"%3$s\" di %1$s%2$s è troppo grande" freedink-108.4+dfsg/gnulib/po/nl.gmo0000644000175000017500000000362712421730234015041 0ustar memexy,,,'-D r((%-:h*y_)|5)&*-$X'}'3 O&p    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib-3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-08-22 20:37+0200 Last-Translator: Benno Schulenberg Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.0 Plural-Forms: nplurals=2; plural=(n != 1); %s: ongeldige optie -- '%c' %s: optie '%c%s' staat geen argument toe %s: optie '%s' is niet eenduidig; mogelijkheden zijn:%s: optie '--%s' staat geen argument toe %s: optie '--%s' vereist een argument %s: optie '-W %s' staat geen argument toe %s: optie '-W %s' is niet eenduidig %s: optie '-W %s' vereist een argument %s: optie vereist een argument -- '%c' %s: onbekende optie '%c%s' %s: onbekende optie '--%s' Onbekende systeemfoutkan niet terugkeren naar de oorspronkelijke werkmaponvoldoende geheugen beschikbaarkan de huidige werkmap niet vastleggenfreedink-108.4+dfsg/gnulib/po/sk.gmo0000644000175000017500000000105212421730234015033 0ustar meme4L`avzUnknown system errormemory exhaustedProject-Id-Version: textutils 2.0.14 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2001-06-08 22:10 +02:00 Last-Translator: Stanislav Meduna Language-Team: Slovak Language: sk MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8-bit Neznma systmov chybavyerpan pamfreedink-108.4+dfsg/gnulib/po/pt_BR.gmo0000644000175000017500000000374312421730234015435 0ustar memexy,,,'-D r((%-:h*y,2,(,-U%))  ?7\<    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2013-12-15 02:12-0300 Last-Translator: Rafael Ferreira Language-Team: Brazilian Portuguese Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.5.7 Plural-Forms: nplurals=2; plural=(n > 1); %s: opção inválida -- "%c" %s: a opção "%c%s" não admite argumentos %s: a opção "%s" está ambígua; possibilidades:%s: a opção "--%s" não admite argumentos %s: a opção "--%s" exige um argumento %s: a opção "-W %s" não admite argumentos %s: a opção "-W %s" está ambígua %s: a opção "-W %s" exige um argumento %s: a opção exige um argumento -- "%c" %s: opção desconhecida "%c%s" %s: opção desconhecida "--%s" Erro desconhecido de sistemafalha em retornar para o diretório de trabalho inicialmemória esgotadanão foi possível registrar no diretório de trabalho atualfreedink-108.4+dfsg/gnulib/po/sl.po0000644000175000017500000005117012421730234014676 0ustar meme# -*- mode: po; coding: utf-8; -*- Slovenian message catalog for GNUlib. # Copyright (C) 2005, 2007, 2009, 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Primož Peterlin , 2005, 2007, 2009, 2012. # $Id: gnulib-3.0.0.6062.a6b16.sl.po,v 1.5 2012/05/20 11:08:36 peterlin Exp $ # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-05-20 13:08+0200\n" "Last-Translator: Primož Peterlin \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Neznana sistemska napaka" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: izbira »%s« je dvoumna; možnosti:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: izbira »--%s« ne dovoljuje argumenta\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: izbira »%c%s« ne dovoljuje argumenta\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: izbira »--%s« zahteva argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: neprepoznana izbira »--%s«\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: neprepoznana izbira »%c%s«\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: neveljavna izbira -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: izbira zahteva argument -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: izbira »-W %s« je dvoumna\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: izbira »-W %s« ne dovoljuje argumenta\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: izbira »-W %s« zahteva argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "ni mogoče zabeležiti trenutnega delovnega imenika" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "vrnitev v začetni delovni imenik ni uspela" # ! INEXACT #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "zmanjkalo pomnilnika" #~ msgid "invalid argument %s for %s" #~ msgstr "neveljavni argument %s za %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "dvoumni argument %s za %s" #~ msgid "Valid arguments are:" #~ msgstr "Veljavni argumenti so:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: vrednost %s je manjša ali enaka %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT parameter zahteva vrednost" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT parameter mora biti pozitiven" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Neznan parameter ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Smetje v ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Argumenti, navedeni kot obvezni ali neobvezni pri dolgi obliki izbire, so " #~ "obvezni ali neobvezni tudi pri vseh odgovarjajočih kratkih oblikah." #~ msgid "Usage:" #~ msgstr "Uporaba:" #~ msgid " or: " #~ msgstr " ali: " #~ msgid " [OPTION...]" #~ msgstr " [IZBIRA...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Poskusite »%s --help« ali »%s --usage« za izčrpnejša navodila.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Poročila o napakah: %s\n" #~ msgid "give this help list" #~ msgstr "poda ta seznam pomoči" #~ msgid "give a short usage message" #~ msgstr "poda kratka navodila" #~ msgid "NAME" #~ msgstr "IME" #~ msgid "set the program name" #~ msgstr "nastavi ime programa" #~ msgid "SECS" #~ msgstr "SEK" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "zastane za SEK sekund (privzeto 3600)" #~ msgid "print program version" #~ msgstr "izpiše različico programa" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(PROGRAMSKA NAPAKA) Različice ni moč ugotoviti?!" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Preveč argumentov\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(PROGRAMSKA NAPAKA) Izbire bi morali prepoznati?!" #~ msgid "program error" #~ msgstr "napaka v programu" #~ msgid "stack overflow" #~ msgstr "prekoračitev sklada" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "začasnega imenika ni moč najti, poskusite nastaviti $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "začasnega imenika z uporabo šablone \"%s\" ni mogoče ustvariti" #~ msgid "cannot remove temporary file %s" #~ msgstr "začasne datoteke v %s ni mogoče odstraniti" #~ msgid "cannot remove temporary directory %s" #~ msgstr "začasnega imenika %s ni mogoče odstraniti" #~ msgid "error closing file" #~ msgstr "napaka pri zapiranju datoteke" #~ msgid "write error" #~ msgstr "napaka pri pisanju" #~ msgid "preserving permissions for %s" #~ msgstr "ohranjena dovoljenja za %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "napaka pri odpiranju datoteke \"%s\" za branje" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "varnostne kopije \"%s\" ni mogoče odpreti za pisanje" #~ msgid "error reading \"%s\"" #~ msgstr "napaka pri branju \"%s\"" #~ msgid "error writing \"%s\"" #~ msgstr "napaka pri pisanju na \"%s\"" #~ msgid "error after reading \"%s\"" #~ msgstr "napaka po branju \"%s\"" #~ msgid "fdopen() failed" #~ msgstr "klic fdopen() ni uspel" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "prevajalnika za C# ni najti, namestite pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "virtualnega stroja C# ni najti, namestite pnet" #~ msgid "%s subprocess failed" #~ msgstr "podproces %s ni uspel" #~ msgid "regular empty file" #~ msgstr "navadna prazna datoteka" #~ msgid "regular file" #~ msgstr "navadna datoteka" #~ msgid "directory" #~ msgstr "imenik" #~ msgid "block special file" #~ msgstr "bločna enota" #~ msgid "character special file" #~ msgstr "znakovna enota" #~ msgid "fifo" #~ msgstr "FIFO" # ! INEXACT #~ msgid "symbolic link" #~ msgstr "simbolna povezava" #~ msgid "socket" #~ msgstr "vtičnica" #~ msgid "message queue" #~ msgstr "vrsta sporočil" #~ msgid "semaphore" #~ msgstr "semafor" #~ msgid "shared memory object" #~ msgstr "deljen pomnilniški predmet" #~ msgid "typed memory object" #~ msgstr "tipiziran pomnilniški predmet" #~ msgid "weird file" #~ msgstr "čudna datoteka" #~ msgid "Address family for hostname not supported" #~ msgstr "Družina naslovov za ime gostitelja ni podprta" #~ msgid "Temporary failure in name resolution" #~ msgstr "Razreševanje imena začasno ni uspelo" #~ msgid "Bad value for ai_flags" #~ msgstr "Slaba vrednost ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Nepopravljiv neuspeh pri razreševanju imena" #~ msgid "ai_family not supported" #~ msgstr "ai_family ni podprt" #~ msgid "Memory allocation failure" #~ msgstr "Dodelitev pomnilnika ni uspela" #~ msgid "No address associated with hostname" #~ msgstr "Z imenom gostitelja ni povezan noben naslov" #~ msgid "Name or service not known" #~ msgstr "Ime ali storitev ni poznana" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname ni podprt za ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype ni podprt" #~ msgid "System error" #~ msgstr "Sistemska napaka" #~ msgid "Argument buffer too small" #~ msgstr "Medpomnilnik za argumente premajhen" #~ msgid "Processing request in progress" #~ msgstr "Obdelava zahtevka v teku" #~ msgid "Request canceled" #~ msgstr "Zahtevek preklican" #~ msgid "Request not canceled" #~ msgstr "Zahtevek ni preklican" #~ msgid "All requests done" #~ msgstr "Vsi zahtevki obdelani" #~ msgid "Interrupted by a signal" #~ msgstr "Prekinjeno s signalom" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parametrični niz nepravilno kodiran" #~ msgid "Unknown error" #~ msgstr "Neznana napaka" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "neveljaven argument source_version za compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "neveljaven argument target_version za compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "ni mogoče ustvariti \"%s\"" #~ msgid "error while writing \"%s\" file" #~ msgstr "napaka pri pisanju na datoteko \"%s\"" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "prevajalnika za Javo ni najti, nastavite $JAVAC ali namestite gcj" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "virtualnega stroja za Javo ni najti, nastavite $JAVA ali namestite gij" #~ msgid "%s subprocess I/O error" #~ msgstr "V/I napaka podprocesa %s" #~ msgid "cannot change permissions of %s" #~ msgstr "dovoljenj %s ni mogoče spremeniti" #~ msgid "cannot create directory %s" #~ msgstr "imenika %s ni mogoče ustvariti" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Datoteke /dev/null ni uspelo odpreti za branje" #~ msgid "creation of reading thread failed" #~ msgstr "niti za pisanje ni bilo mogoče ustvariti" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "neblokiranega V/I za podproces %s ni mogoče nastaviti" #~ msgid "communication with %s subprocess failed" #~ msgstr "komunikacija s podprocesom %s ni uspela" #~ msgid "write to %s subprocess failed" #~ msgstr "pisanje na podproces %s ni uspelo" #~ msgid "read from %s subprocess failed" #~ msgstr "branje s podprocesa %s ni uspelo" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "podproces %s se je zaključil z izhodno kodo %d" #~ msgid "creation of threads failed" #~ msgstr "ustvarjanje niti ni uspelo" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "%s podproces se je zaključil z izhodno kodo %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "»" #~ msgid "'" #~ msgstr "«" #~ msgid "Success" #~ msgstr "Uspešno" #~ msgid "No match" #~ msgstr "Brez zadetkov" #~ msgid "Invalid regular expression" #~ msgstr "Neveljaven regularni izraz" #~ msgid "Invalid collation character" #~ msgstr "Neveljaven razvrščevalni znak" #~ msgid "Invalid character class name" #~ msgstr "Neveljavno ime razreda znakov" #~ msgid "Trailing backslash" #~ msgstr "Zaključna obratna poševnica" #~ msgid "Invalid back reference" #~ msgstr "Neveljaven povratni sklic" #~ msgid "Unmatched [ or [^" #~ msgstr "Uklepaj [ ali [^ brez para" #~ msgid "Unmatched ( or \\(" #~ msgstr "Uklepaj ( ali \\( brez para" #~ msgid "Unmatched \\{" #~ msgstr "Uklepaj \\{ brez para" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Neveljavna vsebina \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Neveljaven konec razpona" # ! INEXACT #~ msgid "Memory exhausted" #~ msgstr "Pomnilnik izčrpan" #~ msgid "Invalid preceding regular expression" #~ msgstr "Neveljaven predhodni regularni izraz" #~ msgid "Premature end of regular expression" #~ msgstr "Predčasen zaključek regularnega izraza" #~ msgid "Regular expression too big" #~ msgstr "Regularni izraz je preobsežen" #~ msgid "Unmatched ) or \\)" #~ msgstr "Zaklepaj ) ali \\) brez para" #~ msgid "No previous regular expression" #~ msgstr "Prejšnjega regularnega izraza ni" #~ msgid "^[yY]" #~ msgstr "^[jJdD]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "nastavljena dovoljenja za %s" #~ msgid "Hangup" #~ msgstr "Odklop" #~ msgid "Interrupt" #~ msgstr "Prekinitev" #~ msgid "Quit" #~ msgstr "Končanje" #~ msgid "Illegal instruction" #~ msgstr "Nedovoljen ukaz" #~ msgid "Trace/breakpoint trap" #~ msgstr "Past" #~ msgid "Aborted" #~ msgstr "Prekinjen" #~ msgid "Floating point exception" #~ msgstr "Prekoračitev plavajoče vejice" #~ msgid "Killed" #~ msgstr "Pobit" #~ msgid "Bus error" #~ msgstr "Napaka vodila" #~ msgid "Segmentation fault" #~ msgstr "Napaka segmentacije" #~ msgid "Broken pipe" #~ msgstr "Prekinjen cevovod" #~ msgid "Alarm clock" #~ msgstr "Budilka" #~ msgid "Terminated" #~ msgstr "Zaključen" #~ msgid "Urgent I/O condition" #~ msgstr "Nujno V/I stanje" #~ msgid "Stopped (signal)" #~ msgstr "Ustavljen (signal)" #~ msgid "Stopped" #~ msgstr "Ustavljen" #~ msgid "Continued" #~ msgstr "Nadaljevan" #~ msgid "Child exited" #~ msgstr "Izhod nasledniškega procesa" #~ msgid "Stopped (tty input)" #~ msgstr "Ustavljen (vhod TTY)" #~ msgid "Stopped (tty output)" #~ msgstr "Ustavljen (izhod TTY)" #~ msgid "I/O possible" #~ msgstr "Mogoč V/I" #~ msgid "CPU time limit exceeded" #~ msgstr "Presežena omejitev procesorskega časa" #~ msgid "File size limit exceeded" #~ msgstr "Presežena omejitev dolžine datoteke" #~ msgid "Virtual timer expired" #~ msgstr "Iztek virtualne štoparice" #~ msgid "Profiling timer expired" #~ msgstr "Iztek profilirne štoparice" #~ msgid "Window changed" #~ msgstr "Zamenjano okno" #~ msgid "User defined signal 1" #~ msgstr "Uporabniški signal 1" #~ msgid "User defined signal 2" #~ msgstr "Uporabniški signal 2" #~ msgid "EMT trap" #~ msgstr "Past EMT" #~ msgid "Bad system call" #~ msgstr "Slab sistemski klic" #~ msgid "Stack fault" #~ msgstr "Napaka sklada" #~ msgid "Information request" #~ msgstr "Informacijski zahtevek" #~ msgid "Power failure" #~ msgstr "Izpad toka" #~ msgid "Resource lost" #~ msgstr "Vir izgubljen" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "napaka pri pisanju na zaprt cevovod ali vtič" #~ msgid "cannot create pipe" #~ msgstr "ni mogoče ustvariti cevovoda" #~ msgid "Real-time signal %d" #~ msgstr "Realnočasovni signal %d" #~ msgid "Unknown signal %d" #~ msgstr "Neznani signal %d" #~ msgid "iconv function not usable" #~ msgstr "funkcija iconv ne deluje" #~ msgid "iconv function not available" #~ msgstr "funkcija iconv ni na voljo" #~ msgid "character out of range" #~ msgstr "koda znaka izven obsega" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "znaka s kodo U+%04X ni mogoče pretvoriti v lokalni nabor znakov" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "znaka s kodo U+%04X ni moč pretvoriti v lokalni nabor znakov: %s" #~ msgid "invalid user" #~ msgstr "neveljavno uporabniško ime" #~ msgid "invalid group" #~ msgstr "neveljavno ime skupine" #~ msgid "invalid spec" #~ msgstr "neveljavna specifikacija" #~ msgid "unable to display error message" #~ msgstr "sporočila o napaki ni mogoče prikazati" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Priprava paketa: %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Priprava paketa: %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "GPLv3+: GNU GPL, 3. izdaja ali poznejša \n" #~ "To je prosto programje; lahko ga redistribuirate in/ali spreminjate.\n" #~ "Za izdelek ni NOBENEGA JAMSTVA, do z zakonom dovoljene meje.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Avtor(ica): %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Avtorja: %s in %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Avtorji: %s, %s in %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Avtorji: %s, %s, %s\n" #~ "in %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Avtorji: %s, %s, %s,\n" #~ "%s in %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Avtorji: %s, %s, %s,\n" #~ "%s, %s in %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Avtorji: %s, %s, %s,\n" #~ "%s, %s, %s in %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Avtorji: %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "in %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Avtorji: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s in %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Avtorji: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s in drugi.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Poročila o napakah: %s\n" #~ "Napake v prevodu sporočite na .\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "" #~ "Napake v programu %s sporočite na: %s\n" #~ "Napake v prevodu sporočite na .\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Domača stran %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Spletna stran %s: .\n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Splošna pomoč za rabo programja GNU: .\n" #~ msgid "_open_osfhandle failed" #~ msgstr "klic _open_osfhandle ni uspel" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "ni mogoče obnoviti fd %d: klic dup2 ni uspel" #~ msgid "%s subprocess" #~ msgstr "podproces %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "podproces %s je prejel terminalni signal %d" #~ msgid "stdin" #~ msgstr "standardni vhod" #~ msgid "stdout" #~ msgstr "standardni izhod" #~ msgid "stderr" #~ msgstr "standardna izhod za napake" #~ msgid "unknown stream" #~ msgstr "neznani tok" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "ponovno odpiranje %s v načinu %s ni uspelo" #~ msgid "string comparison failed" #~ msgstr "primerjanje nizov ni uspelo" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Nastavite LC_ALL='C', da bi odpravili težavo." #~ msgid "The strings compared were %s and %s." #~ msgstr "Primerjana niza sta bila %s in %s." #~ msgid "cannot perform formatted output" #~ msgstr "oblikovanega izpisa ni mogoče izvesti" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "neveljavni %s%s argument »%s«" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "neveljavna pripona pri %s%s argumentu »%s«" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s: argument »%s« je prevelik" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: nedovoljena izbira -- %c\n" #~ msgid "" #~ "\n" #~ "Report bugs to <%s>.\n" #~ msgstr "" #~ "\n" #~ "Napake v programu sporočite na %s.\n" #~ "Napake v prevodu sporočite na .\n" #~ msgid "block size" #~ msgstr "velikost bloka" #~ msgid "%s exists but is not a directory" #~ msgstr "%s obstaja, vendar ni imenik" # ! INEXACT #~ msgid "cannot change owner and/or group of %s" #~ msgstr "lastnika in/ali skupine %s ni mogoče spremeniti" #~ msgid "cannot chdir to directory %s" #~ msgstr "dostop do imenika %s ni mogoč" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "imena skupine, ki pripada številčnemu UID, ni mogoče ugotoviti" #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Ta program je prosta programska oprema; lahko ga redistribuirate in/ali\n" #~ "spreminjate po pogojih, določenih v »GNU General Public License«, \n" #~ ". Za izdelek ni NOBENEGA JAMSTVA, " #~ "do\n" #~ "z zakonom dovoljene meje.\n" freedink-108.4+dfsg/gnulib/po/fi.po0000644000175000017500000005001312421730234014651 0ustar meme# Finnish messages for gnulib. # Copyright © 2002, 2003, 2004, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Lauri Nurmi , 2003, 2004. # Matti Koskimies , 2002. # Jorma Karvonen , 2009-2011. # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-12-10 19:05+0200\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural= ( n!=1) ;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Tuntematon järjestelmävirhe" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: valitsin ’%s’ ei ole yksiselitteinen; mahdollisuudet:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: valitsin ’--%s’ ei salli argumenttia\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: valitsin ’%c%s’ ei salli argumenttia\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: valitsin ’--%s’ vaatii argumentin\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: tunnistamaton valitsin ’--%s’\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: tunnistamaton valitsin ’%c%s’\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: epäkelpo valitsin -- ’%c’\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: valitsin vaatii argumentin -- ’%c’\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: valitsin ’-W %s’ ei ole yksiselitteinen\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: valitsin ’-W %s’ ei salli argumenttia\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: valitsin ’-W %s’ vaatii argumentin\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "ei kyetä tallentaman nykyistä työhakemistoa" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "alkuperäiseen työhakemistoon palaaminen epäonnistui" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "muisti loppui" #~ msgid "invalid argument %s for %s" #~ msgstr "virheellinen argumentti %s kohteelle %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "moniselitteinen argumentti %s kohteelle %s" #~ msgid "Valid arguments are:" #~ msgstr "Kelvolliset argumentit:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: %s arvo on pienempi tai yhtäsuuri kuin %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT parametri vaatii arvon" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT parametrin on oltava positiivinen" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Tuntematon ARGP_HELP_FMT-parametri" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Roskaa kohteessa ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Pitkien valitsimien pakolliset tai valinnaiset argumentit ovat pakollisia " #~ "tai valinnaisia myös lyhyille valitsimille." #~ msgid "Usage:" #~ msgstr "Käyttö:" #~ msgid " or: " #~ msgstr " tai: " #~ msgid " [OPTION...]" #~ msgstr " [VALITSIN...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Lisätietoja saa komennolla ”%s --help” tai ”%s --usage”.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Lähetä raportit ohjelmistovioista (englanniksi) osoitteeseen %s.\n" #~ msgid "give this help list" #~ msgstr "anna tämä opasteluettelo" #~ msgid "give a short usage message" #~ msgstr "anna tämä lyhyt käyttösanoma" #~ msgid "NAME" #~ msgstr "NIMI" #~ msgid "set the program name" #~ msgstr "aseta ohjelman nimi" #~ msgid "SECS" #~ msgstr "SEKUNTIA" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "odota SEKUNTIA sekuntia (oletus 3600)" #~ msgid "print program version" #~ msgstr "tulosta ohjelman versio" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(OHJELMAVIRHE) Versiota ei tiedetä!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Liian monta argumenttia\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(OHJELMAVIRHE) Valitsimen pitäisi olla tunnistettava!?" #~ msgid "program error" #~ msgstr "ohjelmavirhe" #~ msgid "stack overflow" #~ msgstr "pinon ylivuoto" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "ei voi löytää tilapäistä hakemistoa, yritä asettaa $TMPDIR-" #~ "ympäristömuuttuja" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "ei voida luoda tilapäistä hakemistoa käyttäen mallinnetta ”%s”" #~ msgid "cannot remove temporary file %s" #~ msgstr "ei voida poistaa tilapäistä tiedostoa %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "ei voida poistaa tilapäistä hakemistoa %s" #~ msgid "error closing file" #~ msgstr "virhe suljettaessa tiedostoa" #~ msgid "write error" #~ msgstr "kirjoitusvirhe" #~ msgid "preserving permissions for %s" #~ msgstr "säilytetään oikeudet kohteelle %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "virhe avattaessa tiedostoa ”%s” lukemista varten" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "ei voida avata varmuuskopiotiedostoa ”%s” kirjoittamista varten" #~ msgid "error reading \"%s\"" #~ msgstr "virhe luettaessa tiedostoa ”%s”" #~ msgid "error writing \"%s\"" #~ msgstr "virhe kirjoitettaessa tiedostoa ”%s”" #~ msgid "error after reading \"%s\"" #~ msgstr "virhe luettaessa tiedostoa ”%s”" #~ msgid "fdopen() failed" #~ msgstr "fdopen()-kutsu epäonnistui" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "C#-kääntäjää ei löytynyt, yritä asentaa pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "C#-virtuaalikonetta ei löytynyt, yritä asentaa pnet" #~ msgid "%s subprocess failed" #~ msgstr "%s-aliprosessi epäonnistui" #~ msgid "regular empty file" #~ msgstr "tavallinen tyhjä tiedosto" #~ msgid "regular file" #~ msgstr "tavallinen tiedosto" #~ msgid "directory" #~ msgstr "hakemisto" #~ msgid "block special file" #~ msgstr "lohkoerikoistiedosto" #~ msgid "character special file" #~ msgstr "merkkierikoistiedosto" #~ msgid "fifo" #~ msgstr "putkitiedosto" #~ msgid "symbolic link" #~ msgstr "symbolinen linkki" #~ msgid "socket" #~ msgstr "pistoke" #~ msgid "message queue" #~ msgstr "viestijono" #~ msgid "semaphore" #~ msgstr "semafori" #~ msgid "shared memory object" #~ msgstr "jaettu muistiobjekti" #~ msgid "typed memory object" #~ msgstr "tyypitetty muistiobjekti" #~ msgid "weird file" #~ msgstr "outo tiedosto" #~ msgid "Address family for hostname not supported" #~ msgstr "Osoiteperhe tietokonenimelle ei ole tuettu" #~ msgid "Temporary failure in name resolution" #~ msgstr "Tilapäinen virhe nimiratkaisussa" #~ msgid "Bad value for ai_flags" #~ msgstr "Väärä arvo kohteelle ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Korjaamaton virhe nimiratkaisussa" #~ msgid "ai_family not supported" #~ msgstr "ai_family ei ole tuettu" #~ msgid "Memory allocation failure" #~ msgstr "Muistinvarausvirhe" #~ msgid "No address associated with hostname" #~ msgstr "Tietokonenimeen ei ole liitetty osoitetta" #~ msgid "Name or service not known" #~ msgstr "Nimeä tai palvelua ei tunneta" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname ei ole tuettu kohteelle ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype ei ole tuettu" #~ msgid "System error" #~ msgstr "Järjestelmävirhe" #~ msgid "Argument buffer too small" #~ msgstr "Argumenttipuskuri on liian suuri" #~ msgid "Processing request in progress" #~ msgstr "Prosessointipyyntö käsittelyssä" #~ msgid "Request canceled" #~ msgstr "Pyyntö peruttu" #~ msgid "Request not canceled" #~ msgstr "Pyyntöä ei ole peruttu" #~ msgid "All requests done" #~ msgstr "Kaikki pyynnöt suoritettu" #~ msgid "Interrupted by a signal" #~ msgstr "Signaalin keskeyttämä" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parametrimerkkijono ei ole oikein koodattu" #~ msgid "Unknown error" #~ msgstr "Tuntematon virhe" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "virheellinen source_version-argumentti kohteelle compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "virheellinen target_version-argumentti kohteelle compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "kohteen ”%s” luominen epäonnistui" #~ msgid "error while writing \"%s\" file" #~ msgstr "virhe kirjoitettaessa tiedostoa ”%s”" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Java-kääntäjää ei löytynyt, yritä asentaa gcj tai aseta $JAVAC-" #~ "ympäristömuuttuja" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Java-virtuaalikonetta ei löytynyt, yritä asentaa gij tai aseta $JAVA-" #~ "ympäristömuuttuja" #~ msgid "%s subprocess I/O error" #~ msgstr "%s-aliprosessisiirräntävirhe" #~ msgid "cannot change permissions of %s" #~ msgstr "kohteen %s oikeuksien muuttaminen ei onnistu" #~ msgid "cannot create directory %s" #~ msgstr "hakemiston %s luominen ei onnistu" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Kohteen /dev/zero avaaminen lukemista varten epäonnistui" #~ msgid "creation of reading thread failed" #~ msgstr "lukemissäikeen luominen epäonnistui" # nonblocking I/O on synonyymi termille asynchronous I/O #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "ei voi asettaa tahdistamatonta siirräntää aliprosessille %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "viestintä aliprosessin %s kanssa epäonnistui" #~ msgid "write to %s subprocess failed" #~ msgstr "kirjoittaminen aliprosessiin %s epäonnistui" #~ msgid "read from %s subprocess failed" #~ msgstr "lukeminen aliprosessista %s epäonnistui" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "aliprosessi %s päättyi poistumiskoodilla %d" #~ msgid "creation of threads failed" #~ msgstr "säikeiden luominen epäonnistui" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "%s-aliprosessi päättyi poistumiskoodilla %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "”" #~ msgid "'" #~ msgstr "”" #~ msgid "Success" #~ msgstr "Onnistui" #~ msgid "No match" #~ msgstr "Ei osumaa" #~ msgid "Invalid regular expression" #~ msgstr "Virheellinen säännöllinen lauseke" #~ msgid "Invalid collation character" #~ msgstr "virheellinen collation-merkkiluokka" #~ msgid "Invalid character class name" #~ msgstr "Virheellinen merkkiluokkanimi" #~ msgid "Trailing backslash" #~ msgstr "Jälkikenoviiva" #~ msgid "Invalid back reference" #~ msgstr "Virheellinen paluuviite" #~ msgid "Unmatched [ or [^" #~ msgstr "Pariton [ tai [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "pariton ( tai \\(" #~ msgid "Unmatched \\{" #~ msgstr "Pariton \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Kohteen \\{\\} virheellinen sisältö" #~ msgid "Invalid range end" #~ msgstr "Virheellinen lukualueen loppu" #~ msgid "Memory exhausted" #~ msgstr "Muisti loppui" #~ msgid "Invalid preceding regular expression" #~ msgstr "Virheellinen edeltävä säännöllinen lauseke" #~ msgid "Premature end of regular expression" #~ msgstr "Ennenaikainen säännöllisen lausekkeen loppu" #~ msgid "Regular expression too big" #~ msgstr "Säännöllinen lauseke on liian iso" #~ msgid "Unmatched ) or \\)" #~ msgstr "Pariton ) tai \\)" #~ msgid "No previous regular expression" #~ msgstr "Ei edellistä säännöllistä lauseketta" # Kaikkihan muistavat kääntää nämä ja vastaavat juuri näin. Ei pelkkä kK. #~ msgid "^[yY]" #~ msgstr "^[kKyY]" #~ msgid "^[nN]" #~ msgstr "^[eEnN]" #~ msgid "setting permissions for %s" #~ msgstr "asetetaan oikeudet kohteelle %s" #~ msgid "Hangup" #~ msgstr "Yhteyden katkaisu" #~ msgid "Interrupt" #~ msgstr "Keskeytys" #~ msgid "Quit" #~ msgstr "Poistu" #~ msgid "Illegal instruction" #~ msgstr "Virheellinen käsky" #~ msgid "Trace/breakpoint trap" #~ msgstr "Jäljitys/keskeytyspistekeskeytys" #~ msgid "Aborted" #~ msgstr "Keskeytetty" #~ msgid "Floating point exception" #~ msgstr "Liukulukupoikkeus" #~ msgid "Killed" #~ msgstr "Sammutettu" #~ msgid "Bus error" #~ msgstr "Väylävirhe" #~ msgid "Segmentation fault" #~ msgstr "Osiinjakamisvirhe" #~ msgid "Broken pipe" #~ msgstr "Rikkoutunut putki" #~ msgid "Alarm clock" #~ msgstr "Hälytyskello" #~ msgid "Terminated" #~ msgstr "Päättynyt" #~ msgid "Urgent I/O condition" #~ msgstr "Kiireellinen siirräntätila" #~ msgid "Stopped (signal)" #~ msgstr "Pysäytetty (signaali)" #~ msgid "Stopped" #~ msgstr "Pysäytetty" #~ msgid "Continued" #~ msgstr "Jatkettu" #~ msgid "Child exited" #~ msgstr "Lapsiprosessi poistunut" #~ msgid "Stopped (tty input)" #~ msgstr "Pysäytetty (tty-syöte)" #~ msgid "Stopped (tty output)" #~ msgstr "Pysäytetty (tty-tuloste)" #~ msgid "I/O possible" #~ msgstr "Siirräntä mahdollinen" #~ msgid "CPU time limit exceeded" #~ msgstr "Suoritinaikaraja ylitetty" #~ msgid "File size limit exceeded" #~ msgstr "Tiedostonkokoraja ylitetty" #~ msgid "Virtual timer expired" #~ msgstr "Virtuaaliajastin päättynyt" #~ msgid "Profiling timer expired" #~ msgstr "Profilointiajastin päättynyt" #~ msgid "Window changed" #~ msgstr "Ikkuna vaihtunut" #~ msgid "User defined signal 1" #~ msgstr "Käyttäjän määrittelemä signaali 1" #~ msgid "User defined signal 2" #~ msgstr "Käyttäjän määrittelemä signaali 2" #~ msgid "EMT trap" #~ msgstr "EMT-keskeytys" #~ msgid "Bad system call" #~ msgstr "Väärä järjestelmäkutsu" #~ msgid "Stack fault" #~ msgstr "Pinovirhe" #~ msgid "Information request" #~ msgstr "Tietopyyntö" #~ msgid "Power failure" #~ msgstr "Teholähdevika" #~ msgid "Resource lost" #~ msgstr "Resurssi kadonnut" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "virhe kirjoitettaessa suljettuun putkeen tai pistokkeeseen" #~ msgid "cannot create pipe" #~ msgstr "ei voida luoda putkea" #~ msgid "Real-time signal %d" #~ msgstr "Tosiaikasignaali %d" #~ msgid "Unknown signal %d" #~ msgstr "Tuntematon signaali %d" #~ msgid "iconv function not usable" #~ msgstr "iconv-funktio ei ole käyttökelpoinen" #~ msgid "iconv function not available" #~ msgstr "iconv-funktio ei ole saatavilla" #~ msgid "character out of range" #~ msgstr "merkki sallitun välin ulkopuolella" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "merkin U+%04X muunnos paikalliseen merkistöön ei onnistu" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "merkin U+%04X muunnos paikalliseen merkistöön ei onnistu: %s" #~ msgid "invalid user" #~ msgstr "virheellinen käyttäjä" #~ msgid "invalid group" #~ msgstr "virheellinen ryhmä" #~ msgid "invalid spec" #~ msgstr "virheellinen määrittely" #~ msgid "unable to display error message" #~ msgstr "ei kyetä näyttämään virheilmoitusta" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Pakkaaja: %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Pakkaaja: %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Lisenssi GPLv3+: GNU GPL versio 3 tai myöhäisempi .\n" #~ "Tämä on vapaa ohjelmisto: voit vapaasti muuttaa sitä tai jakaa sitä " #~ "edelleen.\n" #~ "Ohjelmalle EI OLE TAKUUTA siinä laajuudessa mitä laki sen sallii.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Kirjoittanut %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Kirjoittaneet %s ja %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Kirjoittaneet %s, %s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Kirjoittaneet %s, %s,\n" #~ "%s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Kirjoittaneet %s, %s,\n" #~ "%s, %s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Kirjoittaneet %s, %s,\n" #~ "%s, %s, %s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Kirjoittaneet %s, %s,\n" #~ "%s, %s, %s,\n" #~ "%s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Kirjoittaneet %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Kirjoittaneet %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s ja %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Kirjoittaneet %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, %s ja muut.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Lähetä ilmoitukset ohjelmistovioista (englanniksi) osoitteeseen %s\n" #~ "Lähetä ilmoitukset käännösvirheistä osoitteeseen \n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "" #~ "Lähetä %s ilmoitukset ohjelmistovioista (englanniksi) osoitteeseen %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s kotisivu: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s kotisivu: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Yleinen opaste GNU-ohjelmiston käyttämiseen: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle epäonnistui" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "ei voi palauttaa fd %d: dup2 epäonnistui" #~ msgid "%s subprocess" #~ msgstr "%s-aliprosessi" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s-aliprosessi sai sammuttavan signaalin %d" #~ msgid "stdin" #~ msgstr "vakiosyöte" #~ msgid "stdout" #~ msgstr "vakiotuloste" #~ msgid "stderr" #~ msgstr "vakiovirhe" #~ msgid "unknown stream" #~ msgstr "tuntematon merkkivirta" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "kohteen %s avaaminen uudelleen tilassa %s epäonnistui" #~ msgid "string comparison failed" #~ msgstr "merkkijonovertailu epäonnistui" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Aseta LC_ALL='C' ongelman kiertämiseksi." #~ msgid "The strings compared were %s and %s." #~ msgstr "Vertaillut merkkijonot olivat %s ja %s." #~ msgid "cannot perform formatted output" #~ msgstr "muotoiltua tulostetta ei voitu suorittaa" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "virheellinen %s%s-argumentti ”%s”" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "virheellinen jälkiliite kohteen %s%s argumentissa ”%s”" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s argumentti ”%s” on liian iso" freedink-108.4+dfsg/gnulib/po/ru.gmo0000644000175000017500000000471112421730234015051 0ustar memexy,,,'-D r((%-:h*y8N\N|KP:hLL;=;y6d#Q Su     %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-08-22 21:05+0400 Last-Translator: Yuri Kozlov Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 1.0 %s: неправильный параметр -- «%c» %s: для параметра «%c%s» аргумент не разрешён %s: двусмысленный параметр «%s»; возможные варианты:%s: для параметра «--%s» аргумент не разрешён %s: для параметра «--%s» требуется аргумент %s: у параметра «-W %s» не может быть аргумента %s: двусмысленный параметр «-W %s» %s: для параметра «-W %s» требуется аргумент %s: для параметра требуется аргумент -- «%c» %s: нераспознанный параметр «%c%s» %s: нераспознанный параметр «--%s» Неизвестная системная ошибкане удалось вернуться в первоначальный рабочий каталогзакончилась памятьне удалось запомнить текущий рабочий каталогfreedink-108.4+dfsg/gnulib/po/sv.po0000644000175000017500000004632112421730234014712 0ustar meme# Swedish messages for gnulib. # Copyright © 1997, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Peter Antman , 1997. # Thomas Olsson , 1997. # Daniel Resare , 1999, 2000. # Göran Uddeborg , 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011. # # $Revision: 1.10 $ # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-08-22 19:16+0200\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Okänt systemfel" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: flaggan ”%s” är tvetydig: möjligheter:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: flaggan ”--%s” tar inget argument\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: flaggan ”%c%s” tar inget argument\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: flaggan ”--%s” kräver ett argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: okänd flagga \"--%s\"\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: okänd flagga \"%c%s\"\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ogiltig flagga -- \"%c\"\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: flaggan kräver ett argument -- \"%c\"\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: flaggan \"-W %s\" är tvetydig\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: flaggan \"-W %s\" tar inget argument\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flaggan ”-W %s” kräver ett argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "kan inte notera aktuell arbetskatalog" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "kunde inte återvända till den ursprungliga arbetskatalogen" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "minnet slut" #~ msgid "invalid argument %s for %s" #~ msgstr "felaktigt argument %s till %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "tvetydigt argument %s till %s" #~ msgid "Valid arguments are:" #~ msgstr "Giltiga argument är:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: värdet på %s är mindre än eller lika med %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT parametern kräver ett värde" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT parametern måste vara positiv" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Okänd ARGP_HELP_FMT-parameter" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Skräp i ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Obligatoriska eller valfria argument till långa flaggor är obligatoriska " #~ "eller valfria även för motsvarande korta flaggor." #~ msgid "Usage:" #~ msgstr "Användning:" #~ msgid " or: " #~ msgstr " eller: " #~ msgid " [OPTION...]" #~ msgstr " [FLAGGA...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Försök med ”%s --help” eller ”%s --usage” för mer information.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "Rapportera fel till %s.\n" #~ "Skicka synpunkter på översättningen till .\n" #~ msgid "give this help list" #~ msgstr "ge denna hjälplista" #~ msgid "give a short usage message" #~ msgstr "ge ett kort användningsmeddelande" #~ msgid "NAME" #~ msgstr "NAMN" #~ msgid "set the program name" #~ msgstr "ange programnamnet" #~ msgid "SECS" #~ msgstr "S" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "häng i S sekunder (3600 som standard)" #~ msgid "print program version" #~ msgstr "skriv ut programversion" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(PROGRAMFEL) Ingen version känd!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: För många argument\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(PROGRAMFEL) Flaggan borde ha känts igen!?" #~ msgid "program error" #~ msgstr "programfel" #~ msgid "stack overflow" #~ msgstr "stackspill" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "kan inte hitta en temporärkatalog, försök sätta $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "kan inte skapa en temporärkatalog med användning av mallen ”%s”" #~ msgid "cannot remove temporary file %s" #~ msgstr "kan inte ta bort temporärfil %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "kan inte ta bort temporärkatalog %s" #~ msgid "error closing file" #~ msgstr "fel när fil stängdes" #~ msgid "write error" #~ msgstr "skrivfel" #~ msgid "preserving permissions for %s" #~ msgstr "bevarar rättigheter på %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "fel när ”%s” öppnades för läsning" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "det går inte att öppna säkerthetskopiefil ”%s” för skrivning" #~ msgid "error reading \"%s\"" #~ msgstr "fel vid läsning av ”%s”" #~ msgid "error writing \"%s\"" #~ msgstr "fel vid skrivning av ”%s”" #~ msgid "error after reading \"%s\"" #~ msgstr "fel efter läsning av ”%s”" #~ msgid "fdopen() failed" #~ msgstr "fdopen() misslyckades" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "C#-kompilator hittades inte, försök installera pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "virtuell C#-maskinen hittades inte, försök installera pnet" #~ msgid "%s subprocess failed" #~ msgstr "%s-underprocess misslyckades" #~ msgid "regular empty file" #~ msgstr "tom normal fil" #~ msgid "regular file" #~ msgstr "normal fil" #~ msgid "directory" #~ msgstr "katalog" #~ msgid "block special file" #~ msgstr "blockspecialfil" #~ msgid "character special file" #~ msgstr "teckenspecialfil" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "symbolisk länk" #~ msgid "socket" #~ msgstr "uttag (socket)" #~ msgid "message queue" #~ msgstr "meddelandekö" #~ msgid "semaphore" #~ msgstr "semafor" #~ msgid "shared memory object" #~ msgstr "objekt av delat minne" #~ msgid "typed memory object" #~ msgstr "objekt av typat minne" #~ msgid "weird file" #~ msgstr "konstig fil" #~ msgid "Address family for hostname not supported" #~ msgstr "Adressfamiljen för värdnamnet stöds inte" #~ msgid "Temporary failure in name resolution" #~ msgstr "Tillfälligt fel i namnuppslagning" #~ msgid "Bad value for ai_flags" #~ msgstr "Felaktigt värde för ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Oreparabelt fel i namnuppslagning" #~ msgid "ai_family not supported" #~ msgstr "ai_family stöds inte" #~ msgid "Memory allocation failure" #~ msgstr "Minnesallokeringsfel" #~ msgid "No address associated with hostname" #~ msgstr "Ingen adress associerad med värdnamnet" #~ msgid "Name or service not known" #~ msgstr "Namn eller tjänst inte känd" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname stöds inte för ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype stöds inte" #~ msgid "System error" #~ msgstr "Systemfel" #~ msgid "Argument buffer too small" #~ msgstr "Argumentbufferten för liten" #~ msgid "Processing request in progress" #~ msgstr "Bearbetar pågående begäran" #~ msgid "Request canceled" #~ msgstr "Begäran annulerad" #~ msgid "Request not canceled" #~ msgstr "Begäran inte annulerad" #~ msgid "All requests done" #~ msgstr "Alla begäran utförda" #~ msgid "Interrupted by a signal" #~ msgstr "Avbruten av en signal" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parametersträng inte korrekt kodad" #~ msgid "Unknown error" #~ msgstr "Okänt fel" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "ogiltigt source_version-argument till compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "ogiltigt target_version-argument till compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "det gick inte att skapa \"%s\"" #~ msgid "error while writing \"%s\" file" #~ msgstr "fel vid skrivning av filen ”%s”" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Javakompilator hittades inte, försök installera gcj eller sätta $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Virtuell Javamaskin hittades inte, försök installera gij eller sätta $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "%s-underprocess I/O-fel" #~ msgid "cannot change permissions of %s" #~ msgstr "kan inte ändra rättigheter på %s" #~ msgid "cannot create directory %s" #~ msgstr "kan inte skapa katalogen %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Misslyckades att öppna /dev/zero för läsning" #~ msgid "creation of reading thread failed" #~ msgstr "att skapa lästråd misslyckades" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "" #~ "det gick inte att sätta upp icke blockerande I/O till %s-underprocess" #~ msgid "communication with %s subprocess failed" #~ msgstr "kommunikation med %s-underprocess misslyckades" #~ msgid "write to %s subprocess failed" #~ msgstr "skrivning till %s-underprocess misslyckades" #~ msgid "read from %s subprocess failed" #~ msgstr "läsning från %s-underprocess misslyckades" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "underprocess %s avslutad med slutstatus %d" #~ msgid "creation of threads failed" #~ msgstr "att skapa trådar misslyckades" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "%s-underprocess avslutad med slutstatus %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "”" #~ msgid "'" #~ msgstr "”" #~ msgid "Success" #~ msgstr "Lyckades" #~ msgid "No match" #~ msgstr "Ingen träff" #~ msgid "Invalid regular expression" #~ msgstr "Felaktigt reguljärt uttryck" #~ msgid "Invalid collation character" #~ msgstr "Ogiltigt sorteringstecken" #~ msgid "Invalid character class name" #~ msgstr "Ogiltigt teckenklassnamn" #~ msgid "Trailing backslash" #~ msgstr "Avslutande bakstreck" #~ msgid "Invalid back reference" #~ msgstr "Ogiltig bakåtreferens" #~ msgid "Unmatched [ or [^" #~ msgstr "Ensam [ eller [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Ensam ( eller \\(" #~ msgid "Unmatched \\{" #~ msgstr "Ensam \\\\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Ogiltigt innehåll i \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Ogiltigt intervallslut" #~ msgid "Memory exhausted" #~ msgstr "Minnet slut" #~ msgid "Invalid preceding regular expression" #~ msgstr "Felaktigt föregående reguljärt uttryck" #~ msgid "Premature end of regular expression" #~ msgstr "Förtida slut av reguljärt uttryck" #~ msgid "Regular expression too big" #~ msgstr "För stort reguljärt uttryck" #~ msgid "Unmatched ) or \\)" #~ msgstr "Ensam ) eller \\)" #~ msgid "No previous regular expression" #~ msgstr "Inget föregående reguljärt uttryck" #~ msgid "^[yY]" #~ msgstr "^[yYjJ]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "ändrar rättigheter på %s" #~ msgid "Hangup" #~ msgstr "Avringd" #~ msgid "Interrupt" #~ msgstr "Avbruten" #~ msgid "Quit" #~ msgstr "Lämnad" #~ msgid "Illegal instruction" #~ msgstr "Otillåten instruktion" #~ msgid "Trace/breakpoint trap" #~ msgstr "Spårnings-/brytpunktsfälla" #~ msgid "Aborted" #~ msgstr "Avbruten (abort)" #~ msgid "Floating point exception" #~ msgstr "Flyttalsundantag" #~ msgid "Killed" #~ msgstr "Dödad" #~ msgid "Bus error" #~ msgstr "Bussfel" #~ msgid "Segmentation fault" #~ msgstr "Segmenteringsfel" #~ msgid "Broken pipe" #~ msgstr "Brutet rör" #~ msgid "Alarm clock" #~ msgstr "Alarmklocka" #~ msgid "Terminated" #~ msgstr "Avslutad" #~ msgid "Urgent I/O condition" #~ msgstr "Brådskande I/O-situation" #~ msgid "Stopped (signal)" #~ msgstr "Stoppad (signal)" #~ msgid "Stopped" #~ msgstr "Stoppad" #~ msgid "Continued" #~ msgstr "Återupptagen" #~ msgid "Child exited" #~ msgstr "Barn avslutade" #~ msgid "Stopped (tty input)" #~ msgstr "Stoppad (terminalläsning)" #~ msgid "Stopped (tty output)" #~ msgstr "Stoppad (terminalskrivning)" #~ msgid "I/O possible" #~ msgstr "I/O möjligt" #~ msgid "CPU time limit exceeded" #~ msgstr "Begränsning av CPU-tid överskriden" #~ msgid "File size limit exceeded" #~ msgstr "Begränsning av filstorlek överskriden" #~ msgid "Virtual timer expired" #~ msgstr "Alarmklocka - virtuell tid" #~ msgid "Profiling timer expired" #~ msgstr "Profileringsklocka" #~ msgid "Window changed" #~ msgstr "Ändrat fönster" #~ msgid "User defined signal 1" #~ msgstr "Användarsignal 1" #~ msgid "User defined signal 2" #~ msgstr "Användarsignal 2" #~ msgid "EMT trap" #~ msgstr "Emulatorfälla" #~ msgid "Bad system call" #~ msgstr "Felaktigt systemanrop" #~ msgid "Stack fault" #~ msgstr "Stackfel" #~ msgid "Information request" #~ msgstr "Informationsbegäran" #~ msgid "Power failure" #~ msgstr "Strömavbrott" #~ msgid "Resource lost" #~ msgstr "Förlorad resurs" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "fel vid skrivning till ett stängt rör eller uttag" #~ msgid "cannot create pipe" #~ msgstr "kan inte skapa rör" #~ msgid "Real-time signal %d" #~ msgstr "Realtidsignal %d" #~ msgid "Unknown signal %d" #~ msgstr "Okänd signal %d" #~ msgid "iconv function not usable" #~ msgstr "iconv-funktion inte användbar" #~ msgid "iconv function not available" #~ msgstr "iconv-funktion inte tillgänglig" #~ msgid "character out of range" #~ msgstr "tecken utanför intervall" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "kan inte konvertera U+%04X till lokal teckenuppsättning" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "kan inte konvertera U+%04X till lokal teckenuppsättning: %s" #~ msgid "invalid user" #~ msgstr "ogiltig användare" #~ msgid "invalid group" #~ msgstr "ogiltig grupp" #~ msgid "invalid spec" #~ msgstr "ogiltig specifikation" #~ msgid "unable to display error message" #~ msgstr "kan inte visa felmeddelande" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Paketerat av %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Paketerat av %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licens GPLv3+: GNU GPL version 3 eller senare .\n" #~ "Detta är fri programvara: du får lov att ändra och vidaredistribuera " #~ "den.\n" #~ "Det finns INGEN GARANTI, så långt lagen tillåter.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Skrivet av %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Skrivet av %s och %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Skrivet av %s, %s och %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Skrivet av %s, %s, %s\n" #~ "och %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Skrivet av %s, %s, %s,\n" #~ "%s och %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Skrivet av %s, %s, %s,\n" #~ "%s, %s och %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Skrivet av %s, %s, %s,\n" #~ "%s, %s, %s och %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Skrivet av %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "och %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Skrivet av %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s och %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Skrivet av %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s med flera.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Rapportera fel till: %s\n" #~ "Skicka synpunkter på översättningen till: tp-sv@listor.tp-sv.se\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Rapportera %s-fel till: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s hemsida: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s hemsida: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Allmän hjälp med att använda GNU-program: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle misslyckades" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "kan inte återställa fb %d: dup2 misslyckades" #~ msgid "%s subprocess" #~ msgstr "%s-underprocess" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s-underprocess fick ödesdiger signal %d" #~ msgid "stdin" #~ msgstr "standard in" #~ msgid "stdout" #~ msgstr "standard ut" #~ msgid "stderr" #~ msgstr "standard fel" #~ msgid "unknown stream" #~ msgstr "okänd ström" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "det gick inte att öppna om %s i läget %s" #~ msgid "string comparison failed" #~ msgstr "strängjämförelse misslyckades" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Sätt LC_ALL='C' för att gå runt problemet." #~ msgid "The strings compared were %s and %s." #~ msgstr "De jämförda strängarna var %s och %s." #~ msgid "cannot perform formatted output" #~ msgstr "kan inte utföra formaterad utmatning" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "felaktigt %s%s-argument \"%s\"" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "felaktigt suffix i %s%s-argument \"%s\"" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s argument \"%s\" är för stort" freedink-108.4+dfsg/gnulib/po/POTFILES.in0000644000175000017500000001112612420231224015464 0ustar meme## DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # List of files which contain translatable strings. gnulib/lib/alloca.c gnulib/lib/alloca.in.h gnulib/lib/allocator.c gnulib/lib/allocator.h gnulib/lib/areadlink-with-size.c gnulib/lib/areadlink.c gnulib/lib/areadlink.h gnulib/lib/asnprintf.c gnulib/lib/asprintf.c gnulib/lib/at-func.c gnulib/lib/basename-lgpl.c gnulib/lib/basename.c gnulib/lib/bitrotate.c gnulib/lib/bitrotate.h gnulib/lib/c-ctype.c gnulib/lib/c-ctype.h gnulib/lib/canonicalize-lgpl.c gnulib/lib/canonicalize.c gnulib/lib/canonicalize.h gnulib/lib/careadlinkat.c gnulib/lib/careadlinkat.h gnulib/lib/chdir-long.c gnulib/lib/chdir-long.h gnulib/lib/cloexec.c gnulib/lib/cloexec.h gnulib/lib/close.c gnulib/lib/closedir.c gnulib/lib/dirent-private.h gnulib/lib/dirent.in.h gnulib/lib/dirfd.c gnulib/lib/dirname-lgpl.c gnulib/lib/dirname.c gnulib/lib/dirname.h gnulib/lib/dosname.h gnulib/lib/dup-safer.c gnulib/lib/dup.c gnulib/lib/dup2.c gnulib/lib/errno.in.h gnulib/lib/error.c gnulib/lib/error.h gnulib/lib/exitfail.c gnulib/lib/exitfail.h gnulib/lib/fchdir.c gnulib/lib/fcntl.c gnulib/lib/fcntl.in.h gnulib/lib/fd-hook.c gnulib/lib/fd-hook.h gnulib/lib/fd-safer.c gnulib/lib/fdopendir.c gnulib/lib/file-set.c gnulib/lib/file-set.h gnulib/lib/filename.h gnulib/lib/filenamecat-lgpl.c gnulib/lib/filenamecat.h gnulib/lib/float+.h gnulib/lib/float.c gnulib/lib/float.in.h gnulib/lib/fstat.c gnulib/lib/fstatat.c gnulib/lib/getcwd-lgpl.c gnulib/lib/getcwd.c gnulib/lib/getdtablesize.c gnulib/lib/getopt.c gnulib/lib/getopt.in.h gnulib/lib/getopt1.c gnulib/lib/getopt_int.h gnulib/lib/gettext.h gnulib/lib/gettimeofday.c gnulib/lib/hash-pjw.c gnulib/lib/hash-pjw.h gnulib/lib/hash-triple.c gnulib/lib/hash-triple.h gnulib/lib/hash.c gnulib/lib/hash.h gnulib/lib/intprops.h gnulib/lib/itold.c gnulib/lib/lstat.c gnulib/lib/malloc.c gnulib/lib/malloca.c gnulib/lib/malloca.h gnulib/lib/malloca.valgrind gnulib/lib/memchr.c gnulib/lib/memchr.valgrind gnulib/lib/mempcpy.c gnulib/lib/memrchr.c gnulib/lib/msvc-inval.c gnulib/lib/msvc-inval.h gnulib/lib/msvc-nothrow.c gnulib/lib/msvc-nothrow.h gnulib/lib/open.c gnulib/lib/openat-die.c gnulib/lib/openat-priv.h gnulib/lib/openat-proc.c gnulib/lib/openat.c gnulib/lib/openat.h gnulib/lib/opendir.c gnulib/lib/pathmax.h gnulib/lib/pipe-safer.c gnulib/lib/printf-args.c gnulib/lib/printf-args.h gnulib/lib/printf-parse.c gnulib/lib/printf-parse.h gnulib/lib/progname.c gnulib/lib/progname.h gnulib/lib/progreloc.c gnulib/lib/readdir.c gnulib/lib/readlink.c gnulib/lib/realloc.c gnulib/lib/relocatable.c gnulib/lib/relocatable.h gnulib/lib/relocwrapper.c gnulib/lib/rewinddir.c gnulib/lib/same-inode.h gnulib/lib/same.c gnulib/lib/same.h gnulib/lib/save-cwd.c gnulib/lib/save-cwd.h gnulib/lib/setenv.c gnulib/lib/size_max.h gnulib/lib/stat.c gnulib/lib/stdbool.in.h gnulib/lib/stddef.in.h gnulib/lib/stdint.in.h gnulib/lib/stdio.in.h gnulib/lib/stdlib.in.h gnulib/lib/strcasecmp.c gnulib/lib/strdup.c gnulib/lib/strerror-override.c gnulib/lib/strerror-override.h gnulib/lib/strerror.c gnulib/lib/string.in.h gnulib/lib/strings.in.h gnulib/lib/stripslash.c gnulib/lib/strncasecmp.c gnulib/lib/strndup.c gnulib/lib/strnlen.c gnulib/lib/sys_stat.in.h gnulib/lib/sys_time.in.h gnulib/lib/sys_types.in.h gnulib/lib/time.in.h gnulib/lib/unistd--.h gnulib/lib/unistd-safer.h gnulib/lib/unistd.c gnulib/lib/unistd.in.h gnulib/lib/vasnprintf.c gnulib/lib/vasnprintf.h gnulib/lib/vasprintf.c gnulib/lib/verify.h gnulib/lib/wchar.in.h gnulib/lib/xalloc-die.c gnulib/lib/xalloc-oversized.h gnulib/lib/xalloc.h gnulib/lib/xgetcwd.c gnulib/lib/xgetcwd.h gnulib/lib/xmalloc.c gnulib/lib/xreadlink.c gnulib/lib/xreadlink.h gnulib/lib/xsize.c gnulib/lib/xsize.h gnulib/lib/xstrndup.c gnulib/lib/xstrndup.h freedink-108.4+dfsg/gnulib/po/bg.po0000644000175000017500000003433712421730234014656 0ustar meme# translation of coreutils.bg.po to Bulgarian # Message catalog for coreutils # Copyright (C) 2003 Free Software Foundation, Inc. # This file is distributed under the same license as the coreutils package. # Anton Zinoviev , 2003,2004. # msgid "" msgstr "" "Project-Id-Version: coreutils 5.90\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2005-10-12 21:41+0300\n" "Last-Translator: Anton Zinoviev \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Непозната системна грешка" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: опцията \"%s\" е двусмислена\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: опцията \"--%s\" не допуска аргумент\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: опцията \"%c%s\" не допуска аргумент\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: опцията \"%s\" изисква аргумент\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: непозната опция \"--%s\"\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: непозната опция \"%c%s\"\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: неправилна опция -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: опция изисква аргумент -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: опцията \"-W %s\" е двусмислена\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: опцията \"-W %s\" не допуска аргумент\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: опцията \"%s\" изисква аргумент\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "не може да се запомни текущият работен каталог" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "невъзможно връщане в първоначалния работен каталог" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "паметта е изчерпана" #~ msgid "invalid argument %s for %s" #~ msgstr "недопустим аргумент %s за %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "двусмислен аргумент %s за %s" #~ msgid "Valid arguments are:" #~ msgstr "Допустими аргументи са:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Аргументите, задължителни за дългите опции, са задължителни и за късите.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Използване: %s [ОПЦИЯ]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Използвайте \"%s --help\" за повече информация.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Съобщавайте за програмни грешки на <%s>.\n" #~ msgid "NAME" #~ msgstr "ИМЕ" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: твърде много редове с контролни суми" #, fuzzy #~ msgid "program error" #~ msgstr "грешка при четене" #~ msgid "write error" #~ msgstr "грешка при запис" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "не може да се отвори %s за четене" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "не може да се отвори %s за запис" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "грешка при четене на %s" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "грешка при запис в %s" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "грешка при четене на %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "неуспешно отваряне на файл" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: неуспешно позициониране (seek) във файл" #~ msgid "regular empty file" #~ msgstr "обикновеният празен файл" #~ msgid "regular file" #~ msgstr "обикновеният файл" #~ msgid "directory" #~ msgstr "каталогът" #~ msgid "block special file" #~ msgstr "специалният блоков файл" #~ msgid "character special file" #~ msgstr "специалният символен файл" #~ msgid "fifo" #~ msgstr "именуваният канал" #~ msgid "symbolic link" #~ msgstr "символната връзка" #~ msgid "socket" #~ msgstr "гнездото" #~ msgid "message queue" #~ msgstr "опашката със съобщения" #~ msgid "semaphore" #~ msgstr "семафорът" #~ msgid "shared memory object" #~ msgstr "споделеният обект в паметта" #~ msgid "typed memory object" #~ msgstr "типизираният обект в паметта" #~ msgid "weird file" #~ msgstr "странният файл" #~ msgid "Address family for hostname not supported" #~ msgstr "Този тип адреси не се поддържа за името на хоста" #~ msgid "Temporary failure in name resolution" #~ msgstr "Временен проблем при намиране IP-адреса на хост" #~ msgid "Bad value for ai_flags" #~ msgstr "Неправил на стойност за ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Окончателен неуспех при намиране IP-адреса на хост" #~ msgid "ai_family not supported" #~ msgstr "не се поддържа посочването на тип адреси (ai_family)" #~ msgid "Memory allocation failure" #~ msgstr "Неуспешно заделяне на памет" #~ msgid "No address associated with hostname" #~ msgstr "Няма IP-адрес с посоченото име на хост" #~ msgid "Name or service not known" #~ msgstr "Името или услугата са непознати" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "" #~ "Името на услугата не се поддържа за използваното тип гнездо (ai_socktype)" #~ msgid "ai_socktype not supported" #~ msgstr "не се поддържа посочването на тип гнездо (ai_socktype)" #~ msgid "System error" #~ msgstr "грешка в системата" #~ msgid "Processing request in progress" #~ msgstr "Заявката е в процес на изпълнение" #~ msgid "Request canceled" #~ msgstr "Заявката е отменена" #~ msgid "Request not canceled" #~ msgstr "Заявката не е отменена" #~ msgid "All requests done" #~ msgstr "Изпълнени са всички заявки" #~ msgid "Interrupted by a signal" #~ msgstr "Прекъснат със сигнал" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Неправилно кодиран низ на аргумент" #~ msgid "Unknown error" #~ msgstr "Непозната грешка" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: неправилна опция -- %c\n" #~ msgid "block size" #~ msgstr "блоковият размер" #~ msgid "%s exists but is not a directory" #~ msgstr "%s съществува, но не е каталог" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "не може да се смени собственика и/или групата на %s" #~ msgid "cannot create directory %s" #~ msgstr "не може да се създаде каталог %s" #~ msgid "cannot chdir to directory %s" #~ msgstr "не може да се влезе в каталога %s" #~ msgid "cannot change permissions of %s" #~ msgstr "не може да се сменят правата за достъп до %s" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "%s: не може да се отвори в режим за писане" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "не може да се създаде връзка %s" #~ msgid "`" #~ msgstr "\"" #~ msgid "'" #~ msgstr "\"" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: неправилен регулярен израз: %s" #, fuzzy #~ msgid "Invalid collation character" #~ msgstr "неправилен клас от символи %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "неправилен клас от символи %s" #, fuzzy #~ msgid "Invalid back reference" #~ msgstr "Неправилен диапазон от страници %s" #, fuzzy #~ msgid "Invalid range end" #~ msgstr "Неправилен диапазон от страници %s" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "паметта е изчерпана" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: неправилен регулярен израз: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "грешка при търсене на регулярен израз" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "грешка при пасването на регулярния израз" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "грешка при търсене на регулярен израз" # Клавишът О (латинско) генерира "Д" според подредбата по БДС #~ msgid "^[yY]" #~ msgstr "^[дДoOyY]" # Клавишът K (латинско) генерира "Н" според подредбата по БДС #~ msgid "^[nN]" #~ msgstr "^[нНkKnN]" #~ msgid "iconv function not usable" #~ msgstr "функцията iconv не е използваема" #~ msgid "iconv function not available" #~ msgstr "функцията iconv е недостъпна" #~ msgid "character out of range" #~ msgstr "знак извън диапазона" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "не може да се конвертира U+%04X в локалното кодиране" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "не може да се конвертира U+%04X в локалното кодиране: %s" #~ msgid "invalid user" #~ msgstr "несъществуващ потребител" #~ msgid "invalid group" #~ msgstr "несъществуваща група" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "не може да се получи входящата група по потребителски номер" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Това е свободен софтуер. Можете да разпространявате негови копия " #~ "съгласно\n" #~ "условията на Основната общодостъпна лицензия на ГНУ\n" #~ " .\n" #~ "Не се дават НИКАКВИ ГАРАНЦИИ до степента, позволявана от закона.\n" #~ msgid "Written by %s.\n" #~ msgstr "Написан от %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Написан от %s и %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Написан от %s, %s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Написан от %s, %s, %s\n" #~ "и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Написан от %s, %s, %s,\n" #~ "%s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Написан от %s, %s, %s,\n" #~ "%s, %s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Написан от %s, %s, %s,\n" #~ "%s, %s, %s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Написан от %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Написан от %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Написан от %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s и други.\n" #~ msgid "string comparison failed" #~ msgstr "сравнението на низове не успя" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Използвайте LC_ALL='C', за да заобиколите този проблем." #~ msgid "The strings compared were %s and %s." #~ msgstr "Сравняваните низове бяха %s и %s." freedink-108.4+dfsg/gnulib/po/boldquot.sed0000644000175000017500000000033112420230524016233 0ustar memes/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g freedink-108.4+dfsg/gnulib/po/tr.gmo0000644000175000017500000000133612421730234015050 0ustar meme<\pq-2Unknown system errorfailed to return to initial working directorymemory exhaustedProject-Id-Version: coreutils 5.3.0 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2005-03-14 04:17+0200 Last-Translator: Deniz Akkus Kanca Language-Team: Turkish Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: KBabel 1.9.1 Bilinmeyen sistem hatasıbaşlangıç çalışma dizinine geri dönülemedibellek tükendifreedink-108.4+dfsg/gnulib/po/quot.sed0000644000175000017500000000023112420230524015371 0ustar memes/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g freedink-108.4+dfsg/gnulib/po/ru.po0000644000175000017500000006036012421730234014707 0ustar meme# translation of gnulib-2.0.0.3462.e9796.ru.po to Russian # Copyright (C) 2005, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # # Sergey Poznyakoff , 2003,2004,2005. # Yuri Kozlov , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-08-22 21:05+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.0\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Неизвестная системная ошибка" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: двусмысленный параметр «%s»; возможные варианты:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: для параметра «--%s» аргумент не разрешён\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: для параметра «%c%s» аргумент не разрешён\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: для параметра «--%s» требуется аргумент\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: нераспознанный параметр «--%s»\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: нераспознанный параметр «%c%s»\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: неправильный параметр -- «%c»\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: для параметра требуется аргумент -- «%c»\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: двусмысленный параметр «-W %s»\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: у параметра «-W %s» не может быть аргумента\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: для параметра «-W %s» требуется аргумент\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "не удалось запомнить текущий рабочий каталог" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "не удалось вернуться в первоначальный рабочий каталог" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "закончилась память" #~ msgid "invalid argument %s for %s" #~ msgstr "неверный аргумент %s для %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "неоднозначный аргумент %s для %s" #~ msgid "Valid arguments are:" #~ msgstr "Верные аргументы:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: значение %s меньше или равно %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: параметр ARGP_HELP_FMT требует значения" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: значение параметра ARGP_HELP_FMT должно быть положительным" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: неизвестный параметр ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Мусор в ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Обязательные или необязательные аргументы к длинным именам параметров " #~ "остаются таковыми и к соответствующим коротким параметрам." #~ msgid "Usage:" #~ msgstr "Использование:" #~ msgid " or: " #~ msgstr " или: " #~ msgid " [OPTION...]" #~ msgstr " [ПАРАМЕТР...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "Попробуйте «%s --help» или «%s --usage» для получения более подробного " #~ "описания.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Об ошибках сообщай по адресу %s.\n" #~ msgid "give this help list" #~ msgstr "показать эту справку" #~ msgid "give a short usage message" #~ msgstr "показать короткую справку по использованию" #~ msgid "NAME" #~ msgstr "ИМЯ" #~ msgid "set the program name" #~ msgstr "задать имя программы" #~ msgid "SECS" #~ msgstr "СЕКУНД" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "остановиться на заданное число СЕКУНД (по умолчанию 3600)" #~ msgid "print program version" #~ msgstr "показать номер версии программы" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(ОШИБКА ПРОГРАММЫ) Версия неизвестна!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: слишком много аргументов\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(ОШИБКА ПРОГРАММЫ) Параметр должен был быть распознан!?" #~ msgid "program error" #~ msgstr "программная ошибка" #~ msgid "stack overflow" #~ msgstr "переполнение стека" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "не удалось найти временный каталог, попробуйте задать $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "не удалось создать временный каталог с помощью шаблона «%s»" #~ msgid "cannot remove temporary file %s" #~ msgstr "не удалось удалить временный файл %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "не удалось удалить временный каталог %s" #~ msgid "error closing file" #~ msgstr "ошибка закрытия файла" #~ msgid "write error" #~ msgstr "ошибка записи" #~ msgid "preserving permissions for %s" #~ msgstr "сохраняются права доступа для %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "ошибка при открытии «%s» для чтения" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "не удалось открыть файл резервной копии «%s» для записи" #~ msgid "error reading \"%s\"" #~ msgstr "ошибка чтения «%s»" #~ msgid "error writing \"%s\"" #~ msgstr "ошибка записи «%s»" #~ msgid "error after reading \"%s\"" #~ msgstr "ошибка после чтения «%s»" #~ msgid "fdopen() failed" #~ msgstr "ошибка при выполнении fdopen()" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "Не найден компилятор C#, попробуйте установить pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "Не найдена виртуальная машина C#, попробуйте установить pnet" #~ msgid "%s subprocess failed" #~ msgstr "подпроцесс %s завершился с ошибкой" #~ msgid "regular empty file" #~ msgstr "пустой обычный файл" #~ msgid "regular file" #~ msgstr "обычный файл" #~ msgid "directory" #~ msgstr "каталог" #~ msgid "block special file" #~ msgstr "блочный специальный файл" #~ msgid "character special file" #~ msgstr "символьный специальный файл" #~ msgid "fifo" #~ msgstr "файл-очередь" #~ msgid "symbolic link" #~ msgstr "символьная ссылка" #~ msgid "socket" #~ msgstr "сокет" #~ msgid "message queue" #~ msgstr "очередь сообщений" #~ msgid "semaphore" #~ msgstr "семафор" #~ msgid "shared memory object" #~ msgstr "объект общей памяти" #~ msgid "typed memory object" #~ msgstr "объект типизированной памяти" #~ msgid "weird file" #~ msgstr "странный файл" #~ msgid "Address family for hostname not supported" #~ msgstr "Адресное семейство не поддерживается для имени узла" #~ msgid "Temporary failure in name resolution" #~ msgstr "Временная ошибка при определении имени" #~ msgid "Bad value for ai_flags" #~ msgstr "Неверное значение для ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Невосстановимая ошибка при определении имени" #~ msgid "ai_family not supported" #~ msgstr "ai_family не поддерживается" #~ msgid "Memory allocation failure" #~ msgstr "Ошибка при выделении памяти" #~ msgid "No address associated with hostname" #~ msgstr "С именем узла не связано ни одного адреса" #~ msgid "Name or service not known" #~ msgstr "Неизвестное имя или служба" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname не поддерживается для ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype не поддерживается" #~ msgid "System error" #~ msgstr "Системная ошибка" #~ msgid "Argument buffer too small" #~ msgstr "Слишком маленький буфер, указанный в аргументе" #~ msgid "Processing request in progress" #~ msgstr "Выполняется обработка запроса" #~ msgid "Request canceled" #~ msgstr "Запрос отменён" #~ msgid "Request not canceled" #~ msgstr "Запрос не отменён" #~ msgid "All requests done" #~ msgstr "Все запросы выполнены" #~ msgid "Interrupted by a signal" #~ msgstr "Прервано по сигналу" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Строковый параметр неправильно закодирован" #~ msgid "Unknown error" #~ msgstr "Неизвестная ошибка" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "неверный аргумент source_version для compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "неверный аргумент target_version для compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "не удалось создать «%s»" #~ msgid "error while writing \"%s\" file" #~ msgstr "ошибка записи в файл «%s»" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Не найден компилятор Java, попробуйте установить gcj или задать $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Не найдена виртуальная машина Java, попробуйте установить gcj или задать " #~ "$JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "ошибка вв/вывода подпроцесса %s" #~ msgid "cannot change permissions of %s" #~ msgstr "невозможно изменить права доступа %s" #~ msgid "cannot create directory %s" #~ msgstr "невозможно создать каталог %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Не удалось открыть /dev/zero на чтение" #~ msgid "creation of reading thread failed" #~ msgstr "не удалось создать нить для чтения" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "не удалось настроить неблокированный ввод-вывод в подпроцессе %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "не удалось связаться с подпроцессом %s" #~ msgid "write to %s subprocess failed" #~ msgstr "не удалось записать в подпроцесс %s" #~ msgid "read from %s subprocess failed" #~ msgstr "не удалось прочитать из подпроцесса %s" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "подпроцесс %s завершился с кодом выхода %d" #~ msgid "creation of threads failed" #~ msgstr "не удалось создать нити" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "подпроцесс %s завершился с кодом выхода %d" #~ msgid "Franc,ois Pinard" #~ msgstr "Френсис Пинард (Franc,ois Pinard)" #~ msgid "`" #~ msgstr "«" #~ msgid "'" #~ msgstr "»" #~ msgid "Success" #~ msgstr "Успешно" #~ msgid "No match" #~ msgstr "Нет совпадений" #~ msgid "Invalid regular expression" #~ msgstr "Неверное регулярное выражение" #~ msgid "Invalid collation character" #~ msgstr "Неверный символ сравнения" #~ msgid "Invalid character class name" #~ msgstr "Неверное имя класса символов" #~ msgid "Trailing backslash" #~ msgstr "Конечная обратная косая черта" #~ msgid "Invalid back reference" #~ msgstr "Неверная обратная ссылка" #~ msgid "Unmatched [ or [^" #~ msgstr "Непарная [ или [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Непарная ( или \\(" #~ msgid "Unmatched \\{" #~ msgstr "Непарная \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Недопустимое содержимое в \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Неверный конец диапазона" #~ msgid "Memory exhausted" #~ msgstr "Закончилась память" #~ msgid "Invalid preceding regular expression" #~ msgstr "Недопустимое предшествующее регулярное выражение" #~ msgid "Premature end of regular expression" #~ msgstr "Преждевременное завершение регулярного выражения" #~ msgid "Regular expression too big" #~ msgstr "Слишком большое регулярное выражение" #~ msgid "Unmatched ) or \\)" #~ msgstr "Непарная ) или \\)" #~ msgid "No previous regular expression" #~ msgstr "Отсутствует предыдущее регулярное выражение" #~ msgid "^[yY]" #~ msgstr "^[ДдYy]" #~ msgid "^[nN]" #~ msgstr "^[НнNn]" #~ msgid "setting permissions for %s" #~ msgstr "задание прав доступа для %s" #~ msgid "Hangup" #~ msgstr "Обрыв терминальной линии" #~ msgid "Interrupt" #~ msgstr "Прерывание" #~ msgid "Quit" #~ msgstr "Аварийное прерывание" #~ msgid "Illegal instruction" #~ msgstr "Недопустимая инструкция" #~ msgid "Trace/breakpoint trap" #~ msgstr "Прерывание на контрольной точке" #~ msgid "Aborted" #~ msgstr "Прервано" #~ msgid "Floating point exception" #~ msgstr "Ошибка операции с плавающей точкой" #~ msgid "Killed" #~ msgstr "Уничтожение" #~ msgid "Bus error" #~ msgstr "Ошибка шины" #~ msgid "Segmentation fault" #~ msgstr "Нарушение сегментирования" #~ msgid "Broken pipe" #~ msgstr "Обрыв канала" #~ msgid "Alarm clock" #~ msgstr "Сигнал по таймеру" #~ msgid "Terminated" #~ msgstr "Завершение" #~ msgid "Urgent I/O condition" #~ msgstr "Срочная операция ввода-вывода" #~ msgid "Stopped (signal)" #~ msgstr "Останов (сигнал)" #~ msgid "Stopped" #~ msgstr "Останов" #~ msgid "Continued" #~ msgstr "Возобновление" #~ msgid "Child exited" #~ msgstr "Потомок завершил работу" #~ msgid "Stopped (tty input)" #~ msgstr "Останов (ввод с терминала)" #~ msgid "Stopped (tty output)" #~ msgstr "Останов (вывод с терминала)" #~ msgid "I/O possible" #~ msgstr "Возможен ввод-вывод" #~ msgid "CPU time limit exceeded" #~ msgstr "Превышен предел по процессорному времени" #~ msgid "File size limit exceeded" #~ msgstr "Превышен предел размера файла" #~ msgid "Virtual timer expired" #~ msgstr "Виртуальное время истекло" #~ msgid "Profiling timer expired" #~ msgstr "Время профилирования истекло" #~ msgid "Window changed" #~ msgstr "Окно изменено" #~ msgid "User defined signal 1" #~ msgstr "Определяемый пользователем сигнал 1" #~ msgid "User defined signal 2" #~ msgstr "Определяемый пользователем сигнал 2" #~ msgid "EMT trap" #~ msgstr "Ловушка EMT" #~ msgid "Bad system call" #~ msgstr "Неправильный системный вызов" #~ msgid "Stack fault" #~ msgstr "Ошибка работы со стеком" #~ msgid "Information request" #~ msgstr "Запрос информации" #~ msgid "Power failure" #~ msgstr "Отказ питания" #~ msgid "Resource lost" #~ msgstr "Ресурс потерян" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "ошибка записи в закрытый канал или сокет" #~ msgid "cannot create pipe" #~ msgstr "не удалось создать канал" #~ msgid "Real-time signal %d" #~ msgstr "Сигнал реального времени %d" #~ msgid "Unknown signal %d" #~ msgstr "Неизвестный сигнал %d" #~ msgid "iconv function not usable" #~ msgstr "функция iconv неприменима" #~ msgid "iconv function not available" #~ msgstr "функция iconv недоступна" #~ msgid "character out of range" #~ msgstr "символ вне допустимого диапазона" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "невозможно преобразовать U+%04X в локальную кодировку" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "невозможно преобразовать U+%04X в локальную кодировку: %s" #~ msgid "invalid user" #~ msgstr "неверный пользователь" #~ msgid "invalid group" #~ msgstr "неверная группа" #~ msgid "invalid spec" #~ msgstr "неверный spec" #~ msgid "unable to display error message" #~ msgstr "невозможно показать сообщение об ошибке" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Упакован %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Упакован %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Лицензия GPLv3+: GNU GPL версии 3 или новее .\n" #~ "Это свободное ПО: вы можете продавать и распространять его.\n" #~ "Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Автор программы: %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Авторы программы: %s и %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Авторы программы: %s, %s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Авторы программы: %s, %s, %s\n" #~ "и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Авторы программы: %s, %s, %s,\n" #~ "%s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Авторы программы: %s, %s, %s,\n" #~ "%s, %s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Авторы программы: %s, %s, %s,\n" #~ "%s, %s, %s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Авторы программы: %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Авторы программы: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s и %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Авторы программы: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s и другие.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Об ошибках сообщайте по адресу: %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Об ошибках в %s сообщайте по адресу: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Домашняя страница %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Домашняя страница %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "Справка по работе с ПО GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle завершилась неудачно" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "не удалось восстановить fd %d: dup2 завершилась неудачно" #~ msgid "%s subprocess" #~ msgstr "подпроцесс %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "подпроцесс %s получил сигнал завершения %d" #~ msgid "stdin" #~ msgstr "stdin" #~ msgid "stdout" #~ msgstr "stdout" #~ msgid "stderr" #~ msgstr "stderr" #~ msgid "unknown stream" #~ msgstr "неизвестный поток" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "не удалось повторно открыть %s в режиме %s" #~ msgid "string comparison failed" #~ msgstr "сравнение строк завершилось неудачно" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Чтобы обойти эту проблему, установите LC_ALL='C'." #~ msgid "The strings compared were %s and %s." #~ msgstr "Сравнивались строки %s %s." #~ msgid "cannot perform formatted output" #~ msgstr "невозможно выполнить форматированный вывод" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "неверный аргумент %s%s для «%s»" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "неверный суффикс %s%s в аргументе «%s»" #~ msgid "%s%s argument `%s' too large" #~ msgstr "значение %s%s аргумента «%s» слишком велико" freedink-108.4+dfsg/gnulib/po/ga.gmo0000644000175000017500000000153712421730234015015 0ustar memeDl-*+&)5Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 1.1 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2007-07-20 12:24-0600 Last-Translator: Kevin Scannell Language-Team: Irish Language: ga MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(n>6 && n<11) ? 3 : 4; Earrid chrais anaithnidnl aon fhil ar an chad chomhadlann oibrecuimhne dithen fidir an chomhadlann oibre a thaifeadfreedink-108.4+dfsg/gnulib/po/de.gmo0000644000175000017500000000371712421730234015020 0ustar memexy,,,'-D r((%-:h*y S*t1*++($T,y,K,x?    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: GNU gnulib-3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-06-03 12:41-0700 Last-Translator: Arun Persaud Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s: ungültige Option -- »%c« %s: Option »%c%s« erlaubt kein Argument %s: Option »%s« ist mehrdeutig; Möglichkeiten:%s: Option »--%s« erlaubt kein Argument %s: Option »--%s« erfordert ein Argument %s: Option »-W %s« erlaubt kein Argument %s: Option »-W %s« ist mehrdeutig %s: Option »-W %s« erfordert ein Argument %s: Option erfordert ein Argument -- »%c« %s: unbekannte Option »%c%s« %s: unbekannte Option »--%s« Unbekannter Systemfehleres konnte nicht ins ursprüngliche Arbeitsverzeichnis zurückgekehrt werdenSpeicher ausgeschöpftaktuelles Arbeitsverzeichnisses kann nicht aufgezeichnet werdenfreedink-108.4+dfsg/gnulib/po/bg.gmo0000644000175000017500000000164512421730234015016 0ustar memeDl-*0_$*UOUnknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: coreutils 5.90 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2005-10-12 21:41+0300 Last-Translator: Anton Zinoviev Language-Team: Bulgarian Language: bg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Непозната системна грешканевъзможно връщане в първоначалния работен каталогпаметта е изчерпанане може да се запомни текущият работен каталогfreedink-108.4+dfsg/gnulib/po/es.gmo0000644000175000017500000000366212421730234015036 0ustar memexy,,,'-D r((%-:h*yA-`.-/."J0m0%%38l5|    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-08-24 11:23-0500 Last-Translator: Cristian Othón Martínez Vera Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s: opción inválida -- '%c' %s: la opción '%c%s' no admite un argumento %s: la opción '%s' es ambigua; posibilidades:%s: la opción '--%s' no admite un argumento %s: la opción '--%s' requiere de un argumento %s: la opción '-W %s' no admite un argumento %s: la opción '-W %s' es ambigua %s: la opción '-W %s' requiere de un argumento %s: la opción requiere de un argumento -- '%c' %s: no se reconoce la opción '%c%s' %s: no se reconoce la opción '--%s' Error desconocido de sistemano se puede volver al directorio de trabajo inicialmemoria agotadano se puede registrar el directorio de trabajo actualfreedink-108.4+dfsg/gnulib/po/stamp-po0000644000175000017500000000001212421730234015370 0ustar memetimestamp freedink-108.4+dfsg/gnulib/po/ja.po0000644000175000017500000005622612421730234014661 0ustar meme# Japanese gnulib messages # Copyright (C) 2000, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Masahito Yamaga , 2002. # GOTO Masanori , 2006. # derived from the version by Yasuyuki Furukawa 1998. # Jun Nishii 1999. # Daisuke Yamashita 1999. # Yasuaki Taniguchi , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-09-02 18:39+0900\n" "Last-Translator: Yasuaki Taniguchi \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "不明なシステムエラー" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: オプション '%s' は曖昧です:次のものが可能です:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: オプション '--%s' は引数を取ることができません\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: オプション '%c%s' は引数を取ることができません\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: オプション '--%s' は引数が必要です\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: オプション '--%s' を認識できません\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: オプション '%c%s' を認識できません\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: 無効なオプション -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: オプションには引数が必要です -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: オプション '-W %s' は曖昧です\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: オプション '-W %s' は引数を取ることができません\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: オプション '-W %s' は引数が必要です\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "現在の作業ディレクトリを記録することができません" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "初期作業ディレクトリに戻るのに失敗しました" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "メモリを使い果たしました" #~ msgid "invalid argument %s for %s" #~ msgstr "%2$s に対する引数 %1$s が間違っています" #~ msgid "ambiguous argument %s for %s" #~ msgstr "%2$s に対する引数 %1$s が曖昧です" #~ msgid "Valid arguments are:" #~ msgstr "有効な引数:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: %s の値は %s の値以下です" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT パラメータには値が必要です" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT パラメータは正の値でなければいけません" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: 不明な ARGP_HELP_FMT パラメータ" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "ARGP_HELP_FMT 中にごみがあります: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "長い形式のオプションで必須または任意の引数は、それに対応する短い形式のオプ" #~ "ションでも同様に必須または任意です。" #~ msgid "Usage:" #~ msgstr "使用法:" #~ msgid " or: " #~ msgstr "または: " #~ msgid " [OPTION...]" #~ msgstr " [OPTION...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "詳細は `%s --help' または `%s --usage' を実行して下さい。\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "バグを発見したら <%s> に報告して下さい。\n" #~ "翻訳に関するバグはに報告してく" #~ "ださい。\n" #~ msgid "give this help list" #~ msgstr "このヘルプを表示する" #~ msgid "give a short usage message" #~ msgstr "短い使用方法を表示する" #~ msgid "NAME" #~ msgstr "名前" #~ msgid "set the program name" #~ msgstr "プログラム名を設定する" #~ msgid "SECS" #~ msgstr "SECS" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "SECS 秒でハング (デフォルト 3600)" #~ msgid "print program version" #~ msgstr "プログラムのバージョンを表示する" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(プログラムエラー) 不明なバージョン!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: 引数が多すぎます\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(プログラムエラー) オプションは認識されているべきです!?" #~ msgid "program error" #~ msgstr "プログラムエラー" #~ msgid "stack overflow" #~ msgstr "スタックオーバーフロー" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "一時ディレクトリを作成できません。 $TMPDIR を設定してみてください" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "テンプレート \"%s\" を使用した一時ディレクトリを作成できません" #~ msgid "cannot remove temporary file %s" #~ msgstr "一時ファイル %s を削除できません" #~ msgid "cannot remove temporary directory %s" #~ msgstr "一時ディレクトリ %s を削除できません" #~ msgid "error closing file" #~ msgstr "ファイルクローズエラー" #~ msgid "write error" #~ msgstr "書き込みエラー" #~ msgid "preserving permissions for %s" #~ msgstr "%s のパーミッションを保存しています" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "\"%s\"を読込むため開いている際にエラーが発生しました" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "書込み用バックアップファイル\"%s\"を開くことができません" #~ msgid "error reading \"%s\"" #~ msgstr "\"%s\"の読込み中にエラーが発生しました" #~ msgid "error writing \"%s\"" #~ msgstr "\"%s\"の書込み中にエラーが発生しました" #~ msgid "error after reading \"%s\"" #~ msgstr "\"%s\"の読込み後にエラーが発生しました" #~ msgid "fdopen() failed" #~ msgstr "fdopen()に失敗しました" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "C# コンパイラが見つりません。pnet をインストールしてみてください" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "C# 仮想マシンが見つかりません。pnet をインストールしてみてください" #~ msgid "%s subprocess failed" #~ msgstr "%s サブプロセスが失敗しました" #~ msgid "regular empty file" #~ msgstr "通常の空ファイル" #~ msgid "regular file" #~ msgstr "通常ファイル" #~ msgid "directory" #~ msgstr "ディレクトリ" #~ msgid "block special file" #~ msgstr "ブロックスペシャルファイル" #~ msgid "character special file" #~ msgstr "キャラクタスペシャルファイル" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "シンボリックリンク" #~ msgid "socket" #~ msgstr "ソケット" #~ msgid "message queue" #~ msgstr "メッセージキュー" #~ msgid "semaphore" #~ msgstr "セマフォ" #~ msgid "shared memory object" #~ msgstr "共有メモリオブジェクト" #~ msgid "typed memory object" #~ msgstr "型付メモリオブジェクト" #~ msgid "weird file" #~ msgstr "不明なファイル" #~ msgid "Address family for hostname not supported" #~ msgstr "ホスト名に対する Address family がサポートされていません" #~ msgid "Temporary failure in name resolution" #~ msgstr "名前解決に一時的に失敗しました" #~ msgid "Bad value for ai_flags" #~ msgstr "ai_flags に対する誤った値です" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "名前解決でリカバリできない失敗が発生しました" #~ msgid "ai_family not supported" #~ msgstr "ai_family はサポートされていません" #~ msgid "Memory allocation failure" #~ msgstr "メモリ配置に失敗しました" #~ msgid "No address associated with hostname" #~ msgstr "ホスト名にアドレスが割り当てられていません" #~ msgid "Name or service not known" #~ msgstr "名前またはサービスが不明です" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "ai_socktype に対して Servname がサポートされていません" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype はサポートされていません" #~ msgid "System error" #~ msgstr "システムエラー" #~ msgid "Argument buffer too small" #~ msgstr "引数バッファが小さすぎます" #~ msgid "Processing request in progress" #~ msgstr "要求された処理は実行中です" #~ msgid "Request canceled" #~ msgstr "要求がキャンセルされました" #~ msgid "Request not canceled" #~ msgstr "要求がキャンセルされませんでした" #~ msgid "All requests done" #~ msgstr "すべての要求が完了しました" #~ msgid "Interrupted by a signal" #~ msgstr "シグナル割り込みが発生しました" #~ msgid "Parameter string not correctly encoded" #~ msgstr "パラメーター文字列が正しくエンコードされていません" #~ msgid "Unknown error" #~ msgstr "不明なエラー" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "compile_java_class への source_version 引数が無効です" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "compile_java_class への target_version 引数が無効です" #~ msgid "failed to create \"%s\"" #~ msgstr "\"%s\" の作成に失敗しました" #~ msgid "error while writing \"%s\" file" #~ msgstr "\"%s\" ファイルの書き込み中にエラーが発生しました" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Java コンパイラが見つかりません。 gcj をインストールするか、または $JAVAC " #~ "を設定してみてください" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Java 仮想マシンが見つかりません。 gij をインストールするか、または $JAVA " #~ "を設定してみてください" #~ msgid "%s subprocess I/O error" #~ msgstr "%s サブプロセス I/O エラー" #~ msgid "cannot change permissions of %s" #~ msgstr "%s のパーミッションを変更できません" #~ msgid "cannot create directory %s" #~ msgstr "ディレクトリ %s を作成できません" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "/dev/zeroを読込み用に開けません" #~ msgid "creation of reading thread failed" #~ msgstr "読み込みスレッドの作成に失敗しました" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "%s 子プロセスへ非ブロック I/O を設定できません" #~ msgid "communication with %s subprocess failed" #~ msgstr "%s 子プロセスとの通信に失敗しました" #~ msgid "write to %s subprocess failed" #~ msgstr "%s 子プロセスへの書き込みに失敗しました" #~ msgid "read from %s subprocess failed" #~ msgstr "%s 子プロセスからの読み込みに失敗しました" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "子プロセス %s が終了コード %d で終了しました" #~ msgid "creation of threads failed" #~ msgstr "スレッドの作成に失敗しました" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "%s 子プロセスが終了コード %d で終了しました" #~ msgid "Franc,ois Pinard" #~ msgstr "Franc,ois Pinard" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #~ msgid "Success" #~ msgstr "成功です" #~ msgid "No match" #~ msgstr "一致しません" #~ msgid "Invalid regular expression" #~ msgstr "無効な正規表現です" #~ msgid "Invalid collation character" #~ msgstr "無効な照合文字です" #~ msgid "Invalid character class name" #~ msgstr "無効な文字クラス名です" #~ msgid "Trailing backslash" #~ msgstr "終端のバックスラッシュ" #~ msgid "Invalid back reference" #~ msgstr "無効な前方参照です" #~ msgid "Unmatched [ or [^" #~ msgstr "[ または [^ が不一致です" #~ msgid "Unmatched ( or \\(" #~ msgstr "( または \\( が不一致です" #~ msgid "Unmatched \\{" #~ msgstr "\\{ が不一致です" #~ msgid "Invalid content of \\{\\}" #~ msgstr "\\{\\} の中身が無効です" #~ msgid "Invalid range end" #~ msgstr "無効な範囲終了です" #~ msgid "Memory exhausted" #~ msgstr "メモリを使い果たしました" #~ msgid "Invalid preceding regular expression" #~ msgstr "無効な前方正規表現です" #~ msgid "Premature end of regular expression" #~ msgstr "正規表現が途中で終了しました" #~ msgid "Regular expression too big" #~ msgstr "正規表現が大きすぎます" #~ msgid "Unmatched ) or \\)" #~ msgstr ") または \\) が不一致です" #~ msgid "No previous regular expression" #~ msgstr "以前に正規表現がありません" #~ msgid "^[yY]" #~ msgstr "^[yY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "%s のパーミッションを設定します" #~ msgid "Hangup" #~ msgstr "Hangup" #~ msgid "Interrupt" #~ msgstr "割り込み" #~ msgid "Quit" #~ msgstr "終了" #~ msgid "Illegal instruction" #~ msgstr "Illegal instruction" #~ msgid "Trace/breakpoint trap" #~ msgstr "Trace/breakpoint trap" #~ msgid "Aborted" #~ msgstr "中止" #~ msgid "Floating point exception" #~ msgstr "浮動小数点例外" #~ msgid "Killed" #~ msgstr "強制終了" #~ msgid "Bus error" #~ msgstr "バスエラー" #~ msgid "Segmentation fault" #~ msgstr "Segmentation fault" #~ msgid "Broken pipe" #~ msgstr "Broken pipe" #~ msgid "Alarm clock" #~ msgstr "Alarm clock" #~ msgid "Terminated" #~ msgstr "Terminated" #~ msgid "Urgent I/O condition" #~ msgstr "緊急 I/O 状態" #~ msgid "Stopped (signal)" #~ msgstr "停止 (シグナル)" #~ msgid "Stopped" #~ msgstr "停止" #~ msgid "Continued" #~ msgstr "継続" #~ msgid "Child exited" #~ msgstr "子プロセス終了" #~ msgid "Stopped (tty input)" #~ msgstr "停止 (tty 入力)" #~ msgid "Stopped (tty output)" #~ msgstr "停止 (tty 出力)" #~ msgid "I/O possible" #~ msgstr "I/O 可能" #~ msgid "CPU time limit exceeded" #~ msgstr "CPU時間制限を超過しました" #~ msgid "File size limit exceeded" #~ msgstr "ファイルサイズ制限を超過しました" #~ msgid "Virtual timer expired" #~ msgstr "仮想タイマーが終了しました" #~ msgid "Profiling timer expired" #~ msgstr "プロファイリングタイマーが終了しました" #~ msgid "Window changed" #~ msgstr "Window が変更されました" #~ msgid "User defined signal 1" #~ msgstr "ユーザー定義シグナル1" #~ msgid "User defined signal 2" #~ msgstr "ユーザー定義シグナル2" #~ msgid "EMT trap" #~ msgstr "EMT トラップ" #~ msgid "Bad system call" #~ msgstr "間違ったシステムコール" #~ msgid "Stack fault" #~ msgstr "スタックエラー" #~ msgid "Information request" #~ msgstr "情報要求" #~ msgid "Power failure" #~ msgstr "電源エラー" #~ msgid "Resource lost" #~ msgstr "リソースが無くなりました" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "閉じたパイプまたはソケットへの書き込みでエラーが発生しました" #~ msgid "cannot create pipe" #~ msgstr "パイプを作成できません" #~ msgid "Real-time signal %d" #~ msgstr "リアルタイムシグナル %d" #~ msgid "Unknown signal %d" #~ msgstr "不明なシグナル %d" #~ msgid "iconv function not usable" #~ msgstr "iconv 関数が使えません" #~ msgid "iconv function not available" #~ msgstr "iconv 関数が有効ではありません" #~ msgid "character out of range" #~ msgstr "範囲外の文字" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "U+%04X をローカル文字セットに変換できません" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "U+%04X をローカル文字セットに変換できません: %s " #~ msgid "invalid user" #~ msgstr "無効なユーザ" #~ msgid "invalid group" #~ msgstr "無効なグループ" #~ msgid "invalid spec" #~ msgstr "無効な指定" #~ msgid "unable to display error message" #~ msgstr "エラーメッセージを表示できません" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "パッケージ作成者: %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "パッケージ作成者: %s\n" #~ msgid "(C)" #~ msgstr "(C)" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "ライセンス GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "作者 %s。\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "作者 %s および %s。\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "作者 %s、 %s、および %s。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "作者 %s、 %s、 %s、\n" #~ "および %s。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "作者 %s、 %s、 %s、\n" #~ "%s、および %s。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "作者 %s、 %s、 %s、\n" #~ "%s、 %s、および %s。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "作者 %s、 %s、 %s、\n" #~ "%s、 %s、 %s、および %s。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "作者 %s、 %s、 %s、\n" #~ "%s、 %s、 %s、 %s、\n" #~ "および %s。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "作者 %s、 %s、 %s、\n" #~ "%s、 %s、 %s、 %s、\n" #~ "%s、および %s。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "作者 %s、 %s、 %s、\n" #~ "%s、 %s、 %s、 %s、\n" #~ "%s、 %s、 および他の方々。\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "バグを発見したら <%s> に報告して下さい。\n" #~ "翻訳に関するバグはに報告してく" #~ "ださい。\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "%s のバグは <%s> に報告してください。\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s のホームページ: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s のホームページ: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "GNU ソフトウェアを使用する際の一般的なヘルプ: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle に失敗しました" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "ファイル記述子 (fd) %d をリストアできません: dup2 に失敗しました" #~ msgid "%s subprocess" #~ msgstr "%s 子プロセス" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s 子プロセスが致命的なシグナル %d を受信しました" #~ msgid "stdin" #~ msgstr "標準入力" #~ msgid "stdout" #~ msgstr "標準出力" #~ msgid "stderr" #~ msgstr "標準エラー出力" #~ msgid "unknown stream" #~ msgstr "不明なストリーム" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "%s をモード %s で再度開くことに失敗しました" #~ msgid "string comparison failed" #~ msgstr "文字列の比較に失敗しました" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "問題を回避するために LC_ALL='C' を指定してください." #~ msgid "The strings compared were %s and %s." #~ msgstr "比較した文字列は %s と %s です." #~ msgid "cannot perform formatted output" #~ msgstr "書式設定を行った出力を実行することができません" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "引数 `%3$s' に対して %1$s%2$s が無効です" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "引数 `%3$s' に対して無効な接尾辞 %1$s%2$s です" #~ msgid "%s%s argument `%s' too large" #~ msgstr "引数 `%3$s' に対する %1$s%2$s が大きすぎます" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: 不正なオプション -- %c\n" #~ msgid "block size" #~ msgstr "ブロックサイズ" #~ msgid "%s exists but is not a directory" #~ msgstr "%s は存在しますがディレクトリではありません" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "%s のオーナーとグループを変更できません" #~ msgid "cannot chdir to directory %s" #~ msgstr "ディレクトリ %s に移動できません" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "数字のUIDのログイングループを取得できません" #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "本プログラムはフリーソフトウェアです. GNU一般公有使用許諾\n" #~ " で定められた条項の下で本プログラ\n" #~ "ムのコピーを再配布できます. 適切な法が認る限りにおいて全くの無保証です.\n" #~ "\n" freedink-108.4+dfsg/gnulib/po/freedink-gnulib.pot0000644000175000017500000000444112421725373017520 0ustar meme# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: freedink 108.4\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "" freedink-108.4+dfsg/gnulib/po/da.gmo0000644000175000017500000000301612421730234015004 0ustar meme 01,M,z- (?_-t*|''(!&1Xp8&  %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '--%s' doesn't allow an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 2.0.0.3462.e9796 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-01-20 22:11+0100 Last-Translator: Keld Simonsen Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s: ugyldig flag -- '%c' %s: flaget '%c%s' tager intet argument %s: flaget '--%s' tager intet argument %s: flaget '-W %s' tager intet argument %s: flaget '-W %s' er flertydigt %s: flaget krver et argument -- '%c' %s: ukendt flag '%c%s' %s: ukendt flag '--%s' Ukendt systemfejlkunne ikke g tilbage til det oprindelige arbejdskataloghukommelsen opbrugtkan ikke notere aktuelt arbejdskatalogfreedink-108.4+dfsg/gnulib/po/sv.gmo0000644000175000017500000000355012421730234015053 0ustar memexy,,,'-D r((%-:h*yB*^0*,'!:-\)< 6%B    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-08-22 19:16+0200 Last-Translator: Göran Uddeborg Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s: ogiltig flagga -- "%c" %s: flaggan ”%c%s” tar inget argument %s: flaggan ”%s” är tvetydig: möjligheter:%s: flaggan ”--%s” tar inget argument %s: flaggan ”--%s” kräver ett argument %s: flaggan "-W %s" tar inget argument %s: flaggan "-W %s" är tvetydig %s: flaggan ”-W %s” kräver ett argument %s: flaggan kräver ett argument -- "%c" %s: okänd flagga "%c%s" %s: okänd flagga "--%s" Okänt systemfelkunde inte återvända till den ursprungliga arbetskatalogenminnet slutkan inte notera aktuell arbetskatalogfreedink-108.4+dfsg/gnulib/po/rw.po0000644000175000017500000002675212421730234014720 0ustar meme# Kinyarwanda translations for mailutils package. # Copyright (C) 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the mailutils package. # Steve Murphy , 2005. # Steve performed initial rough translation from compendium built from translations provided by the following translators: # Philibert Ndandali , 2005. # Viateur MUGENZI , 2005. # Noëlla Mupole , 2005. # Carole Karema , 2005. # JEAN BAPTISTE NGENDAHAYO , 2005. # Augustin KIBERWA , 2005. # Donatien NSENGIYUMVA , 2005. # Antoine Bigirimana , 2005. # msgid "" msgstr "" "Project-Id-Version: mailutils 0.6\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2005-04-04 10:55-0700\n" "Last-Translator: Steven Michael Murphy \n" "Language-Team: Kinyarwanda \n" "Language: rw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 #, fuzzy msgid "Unknown system error" msgstr "Sisitemu Ikosa" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s:Ihitamo ni" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s:Ihitamo Kwemerera" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s:Ihitamo Kwemerera" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s:Ihitamo" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s:Ihitamo" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s:Ihitamo" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s:Sibyo Ihitamo" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s:Ihitamo" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s:Ihitamo ni" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s:Ihitamo Kwemerera" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s:Ihitamo" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "Kuri Icyabitswe KIGEZWEHO bushyinguro" #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "Byanze Kuri Garuka Kuri bushyinguro" #: gnulib/lib/xalloc-die.c:34 #, fuzzy msgid "memory exhausted" msgstr "Ububiko" #, fuzzy #~ msgid "invalid argument %s for %s" #~ msgstr "Sibyo kugirango" #, fuzzy #~ msgid "ambiguous argument %s for %s" #~ msgstr "kugirango" #, fuzzy #~ msgid "Valid arguments are:" #~ msgstr "ingingo" #, fuzzy #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "" #~ "%.*Project- Id- Version: basctl\n" #~ "POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n" #~ "PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n" #~ "Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n" #~ "Content- Type: text/ plain; charset= UTF- 8\n" #~ "Content- Transfer- Encoding: 8bit\n" #~ "X- Generator: KBabel 1. 0\n" #~ "." #, fuzzy #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "" #~ "%.*Project- Id- Version: basctl\n" #~ "POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n" #~ "PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n" #~ "Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n" #~ "Content- Type: text/ plain; charset= UTF- 8\n" #~ "Content- Transfer- Encoding: 8bit\n" #~ "X- Generator: KBabel 1. 0\n" #~ "." #, fuzzy #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "in" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Cyangwa Bitari ngombwa ingingo Kuri Amahitamo Cyangwa Bitari ngombwa " #~ "kugirango Amahitamo" #~ msgid "Usage:" #~ msgstr "Ikoresha:" #, fuzzy #~ msgid " or: " #~ msgstr "Cyangwa" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Cyangwa kugirango Birenzeho Ibisobanuro" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "Kuri" #, fuzzy #~ msgid "Give this help list" #~ msgstr "iyi Ifashayobora Urutonde" #, fuzzy #~ msgid "Give a short usage message" #~ msgstr "a Ikoresha: Ubutumwa" #, fuzzy #~ msgid "NAME" #~ msgstr "Izina" #, fuzzy #~ msgid "Set the program name" #~ msgstr "i Porogaramu Izina:" # offmgr/source\offapp\dialog\optgdlg.src:OFA_TP_MISC.FT_HELPAGENT_TIME_UNIT.text #, fuzzy #~ msgid "SECS" #~ msgstr "amasogonda" #, fuzzy #~ msgid "Hang for SECS seconds (default 3600)" #~ msgstr "kugirango amasogonda Mburabuzi" #, fuzzy #~ msgid "Print program version" #~ msgstr "Porogaramu Verisiyo" #, fuzzy #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(Verisiyo" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "ingingo" #, fuzzy #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(Verisiyo" # 4952 #, fuzzy #~ msgid "program error" #~ msgstr "Ikosa ryo mu Isoma" # svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_CLASS_WRITE.text #, fuzzy #~ msgid "write error" #~ msgstr "Kwandika ikosa" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "Gufungura kugirango" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "Gufungura kugirango" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "Ikosa" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "Ikosa" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "Ikosa" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "Gufungura Byanze" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s:Byanze" #, fuzzy #~ msgid "regular empty file" #~ msgstr "Ibisanzwe ubusa IDOSIYE" #, fuzzy #~ msgid "regular file" #~ msgstr "Ibisanzwe IDOSIYE" # svtools/source\dialogs\filedlg2.src:STR_FILEDLG_DIR.text #, fuzzy #~ msgid "directory" #~ msgstr "Ububiko" #, fuzzy #~ msgid "block special file" #~ msgstr "Funga Bidasanzwe IDOSIYE" #, fuzzy #~ msgid "character special file" #~ msgstr "Inyuguti Bidasanzwe IDOSIYE" #, fuzzy #~ msgid "symbolic link" #~ msgstr "Ihuza" #, fuzzy #~ msgid "message queue" #~ msgstr "Ubutumwa Umurongo" #, fuzzy #~ msgid "shared memory object" #~ msgstr "Ububiko Igikoresho" #, fuzzy #~ msgid "typed memory object" #~ msgstr "Ububiko Igikoresho" #, fuzzy #~ msgid "weird file" #~ msgstr "IDOSIYE" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "Idosiye OYA" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "Idosiye OYA" #, fuzzy #~ msgid "Memory allocation failure" #~ msgstr "Byanze" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "Idosiye OYA" # svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_CLASS_WRITE.text #, fuzzy #~ msgid "System error" #~ msgstr "Kwandika ikosa" #, fuzzy #~ msgid "Request not canceled" #~ msgstr "Ikintu OYA Byabonetse" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Sisitemu Ikosa" #, fuzzy #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s:Ihitamo" #, fuzzy #~ msgid "block size" #~ msgstr "Funga Ingano" #, fuzzy #~ msgid "%s exists but is not a directory" #~ msgstr "%sni OYA a bushyinguro" #, fuzzy #~ msgid "cannot change owner and/or group of %s" #~ msgstr "Guhindura>> Na Cyangwa Itsinda Bya" #, fuzzy #~ msgid "cannot create directory %s" #~ msgstr "Kurema bushyinguro" #, fuzzy #~ msgid "cannot chdir to directory %s" #~ msgstr "Kuri bushyinguro" #, fuzzy #~ msgid "cannot change permissions of %s" #~ msgstr "Guhindura>> Uruhushya Bya" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "%s:Byanze Kuri Gufungura kugirango" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "Kurema Ihuza" # basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text #, fuzzy #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #~ msgid "Success" #~ msgstr "Ibyatunganye" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s:Sibyo Ibisanzwe imvugo" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "Sibyo Inyuguti ishuri" #, fuzzy #~ msgid "Invalid back reference" #~ msgstr "Umubare utari wo" #, fuzzy #~ msgid "Invalid range end" #~ msgstr "Ipaji Urutonde" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "Ububiko" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s:Sibyo Ibisanzwe imvugo" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "Ikosa in Ibisanzwe imvugo Gushaka" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s:Sibyo Ibisanzwe imvugo" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "Ikosa in Ibisanzwe imvugo Gushaka" #, fuzzy #~ msgid "iconv function not usable" #~ msgstr "Umumaro OYA" #, fuzzy #~ msgid "iconv function not available" #~ msgstr "Umumaro OYA Bihari" #, fuzzy #~ msgid "character out of range" #~ msgstr "Inyuguti Inyuma Bya Urutonde" #, fuzzy #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "GUHINDURA U Kuri Inyuguti Gushyiraho" #, fuzzy #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "GUHINDURA U Kuri Inyuguti Gushyiraho" #, fuzzy #~ msgid "invalid user" #~ msgstr "Sibyo Ukoresha:" #, fuzzy #~ msgid "invalid group" #~ msgstr "Sibyo Itsinda" #, fuzzy #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "Kubona i Ifashayinjira Itsinda Bya a Bikurikije umubare" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "Porogaramu ni Kigenga Na Cyangwa i Bya i Nka Verisiyo 2. Cyangwa ku " #~ "Ihitamo Verisiyo" #, fuzzy #~ msgid "Written by %s.\n" #~ msgstr "ku" #, fuzzy #~ msgid "Written by %s and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "ku Na" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "ku Na Ibindi" #, fuzzy #~ msgid "string comparison failed" #~ msgstr "Ikurikiranyanyuguti Byanze" #, fuzzy #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Kuri Akazi i" #, fuzzy #~ msgid "The strings compared were %s and %s." #~ msgstr "Ikurikiranyanyuguti Na" freedink-108.4+dfsg/gnulib/po/rw.gmo0000644000175000017500000000075112421730234015053 0ustar meme$,89Project-Id-Version: mailutils 0.6 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2005-04-04 10:55-0700 Last-Translator: Steven Michael Murphy Language-Team: Kinyarwanda Language: rw MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); freedink-108.4+dfsg/gnulib/po/ga.po0000644000175000017500000004202112421730234014642 0ustar meme# Irish translations for gnulib. # Copyright (C) 2003 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Kevin Patrick Scannell , 2005, 2007. # msgid "" msgstr "" "Project-Id-Version: gnulib 1.1\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2007-07-20 12:24-0600\n" "Last-Translator: Kevin Scannell \n" "Language-Team: Irish \n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" "(n>6 && n<11) ? 3 : 4;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Earrid chrais anaithnid" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: T an rogha `%s' dbhroch\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: n cheadatear argint i ndiaidh na rogha `--%s'\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: n cheadatear argint i ndiaidh na rogha `%c%s'\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: t argint de dhth i ndiaidh na rogha `%s'\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: rogha anaithnid `--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: rogha anaithnid `%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: rogha neamhbhail -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: t argint de dhth i ndiaidh na rogha -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: T an rogha `-W %s' dbhroch\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: n cheadatear argint i ndiaidh na rogha `-W %s'\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: t argint de dhth i ndiaidh na rogha `%s'\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "n fidir an chomhadlann oibre a thaifead" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "nl aon fhil ar an chad chomhadlann oibre" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "cuimhne dithe" #~ msgid "invalid argument %s for %s" #~ msgstr "argint neamhbhail %s chun %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "argint dhbhroch %s chun %s" #~ msgid "Valid arguments are:" #~ msgstr "Na hargint bail:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: luach %s nos l n n cothrom le %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: luach de dhth ar pharaimadar ARGP_HELP_FMT" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: luach deimhneach de dhth ar pharaimadar ARGP_HELP_FMT" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Paraimadar anaithnid ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Truflais i ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Is riachtanach/roghnach le rogha ghearr aon argint at riachtanach/" #~ "roghnach leis an rogha fhada." #~ msgid "Usage:" #~ msgstr "sid:" #~ msgid " or: " #~ msgstr " n: " #~ msgid " [OPTION...]" #~ msgstr " [ROGHA...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "Bain triail as `%s --help' n `%s --usage' chun tuilleadh eolais a " #~ "fhil.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Seol tuairisc fabhtanna chuig %s.\n" #~ msgid "give this help list" #~ msgstr "taispein an chabhair seo" #~ msgid "give a short usage message" #~ msgstr "tabhair teachtaireacht bheag side" #~ msgid "NAME" #~ msgstr "AINM" #~ msgid "set the program name" #~ msgstr "socraigh ainm an chlir" #~ msgid "SECS" #~ msgstr "SOIC" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "dan moill SOIC soicind (ramhshocr: 3600)" #~ msgid "print program version" #~ msgstr "taispein leagan an chlir" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(EARRID CHLIR) Leagan anaithnid!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: An iomarca argint\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(EARRID CHLIR) Ba chir an rogha a aithint!?" #~ msgid "program error" #~ msgstr "earrid chlir" #~ msgid "stack overflow" #~ msgstr "cruach thar maoil" #, fuzzy #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "n fidir comhadlann %s a chruth" #, fuzzy #~ msgid "cannot remove temporary file %s" #~ msgstr "n fidir comhadlann %s a chruth" #, fuzzy #~ msgid "cannot remove temporary directory %s" #~ msgstr "n fidir comhadlann %s a chruth" #, fuzzy #~ msgid "error closing file" #~ msgstr "earrid agus comhad \"%s\" scrobh" #~ msgid "write error" #~ msgstr "earrid sa scrobh" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "earrid agus \"%s\" oscailt chun a lamh" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "n fidir comhad cltaca \"%s\" a oscailt chun scrobh ann" #~ msgid "error reading \"%s\"" #~ msgstr "earrid agus \"%s\" lamh" #~ msgid "error writing \"%s\"" #~ msgstr "earrid agus \"%s\" scrobh" #~ msgid "error after reading \"%s\"" #~ msgstr "earrid tar is \"%s\" lamh" #~ msgid "fdopen() failed" #~ msgstr "theip ar fdopen()" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "Tiomsaitheoir C# gan aimsi, bain triail as pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "Meaisn foril C# gan aimsi, bain triail as pnet" #~ msgid "%s subprocess failed" #~ msgstr "theip ar fhophriseas %s" #~ msgid "regular empty file" #~ msgstr "gnthchomhad folamh" #~ msgid "regular file" #~ msgstr "gnthchomhad" #~ msgid "directory" #~ msgstr "comhadlann" #~ msgid "block special file" #~ msgstr "comhad speisialta den chinel `bloc'" #~ msgid "character special file" #~ msgstr "comhad speisialta den chinel `carachtar'" # `TITA' ?! -KPS #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "nasc siombalach" #~ msgid "socket" #~ msgstr "soicad" #~ msgid "message queue" #~ msgstr "ci teachtaireachta" #~ msgid "semaphore" #~ msgstr "samafr" # FARF --KPS #~ msgid "shared memory object" #~ msgstr "comhad comhchuimhne" #~ msgid "typed memory object" #~ msgstr "comhad cuimhne le cinel" #~ msgid "weird file" #~ msgstr "comhad aisteach" #~ msgid "Address family for hostname not supported" #~ msgstr "Aicme sheolta d'stainm gan tacaocht" #~ msgid "Temporary failure in name resolution" #~ msgstr "Teip shealadach ar riteach na n-ainmneacha" #~ msgid "Bad value for ai_flags" #~ msgstr "Luach neamhbhail do 'ai_flags'" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Teip dhocheartaithe ar riteach na n-ainmneacha" #~ msgid "ai_family not supported" #~ msgstr "n thacatear le 'ai_family'" #~ msgid "Memory allocation failure" #~ msgstr "Theip ar dhil chuimhne" #~ msgid "No address associated with hostname" #~ msgstr "Nl seoladh ar bith ceangailte leis an stainm" #~ msgid "Name or service not known" #~ msgstr "Ainm n seirbhs anaithnid" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "N thacatear le hainm freastalaithe do 'ai_socktype'" #~ msgid "ai_socktype not supported" #~ msgstr "n thacatear le 'ai_socktype'" #~ msgid "System error" #~ msgstr "Earrid chrais" #~ msgid "Argument buffer too small" #~ msgstr "T an argint mhaolin rbheag" #~ msgid "Processing request in progress" #~ msgstr "Iarratas prisela ar sil" #~ msgid "Request canceled" #~ msgstr "Cealaodh an t-iarratas" #~ msgid "Request not canceled" #~ msgstr "Nor cealaodh an t-iarratas" #~ msgid "All requests done" #~ msgstr "Cuireadh gach iarratas i gcrch" #~ msgid "Interrupted by a signal" #~ msgstr "Idirbhriste ag comhartha" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Nl an teaghrn paraimadair ionchdaithe i gceart" #~ msgid "Unknown error" #~ msgstr "Earrid anaithnid" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: rogha neamhcheadaithe -- %c\n" #, fuzzy #~ msgid "%s subprocess I/O error" #~ msgstr "fophriseas %s" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "argint neamhbhail \"source_version\" ar compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "argint neamhbhail \"target_version\" ar compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "theip ar chruth \"%s\"" #~ msgid "error while writing \"%s\" file" #~ msgstr "earrid agus comhad \"%s\" scrobh" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Tiomsaitheoir Java gan aimsi, bain triail as gcj, n socraigh $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Meaisn foril Java gan aimsi, bain triail as gij, n socraigh $JAVA" #~ msgid "cannot create pipe" #~ msgstr "n fidir popa a chruth" #~ msgid "cannot change permissions of %s" #~ msgstr "n fidir na ceadanna de %s a athr" #~ msgid "cannot create directory %s" #~ msgstr "n fidir comhadlann %s a chruth" #~ msgid "Success" #~ msgstr "D'irigh leis" #~ msgid "No match" #~ msgstr "Gan mheaitseil" #~ msgid "Invalid regular expression" #~ msgstr "Slonn ionadaochta neamhbhail" #~ msgid "Invalid collation character" #~ msgstr "Carachtar neamhbhail comhordaithe" #~ msgid "Invalid character class name" #~ msgstr "Ainm neamhbhail ar aicme charachtar" #~ msgid "Trailing backslash" #~ msgstr "Clslais chun deiridh" #~ msgid "Invalid back reference" #~ msgstr "Cltagairt neamhbhail" #~ msgid "Unmatched [ or [^" #~ msgstr "[ n [^ corr" #~ msgid "Unmatched ( or \\(" #~ msgstr "( n \\( corr" #~ msgid "Unmatched \\{" #~ msgstr "\\{ corr" #~ msgid "Invalid content of \\{\\}" #~ msgstr "bhar neamhbhail idir \\{ agus \\}" #~ msgid "Invalid range end" #~ msgstr "Deireadh raoin neamhbhail" #~ msgid "Memory exhausted" #~ msgstr "Cuimhne dithe" #~ msgid "Invalid preceding regular expression" #~ msgstr "Is neamhbhail an slonn ionadaochta roimhe seo" #~ msgid "Premature end of regular expression" #~ msgstr "Deireadh le slonn ionadaochta gan choinne" #~ msgid "Regular expression too big" #~ msgstr "Slonn ionadaochta rmhr" #~ msgid "Unmatched ) or \\)" #~ msgstr ") n \\) corr" #~ msgid "No previous regular expression" #~ msgstr "Nl aon slonn ionadaochta roimhe seo" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Theip ar oscailt /dev/zero chun a lamh" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" # #-#-#-#-# findutils-4.1.7.ga.po (findutils 4.1.7) #-#-#-#-# # allow yes, but also 'i' as in 'is sea' or 's' for 'sea' -- KPS # neither of these letters is near the 'N' on standard keyboard... # #-#-#-#-# sh-utils-2.0.15.ga.po (sh-utils 2.0.15) #-#-#-#-# # #-#-#-#-# findutils-4.1.7.ga.po (findutils 4.1.7) #-#-#-#-# # allow yes, but also 'i' as in 'is sea' or 's' for 'sea' -- KPS # neither of these letters is near the 'N' on standard keyboard... # #-#-#-#-# textutils-2.1.ga.po (textutils 2.1) #-#-#-#-# # #-#-#-#-# findutils-4.1.7.ga.po (findutils 4.1.7) #-#-#-#-# # allow yes, but also 'i' as in 'is sea' or 's' for 'sea' -- KPS # neither of these letters is near the 'N' on standard keyboard... #~ msgid "^[yY]" #~ msgstr "^[yYiIsS]" # #-#-#-#-# findutils-4.1.7.ga.po (findutils 4.1.7) #-#-#-#-# # fortunately, 'n' for 'no' or 'n hea' - KPS # #-#-#-#-# sh-utils-2.0.15.ga.po (sh-utils 2.0.15) #-#-#-#-# # #-#-#-#-# findutils-4.1.7.ga.po (findutils 4.1.7) #-#-#-#-# # fortunately, 'n' for 'no' or 'n hea' - KPS # #-#-#-#-# textutils-2.1.ga.po (textutils 2.1) #-#-#-#-# # #-#-#-#-# findutils-4.1.7.ga.po (findutils 4.1.7) #-#-#-#-# # fortunately, 'n' for 'no' or 'n hea' - KPS #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "iconv function not usable" #~ msgstr "n fidir an fheidhm iconv a sid" #~ msgid "iconv function not available" #~ msgstr "nl an fheidhm iconv ar fil" #~ msgid "character out of range" #~ msgstr "carachtar as raon" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "n fidir U+%04X a thiont chuig an fhoireann carachtar lognta" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "n fidir U+%04X a thiont chuig an fhoireann carachtar lognta: %s" #~ msgid "invalid user" #~ msgstr "sideoir neamhbhail" #~ msgid "invalid group" #~ msgstr "grpa neamhbhail" #~ msgid "invalid spec" #~ msgstr "sonr neamhbhail" #, fuzzy #~ msgid "preserving permissions for %s" #~ msgstr "n fidir na ceadanna de %s a athr" #~ msgid "string comparison failed" #~ msgstr "theip ar chomparid idir teaghrin" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Cuir LC_ALL='C' ionas gur fidir an fhadhb seo a sheachaint." #~ msgid "The strings compared were %s and %s." #~ msgstr "Rinneadh comparid idir na teaghrin %s agus %s." #~ msgid "(C)" #~ msgstr "" #, fuzzy #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Ceadnas GPLv3+: GNU GPL leagan 3 n nos nua \n" #~ "Is saorbhogearra seo: ceadatear duit a athr agus a athdhileadh.\n" #~ "Nl barnta AR BITH ann, an oiread at ceadaithe de rir dl.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Le %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Le %s agus %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Le %s, %s, agus %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Le %s, %s, %s,\n" #~ "agus %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Le %s, %s, %s,\n" #~ "%s, agus %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Le %s, %s, %s,\n" #~ "%s, %s, agus %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Le %s, %s, %s,\n" #~ "%s, %s, %s, agus %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Le %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "agus %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Le %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, agus %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Le %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, agus daoine eile nach iad.\n" #, fuzzy #~ msgid "" #~ "\n" #~ "Report bugs to <%s>.\n" #~ msgstr "Seol tuairisc fabhtanna chuig %s.\n" #, fuzzy #~ msgid "invalid %s%s argument `%s'" #~ msgstr "argint neamhbhail %s chun %s" #, fuzzy #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "argint neamhbhail %s chun %s" #, fuzzy #~ msgid "setting permissions for %s" #~ msgstr "n fidir na ceadanna de %s a athr" #~ msgid "%s subprocess" #~ msgstr "fophriseas %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "fuair fophriseas %s comhartha marfach %d" #~ msgid "block size" #~ msgstr "mid bloc" #~ msgid "%s exists but is not a directory" #~ msgstr "T %s ann cheana, ach n comhadlann " #~ msgid "cannot change owner and/or group of %s" #~ msgstr "n fidir an t-inir agus/n an grpa de %s a athr" #~ msgid "cannot chdir to directory %s" #~ msgstr "n fidir chdir a dhanamh go dt an chomhadlann %s" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "nl aon fhil ar an ghrpa don UID uimhriil seo" #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Is saorbhogearra seo. Is fidir leat cipeanna a scaipeadh de rir na\n" #~ "gcoinnollacha den GNU General Public License\n" #~ ".\n" #~ "Nl barnta AR BITH ann, an oiread at ceadaithe de rir dl.\n" #~ "\n" freedink-108.4+dfsg/gnulib/po/gl.gmo0000644000175000017500000000374012421730234015026 0ustar memexy,,,'-D r((%-:h*y!K5m65,6=#t--%%@9]7    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-11-11 13:26+0200 Last-Translator: Leandro Regueiro Language-Team: Galician Language: gl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=2; plural=(n != 1); %s: opción incorrecta -- «%c» %s: a opción «%c%s» non permite ningún argumento %s: a opción «%s» é ambigua; as posibilidades son:%s: a opción «--%s» non permite ningún argumento %s: a opción «--%s» require un argumento %s: a opción «-W %s» non permite ningún argumento %s: a opción «-W %s» é ambigua %s: a opción «-W %s» require un argumento %s: a opción require un argumento -- «%c» %s: opción «%c%s» non recoñecida %s: opción «--%s» non recoñecida Erro do sistema descoñecidonon foi posíbel volver ao directorio de traballo inicialmemoria esgotadanon foi posíbel gravar o directorio de traballo actualfreedink-108.4+dfsg/gnulib/po/uk.gmo0000644000175000017500000000465412421730234015050 0ustar memexy,,,'-D r((%-:h*y4F[5FiGB8j?./n/0F F Dg     %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-08-22 09:50+0300 Last-Translator: Yuri Chornoivan Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 1.1 %s: Некоректний параметр -- '%c' %s: параметр '%c%s' не може мати аргументу %s: параметр «%s» є неоднозначним, можливі варіанти:%s: параметр '--%s' не може мати аргументу %s: для використання параметра «--%s» слід вказати аргумент %s: параметр '-W %s' не може мати аргументу %s: параметр '-W %s' неоднозначний %s: для використання параметра «-W %s» слід вказати аргумент %s: параметр вимагає аргументу -- '%c' %s: невідомий параметр '%c%s' %s: невідомий параметр '--%s' Невідома системна помилкане вдається зберегти поточний каталогпам'ять вичерпаноне вдається змінити поточний каталогfreedink-108.4+dfsg/gnulib/po/hu.po0000644000175000017500000005011412421730234014671 0ustar meme# Hungarian translation for gnulib. # Copyright (C) 2002, 2003, 2004, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # # Emese Kovacs , 2004. # Gabor Kelemen , 2010. # Balázs Úr , 2014. msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2014-06-25 19:51+0200\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.5\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Ismeretlen rendszerhiba" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: a(z) „%s” kapcsoló nem egyértelmű; lehetőségek:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a(z) „--%s” kapcsoló nem enged meg argumentumot\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: a(z) „%c%s” kapcsoló nem enged meg argumentumot\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: a(z) „--%s” kapcsolóhoz egy argumentum szükséges\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: a(z) „--%s” kapcsoló ismeretlen\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: a(z) „%c%s” kapcsoló ismeretlen\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: érvénytelen kapcsoló -- „%c”\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: a kapcsoló egy argumentumot igényel -- „%c”\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: a „-W %s” kapcsoló nem egyértelmű\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: a „-W %s” kapcsoló nem enged meg argumentumot\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: a „-W %s” kapcsolóhoz egy argumentum szükséges\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "az aktuális munkakönyvtár feljegyzése meghiúsult" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "a visszatérés meghiúsult a kiinduló munkakönyvtárba" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "elfogyott a memória" #~ msgid "invalid argument %s for %s" #~ msgstr "a(z) „%s” argumentum érvénytelen a következőhöz: %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "a(z) „%s” argumentum nem egyértelmű ehhez: „%s”" #~ msgid "Valid arguments are:" #~ msgstr "Az érvényes argumentumok a következők:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: %s értéke nem nagyobb, mint %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: Az ARGP_HELP_FMT paraméter értéket igényel" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: Az ARGP_HELP_FMT paraméternek pozitívnak kell lennie" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Ismeretlen ARGP_HELP_FMT paraméter" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Szemét az ARGP_HELP_FMT-ben: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Ha egy hosszú kapcsolóhoz kötelező vagy opcionális argumentumot megadni, " #~ "akkor ez a megfelelő rövid kapcsolónál is kötelező vagy opcionális." #~ msgid "Usage:" #~ msgstr "Használat:" #~ msgid " or: " #~ msgstr " vagy: " #~ msgid " [OPTION...]" #~ msgstr " [KAPCSOLÓ…]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "További információkért lásd a(z) „%s --help” vagy „%s --usage” " #~ "kimenetét.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "A hibák itt jelenthetők: %s.\n" #~ msgid "give this help list" #~ msgstr "ezen súgószöveg megjelenítése" #~ msgid "give a short usage message" #~ msgstr "rövid használati utasítás megjelenítése" #~ msgid "NAME" #~ msgstr "NÉV" #~ msgid "set the program name" #~ msgstr "a program nevének beállítása" #~ msgid "SECS" #~ msgstr "MÁSODPERC" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "szünet MP másodpercre (alapértelmezetten 3600)" #~ msgid "print program version" #~ msgstr "a programverzió kiírása" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(PROGRAMHIBA) A verzió nem ismert!" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Túl sok argumentum\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(PROGRAMHIBA) A kapcsolót ismerni kellene?" #~ msgid "program error" #~ msgstr "olvasási hiba" #~ msgid "stack overflow" #~ msgstr "veremtúlcsordulás" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "nem található átmeneti könyvtár, próbálja beállítani a $TMPDIR változót" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "" #~ "nem lehet létrehozni átmeneti könyvtárat a(z) „%s” sablon használatával" #~ msgid "cannot remove temporary file %s" #~ msgstr "nem lehet eltávolítani a(z) %s átmeneti fájlt" #~ msgid "cannot remove temporary directory %s" #~ msgstr "nem lehet eltávolítani a(z) %s átmeneti könyvtárat" #~ msgid "error closing file" #~ msgstr "hiba a fájl lezárásakor" #~ msgid "write error" #~ msgstr "írási hiba" #~ msgid "preserving permissions for %s" #~ msgstr "%s jogosultságainak megőrzése" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "hiba \"%s\" megnyitásakor olvasásra" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "%s mentési fájl megnyitása írásra sikertelen" #~ msgid "error reading \"%s\"" #~ msgstr "hiba \"%s\" olvasásakor" #~ msgid "error writing \"%s\"" #~ msgstr "hiba \"%s\" írásakor" #~ msgid "error after reading \"%s\"" #~ msgstr "hiba \"%s\" olvasása után" #~ msgid "fdopen() failed" #~ msgstr "az fdopen() sikertelen" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "a C# fordító nem található, próbálja telepíteni a pnetet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "a C# virtuális gép nem található, próbálja telepíteni a pnetet" #~ msgid "%s subprocess failed" #~ msgstr "%s alfolyamat sikertelen" #~ msgid "regular empty file" #~ msgstr "szabályos üres fájl" #~ msgid "regular file" #~ msgstr "szabályos fájl" #~ msgid "directory" #~ msgstr "könyvtár" #~ msgid "block special file" #~ msgstr "speciális blokkfájl" #~ msgid "character special file" #~ msgstr "speciális karakterfájl" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "szimbolikus link" #~ msgid "socket" #~ msgstr "foglalat" #~ msgid "message queue" #~ msgstr "üzenetsor" #~ msgid "semaphore" #~ msgstr "szemafor" #~ msgid "shared memory object" #~ msgstr "megosztott memóriaobjektum" #~ msgid "typed memory object" #~ msgstr "típusos memóriaobjektum" #~ msgid "weird file" #~ msgstr "szokatlan fájl" #~ msgid "Address family for hostname not supported" #~ msgstr "A gépnév címcsaládja nem támogatott" #~ msgid "Temporary failure in name resolution" #~ msgstr "Átmeneti névfeloldási hiba" #~ msgid "Bad value for ai_flags" #~ msgstr "Az ai_flags értéke hibás" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Helyrehozhatatlan névfeloldási hiba" #~ msgid "ai_family not supported" #~ msgstr "Az ai_family nem támogatott" #~ msgid "Memory allocation failure" #~ msgstr "Memóriafoglalási hiba" #~ msgid "No address associated with hostname" #~ msgstr "A gépnévhez nem tartozik cím" #~ msgid "Name or service not known" #~ msgstr "A név vagy szolgáltatás ismeretlen" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "A kiszolgálónév nem támogatott az ai_socktype-hoz" #~ msgid "ai_socktype not supported" #~ msgstr "Az ai_socktype nem támogatott" #~ msgid "System error" #~ msgstr "Rendszerhiba" #~ msgid "Argument buffer too small" #~ msgstr "A paraméterpuffer túl kicsi" #~ msgid "Processing request in progress" #~ msgstr "Kérés feldolgozása folyamatban" #~ msgid "Request canceled" #~ msgstr "Kérés megszakítva" #~ msgid "Request not canceled" #~ msgstr "Kérés nincs megszakítva" #~ msgid "All requests done" #~ msgstr "Minden kérés kész" #~ msgid "Interrupted by a signal" #~ msgstr "Szignál által megszakítva" #~ msgid "Parameter string not correctly encoded" #~ msgstr "A paraméter-karakterlánc nem megfelelő kódolású" #~ msgid "Unknown error" #~ msgstr "Ismeretlen hiba" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "érvénytelen source_version argumentum ehhez: compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "érvénytelen target_version argumentum ehhez: compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "„%s” létrehozása sikertelen" #~ msgid "error while writing \"%s\" file" #~ msgstr "hiba a(z) „%s” fájl írásakor" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Java fordító nem található, próbálja meg a gcj telepítését vagy a $JAVAC " #~ "beállítását" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Java virtuális gép nem található, próbálja meg a gij telepítését vagy a " #~ "$JAVA beállítását" #~ msgid "%s subprocess I/O error" #~ msgstr "%s alfolyamat I/O hiba" #~ msgid "cannot change permissions of %s" #~ msgstr "nem lehet %s jogosultságait megváltoztatni" #~ msgid "cannot create directory %s" #~ msgstr "nem lehet létrehozni a(z) %s könyvtárat" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "A /dev/zero megnyitása olvasásra sikertelen" #~ msgid "creation of reading thread failed" #~ msgstr "az olvasási szál létrehozása sikertelen" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "nem sikerült a nem blokkolható I/O beállítása a(z) %s alfolyamathoz" #~ msgid "communication with %s subprocess failed" #~ msgstr "a(z) %s alfolyamattal történő kommunikáció sikertelen" #~ msgid "write to %s subprocess failed" #~ msgstr "a(z) %s alfolyamatba való írás sikertelen" #~ msgid "read from %s subprocess failed" #~ msgstr "a(z) %s alfolyamatból való olvasás sikertelen" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "a(z) %s alfolyamat ezzel a hibakóddal fejeződött be: %d" #~ msgid "creation of threads failed" #~ msgstr "a szálak létrehozása sikertelen" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "a(z) %s alfolyamat ezzel a hibakóddal fejeződött be: %d" #~ msgid "Franc,ois Pinard" #~ msgstr "Franc,ois Pinard" #~ msgid "`" #~ msgstr "„" #~ msgid "'" #~ msgstr "”" #~ msgid "Success" #~ msgstr "Sikerült" #~ msgid "No match" #~ msgstr "Nincs találat" #~ msgid "Invalid regular expression" #~ msgstr "Érvénytelen szabályos kifejezés" #~ msgid "Invalid collation character" #~ msgstr "Érvénytelen leválogatási karakter" #~ msgid "Invalid character class name" #~ msgstr "Érvénytelen karakterosztálynév" #~ msgid "Trailing backslash" #~ msgstr "Záró visszaper" #~ msgid "Invalid back reference" #~ msgstr "Érvénytelen visszahivatkozás" #~ msgid "Unmatched [ or [^" #~ msgstr "Pár nélküli [ vagy [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Pár nélküli ( vagy \\(" #~ msgid "Unmatched \\{" #~ msgstr "Pár nélküli \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "A \\{\\} tartalma érvénytelen" #~ msgid "Invalid range end" #~ msgstr "Érvénytelen tartományvég" #~ msgid "Memory exhausted" #~ msgstr "Elfogyott a memória" #~ msgid "Invalid preceding regular expression" #~ msgstr "Érvénytelen megelőző szabályos kifejezés" #~ msgid "Premature end of regular expression" #~ msgstr "A szabályos kifejezés túl korán véget ért" #~ msgid "Regular expression too big" #~ msgstr "A szabályos kifejezés túl nagy" #~ msgid "Unmatched ) or \\)" #~ msgstr "Pár nélküli ) vagy \\)" #~ msgid "No previous regular expression" #~ msgstr "Nincs megelőző szabályos kifejezés" #~ msgid "^[yY]" #~ msgstr "^[iIyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "%s jogosultságainak beállítása" #~ msgid "Hangup" #~ msgstr "Felfüggesztés" #~ msgid "Interrupt" #~ msgstr "Megszakítás" #~ msgid "Quit" #~ msgstr "Kilépés" #~ msgid "Illegal instruction" #~ msgstr "Illegális utasítás" #~ msgid "Trace/breakpoint trap" #~ msgstr "Nyomkövetési/töréspont csapda" #~ msgid "Aborted" #~ msgstr "Megszakítva" #~ msgid "Floating point exception" #~ msgstr "Lebegőpontos kivétel" #~ msgid "Killed" #~ msgstr "Kilőve" #~ msgid "Bus error" #~ msgstr "Buszhiba" #~ msgid "Segmentation fault" #~ msgstr "Szegmentálási hiba" #~ msgid "Broken pipe" #~ msgstr "Megszakadt csővezeték" #~ msgid "Alarm clock" #~ msgstr "Ébresztőóra" #~ msgid "Terminated" #~ msgstr "Befejeződött" #~ msgid "Urgent I/O condition" #~ msgstr "Sürgős I/O feltétel" #~ msgid "Stopped (signal)" #~ msgstr "Leállítva (szignál)" #~ msgid "Stopped" #~ msgstr "Leállítva" #~ msgid "Continued" #~ msgstr "Folytatva" #~ msgid "Child exited" #~ msgstr "Gyerekfolyamat kilépett" #~ msgid "Stopped (tty input)" #~ msgstr "Leállítva (tty bemenet)" #~ msgid "Stopped (tty output)" #~ msgstr "Leállítva (tty kimenet)" #~ msgid "I/O possible" #~ msgstr "I/O lehetséges" #~ msgid "CPU time limit exceeded" #~ msgstr "CPU-időkorlát túllépve" #~ msgid "File size limit exceeded" #~ msgstr "Fájlméret korlátja túllépve" #~ msgid "Virtual timer expired" #~ msgstr "Virtuális időzítés lejárt" #~ msgid "Profiling timer expired" #~ msgstr "A profilozási időzítő lejárt" #~ msgid "Window changed" #~ msgstr "Ablakméret változott" #~ msgid "User defined signal 1" #~ msgstr "Felhasználói szignál 1" #~ msgid "User defined signal 2" #~ msgstr "Felhasználói szignál 2" #~ msgid "EMT trap" #~ msgstr "EMT csapda" #~ msgid "Bad system call" #~ msgstr "Hibás rendszerhívás" #~ msgid "Stack fault" #~ msgstr "Veremhiba" #~ msgid "Information request" #~ msgstr "Információkérés" #~ msgid "Power failure" #~ msgstr "Tápfeszültség-kimaradás" #~ msgid "Resource lost" #~ msgstr "Erőforrás elveszítve" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "hiba egy lezárt cső vagy foglalat írásakor" #~ msgid "cannot create pipe" #~ msgstr "nem hozható létre adatcsatorna" #~ msgid "Real-time signal %d" #~ msgstr "Valós idejű szignál %d" #~ msgid "Unknown signal %d" #~ msgstr "Ismeretlen szignál %d" #~ msgid "iconv function not usable" #~ msgstr "az iconv függvény nem használható" #~ msgid "iconv function not available" #~ msgstr "az iconv függvény nem elérhető" #~ msgid "character out of range" #~ msgstr "tartományon kívüli karakter" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "nem lehet helyi karakterkészletbe átalakítani a következőt: U+%04X" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "az U+%04X nem konvertálható a helyi karakterkészletbe: %s" #~ msgid "invalid user" #~ msgstr "érvénytelen felhasználó" #~ msgid "invalid group" #~ msgstr "érvénytelen csoport" #~ msgid "invalid spec" #~ msgstr "érvénytelen specifikáció" #~ msgid "unable to display error message" #~ msgstr "nem jeleníthető meg hibaüzenet" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Csomagolta: %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Csomagolta: %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "A licenc GPLv3+: a GNU GPL 3. vagy újabb változata \n" #~ "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja.\n" #~ "NINCS GARANCIA, a törvény által engedélyezett mértékig.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Írta: %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Írta: %s és %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Írta: %s, %s és %s\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Írta: %s, %s, %s\n" #~ "és %s\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Írta: %s, %s, %s,\n" #~ "%s és %s\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Írta: %s, %s, %s,\n" #~ "%s, %s és %s\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Írta: %s, %s, %s,\n" #~ "%s, %s, %s és %s\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Írta: %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "és %s\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Írta: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s és %s\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Írta: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s és mások\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "A hibák a(z) %s címen jelenthetők.\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "A(z) %s hibái a(z) %s címen jelenthetők.\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "A(z) %s honlapja: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "A(z) %s honlapja: .\n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Általános segítség a GNU szoftverek használatához: .\n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle sikertelen" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "az fd %d visszaállítása nem sikerült: dup2 sikertelen" #~ msgid "%s subprocess" #~ msgstr "%s alfolyamat" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s alfolyamat végzetes %d szignált kapott" #~ msgid "stdin" #~ msgstr "szabványos bemenet" #~ msgid "stdout" #~ msgstr "szabványos kimenet" #~ msgid "stderr" #~ msgstr "szabványos hibakimenet" #~ msgid "unknown stream" #~ msgstr "ismeretlen adatfolyam" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "%s újranyitása %s móddal meghiúsult" #~ msgid "string comparison failed" #~ msgstr "karakterlánc-összehasonlítás sikertelen" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "" #~ "Állítsa be az LC_ALL='C' környezeti változót a probléma megkerüléséhez." #~ msgid "The strings compared were %s and %s." #~ msgstr "Az összehasonlított karakterláncok: %s és %s." #~ msgid "cannot perform formatted output" #~ msgstr "nem lehet végrehajtani formázott kimenetet" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "érvénytelen %s%s argumentum: „%s”" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "érvénytelen utótag a(z) %s%s argumentumban: „%s”" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s: a(z) „%s” argumentum túl nagy" freedink-108.4+dfsg/gnulib/po/nb.po0000644000175000017500000002104312421730234014653 0ustar meme# Norwegian messages for GNU textutils (bokml dialect) # Copyright (C) 1996 Free Software Foundation, Inc. # Eivind Tagseth , 1996, 1997, 1999. # msgid "" msgstr "" "Project-Id-Version: GNU textutils 2.0.20\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2002-01-27 21:35+0100\n" "Last-Translator: Eivind Tagseth \n" "Language-Team: Norwegian \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Ukjent systemfeil" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: flagget %s er flertydig\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: flagget --%s trenger et argument\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: flagget %c%s trenger et argument\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: flagget %s trenger et argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: ukjent flagg --%s\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: ukjent flagg %c%s\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ukjent flagg -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: flagget trenger et argument -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: flagget -W %s er flertydig\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: flagget -W %s tillater ikke et argument\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flagget %s trenger et argument\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "kan ikke opprette katalog %s" #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "kan ikke opprette katalog %s" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "virtuelt minne oppbrukt" #~ msgid "invalid argument %s for %s" #~ msgstr "ugyldig argument %s for %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "flertydig argument %s for %s" #~ msgid "Valid arguments are:" #~ msgstr "Gyldige argument er:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Obligatoriske argmenter til lange flagg er obligatoriske ogs for korte.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Bruk: %s [FLAGG] [FIL]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Prv med %s --help for mer informasjon.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Rapportr feil til ." #, fuzzy #~ msgid "Print program version" #~ msgstr "lesefeil" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "for mange argumenter" #, fuzzy #~ msgid "program error" #~ msgstr "lesefeil" #~ msgid "write error" #~ msgstr "feil ved skriving" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "feil ved lesing av %s" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "feil ved skriving til %s" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "feil ved lesing av %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "pning av fil feilet" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: ugyldig mnster" #, fuzzy #~ msgid "regular empty file" #~ msgstr "feil ved lesing" #, fuzzy #~ msgid "regular file" #~ msgstr "feil ved lesing" #, fuzzy #~ msgid "directory" #~ msgstr "%s eksisterer men er ikke en katalog" #, fuzzy #~ msgid "block special file" #~ msgstr "blokkstrrelse" #, fuzzy #~ msgid "character special file" #~ msgstr "tegn-posisjon er null" #, fuzzy #~ msgid "symbolic link" #~ msgstr "kan ikke utfre ioctl p %s" #, fuzzy #~ msgid "weird file" #~ msgstr "feil ved lesing" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "blokkstrrelse" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "blokkstrrelse" #, fuzzy #~ msgid "System error" #~ msgstr "feil ved skriving" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Ukjent systemfeil" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: ukjent flagg -- %c\n" #~ msgid "block size" #~ msgstr "blokkstrrelse" #~ msgid "%s exists but is not a directory" #~ msgstr "%s eksisterer men er ikke en katalog" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "kan ikke endre eier og/eller gruppe for %s" #~ msgid "cannot create directory %s" #~ msgstr "kan ikke opprette katalog %s" #, fuzzy #~ msgid "cannot chdir to directory %s" #~ msgstr "kan ikke skifte til katalog, %s" #~ msgid "cannot change permissions of %s" #~ msgstr "kan ikke endre rettigheter til %s" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "kan ikke endre rettigheter til %s" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "kan ikke opprette katalog %s" #~ msgid "`" #~ msgstr "" #~ msgid "'" #~ msgstr "" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: ugyldig regulrt uttrykk: %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "ugyldig tegn-klasse %s" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "virtuelt minne oppbrukt" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: ugyldig regulrt uttrykk: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "feil i sk med regulrt uttrykk" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: ugyldig regulrt uttrykk: %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "feil i sk med regulrt uttrykk" #, fuzzy #~ msgid "^[yY]" #~ msgstr "^[jJ]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #, fuzzy #~ msgid "iconv function not usable" #~ msgstr "kan ikke skrive ut U+%04X: iconv-funksjonen er ikke brukbar" #, fuzzy #~ msgid "iconv function not available" #~ msgstr "kan ikke skrive ut U+%04X: iconv-funksjon er ikke tilgjengelig" #, fuzzy #~ msgid "character out of range" #~ msgstr "U+%04X: tegn utenfor tillatte verdier" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "kan ikke konvertere U+%04X til lokalt tegnsett" #, fuzzy #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "kan ikke konvertere U+%04X til lokalt tegnsett" #~ msgid "invalid user" #~ msgstr "ugyldig bruker" #~ msgid "invalid group" #~ msgstr "ugyldig gruppe" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "kan ikke finne login-gruppen til en numerisk bruker-ID" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "Dette programmet er fri programvare. Du kan redistribueret det og/eller\n" #~ "modifisere det under betingelsene gitt av GNU General Public License som\n" #~ "distribuert av Free Software Foundation; enten versjon 2, eller (om du " #~ "vil)\n" #~ "en hvilken som helst senere versjon.\n" #~ msgid "Written by %s.\n" #~ msgstr "Skrevet av %s.\n" #, fuzzy #~ msgid "Written by %s and %s.\n" #~ msgstr "Skrevet av %s.\n" #, fuzzy #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Skrevet av %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "Skrevet av %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "Skrevet av %s.\n" #~ msgid "string comparison failed" #~ msgstr "strengsammenligning feilet" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Sett LC_ALL='C' for omg problemet." #~ msgid "The strings compared were %s and %s." #~ msgstr "Strengene som ble sammenlignet var %s og %s." freedink-108.4+dfsg/gnulib/po/ko.po0000644000175000017500000002173312421730234014673 0ustar meme# Korean messages for GNU textutils # Copyright (C) 1996, 2001, 2002 Free Software Foundation, Inc. # Bang Jun-Young , 1996-1997. # Changwoo Ryu , 2001-2002. # msgid "" msgstr "" "Project-Id-Version: GNU textutils 2.0.22\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2002-07-22 20:02+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=EUC-KR\n" "Content-Transfer-Encoding: 8bit\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr " ý " #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: `%s'() ȣ ɼԴϴ\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: `--%s' ɼ μ ʽϴ\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: `%c%s' ɼ μ ʽϴ\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: `%s' ɼ μ ʿմϴ\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: ν ɼ `--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: ν ɼ `%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ɼ -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: ɼ μ ʿմϴ -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: `-W %s'() ȣ ɼԴϴ\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: `-W %s' ɼ μ ʽϴ\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: `%s' ɼ μ ʿմϴ\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "%s 丮 ϴ" #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "%s 丮 ϴ" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "޸𸮰 ٴڳ" #~ msgid "invalid argument %s for %s" #~ msgstr "%2$s %1$s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "%2$s ָ %1$s" #~ msgid "Valid arguments are:" #~ msgstr "ùٸ ڴ:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr " ɼǿ ʿ μ ª ɼǿ ʿմϴ.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr ": %s [<ɼ>] [<>]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr " `%s --help' Ͻʽÿ.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "<%s>() ׸ ˷ ֽʽÿ.\n" #, fuzzy #~ msgid "Print program version" #~ msgstr "α׷ " #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "μ ʹ " #~ msgid "program error" #~ msgstr "α׷ " #~ msgid "stack overflow" #~ msgstr " ÷ο" #~ msgid "write error" #~ msgstr " " #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "`%s' `%s' ̵ ϴ" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "`%s' `%s' ̵ ϴ" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "%s() д ߻" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "%s ߻" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "%s() д ߻" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr " " #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: " #~ msgid "regular empty file" #~ msgstr "Ϲ " #~ msgid "regular file" #~ msgstr "Ϲ " #~ msgid "directory" #~ msgstr "丮" #~ msgid "block special file" #~ msgstr " Ư " #~ msgid "character special file" #~ msgstr " Ư " #~ msgid "fifo" #~ msgstr "FIFO" #~ msgid "symbolic link" #~ msgstr "ɺ ũ" #~ msgid "socket" #~ msgstr "" #~ msgid "message queue" #~ msgstr "޼ ť" #~ msgid "semaphore" #~ msgstr "" #~ msgid "shared memory object" #~ msgstr " ޸ Ʈ" #, fuzzy #~ msgid "typed memory object" #~ msgstr " ޸ Ʈ" #~ msgid "weird file" #~ msgstr " " #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "fifo ʽϴ" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "fifo ʽϴ" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "fifo ʽϴ" #, fuzzy #~ msgid "System error" #~ msgstr " " #, fuzzy #~ msgid "Unknown error" #~ msgstr " ý " #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: ߸ ɼ -- %c\n" #~ msgid "block size" #~ msgstr " ũ" #~ msgid "%s exists but is not a directory" #~ msgstr "%s() 丮 ƴմϴ" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "%s ׸/Ȥ ׷ ٲ ϴ" #~ msgid "cannot create directory %s" #~ msgstr "%s 丮 ϴ" #~ msgid "cannot chdir to directory %s" #~ msgstr "%s 丮 chdir ϴ" #~ msgid "cannot change permissions of %s" #~ msgstr "%s 㰡 ٲ ϴ" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "%s 㰡 ٲ ϴ" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "%s 丮 ϴ" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: Խ: %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr " Ŭ `%s'" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "޸𸮰 ٴڳ" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: Խ: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "Խ Ž ߻" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: Խ: %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "Խ Ž ߻" #~ msgid "^[yY]" #~ msgstr "^[yY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "iconv function not usable" #~ msgstr "iconv Լ ϴ" # not usable not available ̴? #~ msgid "iconv function not available" #~ msgstr "iconv Լ ϴ" #~ msgid "character out of range" #~ msgstr "  " #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "U+%04X() Į ڼ ȯ ϴ" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "U+%04X() Į ڼ ȯ ϴ: %s" #~ msgid "invalid user" #~ msgstr "߸ " #~ msgid "invalid group" #~ msgstr "߸ ׷" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "UID α ׷ ˾ ϴ" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ " α׷ ƮԴϴ. Ʈ Ǿ絵ڴ \n" #~ "Ʈ ǥ GNU General Public License 2 (Ǵ \n" #~ " Ƿ ؼ), α׷ ϰų \n" #~ " ֽϴ.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "%s() ϴ.\n" #, fuzzy #~ msgid "Written by %s and %s.\n" #~ msgstr "%s() ϴ.\n" #, fuzzy #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "%s() ϴ.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "%s() ϴ.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "%s() ϴ.\n" #~ msgid "string comparison failed" #~ msgstr "ڿ 񱳰 ߽ϴ" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr " LC_ALL='C'Ͻʽÿ." #~ msgid "The strings compared were %s and %s." #~ msgstr " ڿ %s() %sԴϴ." freedink-108.4+dfsg/gnulib/po/nl.po0000644000175000017500000005000512421730234014665 0ustar meme# Dutch translations for gnulib. # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # # Erick Branderhorst , 1996. # Ivo Timmermans , 2000. # Freek de Kruijf , 2004, 2005. # Erwin Poeze , 2009, 2010. # Benno Schulenberg , 2007, 2008, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: gnulib-3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-08-22 20:37+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Onbekende systeemfout" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: optie '%s' is niet eenduidig; mogelijkheden zijn:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: optie '--%s' staat geen argument toe\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: optie '%c%s' staat geen argument toe\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: optie '--%s' vereist een argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: onbekende optie '--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: onbekende optie '%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ongeldige optie -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: optie vereist een argument -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: optie '-W %s' is niet eenduidig\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: optie '-W %s' staat geen argument toe\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: optie '-W %s' vereist een argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "kan de huidige werkmap niet vastleggen" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "kan niet terugkeren naar de oorspronkelijke werkmap" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "onvoldoende geheugen beschikbaar" #~ msgid "invalid argument %s for %s" #~ msgstr "ongeldig argument %s van %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "argument %s van %s is niet eenduidig" #~ msgid "Valid arguments are:" #~ msgstr "Geldige argumenten zijn:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: waarde voor '%s' is kleiner of gelijk aan %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: Parameter in ARGP_HELP_FMT vereist een waarde" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: Parameter in ARGP_HELP_FMT moet positief zijn" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Onbekende parameter in ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Rommel in ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Een argument dat verplicht of optioneel is voor een lange optie, is dat\n" #~ "ook voor de overeenkomstige korte optie." #~ msgid "Usage:" #~ msgstr "Gebruik: " #~ msgid " or: " #~ msgstr " of: " #~ msgid " [OPTION...]" #~ msgstr " [OPTIE...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Typ '%s --help' of '%s --usage' voor meer informatie.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "Rapporteer gebreken in het programma aan %s;\n" #~ "meld fouten in de vertaling aan .\n" #~ msgid "give this help list" #~ msgstr "deze hulptekst tonen" #~ msgid "give a short usage message" #~ msgstr "een korte gebruikssamenvatting tonen" #~ msgid "NAME" #~ msgstr "NAAM" #~ msgid "set the program name" #~ msgstr "de programmanaam instellen" #~ msgid "SECS" #~ msgstr "SECONDEN" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "dit aantal seconden pauzeren (standaard 3600)" #~ msgid "print program version" #~ msgstr "programmaversie tonen" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "**Interne programmafout**: geen versie bekend!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Te veel argumenten\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "**Interne programmafout**: optie had herkend moeten worden!?" #~ msgid "program error" #~ msgstr "programmafout" #~ msgid "stack overflow" #~ msgstr "stack-overloop" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "kan geen tijdelijke map vinden; zet $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "kan met sjabloon '%s' geen tijdelijke map aanmaken" #~ msgid "cannot remove temporary file %s" #~ msgstr "kan tijdelijk bestand '%s' niet verwijderen" #~ msgid "cannot remove temporary directory %s" #~ msgstr "kan tijdelijke map '%s' niet verwijderen" #~ msgid "error closing file" #~ msgstr "fout bij sluiten van bestand" #~ msgid "write error" #~ msgstr "schrijffout" #~ msgid "preserving permissions for %s" #~ msgstr "toegangsrechten van '%s' worden behouden" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "fout bij openen van '%s' voor lezen" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "kan reservebestand '%s' niet openen voor schrijven" #~ msgid "error reading \"%s\"" #~ msgstr "fout bij lezen van '%s'" #~ msgid "error writing \"%s\"" #~ msgstr "fout bij schrijven van '%s'" #~ msgid "error after reading \"%s\"" #~ msgstr "fout na lezen van '%s'" #~ msgid "fdopen() failed" #~ msgstr "fdopen() is mislukt" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "C#-compiler is niet gevonden; installeer 'pnet'" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "virtuele C#-machine is niet gevonden; installeer 'pnet'" #~ msgid "%s subprocess failed" #~ msgstr "subproces %s is mislukt" #~ msgid "regular empty file" #~ msgstr "leeg normaal bestand" #~ msgid "regular file" #~ msgstr "normaal bestand" #~ msgid "directory" #~ msgstr "map" #~ msgid "block special file" #~ msgstr "blok-apparaat" #~ msgid "character special file" #~ msgstr "byte-apparaat" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "symbolische koppeling" #~ msgid "socket" #~ msgstr "socket" #~ msgid "message queue" #~ msgstr "berichtenwachtrij" #~ msgid "semaphore" #~ msgstr "semafoor" #~ msgid "shared memory object" #~ msgstr "gedeeld geheugenobject" #~ msgid "typed memory object" #~ msgstr "zelfstandig geheugenobject" #~ msgid "weird file" #~ msgstr "merkwaardig bestand" #~ msgid "Address family for hostname not supported" #~ msgstr "Adresfamilie voor hostnaam wordt niet ondersteund" #~ msgid "Temporary failure in name resolution" #~ msgstr "Tijdelijk probleem in naamsherleiding" #~ msgid "Bad value for ai_flags" #~ msgstr "Ongeldige waarde voor 'ai_flags'" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Onherstelbaar probleem in naamsherleiding" #~ msgid "ai_family not supported" #~ msgstr "'ai_family' wordt niet ondersteund" #~ msgid "Memory allocation failure" #~ msgstr "Onvoldoende geheugen beschikbaar" #~ msgid "No address associated with hostname" #~ msgstr "Aan hostnaam is geen adres verbonden" #~ msgid "Name or service not known" #~ msgstr "Naam of dienst is niet bekend" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servicenaam wordt niet ondersteund voor 'ai_socktype'" #~ msgid "ai_socktype not supported" #~ msgstr "'ai_socktype' wordt niet ondersteund" #~ msgid "System error" #~ msgstr "Systeemfout" #~ msgid "Argument buffer too small" #~ msgstr "Argumentenbuffer is te klein" #~ msgid "Processing request in progress" #~ msgstr "Bezig met verwerken van verzoek" #~ msgid "Request canceled" #~ msgstr "Verzoek is geannuleerd" #~ msgid "Request not canceled" #~ msgstr "Verzoek is niet geannuleerd" #~ msgid "All requests done" #~ msgstr "Alle verzoeken zijn gedaan" #~ msgid "Interrupted by a signal" #~ msgstr "Onderbroken door een signaal" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parametertekst is niet juist gecodeerd" #~ msgid "Unknown error" #~ msgstr "Onbekende fout" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "ongeldige waarde voor 'source_version' in compile_java_class()" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "ongeldige waarde voor 'target_version' in compile_java_class()" #~ msgid "failed to create \"%s\"" #~ msgstr "aanmaken van '%s' is mislukt" #~ msgid "error while writing \"%s\" file" #~ msgstr "fout bij schrijven van bestand '%s'" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "Java-compiler is niet gevonden; installeer 'gcj' of zet $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Virtuele Java-machine is niet gevonden; installeer 'gcj' of zet $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "In-/uitvoerfout in subproces %s" #~ msgid "cannot change permissions of %s" #~ msgstr "kan de toegangsrechten van %s niet veranderen" #~ msgid "cannot create directory %s" #~ msgstr "kan map %s niet aanmaken" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Openen van /dev/zero voor lezen is mislukt" #~ msgid "creation of reading thread failed" #~ msgstr "Het aanmaken van een lees-thread is mislukt" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "kan geen niet-blokkerende in-/uitvoer instellen naar subproces %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "communicatie met subproces %s is mislukt" #~ msgid "write to %s subprocess failed" #~ msgstr "schrijven naar subproces %s is mislukt" #~ msgid "read from %s subprocess failed" #~ msgstr "lezen uit subproces %s is mislukt" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "subproces %s is geëindigd met afsluitwaarde %d" #~ msgid "creation of threads failed" #~ msgstr "aanmaken van threads is mislukt" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "subproces %s is geëindigd met afsluitwaarde %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "‘" #~ msgid "'" #~ msgstr "’" #~ msgid "Success" #~ msgstr "Gelukt" #~ msgid "No match" #~ msgstr "Geen overeenkomsten" #~ msgid "Invalid regular expression" #~ msgstr "Ongeldige reguliere expressie" #~ msgid "Invalid collation character" #~ msgstr "Ongeldig samengesteld teken" #~ msgid "Invalid character class name" #~ msgstr "Ongeldige tekenklassenaam" #~ msgid "Trailing backslash" #~ msgstr "Backslash aan het eind" #~ msgid "Invalid back reference" #~ msgstr "Ongeldige terugverwijzing" #~ msgid "Unmatched [ or [^" #~ msgstr "Ongepaarde [ of [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Ongepaarde ( of \\(" #~ msgid "Unmatched \\{" #~ msgstr "Ongepaarde \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Ongeldige inhoud van \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Ongeldig bereikeinde" #~ msgid "Memory exhausted" #~ msgstr "Onvoldoende geheugen beschikbaar" #~ msgid "Invalid preceding regular expression" #~ msgstr "Ongeldige voorafgaande reguliere expressie" #~ msgid "Premature end of regular expression" #~ msgstr "Voortijdig einde van reguliere expressie" #~ msgid "Regular expression too big" #~ msgstr "Reguliere expressie is te groot" #~ msgid "Unmatched ) or \\)" #~ msgstr "Ongepaarde ) of \\)" #~ msgid "No previous regular expression" #~ msgstr "Geen eerdere reguliere expressie" #~ msgid "^[yY]" #~ msgstr "^[jJyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "toegangsrechten van %s worden ingesteld" # Vroeger ging dit over het afsluiten van een modemverbinding, # tegenwoordig over het afsluiten van een pseudoterminal. #~ msgid "Hangup" #~ msgstr "Opgehangen" #~ msgid "Interrupt" #~ msgstr "Onderbroken" # Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen. #~ msgid "Quit" #~ msgstr "Afgesloten" #~ msgid "Illegal instruction" #~ msgstr "Ongeldige instructie" #~ msgid "Trace/breakpoint trap" #~ msgstr "Traceer/breekpunt-instructie" #~ msgid "Aborted" #~ msgstr "Afgebroken" #~ msgid "Floating point exception" #~ msgstr "Drijvendekomma-berekeningsfout" #~ msgid "Killed" #~ msgstr "Geëlimineerd" #~ msgid "Bus error" #~ msgstr "Busfout" #~ msgid "Segmentation fault" #~ msgstr "Segmentatiefout" #~ msgid "Broken pipe" #~ msgstr "Gebroken pijp" #~ msgid "Alarm clock" #~ msgstr "Wekker" #~ msgid "Terminated" #~ msgstr "Beëindigd" #~ msgid "Urgent I/O condition" #~ msgstr "Urgente in-/uitvoertoestand" #~ msgid "Stopped (signal)" #~ msgstr "Gepauzeerd (signaal)" #~ msgid "Stopped" #~ msgstr "Gepauzeerd" #~ msgid "Continued" #~ msgstr "Doorgegaan" #~ msgid "Child exited" #~ msgstr "Dochter is afgesloten" #~ msgid "Stopped (tty input)" #~ msgstr "Gepauzeerd (terminalinvoer)" #~ msgid "Stopped (tty output)" #~ msgstr "Gepauzeerd (terminaluitvoer)" #~ msgid "I/O possible" #~ msgstr "In-/uitvoer is mogelijk" #~ msgid "CPU time limit exceeded" #~ msgstr "Limiet op processortijd is overschreden" #~ msgid "File size limit exceeded" #~ msgstr "Limiet op bestandsgrootte is overschreden" #~ msgid "Virtual timer expired" #~ msgstr "Virtuele tijdopnemer is verlopen" #~ msgid "Profiling timer expired" #~ msgstr "Tijdopnemer voor analyse is verlopen" #~ msgid "Window changed" #~ msgstr "Venster is veranderd" #~ msgid "User defined signal 1" #~ msgstr "Gebruikergedefinieerd signaal 1" #~ msgid "User defined signal 2" #~ msgstr "Gebruikergedefinieerd signaal 2" #~ msgid "EMT trap" #~ msgstr "EMT-instructie" #~ msgid "Bad system call" #~ msgstr "Onjuiste systeemaanroep" #~ msgid "Stack fault" #~ msgstr "Stack-fout" #~ msgid "Information request" #~ msgstr "Verzoek om informatie" #~ msgid "Power failure" #~ msgstr "Stroomstoring" #~ msgid "Resource lost" #~ msgstr "Hulpbron verloren" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "fouten bij het schrijven naar een afgesloten 'pipe' of 'socket'" #~ msgid "cannot create pipe" #~ msgstr "kan geen pijp aanmaken" #~ msgid "Real-time signal %d" #~ msgstr "Realtime-signaal %d" #~ msgid "Unknown signal %d" #~ msgstr "Onbekend signaal %d" #~ msgid "iconv function not usable" #~ msgstr "de functie iconv() is onbruikbaar" #~ msgid "iconv function not available" #~ msgstr "de functie iconv() is niet beschikbaar" #~ msgid "character out of range" #~ msgstr "teken ligt buiten het toegestane bereik" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "kan U+%04X niet converteren naar de lokale tekenset" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "kan U+%04X niet converteren naar de lokale tekenset: %s" #~ msgid "invalid user" #~ msgstr "ongeldige gebruiker" #~ msgid "invalid group" #~ msgstr "ongeldige groep" #~ msgid "invalid spec" #~ msgstr "ongeldige aanduiding" #~ msgid "unable to display error message" #~ msgstr "kan foutmelding niet tonen" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "In pakketvorm gebracht door %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "In pakketvorm gebracht door %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Dit is vrije software: u mag het vrijelijk wijzigen en verder " #~ "verspreiden.\n" #~ "De precieze licentie is GPL-3+: GNU General Public License versie 3 of " #~ "later.\n" #~ "Zie http://gnu.org/licenses/gpl.html voor de volledige (Engelse) tekst.\n" #~ "Deze software kent GEEN GARANTIE, voor zover de wet dit toestaat.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Geschreven door %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Geschreven door %s en %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Geschreven door %s, %s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Geschreven door %s, %s, %s\n" #~ "en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Geschreven door %s, %s, %s,\n" #~ "%s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Geschreven door %s, %s, %s,\n" #~ "%s, %s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Geschreven door %s, %s, %s,\n" #~ "%s, %s, %s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Geschreven door %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Geschreven door %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Geschreven door %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s en anderen.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Rapporteer gebreken in het programma aan <%s>;\n" #~ "meld fouten in de vertaling aan .\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "" #~ "Rapporteer gebreken in het programma '%s' aan <%s>;\n" #~ "meld fouten in de vertaling aan .\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Webpagina van %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Webpagina van %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Algemene hulp bij gebruik van GNU-software: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle() is mislukt" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "kan bestandsdescriptor %d niet herstellen: dup2() is mislukt" #~ msgid "%s subprocess" #~ msgstr "subproces %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "subproces %s ontving het fatale signaal %d" #~ msgid "stdin" #~ msgstr "standaardinvoer" #~ msgid "stdout" #~ msgstr "standaarduitvoer" #~ msgid "stderr" #~ msgstr "standaardfoutuitvoer" #~ msgid "unknown stream" #~ msgstr "onbekende gegevensstroom" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "opnieuw openen van '%s' met modus %s is mislukt" #~ msgid "string comparison failed" #~ msgstr "vergelijking van tekenreeksen is mislukt" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Zet LC_ALL='C' om het probleem te omzeilen." #~ msgid "The strings compared were %s and %s." #~ msgstr "De te vergelijken tekenreeksen waren %s en %s." #~ msgid "cannot perform formatted output" #~ msgstr "kan geen opgemaakte uitvoer aanmaken" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "ongeldig argument '%3$s' van %1$s%2$s" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "ongeldig achtervoegsel in argument '%3$s' van %1$s%2$s" #~ msgid "%s%s argument `%s' too large" #~ msgstr "argument '%3$s' van %1$s%2$s is te groot" freedink-108.4+dfsg/gnulib/po/Rules-quot0000644000175000017500000000340012420230524015710 0ustar meme# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header freedink-108.4+dfsg/gnulib/po/ro.gmo0000644000175000017500000000074512421730234015046 0ustar meme$,89Project-Id-Version: mailutils 0.4 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2003-12-10 08:55+0200 Last-Translator: Eugen Hoanca Language-Team: Romanian Language: ro MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n!=1); freedink-108.4+dfsg/gnulib/po/de.po0000644000175000017500000005204612421730234014653 0ustar meme# German translation of gnulib messages. # Copyright © 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Karl Eichwalder , 2001-2002. # Lutz Behnke , 1996, 1997, 1998, 1999, 2000, 2001. # Michael Schmidt , 1996, 1997, 1998, 1999, 2000. # Michael Piefel , 2001, 2002, 2003, 2009. # Kai Wasserbäch , 2009. # Arun Persaud , 2012 # # TAB: spell it out („Tabulatoren“). -ke- # Don't use obscure abbreviations, please. -ke- # No hyphenation, please. -ke- # # space: Leerzeichen oder Leerschritt # # Check: # idle - untätig # idle: untätig, ruhig, „idle“, Leerlauf # user idle time: Untätigkeitszeit des Benutzers, Ruhezeit, Idle-Time, # Benutzer im Leerlauf # digit - Zahl, Ziffer, Nummer, Stelle # logged in - angemeldet, eingeloggt # requested - gewünscht? # # Some comments on translations used in oder to ensure persistence: # # symbolic links: symbolische Verknüpfungen # hard links: harte Verknüpfungen # backup: Sicherung # mount: einhängen # msgid "" msgstr "" "Project-Id-Version: GNU gnulib-3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-06-03 12:41-0700\n" "Last-Translator: Arun Persaud \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Unbekannter Systemfehler" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: Option »%s« ist mehrdeutig; Möglichkeiten:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: Option »--%s« erlaubt kein Argument\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: Option »%c%s« erlaubt kein Argument\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: Option »--%s« erfordert ein Argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: unbekannte Option »--%s«\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: unbekannte Option »%c%s«\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ungültige Option -- »%c«\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: Option erfordert ein Argument -- »%c«\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: Option »-W %s« ist mehrdeutig\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: Option »-W %s« erlaubt kein Argument\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: Option »-W %s« erfordert ein Argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "aktuelles Arbeitsverzeichnisses kann nicht aufgezeichnet werden" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "" "es konnte nicht ins ursprüngliche Arbeitsverzeichnis zurückgekehrt werden" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "Speicher ausgeschöpft" #~ msgid "invalid argument %s for %s" #~ msgstr "ungültiges Argument %s für %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "mehrdeutiges Argument %s für %s" #~ msgid "Valid arguments are:" #~ msgstr "Gültige Argumente sind:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: Der Wert %s ist kleiner oder gleich %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT Parameter benötigt einen Wert" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT Parameter muss positiv sein" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Unbekannter ARGP_HELP_FMT Parameter" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Müll in ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Erforderliche oder optionale Argumente für lange Optionen sind auch für " #~ "kurze erforderlich bzw. optional." #~ msgid "Usage:" #~ msgstr "Aufruf:" #~ msgid " or: " #~ msgstr " oder: " #~ msgid " [OPTION...]" #~ msgstr " [OPTIONEN] " #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "»%s --help« oder »%s --usage« liefert weitere Informationen.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an <%s>.\n" #~ msgid "give this help list" #~ msgstr "zeigt diese Hilfeliste" #~ msgid "give a short usage message" #~ msgstr "zeigt eine Kurzfassung des Aufrufs" #~ msgid "NAME" #~ msgstr "NAME" #~ msgid "set the program name" #~ msgstr "den Programmnamen setzen" #~ msgid "SECS" #~ msgstr "SEK" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "warte für SEK Sekunden (Standardwert 3600)" #~ msgid "print program version" #~ msgstr "zeige Programmversion an" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(PROGRAMM FEHLER) Keine Version bekannt!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: zu viele Argumente\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(PROGRAMM FEHLER) Option hätte erkannt werden müssen!?" #~ msgid "program error" #~ msgstr "Programmfehler" #~ msgid "stack overflow" #~ msgstr "Stacküberlauf" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "kann kein temporäres Verzeichnis finden, versuchen Sie, $TMPDIR zu setzen" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "kann temporäres Verzeichnis mit der Schablone „%s“ nicht anlegen" #~ msgid "cannot remove temporary file %s" #~ msgstr "kann temporäre Datei %s nicht entfernen" #~ msgid "cannot remove temporary directory %s" #~ msgstr "kann temporäres Verzeichnis %s nicht entfernen" #~ msgid "error closing file" #~ msgstr "Fehler beim Schließen der Datei" #~ msgid "write error" #~ msgstr "Schreibfehler" #~ msgid "preserving permissions for %s" #~ msgstr "erhalte Zugriffsrechte von %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "Fehler beim Versuch, „%s“ zum Lesen zu öffnen" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "kann Sicherungsdatei „%s“ nicht zum Schreiben öffnen" #~ msgid "error reading \"%s\"" #~ msgstr "Fehler beim Lesen von „%s“" #~ msgid "error writing \"%s\"" #~ msgstr "Fehler beim Schreiben von „%s“" #~ msgid "error after reading \"%s\"" #~ msgstr "Fehler nach dem Lesen von „%s“" #~ msgid "fdopen() failed" #~ msgstr "Fehler bei fdopen()" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "C#-Compiler nicht gefunden, versuchen Sie, pnet zu installieren" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "C#-VM nicht gefunden, versuchen Sie, pnet zu installieren" #~ msgid "%s subprocess failed" #~ msgstr "%s: Unterprozess fehlgeschlagen" #~ msgid "regular empty file" #~ msgstr "reguläre leere Datei" #~ msgid "regular file" #~ msgstr "reguläre Datei" #~ msgid "directory" #~ msgstr "Verzeichnis" #~ msgid "block special file" #~ msgstr "blockorientierte Spezialdatei" #~ msgid "character special file" #~ msgstr "zeichenorientierte Spezialdatei" #~ msgid "fifo" #~ msgstr "FIFO" #~ msgid "symbolic link" #~ msgstr "symbolische Verknüpfung" #~ msgid "socket" #~ msgstr "Socket" #~ msgid "message queue" #~ msgstr "Nachrichtenwarteschlange" #~ msgid "semaphore" #~ msgstr "Semaphor" #~ msgid "shared memory object" #~ msgstr "Objekt gemeinsamen Speichers" #~ msgid "typed memory object" #~ msgstr "Objekt getypten Speichers" #~ msgid "weird file" #~ msgstr "merkwürdige Datei" #~ msgid "Address family for hostname not supported" #~ msgstr "Adressfamilie für Hostnamen nicht unterstützt" #~ msgid "Temporary failure in name resolution" #~ msgstr "Temporäre Störung der Namensauflösung" #~ msgid "Bad value for ai_flags" #~ msgstr "Ungültiger Wert für ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Nicht zu umgehende Störung der Namensauflösung" #~ msgid "ai_family not supported" #~ msgstr "ai_family nicht unterstützt" #~ msgid "Memory allocation failure" #~ msgstr "Speicherallokationsfehler" #~ msgid "No address associated with hostname" #~ msgstr "Keine Adresse mit Hostnamen verbunden" #~ msgid "Name or service not known" #~ msgstr "Name oder Service unbekannt" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname nicht unterstützt für ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype nicht unterstützt" #~ msgid "System error" #~ msgstr "Systemfehler" #~ msgid "Argument buffer too small" #~ msgstr "Argumentpuffer zu klein" #~ msgid "Processing request in progress" #~ msgstr "Verarbeitungsanfrage in Bearbeitung" #~ msgid "Request canceled" #~ msgstr "Anfrage abgebrochen" #~ msgid "Request not canceled" #~ msgstr "Anfrage nicht abgebrochen" #~ msgid "All requests done" #~ msgstr "Alle Anfragen erledigt" #~ msgid "Interrupted by a signal" #~ msgstr "Durch Signal unterbrochen" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parameterzeichenkette nicht korrekt kodiert" #~ msgid "Unknown error" #~ msgstr "Unbekannter Fehler" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "ungültiges Argument source_version für compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "ungültiges Argument target_version für compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "konnte „%s“ nicht erzeugen" #~ msgid "error while writing \"%s\" file" #~ msgstr "Fehler beim Schreiben von der Datei „%s“" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Java-Compiler nicht gefunden, versuchen Sie, gcj zu installieren oder " #~ "setzen Sie $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Java-VM nicht gefunden, versuchen Sie, gij zu installieren oder setzen " #~ "Sie $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "%s-Unterprozess-E/A-Fehler" #~ msgid "cannot change permissions of %s" #~ msgstr "kann Zugriffsrechte von %s nicht ändern" #~ msgid "cannot create directory %s" #~ msgstr "kann Verzeichnis %s nicht anlegen" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Konnte /dev/zero nicht zum Lesen öffnen" #~ msgid "creation of reading thread failed" #~ msgstr "Erstellen des Lese-Threads fehlgeschlagen" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "" #~ "Nicht-blockierendes I/O zu Teilprozess %s kann nicht hergestellt werden" #~ msgid "communication with %s subprocess failed" #~ msgstr "Kommunikation mit Teilprozess %s fehlgeschlagen" #~ msgid "write to %s subprocess failed" #~ msgstr "Schreiben zu Teilprozess %s fehlgeschlagen" #~ msgid "read from %s subprocess failed" #~ msgstr "Lesen von Teilprozess %s fehlgeschlagen" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "Teilprozess %s beendet mit Exitcode %d" #~ msgid "creation of threads failed" #~ msgstr "Erstellen von Threads fehlgeschlagen" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "Teilprozess %s beendet mit Exitcode %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "„" #~ msgid "'" #~ msgstr "“" #~ msgid "Success" #~ msgstr "Erfolg" #~ msgid "No match" #~ msgstr "Keine Übereinstimmung" #~ msgid "Invalid regular expression" #~ msgstr "ungültiger regulärer Ausdruck" #~ msgid "Invalid collation character" #~ msgstr "Ungültige Zeichenklasse" #~ msgid "Invalid character class name" #~ msgstr "Ungültiger Zeichenklassenname" #~ msgid "Trailing backslash" #~ msgstr "abschließender Backslash" #~ msgid "Invalid back reference" #~ msgstr "Ungültige Rückreferenz" #~ msgid "Unmatched [ or [^" #~ msgstr "Keine Übereinstimmung für [ oder [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Keine Übereinstimmung für ( oder \\(" #~ msgid "Unmatched \\{" #~ msgstr "Keine Übereinstimmung für \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Ungültiger Inhalt in \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Ungültiges Bereichsende" #~ msgid "Memory exhausted" #~ msgstr "Speicher ausgeschöpft" #~ msgid "Invalid preceding regular expression" #~ msgstr "ungültiger vorhergehender regulärer Ausdruck" #~ msgid "Premature end of regular expression" #~ msgstr "Vorzeitiges Ende des regulären Ausdrucks" #~ msgid "Regular expression too big" #~ msgstr "Der reguläre Ausdruck ist zu groß" #~ msgid "Unmatched ) or \\)" #~ msgstr "Keine Übereinstimmung für ) oder \\)" #~ msgid "No previous regular expression" #~ msgstr "Kein vorhergehender regulärer Ausdruck" #~ msgid "^[yY]" #~ msgstr "^[jJyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "setze Zugriffsrechte von %s" #~ msgid "Hangup" #~ msgstr "Aufgehängt" #~ msgid "Interrupt" #~ msgstr "Unterbrechung" #~ msgid "Quit" #~ msgstr "Beendet" #~ msgid "Illegal instruction" #~ msgstr "Ungültige Anweisung" #~ msgid "Trace/breakpoint trap" #~ msgstr "Trace-/Breakpoint-Falle" #~ msgid "Aborted" #~ msgstr "Abgebrochen" #~ msgid "Floating point exception" #~ msgstr "Fließkomma-Ausnahme" #~ msgid "Killed" #~ msgstr "Getötet" #~ msgid "Bus error" #~ msgstr "Busfehler" #~ msgid "Segmentation fault" #~ msgstr "Speicheraufteilungsfehler" #~ msgid "Broken pipe" #~ msgstr "Unterbrochene Weiterleitung" #~ msgid "Alarm clock" #~ msgstr "Alarmuhr" #~ msgid "Terminated" #~ msgstr "Terminiert" #~ msgid "Urgent I/O condition" #~ msgstr "Dringende I/O-Bedingung" #~ msgid "Stopped (signal)" #~ msgstr "Gestoppt (Signal)" #~ msgid "Stopped" #~ msgstr "Gestoppt" #~ msgid "Continued" #~ msgstr "Fortgesetzt" #~ msgid "Child exited" #~ msgstr "Kind verlassen" #~ msgid "Stopped (tty input)" #~ msgstr "Gestoppt (tty-Eingabe)" #~ msgid "Stopped (tty output)" #~ msgstr "Gestoppt (tty-Ausgabe)" #~ msgid "I/O possible" #~ msgstr "I/O möglich" #~ msgid "CPU time limit exceeded" #~ msgstr "CPU-Zeitbegrenzung überschritten" #~ msgid "File size limit exceeded" #~ msgstr "Dateigrößenbegrenzung überschritten" #~ msgid "Virtual timer expired" #~ msgstr "Virtueller Zeitgeber abgelaufen" #~ msgid "Profiling timer expired" #~ msgstr "Zeitmesser zur Leistungsmessung abgelaufen" #~ msgid "Window changed" #~ msgstr "Fenster geändert" #~ msgid "User defined signal 1" #~ msgstr "Benutzerdefiniertes Signal 1" #~ msgid "User defined signal 2" #~ msgstr "Benutzerdefiniertes Signal 2" #~ msgid "EMT trap" #~ msgstr "EMT-Falle" #~ msgid "Bad system call" #~ msgstr "Fehlerhafter Systemaufruf" #~ msgid "Stack fault" #~ msgstr "Stapelfehler" #~ msgid "Information request" #~ msgstr "Informationsanfrage" #~ msgid "Power failure" #~ msgstr "Stromausfall" #~ msgid "Resource lost" #~ msgstr "Ressource verloren" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "Fehler beim Schreiben in geschlossene Pipe oder Socket" #~ msgid "cannot create pipe" #~ msgstr "kann Pipe nicht erzeugen" #~ msgid "Real-time signal %d" #~ msgstr "Echtzeitsignal %d" #~ msgid "Unknown signal %d" #~ msgstr "Unbekanntes Signal %d" #~ msgid "iconv function not usable" #~ msgstr "iconv-Funktion nicht benutzbar" #~ msgid "iconv function not available" #~ msgstr "iconv-Funktion nicht verfügbar" #~ msgid "character out of range" #~ msgstr "Zeichen außerhalb erlaubter Grenzen" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "kann U+%04X nicht in lokalen Zeichensatz konvertieren" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "kann U+%04X nicht in lokalen Zeichensatz konvertieren: %s" #~ msgid "invalid user" #~ msgstr "ungültiger Benutzer" #~ msgid "invalid group" #~ msgstr "ungültige Gruppe" #~ msgid "invalid spec" #~ msgstr "ungültige Spec" #~ msgid "unable to display error message" #~ msgstr "kann Fehlermeldung nicht anzeigen" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Paket erstellt von %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Paket erstellt von %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Lizenz GPLv3+: GNU GPL Version 3 oder höher .\n" #~ "Dies ist freie Software: Sie können sie ändern und weitergeben.\n" #~ "Es gibt keinerlei Garantien, soweit wie es das Gesetz erlaubt.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Geschrieben von %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Geschrieben von %s und %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Geschrieben von %s, %s und %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Geschrieben von %s, %s, %s\n" #~ "und %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Geschrieben von %s, %s, %s,\n" #~ "%s und %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Geschrieben von %s, %s, %s,\n" #~ "%s, %s und %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Geschrieben von %s, %s, %s,\n" #~ "%s, %s, %s und %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Geschrieben von %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "und %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Geschrieben von %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s und %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Geschrieben von %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s und anderen.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Melden Sie Fehler im Program (auf Englisch, mit LC_ALL=C) an <%s>.\n" #~ "Melden Sie Fehler in der Übersetzung an .\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Melden Sie %s-Fehler (auf Englisch, mit LC_ALL=C) an <%s>.\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s Homepage: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Heimatseite von %s: .\n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Allgemeine Hilfe zur Benutzung von GNU-Software: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle fehlgeschlagen" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "Kann Fd %d nicht wiederherstellen: dup2 fehlgeschlagen" #~ msgid "%s subprocess" #~ msgstr "%s-Unterprozess" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s-Unterprozess bekam tödliches Signal %d" #~ msgid "stdin" #~ msgstr "Standardeingabe (stdin)" #~ msgid "stdout" #~ msgstr "Standardausgabe (stdout)" #~ msgid "stderr" #~ msgstr "Standardfehlerausgabe (stderr)" #~ msgid "unknown stream" #~ msgstr "Unbekannter Datenstrom" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "Erneutes Öffnen von %s mit Mode %s fehlgeschlagen" #~ msgid "string comparison failed" #~ msgstr "Zeichenkettenvergleich fehlgeschlagen" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Setzen Sie LC_ALL=C, um das Problem zu umgehen." #~ msgid "The strings compared were %s and %s." #~ msgstr "Die verglichenen Zeichenketten waren %s und %s." #~ msgid "cannot perform formatted output" #~ msgstr "kann keine formatierte Ausgabe durchführen" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "ungültiges %s%s-Argument „%s“" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "ungültiger Suffix in %s%s-Argument „%s“" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s-Argument „%s“ zu groß" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: ungültige Option -- %c\n" #~ msgid "" #~ "\n" #~ "Report bugs to <%s>.\n" #~ msgstr "" #~ "\n" #~ "Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an <%s>.\n" #~ "Melden Sie Übersetzungsfehler an \n" #~ msgid "block size" #~ msgstr "Blockgröße" freedink-108.4+dfsg/gnulib/po/it.gmo0000644000175000017500000000365112421730234015041 0ustar memexy,,,'-D r((%-:h*yA._..+/!H,j*$$ 6*a6r    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib-3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-08-22 21:58+0200 Last-Translator: Milo Casagrande Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=2; plural=(n != 1); %s: opzione non valida -- %c %s: l'opzione "%c%s" non accetta un argomento %s: l'opzione "%s" è ambigua. Possibilità:%s: l'opzione "--%s" non accetta un argomento %s: l'opzione "--%s" richiede un argomento %s: l'opzione "-W %s" non accetta un argomento %s: l'opzione "-W %s" è ambigua %s: l'opzione "-W %s" richiede un argomento %s: l'opzione richiede un argomento -- %c %s: opzione "%c%s" non riconosciuta %s: opzione "--%s" non riconosciuta Errore di sistema sconosciutoritorno alla directory di lavoro iniziale non riuscitomemoria esauritaimpossibile registrare la directory di lavoro correntefreedink-108.4+dfsg/gnulib/po/nb.gmo0000644000175000017500000000105612421730234015021 0ustar meme4L`av|Unknown system errormemory exhaustedProject-Id-Version: GNU textutils 2.0.20 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2002-01-27 21:35+0100 Last-Translator: Eivind Tagseth Language-Team: Norwegian Language: nb MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Ukjent systemfeilvirtuelt minne oppbruktfreedink-108.4+dfsg/gnulib/po/eo.po0000644000175000017500000004533312421730234014667 0ustar meme# translation of gnubiff-2.0.2.po to Esperanto # Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Felipe Castro , 2013. # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2013-02-06 15:17-0300\n" "Last-Translator: Felipe Castro \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Nekonata sistem-eraro" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: la modifilo '%s' estas plursenca; eblecoj:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: la modifilo '--%s' ne permesas argumenton\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: la modifilo '%c%s' ne permesas argumenton\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: la modifilo '--%s' postulas argumenton\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: nerekonata modifilo '--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: nerekonata modifilo '%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: malvalida modifilo -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: la modifilo postulas argumenton -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: la modifilo '-W %s' estas plursenca\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: la modifilo '-W %s' ne permesas argumenton\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: la modifilo '-W %s' postulas argumenton\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "ne eblas registri la aktualan labordosierujon" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "ni fiaskis reveni al la komenca labordosierujo" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "memoro estas plenigita" #~ msgid "invalid argument %s for %s" #~ msgstr "malvalida argumento %s por %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "plursenca argumento %s por %s" #~ msgid "Valid arguments are:" #~ msgstr "Validaj argumentoj estas:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: valoro de %s estas malpli aŭ egala al %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: parametro ARGP_HELP_FMT postulas valoron" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: parametro ARGP_HELP_FMT devas esti pozitiva" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Nekonata parametro ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Rubaĵo en ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Devigaj aŭ nedevigaj argumentoj por longaj modifiloj ankaŭ estas devigaj " #~ "aŭ nedevigaj por iu ajn korespondanta mallonga modifilo." #~ msgid "Usage:" #~ msgstr "Uzmaniero:" #~ msgid " or: " #~ msgstr " aŭ: " #~ msgid " [OPTION...]" #~ msgstr " [MODIFILO...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Provu '%s --help' aŭ '%s --usage' por pli da informo.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Raportu program-misojn al %s.\n" #~ msgid "give this help list" #~ msgstr "montri tiun ĉi help-liston" #~ msgid "give a short usage message" #~ msgstr "montri mallongan mesaĝon pri la uzmaniero" #~ msgid "NAME" #~ msgstr "NOMO" #~ msgid "set the program name" #~ msgstr "difini la program-nomon" #~ msgid "SECS" #~ msgstr "SEK" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "halti dum SEK sekundoj (apriore 3600)" #~ msgid "print program version" #~ msgstr "montri program-version" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(PROGRAM-ERARO) Neniu versio estas konata!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: tro da argumentoj\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(PROGRAM-ERARO) Modifilo devus esti rekonita!?" #~ msgid "program error" #~ msgstr "programeraro" #~ msgid "stack overflow" #~ msgstr "staka troigo" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "ne eblas trovi provizoran dosierujon, provu difini $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "ne eblas krei provizoran dosierujon uzante la ŝablonon \"%s\"" #~ msgid "cannot remove temporary file %s" #~ msgstr "ne eblas forigi la provizoran dosieron %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "ne eblas forigi la provizoran dosierujon %s" #~ msgid "error closing file" #~ msgstr "eraro dum fermo de dosiero" #~ msgid "write error" #~ msgstr "skrib-eraro" #~ msgid "preserving permissions for %s" #~ msgstr "ni tenas la permesojn por %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "eraro dum malfermo de \"%s\" por legi" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "ne eblas malfermi la savdosieron \"%s\" por skribi" #~ msgid "error reading \"%s\"" #~ msgstr "eraro legante \"%s\"" #~ msgid "error writing \"%s\"" #~ msgstr "eraro skribante \"%s\"" #~ msgid "error after reading \"%s\"" #~ msgstr "eraro post legi \"%s\"" #~ msgid "fdopen() failed" #~ msgstr "fdopen() fiaskis" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "Kompililo C# ne estis trovata, ni provas instali pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "Virtuala maŝino C# ne estis trovata, ni provas instali pnet" #~ msgid "%s subprocess failed" #~ msgstr "subprocezo de %s fiaskis" #~ msgid "regular empty file" #~ msgstr "regula malplena dosiero" #~ msgid "regular file" #~ msgstr "regula dosiero" #~ msgid "directory" #~ msgstr "dosierujo" #~ msgid "block special file" #~ msgstr "bloka speciala dosiero" #~ msgid "character special file" #~ msgstr "bajta speciala dosiero" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "simbola ligo" #~ msgid "socket" #~ msgstr "konektingo" #~ msgid "message queue" #~ msgstr "mesaĝovico" #~ msgid "semaphore" #~ msgstr "semaforo" #~ msgid "shared memory object" #~ msgstr "komuna memorobjekto" #~ msgid "typed memory object" #~ msgstr "tipita memorbjekto" #~ msgid "weird file" #~ msgstr "stranga dosiero" #~ msgid "Address family for hostname not supported" #~ msgstr "Adresfamilio por komputilretnomo ne estas subtenata" #~ msgid "Temporary failure in name resolution" #~ msgstr "Provizora paneo en solvo de retnomo" #~ msgid "Bad value for ai_flags" #~ msgstr "Malĝusta valoro por ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Neriparebla paneo en solvo de retnomo" #~ msgid "ai_family not supported" #~ msgstr "ai_family ne estas subtenata" #~ msgid "Memory allocation failure" #~ msgstr "Rezervo de memoro fiaskis" #~ msgid "No address associated with hostname" #~ msgstr "Neniu adreso estas asociita kun komputilretnomo" #~ msgid "Name or service not known" #~ msgstr "Nomo aŭ servo ne estas konata" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Servname ne estas subtenata por ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype ne estas subtenata" #~ msgid "System error" #~ msgstr "Sistem-eraro" #~ msgid "Argument buffer too small" #~ msgstr "Bufro por argumentoj tro malgrandas" #~ msgid "Processing request in progress" #~ msgstr "Procezado de peto daŭras" #~ msgid "Request canceled" #~ msgstr "Peto estas nuligita" #~ msgid "Request not canceled" #~ msgstr "Peto ne estas nuligita" #~ msgid "All requests done" #~ msgstr "Ĉiuj petoj estas plenumitaj" #~ msgid "Interrupted by a signal" #~ msgstr "Interrompita de signalo" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Parametra ĉeno ne estas ĝuste enkodita" #~ msgid "Unknown error" #~ msgstr "Nekonata eraro" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "malvalida argumento source_version por compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "malvalida argumento target_version por compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "ni fiaskis krei \"%s\"" #~ msgid "error while writing \"%s\" file" #~ msgstr "eraro dum skribo de dosiero \"%s\"" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "Ĵava kompililo ne estis trovata, provu instali gcj aŭ difinu $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Ĵava virtuala maŝino ne estis trovata, provu instali gij aŭ difinu $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "%s subproceza eraro de en/eligo" #~ msgid "cannot change permissions of %s" #~ msgstr "ne eblas ŝanĝi permesojn de %s" #~ msgid "cannot create directory %s" #~ msgstr "ne eblas krei la dosierujon %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Ni fiaskis malfermi /dev/zero por legi" #~ msgid "creation of reading thread failed" #~ msgstr "kreo de leganta fadeno fiaskis" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "ne eblas difini neblokantan en/eligon al la subprocezo %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "komunikado kun la subprocezo %s fiaskis" #~ msgid "write to %s subprocess failed" #~ msgstr "skribo al la subprocezo %s fiaskis" #~ msgid "read from %s subprocess failed" #~ msgstr "lego el la subprocezo %s fiaskis" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "la subproceso %s ĉesis kun elira kodo %d" #~ msgid "creation of threads failed" #~ msgstr "kreo de fadenoj fiaskis" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "la subproceso %s ĉesis kun elira kodo %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "‘" #~ msgid "'" #~ msgstr "’" #~ msgid "Success" #~ msgstr "Sukceso" #~ msgid "No match" #~ msgstr "Neniu kongruaĵo" #~ msgid "Invalid regular expression" #~ msgstr "Malvalida regulesprimo" #~ msgid "Invalid collation character" #~ msgstr "Malvalida ordodifina signo" #~ msgid "Invalid character class name" #~ msgstr "Malvalida signa klasnomo" #~ msgid "Trailing backslash" #~ msgstr "Vosta retroklino" #~ msgid "Invalid back reference" #~ msgstr "Malvalida retroreferenco" #~ msgid "Unmatched [ or [^" #~ msgstr "Senpara [ aŭ [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Senpara ( aŭ \\(" #~ msgid "Unmatched \\{" #~ msgstr "Senpara \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Malvalida enhavo de \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Malvalida intervalofino" #~ msgid "Memory exhausted" #~ msgstr "Memoro estas plenigita" #~ msgid "Invalid preceding regular expression" #~ msgstr "Malvalida antaŭa regulesprimo" #~ msgid "Premature end of regular expression" #~ msgstr "Tro frua fino de regulesprimo" #~ msgid "Regular expression too big" #~ msgstr "Regulesprimo tro grandas" #~ msgid "Unmatched ) or \\)" #~ msgstr "Senpara ) aŭ \\)" #~ msgid "No previous regular expression" #~ msgstr "Neniu antaŭa regulesprimo" #~ msgid "^[yY]" #~ msgstr "^[jJyY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "agordo de permesoj por %s" #~ msgid "Hangup" #~ msgstr "Malkonekto" #~ msgid "Interrupt" #~ msgstr "Interrompo" #~ msgid "Quit" #~ msgstr "Eliri" #~ msgid "Illegal instruction" #~ msgstr "Malvalida instrukcio" #~ msgid "Trace/breakpoint trap" #~ msgstr "Spursekva/paŭzopunkta kaptilo" #~ msgid "Aborted" #~ msgstr "Ĉesigita" #~ msgid "Floating point exception" #~ msgstr "Glitkoma escepto" #~ msgid "Killed" #~ msgstr "Mortigita" #~ msgid "Bus error" #~ msgstr "Bus-eraro" #~ msgid "Segmentation fault" #~ msgstr "Adres-eraro" #~ msgid "Broken pipe" #~ msgstr "Rompita dukto" #~ msgid "Alarm clock" #~ msgstr "Vekhorloĝo" #~ msgid "Terminated" #~ msgstr "Finigita" #~ msgid "Urgent I/O condition" #~ msgstr "Urĝa en/eliga stato" #~ msgid "Stopped (signal)" #~ msgstr "Haltigita (signalo)" #~ msgid "Stopped" #~ msgstr "Haltigita" #~ msgid "Continued" #~ msgstr "Daŭrigita" #~ msgid "Child exited" #~ msgstr "Ido finis" #~ msgid "Stopped (tty input)" #~ msgstr "Haltigita (enigo tty)" #~ msgid "Stopped (tty output)" #~ msgstr "Haltigita (eligo tty)" #~ msgid "I/O possible" #~ msgstr "En/eligo eblas" #~ msgid "CPU time limit exceeded" #~ msgstr "Procezila tempolimo estas atingita" #~ msgid "File size limit exceeded" #~ msgstr "Dosiergranda limo estas atingita" #~ msgid "Virtual timer expired" #~ msgstr "Virtuala horloĝo senvalidiĝis" #~ msgid "Profiling timer expired" #~ msgstr "Profilanta horloĝo senvalidiĝis" #~ msgid "Window changed" #~ msgstr "Fenestro ŝanĝis" #~ msgid "User defined signal 1" #~ msgstr "Signalo 1 difinita de uzanto" #~ msgid "User defined signal 2" #~ msgstr "Signalo 2 difinita de uzanto" #~ msgid "EMT trap" #~ msgstr "kaptilo EMT" #~ msgid "Bad system call" #~ msgstr "Malĝusta sistemvoko" #~ msgid "Stack fault" #~ msgstr "Stak-eraro" #~ msgid "Information request" #~ msgstr "Informo-peto" #~ msgid "Power failure" #~ msgstr "Elektra paneo" #~ msgid "Resource lost" #~ msgstr "Perdo de rimedo" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "eraro skribante al fermida dukto aŭ konektingo" #~ msgid "cannot create pipe" #~ msgstr "ne eblas krei dukton" #~ msgid "Real-time signal %d" #~ msgstr "Realtempa signalo %d" #~ msgid "Unknown signal %d" #~ msgstr "Nekonata signalo %d" #~ msgid "iconv function not usable" #~ msgstr "funkcio iconv ne uzeblas" #~ msgid "iconv function not available" #~ msgstr "funkcio iconv ne disponeblas" #~ msgid "character out of range" #~ msgstr "signo estas for de intervalo" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "ne eblas konverti U+%04X al loka signaro" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "ne eblas konverti U+%04X al loka signaro: %s" #~ msgid "invalid user" #~ msgstr "malvalida uzanto" #~ msgid "invalid group" #~ msgstr "malvalida grupo" #~ msgid "invalid spec" #~ msgstr "malvalida spec" #~ msgid "unable to display error message" #~ msgstr "ne eblas montri erarmesaĝon" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Pakigita de %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Pakigita de %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Permeso GPLv3+: GNU GPL versio 3 aŭ posta .\n" #~ "Tio ĉi estas libera programaro: vi estas libera por ŝanĝi kaj redisdoni " #~ "ĝin.\n" #~ "Ekzistas NENIU GARANTIO, laŭ plej amplekse permesate de la leĝoj.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Verkita de %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Verkita de %s kaj %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Verkita de %s, %s, kaj %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Verkita de %s, %s, %s,\n" #~ "kaj %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Verkita de %s, %s, %s,\n" #~ "%s, kaj %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Verkita de %s, %s, %s,\n" #~ "%s, %s, kaj %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Verkita de %s, %s, %s,\n" #~ "%s, %s, %s, kaj %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Verkita de %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "kaj %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Verkita de %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, kaj %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Verkita de %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, kaj aliaj.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Raportu program-misojn al: %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Raportu %s misojn al: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s hejm-paĝo: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s hejm-paĝo: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Ĝenerala helpo por uzi programaron GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle fiaskis" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "ne eblas restarigi fd %d: dup2 fiaskis" #~ msgid "%s subprocess" #~ msgstr "subprocezo %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "subprocezo %s ricevis neripareblan signalon %d" #~ msgid "stdin" #~ msgstr "ĉefenigujo" #~ msgid "stdout" #~ msgstr "ĉefeligujo" #~ msgid "stderr" #~ msgstr "ĉeferarujo" #~ msgid "unknown stream" #~ msgstr "nekonata fluaĵo" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "ni fiaskis remalfermi %s kun reĝimo %s" #~ msgid "string comparison failed" #~ msgstr "ĉena komparo fiaskis" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Agordu LC_ALL='C' por ĉirkauiri la problemon." #~ msgid "The strings compared were %s and %s." #~ msgstr "La komparitaj ĉenoj estis %s kaj %s." #~ msgid "cannot perform formatted output" #~ msgstr "ne eblas efektivigi formatitan eligon" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "malvalida %s%s-argumento '%s'" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "malvalida sufikso en %s%s-argumento '%s'" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s-argumento '%s' tro larĝas" freedink-108.4+dfsg/gnulib/po/fr.gmo0000644000175000017500000000400712421730234015030 0ustar memexy,,,'-D r((%-:h*y'S4{8435R*44''Em2:    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib-3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-12-07 20:41-0400 Last-Translator: David Prévot Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Lokalize 1.2 %s : option non valable -- « %c » %s : l'option « %c%s » ne prend pas d'argument %s : l'option « %s » est ambiguë, possibilités :%s : l'option « --%s » ne prend pas d'argument %s : l'option « --%s » nécessite un argument %s : l'option « -W %s » ne prend pas d'argument %s : l'option « -W %s » est ambiguë %s : l'option « -W %s » nécessite un argument %s : l'option nécessite un argument -- « %c » %s : option « %c%s » non reconnue %s : option « --%s » non reconnue Erreur système inconnueéchec de retour au répertoire initial de travailmémoire épuiséeimpossible de mémoriser le répertoire de travail courantfreedink-108.4+dfsg/gnulib/po/tr.po0000644000175000017500000002507712421730234014714 0ustar meme# translation of coreutils-5.3.0.tr.po to Turkish # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # Ali Devin Sezer , 2002. # Nilgün Belma Bugüner , 2001, 2002. # Onur Tolga ŞEHİTOĞLU , 1998. # Deniz Akkus Kanca , 2001,2003, 2004. # msgid "" msgstr "" "Project-Id-Version: coreutils 5.3.0\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2005-03-14 04:17+0200\n" "Last-Translator: Deniz Akkus Kanca \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.9.1\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Bilinmeyen sistem hatası" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: `%s' seçeneği belirsiz\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: `--%s' seçeneği argümansız kullanılır\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: seçenek `%c%s' argümansız kullanılır\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: `--%s' seçeneği bilinmiyor\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: `%c%s' seçeneği bilinmiyor\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: geçersiz seçenek -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: seçenek bir argümanla kullanılır -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: `-W %s' seçeneği belirsiz\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "openat: çalışılan dizini kaydedemedi" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "başlangıç çalışma dizinine geri dönülemedi" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "bellek tükendi" #~ msgid "invalid argument %s for %s" #~ msgstr "%s argümanı `%s' için geçersiz" #~ msgid "ambiguous argument %s for %s" #~ msgstr "%s argümanı `%s' için belirsiz" #~ msgid "Valid arguments are:" #~ msgstr "Geçerli argümanlar:" # #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Uzun seçenekler için zorunlu olan argümanlar kısa seçenekler için de " #~ "zorunludur.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Kullanım: %s [SEÇENEK]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Daha fazla bilgi için `%s --help' yazın.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Yazılım hatalarını <%s> adresine,\n" #~ "çeviri hatalarını adresine bildirin.\n" #~ msgid "NAME" #~ msgstr "İSİM" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: çok fazla sağlama satırı" #, fuzzy #~ msgid "program error" #~ msgstr "okuma hatası" #~ msgid "write error" #~ msgstr "yazma hatası" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "%s okumak için açılamadı" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "%s yazmak için açılamadı" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "%s'i okunurken hata" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "%s'e yazarken hata" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "%s'i okunurken hata" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "açma işlemi başarısız" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: arama (seek) başarısız" # #~ msgid "regular empty file" #~ msgstr "normal boş dosya" # #~ msgid "regular file" #~ msgstr "normal dosya" #~ msgid "directory" #~ msgstr "dizin" # #~ msgid "block special file" #~ msgstr "blok özel dosyası" # #~ msgid "character special file" #~ msgstr "karakter özel dosyası" # #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "sembolik bağ" #~ msgid "socket" #~ msgstr "soket" #~ msgid "message queue" #~ msgstr "ileti kuyruğu" #~ msgid "semaphore" #~ msgstr "semafor" # #~ msgid "shared memory object" #~ msgstr "paylaşımlı bellek nesnesi" # #~ msgid "typed memory object" #~ msgstr "türlenmiş bellek nesnesi" # #~ msgid "weird file" #~ msgstr "garip dosya" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "fifo dosyaları desteklenmiyor" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "fifo dosyaları desteklenmiyor" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "fifo dosyaları desteklenmiyor" #, fuzzy #~ msgid "System error" #~ msgstr "yazma hatası" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Bilinmeyen sistem hatası" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: kuraldışı seçenek -- %c\n" #~ msgid "block size" #~ msgstr "blok uzunluğu" #~ msgid "%s exists but is not a directory" #~ msgstr "%s var ama bir dizin değil" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "%s'in sahibi ve/veya grubu değiştirilemiyor" #~ msgid "cannot create directory %s" #~ msgstr "%s dizini oluşturulamıyor" #~ msgid "cannot chdir to directory %s" #~ msgstr "%s dizinine geçilemedi" #~ msgid "cannot change permissions of %s" #~ msgstr "%s'in erişim izinleri değiştirilemiyor" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "%s: yazmak için açılamadı" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "%s bağı oluşturulamadı" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: geçersiz düzenli ifade(regular expression): %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "geçersiz karakter sınıfı `%s'" #, fuzzy #~ msgid "Invalid range end" #~ msgstr "Geçersiz sayfa aralığı `%s'" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "bellek tükendi" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: geçersiz düzenli ifade(regular expression): %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "düzenli ifade (regular expression) aramasında hata oluştu" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: geçersiz düzenli ifade(regular expression): %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "düzenli ifade (regular expression) aramasında hata oluştu" #~ msgid "^[yY]" #~ msgstr "^[eE]" #~ msgid "^[nN]" #~ msgstr "^[hH]" # #~ msgid "iconv function not usable" #~ msgstr "iconv işlevi kullanılabilir değil" #~ msgid "iconv function not available" #~ msgstr "iconv işlevi yok" #~ msgid "character out of range" #~ msgstr "karakter kapsamdışı" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "U+%04X yerel karakter kümesine dönüştürülemiyor" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "U+%04X yerel karakter kümesine dönüştürülemiyor: %s" #~ msgid "invalid user" #~ msgstr "kullanıcı geçersiz" #~ msgid "invalid group" #~ msgstr "grup geçersiz" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "bir sayısal kullanıcı-kimliğin grubu alınamıyor" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "Bu, bir serbest yazılımdır; Free Software Foundation tarafından " #~ "yayınlanan\n" #~ "GNU Genel Kamu Lisansı, 2. sürüm (veya sizin seçiminize bağlı olarak) " #~ "daha üst \n" #~ "sürüm koşulları altında değişiklik yapabilir ve/veya yeniden " #~ "dağıtabilirsiniz. \n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "%s tarafından yazıldı.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "%s ve %s tarafından yazıldı.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "%s, %s ve %s tarafından yazıldı.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "%s, %s, %s \n" #~ "ve %s tarafından yazıldı.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s, %s \n" #~ "ve %s tarafından yazıldı.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s, %s, \n" #~ "%s ve %s tarafından yazıldı.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s, %s, \n" #~ "%s, %s ve %s tarafından yazıldı.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "%s, %s, %s, \n" #~ "%s, %s, %s, \n" #~ "%s ve %s tarafından yazıldı.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "%s, %s, %s, \n" #~ "%s, %s, %s, \n" #~ "%s, %s ve %s tarafından yazıldı.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "%s, %s, %s, \n" #~ "%s, %s, %s, \n" #~ "%s, %s, %s ve başkaları tarafından yazıldı.\n" # #~ msgid "string comparison failed" #~ msgstr "dizge karşılaştırması başarısız" # #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Problemi devre dışı bırakmak için LC_ALL='C' tanımlayın." #~ msgid "The strings compared were %s and %s." #~ msgstr "Karşılaştırılan dizgeler %s ve %s idi." freedink-108.4+dfsg/gnulib/po/Makefile.in.in0000644000175000017500000003744212421727607016412 0ustar meme# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.18 GETTEXT_MACRO_VERSION = 0.18 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: check-macro-version all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. check-macro-version: @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ package_gnu='GNU '; \ else \ package_gnu=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_gnu}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: freedink-108.4+dfsg/gnulib/po/el.gmo0000644000175000017500000000112612421730234015020 0ustar meme4L`avx0$1Unknown system errormemory exhaustedProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-03-11 11:25+0100 Last-Translator: Simos Xenitellis Language-Team: Greek Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Άγνωστο σφάλμα συστήματοςη μνήμη εξαντλήθηκεfreedink-108.4+dfsg/gnulib/po/pl.gmo0000644000175000017500000000373312421730234015041 0ustar memexy,,,'-D r((%-:h*y-2- %7.]'&&8<R7    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2014-07-17 18:00+0200 Last-Translator: Jakub Bogusz Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; %s: błędna opcja -- '%c' %s: opcja '%c%s' nie może mieć argumentów %s: opcja '%s' jest niejednoznaczna; możliwości:%s: opcja '--%s' nie może mieć argumentów %s: opcja '--%s' musi mieć argument %s: opcja '-W %s' nie może mieć argumentów %s: opcja '-W %s' jest niejednoznaczna %s: opcja '-W %s' musi mieć argument %s: opcja musi mieć argument -- '%c' %s: nieznana opcja '%c%s' %s: nieznana opcja '--%s' Nieznany błąd systemowynie udało się wrócić do początkowego katalogu roboczegopamięć wyczerpananie udało się zapisać bieżącego katalogu roboczegofreedink-108.4+dfsg/gnulib/po/ro.po0000644000175000017500000001547312421730234014706 0ustar meme# Mesajele n limba romn pentru pachetul mailutils. # Copyright (C) 2003 Free Software Foundation, Inc. # Eugen Hoanca , 2003. # msgid "" msgstr "" "Project-Id-Version: mailutils 0.4\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2003-12-10 08:55+0200\n" "Last-Translator: Eugen Hoanca \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: gnulib/lib/error.c:188 #, fuzzy msgid "Unknown system error" msgstr "tip de mesaj necunoscut" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: opiunea `%s' este ambigu\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opiunea `--%s' nu permite argumente\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opiunea `%c%s' nu permite argumente\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: opiunea `%s' necesit un argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opiune necunoscut `--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opiune necunoscut `%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: opiune invalid -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: opiunea necesit un argument -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opiune `-W %s' este ambigu\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opiune `-W %s' nu permite argumente\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: opiunea `%s' necesit un argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "" #: gnulib/lib/xalloc-die.c:34 #, fuzzy msgid "memory exhausted" msgstr "Memorie plin" #, fuzzy #~ msgid "invalid argument %s for %s" #~ msgstr "nume etichet(tag) invalid `%s' pentru `%s'" #, fuzzy #~ msgid "ambiguous argument %s for %s" #~ msgstr "lipsete argumentul pentru %s" #, fuzzy #~ msgid "Valid arguments are:" #~ msgstr "argumentele if valide sunt: s | r | t" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: parametrul ARGP_HELP_FMT necesit o valoare" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Parametru ARGP_HELP_FMT necunoscut" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Gunoi(garbage) n ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Argumentele obligatorii sau opionale pentru opiunile lungi sunt de " #~ "asemenea obligatorii sau opionale pentru toate opiunile scurte " #~ "corespunztoare." #~ msgid "Usage:" #~ msgstr "Folosire:" #~ msgid " or: " #~ msgstr " sau: " #~ msgid " [OPTION...]" #~ msgstr " [OPIUNE...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "ncercai `%s --help' sau `%s --usage' pentru mai multe informaii.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Raportai bug-urile la %s.\n" #~ msgid "Give this help list" #~ msgstr "Afieaz aceast list de ajutor" #~ msgid "Give a short usage message" #~ msgstr "Afieaz un mesaj de folosire scurt" #~ msgid "NAME" #~ msgstr "NUME" #~ msgid "Set the program name" #~ msgstr "Seteaz numele programului" #, fuzzy #~ msgid "SECS" #~ msgstr "SECUNDE" #~ msgid "Hang for SECS seconds (default 3600)" #~ msgstr "ntrerupe(hang) pentru SECS secunde (implicit 3600)" #~ msgid "Print program version" #~ msgstr "Afieaz versiunea programului" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(EROARE DE PROGRAM) Nici o versiune cunoscut!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Prea multe argumente\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(EROARE DE PROGRAM) Opiunea ar fi trebuit recunoscut!?" #, fuzzy #~ msgid "program error" #~ msgstr "eroare de interval(range)" #, fuzzy #~ msgid "stack overflow" #~ msgstr "subrulare(underflow) a stivei(stack)" #, fuzzy #~ msgid "write error" #~ msgstr "eroare regex" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "nu se poate deschide fiierul de ieire(output) \"%s\": %s" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "eroare la cititrea din fiierul de intrare(input): %s" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "eroare n scrierea n mailbox: %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "fork euat" #, fuzzy #~ msgid "message queue" #~ msgstr "%d mesaj" #, fuzzy #~ msgid "Memory allocation failure" #~ msgstr "Operaiune euat" #, fuzzy #~ msgid "System error" #~ msgstr "eroare regex" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Escape necunoscut %s" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: opiune ilegal -- %c\n" #, fuzzy #~ msgid "cannot change owner and/or group of %s" #~ msgstr "nu se poate trece n uid %lu: %m" #, fuzzy #~ msgid "cannot create directory %s" #~ msgstr "nu se poate crea iterator: %s" #, fuzzy #~ msgid "cannot chdir to directory %s" #~ msgstr "nu se poate crea iterator: %s" #, fuzzy #~ msgid "cannot change permissions of %s" #~ msgstr "Permisiuni greite la %s. Setai 0600." #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "nu se poate crea mailerul \"%s\"" #~ msgid "Success" #~ msgstr "Succes" #, fuzzy #~ msgid "Invalid back reference" #~ msgstr "Numr invalid" #, fuzzy #~ msgid "Invalid range end" #~ msgstr "Tip de dat invalid" #~ msgid "Memory exhausted" #~ msgstr "Memorie plin" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "Nu exist fiier anterior" #, fuzzy #~ msgid "invalid user" #~ msgstr "Numr invalid" #, fuzzy #~ msgid "invalid group" #~ msgstr "Deschide grup" #, fuzzy #~ msgid "string comparison failed" #~ msgstr "Autentificare euat" freedink-108.4+dfsg/gnulib/po/remove-potcdate.sin0000644000175000017500000000066012420230524017523 0ustar meme# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } freedink-108.4+dfsg/gnulib/po/en@boldquot.header0000644000175000017500000000247112420230524017342 0ustar meme# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # freedink-108.4+dfsg/gnulib/po/insert-header.sin0000644000175000017500000000124012420230524017152 0ustar meme# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } freedink-108.4+dfsg/gnulib/po/sk.po0000644000175000017500000002230312421730234014671 0ustar meme# Slovak translations for GNU textutils # Copyright (C) 1996 Free Software Foundation, Inc. # Miroslav Vasko , 1999 # msgid "" msgstr "" "Project-Id-Version: textutils 2.0.14\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2001-06-08 22:10 +02:00\n" "Last-Translator: Stanislav Meduna \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8-bit\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Neznma systmov chyba" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: voba `%s' nie je jednoznan\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: prepna `--%s' nepovouje argument\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: prepna `%c%s' nepovouje argument\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: prepna `%s' vyaduje argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: neznmy prepna `--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: neznmy prepna `%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: chybn prepna -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: prepna vyaduje argument -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: prepna `-W %s' nie je jednoznan\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: prepna `-W %s' nepovouje argument\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: prepna `%s' vyaduje argument\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "nie je mon vytvori adresr %s" #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "nie je mon vytvori adresr %s" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "vyerpan pam" #, fuzzy #~ msgid "invalid argument %s for %s" #~ msgstr "chybn argument %s pre `%s'" #, fuzzy #~ msgid "ambiguous argument %s for %s" #~ msgstr "nejednoznan argument %s pre `%s'" #~ msgid "Valid arguments are:" #~ msgstr "Platn argumenty s:" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Pouitie: %s [PREPNA] [SBOR]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Viac informci zskate prkazom `%s --help'.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ " Chyby v programe oznamujte na adrese (iba\n" #~ "anglicky), pripomienky k prekladu zasielajte na adresu " #~ "(slovensky)." #, fuzzy #~ msgid "Print program version" #~ msgstr "chyba pri tan" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "prli vea argumentov" #, fuzzy #~ msgid "program error" #~ msgstr "chyba pri tan" #~ msgid "write error" #~ msgstr "chyba pri zpise" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "nie je mon otvori %s pre tanie" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "nie je mon otvori %s pre tanie" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "chyba pri tan %s" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "chyba pri zpise %s" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "chyba pri tan %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "zlyhalo otvorenie" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: chybn vzor" #, fuzzy #~ msgid "regular empty file" #~ msgstr "zlyhalo tanie" #, fuzzy #~ msgid "regular file" #~ msgstr "zlyhalo tanie" #, fuzzy #~ msgid "directory" #~ msgstr "Adresr: " #, fuzzy #~ msgid "block special file" #~ msgstr "vekos bloku" #, fuzzy #~ msgid "character special file" #~ msgstr "pozcia znaku je nula" #, fuzzy #~ msgid "symbolic link" #~ msgstr "ioctl na `%s' nie je mon vykona" #, fuzzy #~ msgid "weird file" #~ msgstr "zlyhalo tanie" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "tento systm nepodporuje rry" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "tento systm nepodporuje rry" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "tento systm nepodporuje rry" #, fuzzy #~ msgid "System error" #~ msgstr "chyba pri zpise" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Neznma systmov chyba" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: nepovolen prepna -- %c\n" #~ msgid "block size" #~ msgstr "vekos bloku" #~ msgid "%s exists but is not a directory" #~ msgstr "%s existuje, ale nie je adresrom" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "nie je mon zmeni pouvatea a/alebo skupinu %s" #~ msgid "cannot create directory %s" #~ msgstr "nie je mon vytvori adresr %s" #, fuzzy #~ msgid "cannot chdir to directory %s" #~ msgstr "nie je mon vojs do adresra, %s" #~ msgid "cannot change permissions of %s" #~ msgstr "nie je mon zmeni prva %s" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "nie je mon zmeni prva %s" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "nie je mon vytvori adresr %s" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: chybn regulrny vraz: %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "chybn trieda znaku `%s'" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "vyerpan pam" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: chybn regulrny vraz: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "chyba pri vyhadvan pomocou regulrneho vrazu" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: chybn regulrny vraz: %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "chyba pri vyhadvan pomocou regulrneho vrazu" #~ msgid "^[yY]" #~ msgstr "^[yYaA]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #, fuzzy #~ msgid "iconv function not usable" #~ msgstr "nie je mon vypsa U+%04X: funkcia iconv nie je pouiten" #, fuzzy #~ msgid "iconv function not available" #~ msgstr "nie je mon vypsa U+%04X: funkcia iconv nie je dostupn" #, fuzzy #~ msgid "character out of range" #~ msgstr "U+%04X: znak je mimo rozsah" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "nie je mon konvertova U+%04X do loklnej znakovej sady" #, fuzzy #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "nie je mon konvertova U+%04X do loklnej znakovej sady" #~ msgid "invalid user" #~ msgstr "neplatn pouvate" #~ msgid "invalid group" #~ msgstr "neplatn skupina" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "nie je mon uri skupinu selnho UID" #, fuzzy #~ msgid "" #~ "\n" #~ "This is free software. You may redistribute copies of it under the terms " #~ "of\n" #~ "the GNU General Public License .\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ " Tento program je von programov vybavenie; mete ho ri a " #~ "modifikova\n" #~ "poda podmienok Veobecnej verejnej licencie GNU, vydvanej Free " #~ "Software\n" #~ "Foundation; a to bu verzie 2 tejto licencie alebo (poda vho " #~ "uvenia),\n" #~ "ktorejkovek neskorej verzie.\n" #~ "\n" #~ " Tento program je rozirovan v ndeji, e bude uiton, avak BEZ " #~ "AKEJKOVEK\n" #~ "ZRUKY; neposkytuj sa ani odvoden zruky PREDAJNOSTI alebo VHODNOSTI " #~ "PRE\n" #~ "NEJAK KONKRTNY EL. aie podrobnosti njdete vo Veobecnej verejnej\n" #~ "licencii GNU.\n" #~ "\n" #~ " Kpia Veobecnej verejnej licencie GNU mala by dodan spolu s tmto\n" #~ "programom; pokia sa tak nestalo, napte do Free Software Foundation, " #~ "Inc.,\n" #~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #~ msgid "Written by %s.\n" #~ msgstr "Napsal %s.\n" #, fuzzy #~ msgid "Written by %s and %s.\n" #~ msgstr "Napsal %s.\n" #, fuzzy #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Napsal %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "Napsal %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "Napsal %s.\n" #, fuzzy #~ msgid "string comparison failed" #~ msgstr "zlyhal stat" #, fuzzy #~ msgid "The strings compared were %s and %s." #~ msgstr "nie je mon vytvori odkaz %s" freedink-108.4+dfsg/gnulib/po/af.gmo0000644000175000017500000000117712421730234015014 0ustar meme<\pq-e+-AoUnknown system errorfailed to return to initial working directorymemory exhaustedProject-Id-Version: coreutils 5.2.1 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2004-03-17 11:58+0200 Last-Translator: Petri Jooste Language-Team: Afrikaans Language: af MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Onbekende stelselfoutkon nie na aanvanklike werkgids terugkeer niegeheue uitgeputfreedink-108.4+dfsg/gnulib/po/af.po0000644000175000017500000002345012421730234014646 0ustar meme# coreutils-5.2.1.af.po. # Copyright (C) 2004 Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # Petri Jooste , 2004. # msgid "" msgstr "" "Project-Id-Version: coreutils 5.2.1\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2004-03-17 11:58+0200\n" "Last-Translator: Petri Jooste \n" "Language-Team: Afrikaans \n" "Language: af\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Onbekende stelselfout" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: opsie `%s' is dubbelsinnig\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opsie `--%s' laat nie 'n parameter toe nie\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opsie `%c%s' laat nie 'n parameter toe nie\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: opsie `%s' benodig 'n parameter\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: onbekende opsie `--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: onbekende opsie `%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: ongeldige opsie -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: opsie benodig 'n parameter -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opsie `-W %s' is dubbelsinnig\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opsie `-W %s' laat nie 'n parameter toe nie\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: opsie `%s' benodig 'n parameter\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "kon nie na aanvanklike werkgids terugkeer nie" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "kon nie na aanvanklike werkgids terugkeer nie" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "geheue uitgeput" #~ msgid "invalid argument %s for %s" #~ msgstr "ongeldige parameter %s vir %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "dubbelsinnige parameter %s vir %s" #~ msgid "Valid arguments are:" #~ msgstr "Geldige parameters is soos volg:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Verpligte parameters vir langformaat opsies is ook verpligtend vir " #~ "kortformaat opsies.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Gebruik so: %s [OPSIE]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Probeer `%s --help' vir meer inligting.\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Rapporteer foute aan <%s>.\n" #~ msgid "NAME" #~ msgstr "NAAM" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "te veel parameters\n" #, fuzzy #~ msgid "program error" #~ msgstr "leesfout" #~ msgid "write error" #~ msgstr "skryffout" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "kan nie %s oopmaak om te lees nie" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "kan nie %s oopmaak om te lees nie" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "fout met die les van %s" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "fout met die skryf na %s" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "fout met die les van %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "'open' het gefaal" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: seek het misluk" #~ msgid "regular empty file" #~ msgstr "gewone le ler" #~ msgid "regular file" #~ msgstr "gewone ler" #~ msgid "directory" #~ msgstr "lergids" #~ msgid "block special file" #~ msgstr "spesiale blokler" #~ msgid "character special file" #~ msgstr "spesiale karakterler" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "simboliese skakel" #~ msgid "socket" #~ msgstr "sok" #~ msgid "message queue" #~ msgstr "boodskapwagtou" #~ msgid "semaphore" #~ msgstr "semafoor" #~ msgid "shared memory object" #~ msgstr "gedeeldegeheue-objek" #, fuzzy #~ msgid "typed memory object" #~ msgstr "gedeeldegeheue-objek" #~ msgid "weird file" #~ msgstr "vreemde ler" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "fifo-lers word nie ondersteun nie" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "fifo-lers word nie ondersteun nie" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "fifo-lers word nie ondersteun nie" #, fuzzy #~ msgid "System error" #~ msgstr "skryffout" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Onbekende stelselfout" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: onwettige opsie -- %c\n" #~ msgid "block size" #~ msgstr "blokgrootte" #~ msgid "%s exists but is not a directory" #~ msgstr "%s bestaan maar is nie 'n lergids nie" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "kan nie die eienaar en/of groep van %s verander nie" #~ msgid "cannot create directory %s" #~ msgstr "Kan nie lergids %s skep nie." #~ msgid "cannot chdir to directory %s" #~ msgstr "kan nie chdir doen om na gids %s te gaan nie" #~ msgid "cannot change permissions of %s" #~ msgstr "kan nie toegangsregte van %s verander nie" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "magtigings vir %s kon nie behou word nie" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "kan nie die skakel %s skep nie" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: ongeldige relmatige uitdrukking: %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "ongeldige karakterklas `%s'" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "geheue uitgeput" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: ongeldige relmatige uitdrukking: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "fout in soektog met relmatige uitdrukking" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: ongeldige relmatige uitdrukking: %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "fout in soektog met relmatige uitdrukking" #~ msgid "^[yY]" #~ msgstr "^[jJ]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "iconv function not usable" #~ msgstr "iconv-funksie onbruikbaar" #~ msgid "iconv function not available" #~ msgstr "iconv-funksie is nie beskikbaar nie" #~ msgid "character out of range" #~ msgstr "karakter is buite die grense" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "kan nie U+%04X omskakel na 'n plaaslike karakterstel nie" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "kan nie U+%04X omskakel na 'n plaaslike karakterstel nie: %s" #~ msgid "invalid user" #~ msgstr "ongeldige gebruiker" #~ msgid "invalid group" #~ msgstr "ongeldige groep " #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "kan nie die aantekengroep van 'n numeriese UID verkry nie" # TRANSLATORS: %s denotes an author name. # TRANSLATORS: %s denotes an author name. #~ msgid "Written by %s.\n" #~ msgstr "Geskryf deur %s.\n" # TRANSLATORS: Each %s denotes an author name. # TRANSLATORS: Each %s denotes an author name. #~ msgid "Written by %s and %s.\n" #~ msgstr "Geskryf deur %s en %s.\n" # TRANSLATORS: Each %s denotes an author name. #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Geskryf deur %s, %s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Geskryf deur %s, %s, %s \n" #~ "en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Geskryf deur %s, %s, %s, \n" #~ "%s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Geskryf deur %s, %s, %s, \n" #~ "%s, %s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Geskryf deur %s, %s, %s, \n" #~ "%s, %s, %s en %s.\n" # TRANSLATORS: Each %s denotes an author name. # You can use line breaks, estimating that each author name occupies # ca. 16 screen columns and that a screen line has ca. 80 columns. #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Geskryf deur %s, %s, %s, \n" #~ "%s, %s, %s, %s\n" #~ "en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Geskryf deur %s, %s, %s, \n" #~ "%s, %s, %s, %s,\n" #~ "%s en %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Geskryf deur %s, %s, %s, \n" #~ "%s, %s, %s, %s\n" #~ "%s, %s en ander.\n" #~ msgid "string comparison failed" #~ msgstr "stringvergelyking het gefaal" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Stel LC_ALL='C' om die probleem te systap" #~ msgid "The strings compared were %s and %s." #~ msgstr "Die stringe wat vergelyk is, is %s en %s." freedink-108.4+dfsg/gnulib/po/zh_TW.gmo0000644000175000017500000000111312421730234015447 0ustar meme4L`av%;Unknown system errormemory exhaustedProject-Id-Version: coreutils 5.3.0 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2005-07-02 04:13+0800 Last-Translator: Abel Cheung Language-Team: Chinese (traditional) Language: zh_TW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=1; plural=0; 不明的系統錯誤記憶體耗盡freedink-108.4+dfsg/gnulib/po/ko.gmo0000644000175000017500000000105512421730234015032 0ustar meme4L`av~Unknown system errormemory exhaustedProject-Id-Version: GNU textutils 2.0.22 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2002-07-22 20:02+0900 Last-Translator: Changwoo Ryu Language-Team: Korean Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=EUC-KR Content-Transfer-Encoding: 8bit ý ޸𸮰 ٴڳfreedink-108.4+dfsg/gnulib/po/pt.gmo0000644000175000017500000000065712421730234015053 0ustar meme$,8u9Project-Id-Version: sh-utils 1.12i Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 1996-11-08 20:03+0100 Last-Translator: Antnio Joo Serras Rendas Language-Team: Portugus Language: pt MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit freedink-108.4+dfsg/gnulib/po/LINGUAS0000644000175000017500000000023112420230521014726 0ustar meme# Set of available languages. af be bg ca cs da de el eo es et eu fi fr ga gl hu it ja ko ms nb nl pl pt pt_BR ro ru rw sk sl sr sv tr uk vi zh_CN zh_TW freedink-108.4+dfsg/gnulib/po/vi.gmo0000644000175000017500000000421612421730234015041 0ustar memexy,,,'-D r((%-:h*y.8:828k9,9 9E,,%AA;R    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib-3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2014-01-13 08:31+0700 Last-Translator: Trần Ngọc Quân Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Poedit 1.5.5 X-Poedit-SourceCharset: utf-8 %s: tùy chọn không hợp lệ -- “%c” %s: tùy chọn “%c%s” không cho phép đối số %s: tùy chọn “%s” chưa rõ ràng; khả năng là:%s: tùy chọn “--%s” không cho phép đối số %s: tùy chọn “--%s” yêu cầu một đối số %s: tùy chọn “-W %s” không cho phép đối số %s: tùy chọn “-W %s” chưa rõ ràng %s: tùy chọn “-W %s” yêu cầu một đối số %s: tùy chọn yêu cầu một đối số -- “%c” %s: không nhận ra tùy chọn “%c%s” %s: không nhận ra tùy chọn “--%s” Gặp lỗi hệ thống chưa biếtgặp lỗi khi quay trở về thư mục làm việc ban đầuhết bộ nhớkhông thể ghi lại thư mục làm việc hiện thờifreedink-108.4+dfsg/gnulib/po/ja.gmo0000644000175000017500000000423312421730234015014 0ustar memexy,,,'-D r((%-:h*y%RFxEF4LG,57,4d4?$-HR    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2011-09-02 18:39+0900 Last-Translator: Yasuaki Taniguchi Language-Team: Japanese Language: ja MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; %s: 無効なオプション -- '%c' %s: オプション '%c%s' は引数を取ることができません %s: オプション '%s' は曖昧です:次のものが可能です:%s: オプション '--%s' は引数を取ることができません %s: オプション '--%s' は引数が必要です %s: オプション '-W %s' は引数を取ることができません %s: オプション '-W %s' は曖昧です %s: オプション '-W %s' は引数が必要です %s: オプションには引数が必要です -- '%c' %s: オプション '%c%s' を認識できません %s: オプション '--%s' を認識できません 不明なシステムエラー初期作業ディレクトリに戻るのに失敗しましたメモリを使い果たしました現在の作業ディレクトリを記録することができませんfreedink-108.4+dfsg/gnulib/po/zh_CN.po0000644000175000017500000004556412421730234015273 0ustar meme# simplified Chinese translation of gnulib. # Copyright (C) 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Yip Chi Lap , 1998. # Abel Cheung , 2002. # Anthony Fok , 2002. # Funda Wang , 2004, 2005. # Ji ZhengYu , 2009, 2010. msgid "" msgstr "" "Project-Id-Version: gnulib 2.0.0.3462.e9796\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2010-02-26 09:54+0800\n" "Last-Translator: Ji ZhengYu \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "未知的系统错误" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: 选项\"%s\"歧义\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: 选项\"--%s\"不要参数\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: 选项\"%c%s\"不要参数\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: 选项\"%s\"必须带参数\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: 无法识别的选项\"--%s\"\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: 无法识别的选项\"%c%s\"\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: 无效选项 -- \"%c\"\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: 选项需要参数 -- \"%c\"\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: 选项\"-W %s\"有歧义\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: 选项\"-W %s\"不要带参数\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: 选项\"%s\"必须带参数\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "无法记录当前工作的目录" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "返回到初始工作目录失败" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "内存用尽" #~ msgid "invalid argument %s for %s" #~ msgstr "%2$s 的参数 %1$s 无效" #~ msgid "ambiguous argument %s for %s" #~ msgstr "%2$s 的参数 %1$s 有歧义" #~ msgid "Valid arguments are:" #~ msgstr "有效的参数为:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: %s 的值小于或等于 %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: ARGP_HELP_FMT 参数需要一个值" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: ARGP_HELP_FMT 参数必须为正值" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: 未知的 ARGP_HELP_FMT 参数" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "ARGP_HELP_FMT 中的无效参数: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "选项完整形式所必须用的或是可选的参数,在使用选项缩写形式时也是必须的或是可" #~ "选的。" #~ msgid "Usage:" #~ msgstr "用法:" #~ msgid " or: " #~ msgstr " 或者: " #~ msgid " [OPTION...]" #~ msgstr "[选项...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "请尝试执行“%s --help”或“%s --usage”来获取更多信息。\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "请向 %s 报告错误。\n" #~ msgid "give this help list" #~ msgstr "显示此帮助列表" #~ msgid "give a short usage message" #~ msgstr "显示一份简洁的用法信息" #~ msgid "NAME" #~ msgstr "NAME" #~ msgid "set the program name" #~ msgstr "设定程序名称" #~ msgid "SECS" #~ msgstr "SECS" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "挂起 SECS 秒(默认 3600 秒)" #~ msgid "print program version" #~ msgstr "打印程序版本" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(程序错误)未知版本!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s:参数太多\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(程序错误)未知的选项!?" #~ msgid "program error" #~ msgstr "程序错误" #~ msgid "stack overflow" #~ msgstr "堆栈溢出" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "无法找到一个临时目录,请尝试设置 $TMPDIR 环境变量" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "无法以模板“%s”创建一个临时目录" #~ msgid "cannot remove temporary file %s" #~ msgstr "无法删除临时文件 %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "无法删除临时目录 %s" #~ msgid "error closing file" #~ msgstr "关闭文件时发生错误" #~ msgid "write error" #~ msgstr "写入错误" #~ msgid "preserving permissions for %s" #~ msgstr "保留 %s 的权限" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "打开“%s”读取数据时发生错误" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "无法打开备份文件“%s”写入数据" #~ msgid "error reading \"%s\"" #~ msgstr "读入“%s”时错误" #~ msgid "error writing \"%s\"" #~ msgstr "写入“%s”时错误" #~ msgid "error after reading \"%s\"" #~ msgstr "读入“%s”后错误" #~ msgid "fdopen() failed" #~ msgstr "fdopen() 错误" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "未找到 C# 编译器,尝试安装 pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "未找到 C# 虚拟机,尝试安装 pnet" #~ msgid "%s subprocess failed" #~ msgstr "%s 子进程错误" #~ msgid "regular empty file" #~ msgstr "一般空文件" #~ msgid "regular file" #~ msgstr "一般文件" #~ msgid "directory" #~ msgstr "目录" #~ msgid "block special file" #~ msgstr "块特殊文件" #~ msgid "character special file" #~ msgstr "字符特殊文件" #~ msgid "fifo" #~ msgstr "先进先出" #~ msgid "symbolic link" #~ msgstr "符号链接" #~ msgid "socket" #~ msgstr "套接字" #~ msgid "message queue" #~ msgstr "消息队列" #~ msgid "semaphore" #~ msgstr "信号量" #~ msgid "shared memory object" #~ msgstr "共享内存对象" #~ msgid "typed memory object" #~ msgstr "标准内存对象" #~ msgid "weird file" #~ msgstr "古怪文件" #~ msgid "Address family for hostname not supported" #~ msgstr "不支持主机名的地址族" #~ msgid "Temporary failure in name resolution" #~ msgstr "名称解析时发生临时错误" #~ msgid "Bad value for ai_flags" #~ msgstr "ai_flags 的值错误" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "名称解析时发生不可恢复的错误" #~ msgid "ai_family not supported" #~ msgstr "不支持 ai_family" #~ msgid "Memory allocation failure" #~ msgstr "内存分配错误" #~ msgid "No address associated with hostname" #~ msgstr "主机名未分配到地址" #~ msgid "Name or service not known" #~ msgstr "未知的名称或服务" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "ai_socktype 不支持的服务名" #~ msgid "ai_socktype not supported" #~ msgstr "不支持 ai_socktype" #~ msgid "System error" #~ msgstr "系统错误" #~ msgid "Argument buffer too small" #~ msgstr "参数缓冲区太小" #~ msgid "Processing request in progress" #~ msgstr "正在处理进程的请求" #~ msgid "Request canceled" #~ msgstr "请求已取消" #~ msgid "Request not canceled" #~ msgstr "请求未取消" #~ msgid "All requests done" #~ msgstr "已处理所有请求" #~ msgid "Interrupted by a signal" #~ msgstr "被一个信号中断" #~ msgid "Parameter string not correctly encoded" #~ msgstr "参数字符串未正确编码" #~ msgid "Unknown error" #~ msgstr "未知错误" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "compile_java_class 的 source_version 参数无效" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "compile_java_class 的 target_version 参数无效" #~ msgid "failed to create \"%s\"" #~ msgstr "无法创建“%s”" #~ msgid "error while writing \"%s\" file" #~ msgstr "正在写入“%s”文件时发生错误" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "未找到 Java 编译器,尝试安装 gcj 或是设置 $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "未找到 Java 虚拟机,尝试安装 gij 或是设置 $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "%s 子进程输入/输出错误" #~ msgid "cannot change permissions of %s" #~ msgstr "无法更改 %s 的权限" #~ msgid "cannot create directory %s" #~ msgstr "无法创建目录 %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "无法以读方式打开 /dev/zero" #~ msgid "creation of reading thread failed" #~ msgstr "读线程创建错误" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "无法为 %s 子进程设置非阻塞性 I/O" #~ msgid "communication with %s subprocess failed" #~ msgstr "与 %s 子进程通讯错误" #~ msgid "write to %s subprocess failed" #~ msgstr "写入 %s 子进程错误" #~ msgid "read from %s subprocess failed" #~ msgstr "读取 %s 子进程错误" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "子进程 %s 由退出码 %d 终止" #~ msgid "creation of threads failed" #~ msgstr "线程创建失败" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "子进程 %s 由退出码 %d 终止" #~ msgid "cannot create pipe" #~ msgstr "无法创建管道" #~ msgid "`" #~ msgstr "“" #~ msgid "'" #~ msgstr "”" #~ msgid "Success" #~ msgstr "成功" #~ msgid "No match" #~ msgstr "不匹配" #~ msgid "Invalid regular expression" #~ msgstr "正则表达式无效" #, fuzzy #~ msgid "Invalid collation character" #~ msgstr "无效的重组字符" #~ msgid "Invalid character class name" #~ msgstr "无效的字符类名" #~ msgid "Trailing backslash" #~ msgstr "多余的反斜杠" #~ msgid "Invalid back reference" #~ msgstr "无效的向后索引" #~ msgid "Unmatched [ or [^" #~ msgstr "[ 或 [^ 不匹配" #~ msgid "Unmatched ( or \\(" #~ msgstr "( 或 \\( 不匹配" #~ msgid "Unmatched \\{" #~ msgstr "\\{ 不匹配" #~ msgid "Invalid content of \\{\\}" #~ msgstr "\\{\\} 的内容无效" #~ msgid "Invalid range end" #~ msgstr "无效的范围结尾" #~ msgid "Memory exhausted" #~ msgstr "内存用尽" #~ msgid "Invalid preceding regular expression" #~ msgstr "前置的正则表达式无效" #~ msgid "Premature end of regular expression" #~ msgstr "正则表达式结尾过早" #~ msgid "Regular expression too big" #~ msgstr "正则表达式太大" #~ msgid "Unmatched ) or \\)" #~ msgstr ") 或 \\) 不匹配" #~ msgid "No previous regular expression" #~ msgstr "没有前次正则表达式" #~ msgid "^[yY]" #~ msgstr "^[yY]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "设置 %s 的权限" #~ msgid "Hangup" #~ msgstr "挂起" #~ msgid "Interrupt" #~ msgstr "中断" #~ msgid "Quit" #~ msgstr "退出" #~ msgid "Illegal instruction" #~ msgstr "非法指令" #~ msgid "Trace/breakpoint trap" #~ msgstr "跟踪(断点)" #~ msgid "Aborted" #~ msgstr "取消" #~ msgid "Floating point exception" #~ msgstr "浮点溢出" #~ msgid "Killed" #~ msgstr "强行终止" #~ msgid "Bus error" #~ msgstr "总线错误" #~ msgid "Segmentation fault" #~ msgstr "段错误" #~ msgid "Broken pipe" #~ msgstr "管道断开" #~ msgid "Alarm clock" #~ msgstr "时钟警报" #~ msgid "Terminated" #~ msgstr "被终止" #~ msgid "Urgent I/O condition" #~ msgstr "I/O 条件不足" #~ msgid "Stopped (signal)" #~ msgstr "被停止(通过信号)" #~ msgid "Stopped" #~ msgstr "被停止" #~ msgid "Continued" #~ msgstr "继续" #~ msgid "Child exited" #~ msgstr "子进程退出" #~ msgid "Stopped (tty input)" #~ msgstr "被停止(tty 输入)" #~ msgid "Stopped (tty output)" #~ msgstr "被停止(tty 输出)" #~ msgid "I/O possible" #~ msgstr "I/O 可能" #~ msgid "CPU time limit exceeded" #~ msgstr "超出CPU 时间限制" #~ msgid "File size limit exceeded" #~ msgstr "超出文件大小限制" #~ msgid "Virtual timer expired" #~ msgstr "虚拟计时器过期" #, fuzzy #~ msgid "Profiling timer expired" #~ msgstr "数据计时器过期" #~ msgid "Window changed" #~ msgstr "窗口改变" #~ msgid "User defined signal 1" #~ msgstr "用户自定义信号 1" #~ msgid "User defined signal 2" #~ msgstr "用户自定义信号 2" #~ msgid "EMT trap" #~ msgstr "仿真程序陷阱" #~ msgid "Bad system call" #~ msgstr "错误的系统调用" #~ msgid "Stack fault" #~ msgstr "堆栈错误" #~ msgid "Information request" #~ msgstr "信息请求" #~ msgid "Power failure" #~ msgstr "电力问题" #~ msgid "Resource lost" #~ msgstr "资源丢失" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "写入一个已关闭的管道或套接字时发生错误" #~ msgid "Real-time signal %d" #~ msgstr "实时信号 %d" #~ msgid "Unknown signal %d" #~ msgstr "未知信号 %d" #~ msgid "iconv function not usable" #~ msgstr "iconv 函数无法使用" #~ msgid "iconv function not available" #~ msgstr "iconv 函数不存在" #~ msgid "character out of range" #~ msgstr "字符值超出可接受的范围以外" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "无法将 U+%04X 转换至用户的字符集" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "无法将 U+%04X 转换至用户的字符集:%s" #~ msgid "invalid user" #~ msgstr "无效的用户" #~ msgid "invalid group" #~ msgstr "无效的组" #~ msgid "invalid spec" #~ msgstr "无效的 spec" #~ msgid "unable to display error message" #~ msgstr "无法显示错误信息" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "由 %s (%s) 打包\n" #~ msgid "Packaged by %s\n" #~ msgstr "由 %s 打包\n" #~ msgid "(C)" #~ msgstr "(C)" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "授权协议 GPLv3+: GNU GPL 版本 3 或更新版本 \n" #~ "这是自由软件:您可以自由的更改并重新发布它。\n" #~ "在法律允许的范围内,没有任何担保。\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "由 %s 编写。\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "由 %s 和 %s 编写。\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "由 %s、%s 和 %s 编写。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "由 %s、%s、%s 和\n" #~ "%s 编写。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "由 %s、%s、%s、\n" #~ "%s 和 %s 编写。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "由 %s、%s、%s、\n" #~ "%s、%s 和 %s 编写。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "由 %s、%s、%s、\n" #~ "%s、%s、%s 和 %s 编写。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "由 %s、%s、%s、\n" #~ "%s、%s、%s、%s\n" #~ "和 %s 编写。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "由 %s、%s、%s、\n" #~ "%s、%s、%s、%s、\n" #~ "%s、和 %s 编写。\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "由 %s、%s、%s、\n" #~ "%s、%s、%s、%s、\n" #~ "%s、%s、和其他人编写。\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "请向 %s 报告错误。向 报告翻译错误。\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "将 %s 错误报告给: %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "%s 主页: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "%s 主页: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "GNU 软件的通用帮助: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle 失败" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "无法恢复文件描述符 %d: dup2 失败" #~ msgid "%s subprocess" #~ msgstr "%s 子进程" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s 子进程获得终结信号 %d" #~ msgid "stdin" #~ msgstr "标准输入" #~ msgid "stdout" #~ msgstr "标准输出" #~ msgid "stderr" #~ msgstr "标准错误输出" #~ msgid "unknown stream" #~ msgstr "未知的流" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "无法以 %2$s 模式重新打开 %1$s" #~ msgid "string comparison failed" #~ msgstr "字符串比较出现错误" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "请设定 LC_ALL='C' 避免问题出现。" #~ msgid "The strings compared were %s and %s." #~ msgstr "要比较的字符串为 %s 和 %s。" #~ msgid "cannot perform formatted output" #~ msgstr "无法执行格式化输出" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "%s%s 参数‘%s’无效" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "%s%s 参数‘%s’的后缀无效" #~ msgid "%s%s argument `%s' too large" #~ msgstr "%s%s 参数‘%s’太长" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s:非法选项 -- %c\n" #~ msgid "" #~ "\n" #~ "Report bugs to <%s>.\n" #~ msgstr "" #~ "\n" #~ "请向 <%s> 报告错误。\n" #~ msgid "block size" #~ msgstr "块大小" #~ msgid "%s exists but is not a directory" #~ msgstr "%s 存在但并非目录" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "无法更改 %s 的属主和/或组" #~ msgid "cannot chdir to directory %s" #~ msgstr "无法切换到目录 %s" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "无法取得 UID 数值所表示的用户的主组" freedink-108.4+dfsg/gnulib/po/sr.gmo0000644000175000017500000000447212421730234015053 0ustar memexy,,,'-D r((%-:h*y2EDEZ<F1$=V=//.2Za(T    %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '%s' is ambiguous; possibilities:%s: option '--%s' doesn't allow an argument %s: option '--%s' requires an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option '-W %s' requires an argument %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib-3.0.0.6062.a6b16 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2013-11-17 16:47+0200 Last-Translator: Мирослав Николић Language-Team: Serbian <(nothing)> Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %s: неисправна опција -- „%c“ %s: опција „%c%s“ не дозвољава аргумент %s: опција „%s“ је нејасна; могућности:%s: опција „--%s“ не дозвољава аргумент %s: опција „--%s“ захтева аргумент %s: опција „-W %s“ не дозвољава аргумент %s: опција „-W %s“ је нејасна %s: опција „-W %s“ захтева аргумент %s: опција захтева аргумент -- „%c“ %s: непозната опција „%c%s“ %s: непозната опција „--%s“ Непозната грешка системане могу да се вратим у почетни радни директоријуммеморија је потрошенане могу да снимим тренутни радни директоријумfreedink-108.4+dfsg/gnulib/po/el.po0000644000175000017500000003144312421730234014661 0ustar meme# Greek messages for gnulib # Copyright (C) 1999, 2000, 2001, 2002, 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # Simos Xenitellis , 1999, 2000, 2001, 2002, 2012. # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-03-11 11:25+0100\n" "Last-Translator: Simos Xenitellis \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" # #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Άγνωστο σφάλμα συστήματος" # #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: η επιλογή `%s' είναι ασαφής\n" # #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: η επιλογή `--%s' δεν επιτρέπει ορίσματα\n" # #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: η επιλογή `%c%s' δεν επιτρέπει ορίσματα\n" # #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: η επιλογή `-%s' απαιτεί ένα όρισμα\n" # #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: μη αναγνωρίσιμη επιλογή `--%s'\n" # #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: μη αναγνωρίσιμη επιλογή `%c%s'\n" # #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: μη έγκυρη επιλογή -- %c\n" # #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: η επιλογή απαιτεί ένα όρισμα -- %c\n" # #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: η επιλογή `-W %s' είναι ασαφής\n" # #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: η επιλογή `-W %s' δεν επιτρέπει ορίσματα\n" # #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: η επιλογή `-%s' απαιτεί ένα όρισμα\n" # #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "αδύνατη η δημιουργία καταλόγου `%s'" # #: gnulib/lib/openat-die.c:57 #, fuzzy, c-format msgid "failed to return to initial working directory" msgstr "αδύνατη η δημιουργία καταλόγου `%s'" # #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "η μνήμη εξαντλήθηκε" # #~ msgid "invalid argument %s for %s" #~ msgstr "μη έγκυρο όρισμα %s για %s" # #~ msgid "ambiguous argument %s for %s" #~ msgstr "ασαφές όρισμα %s για %s" # #~ msgid "Valid arguments are:" #~ msgstr "Έγκυρα ορίσματα είναι:" # #~ msgid " [OPTION...]" #~ msgstr " [ΕΠΙΛΟΓΗ...]" # #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Δοκιμάστε `%s --help' για περισσότερη βοήθεια.\n" # #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Αναφέρατε σφάλματα στο <%s>.\n" # #, fuzzy #~ msgid "print program version" #~ msgstr "σφάλμα προγράμματος" # #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "πάρα πολλά ορίσματα" # #~ msgid "program error" #~ msgstr "σφάλμα προγράμματος" # #~ msgid "stack overflow" #~ msgstr "υπερχείλιση στοίβας" # #, fuzzy #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "αδύνατη η δημιουργία καταλόγου `%s'" # #, fuzzy #~ msgid "cannot remove temporary file %s" #~ msgstr "αδύνατη η δημιουργία καταλόγου `%s'" # #, fuzzy #~ msgid "cannot remove temporary directory %s" #~ msgstr "αδύνατη η δημιουργία καταλόγου `%s'" # #~ msgid "write error" #~ msgstr "σφάλμα εγγραφής" # #, fuzzy #~ msgid "preserving permissions for %s" #~ msgstr "αδυναμία αλλαγής ιδιοκτησίας στο %s" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "αδυναμία μεταφοράς του `%s' στο `%s'" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "αδυναμία μεταφοράς του `%s' στο `%s'" # #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "σφάλμα ανάγνωσης %s" # #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "σφάλμα εγγραφής %s" # #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "σφάλμα ανάγνωσης %s" # #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "αποτυχία ανοίγματος" # #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "%s: μη έγκυρη μορφή" # #~ msgid "regular empty file" #~ msgstr "κανονικό κενό αρχείο" # #~ msgid "regular file" #~ msgstr "κανονικό αρχείο" # #~ msgid "directory" #~ msgstr "κατάλογος" # #~ msgid "block special file" #~ msgstr "ειδικό αρχείο μπλοκ" # #~ msgid "character special file" #~ msgstr "ειδικό αρχείο χαρακτήρων" # #~ msgid "fifo" #~ msgstr "φίφο" # #~ msgid "symbolic link" #~ msgstr "συμβολικός σύνδεσμος" # #~ msgid "socket" #~ msgstr "υποδοχέας" # #~ msgid "message queue" #~ msgstr "ουρά μηνυμάτων" # #~ msgid "semaphore" #~ msgstr "σημαφόρος" # #~ msgid "weird file" #~ msgstr "παράξενο αρχείο" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "αρχεία fifo δεν υποστηρίζονται" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "αρχεία fifo δεν υποστηρίζονται" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "αρχεία fifo δεν υποστηρίζονται" # #, fuzzy #~ msgid "System error" #~ msgstr "σφάλμα εγγραφής" # #, fuzzy #~ msgid "Unknown error" #~ msgstr "Άγνωστο σφάλμα συστήματος" # #, fuzzy #~ msgid "error while writing \"%s\" file" #~ msgstr "σφάλμα εγγραφής %s" # #, fuzzy #~ msgid "%s subprocess I/O error" #~ msgstr "%s: μη έγκυρη μορφή" # #, fuzzy #~ msgid "cannot change permissions of %s" #~ msgstr "αδυναμία αλλαγής ιδιοκτησίας στο %s" # #, fuzzy #~ msgid "cannot create directory %s" #~ msgstr "αδύνατη η δημιουργία καταλόγου `%s'" # #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "αδυναμία αλλαγής ιδιοκτησίας στο %s" # #, fuzzy #~ msgid "communication with %s subprocess failed" #~ msgstr "%s: μη έγκυρη μορφή" # #, fuzzy #~ msgid "write to %s subprocess failed" #~ msgstr "%s: μη έγκυρη μορφή" # #, fuzzy #~ msgid "read from %s subprocess failed" #~ msgstr "%s: μη έγκυρη μορφή" # #~ msgid "`" #~ msgstr "`" # #~ msgid "'" #~ msgstr "'" # #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: μη έγκυρη κανονική έκφραση: %s" # #, fuzzy #~ msgid "Invalid collation character" #~ msgstr "μη έγκυρη τάξη χαρακτήρων `%s'" # #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "μη έγκυρη τάξη χαρακτήρων `%s'" # #, fuzzy #~ msgid "Invalid range end" #~ msgstr "%s: μη έγκυρη κανονική έκφραση: %s" # #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "η μνήμη εξαντλήθηκε" # #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: μη έγκυρη κανονική έκφραση: %s" # #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "σφάλμα στην ανεύρεση μέσω κανονικής έκφρασης" # #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: μη έγκυρη κανονική έκφραση: %s" # #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "σφάλμα στην ανεύρεση μέσω κανονικής έκφρασης" # #~ msgid "^[yY]" #~ msgstr "^[yYνΝ]" # #~ msgid "^[nN]" #~ msgstr "^[nNοΟ]" # #, fuzzy #~ msgid "setting permissions for %s" #~ msgstr "αδυναμία αλλαγής ιδιοκτησίας στο %s" # #, fuzzy #~ msgid "Bus error" #~ msgstr "σφάλμα εγγραφής" # #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "αδύνατη η δημιουργία καταλόγου `%s'" # #, fuzzy #~ msgid "character out of range" #~ msgstr "%s: αριθμός γραμμής έξω από τα όρια" # #~ msgid "invalid user" #~ msgstr "μη έγκυρος χρήστης" # #~ msgid "invalid group" #~ msgstr "μη έγκυρη ομάδα" # #, fuzzy #~ msgid "invalid spec" #~ msgstr "μη έγκυρος χρήστης" # #~ msgid "Written by %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "Written by %s and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "Γραμμένο από τον/την %s.\n" # #, fuzzy #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Αναφέρατε σφάλματα στο <%s>.\n" # #, fuzzy #~ msgid "Report %s bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Αναφέρατε σφάλματα στο <%s>.\n" # #, fuzzy #~ msgid "%s subprocess" #~ msgstr "%s: μη έγκυρη μορφή" # #, fuzzy #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "%s: μη έγκυρη μορφή" # #, fuzzy #~ msgid "unknown stream" #~ msgstr "Άγνωστο σφάλμα συστήματος" # #, fuzzy #~ msgid "string comparison failed" #~ msgstr "αποτυχία εγγραφής" # #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Θέστε LC_ALL='C' για να παρακάμψετε το πρόβλημα." #, fuzzy #~ msgid "The strings compared were %s and %s." #~ msgstr "δεν είναι δυνατό να δημιουργηθεί το %s `%s' στο `%s'" # #, fuzzy #~ msgid "invalid %s%s argument `%s'" #~ msgstr "μη έγκυρο όρισμα %s για %s" # #, fuzzy #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "μη έγκυρο όρισμα %s για %s" # #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: μη αναγνωρίσιμη επιλογή -- %c\n" # #~ msgid "block size" #~ msgstr "μέγεθος μπλοκ" # #, fuzzy #~ msgid "%s exists but is not a directory" #~ msgstr "το `%s' υπάρχει ήδη άλλα δεν είναι κατάλογος" # #, fuzzy #~ msgid "cannot change owner and/or group of %s" #~ msgstr "δεν είναι δυνατό να παραληφθεί χρήστης και ομάδα" # #, fuzzy #~ msgid "cannot chdir to directory %s" #~ msgstr "αδύνατη η αλλαγή στο κατάλογο %s" # #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "" #~ "αδύνατη η λήψη της ομάδας εισαγωγής στο σύστημα ενός αριθμητικού UID" freedink-108.4+dfsg/gnulib/po/zh_CN.gmo0000644000175000017500000000274112421730234015425 0ustar meme 01,M,z- (?_-t*! 8 Yz! !  %s: invalid option -- '%c' %s: option '%c%s' doesn't allow an argument %s: option '--%s' doesn't allow an argument %s: option '-W %s' doesn't allow an argument %s: option '-W %s' is ambiguous %s: option requires an argument -- '%c' %s: unrecognized option '%c%s' %s: unrecognized option '--%s' Unknown system errorfailed to return to initial working directorymemory exhaustedunable to record current working directoryProject-Id-Version: gnulib 2.0.0.3462.e9796 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2010-02-26 09:54+0800 Last-Translator: Ji ZhengYu Language-Team: Chinese (simplified) Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; %s: 无效选项 -- "%c" %s: 选项"%c%s"不要参数 %s: 选项"--%s"不要参数 %s: 选项"-W %s"不要带参数 %s: 选项"-W %s"有歧义 %s: 选项需要参数 -- "%c" %s: 无法识别的选项"%c%s" %s: 无法识别的选项"--%s" 未知的系统错误返回到初始工作目录失败内存用尽无法记录当前工作的目录freedink-108.4+dfsg/gnulib/po/ca.gmo0000644000175000017500000000130512421730234015002 0ustar meme<\pq--H4vUnknown system errorfailed to return to initial working directorymemory exhaustedProject-Id-Version: mailutils 0.6.90 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2005-05-21 04:10+0200 Last-Translator: Jordi Mallach Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n!=1; S'ha produït un error desconegut del sistemano s'ha pogut tornar al directori inicial de treballla memòria s'ha exhauritfreedink-108.4+dfsg/gnulib/po/pl.po0000644000175000017500000004767512421730234014712 0ustar meme# Polish messages for gnulib # Copyright (C) 2005, 2007, 2009, 2010, 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnulib package. # # Jakub Bogusz , 2007-2014. # based on translation for GNU Mailutils by: # Sergey Poznyakoff , 2003,2004,2005. # corrections: Wojciech Polak , 2003 # msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2014-07-17 18:00+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Nieznany błąd systemowy" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: opcja '%s' jest niejednoznaczna; możliwości:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opcja '--%s' nie może mieć argumentów\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opcja '%c%s' nie może mieć argumentów\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: opcja '--%s' musi mieć argument\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: nieznana opcja '--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: nieznana opcja '%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: błędna opcja -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: opcja musi mieć argument -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opcja '-W %s' jest niejednoznaczna\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: opcja '-W %s' musi mieć argument\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "nie udało się zapisać bieżącego katalogu roboczego" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "nie udało się wrócić do początkowego katalogu roboczego" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "pamięć wyczerpana" #~ msgid "invalid argument %s for %s" #~ msgstr "błędny argument %s opcji %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "niejednoznaczny argument %s opcji %s" #~ msgid "Valid arguments are:" #~ msgstr "Prawidłowe argumenty to:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: wartość %s jest mniejsza lub równa %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: Parametr ARGP_HELP_FMT wymaga podania wartości" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: Parametr ARGP_HELP_FMT musi być dodatni" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Nieznany parametr ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Błędne dane w ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Argumenty obowiązkowe lub opcjonalne dla długich opcji są również " #~ "obowiązkowe lub opcjonalne dla odpowiednich krótkich opcji." #~ msgid "Usage:" #~ msgstr "Składnia:" #~ msgid " or: " #~ msgstr " lub: " #~ msgid " [OPTION...]" #~ msgstr " [OPCJA...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "Polecenie `%s --help' lub `%s --usage' pozwoli uzyskać więcej " #~ "informacji.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Prosimy zgłaszać błędy na adres %s.\n" #~ msgid "give this help list" #~ msgstr "wyświetlenie tego tekstu pomocy" #~ msgid "give a short usage message" #~ msgstr "wyświetlenie krótkiej informacji o składni polecenia" #~ msgid "NAME" #~ msgstr "NAZWA" #~ msgid "set the program name" #~ msgstr "określenie nazwy programu" #~ msgid "SECS" #~ msgstr "SEK" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "zatrzymanie na SEK sekund (domyślnie 3600)" #~ msgid "print program version" #~ msgstr "wyświetlenie wersji programu" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(BŁĄD PROGRAMU) Nieznana wersja!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: Za dużo argumentów\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(BŁĄD PROGRAMU) Opcja powinna zostać rozpoznana!?" #~ msgid "program error" #~ msgstr "błąd programu" #~ msgid "stack overflow" #~ msgstr "przepełnienie stosu" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "" #~ "nie można odnaleźć katalogu tymczasowego, można spróbować ustawić $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "nie można utworzyć katalogu typczasowego z użyciem szablonu \"%s\"" #~ msgid "cannot remove temporary file %s" #~ msgstr "nie można usunąć pliku tymczasowego %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "nie można usunąć katalogu tymczasowego %s" #~ msgid "error closing file" #~ msgstr "błąd podczas zamykania pliku" #~ msgid "write error" #~ msgstr "błąd zapisu" #~ msgid "preserving permissions for %s" #~ msgstr "zachowywanie uprawnień do %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "błąd podczas otwierania \"%s\" do odczytu" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "nie można otworzyć pliku zapasowego \"%s\" do zapisu" #~ msgid "error reading \"%s\"" #~ msgstr "błąd odczytu \"%s\"" #~ msgid "error writing \"%s\"" #~ msgstr "błąd zapisu \"%s\"" #~ msgid "error after reading \"%s\"" #~ msgstr "błąd po odczycie \"%s\"" #~ msgid "fdopen() failed" #~ msgstr "fdopen() nie powiodło się" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "Nie znaleziono kompilatora C#, proszę spróbować zainstalować pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "" #~ "Nie znaleziono maszyny wirtualnej C#, proszę spróbować zainstalować pnet" #~ msgid "%s subprocess failed" #~ msgstr "podproces %s zawiódł" #~ msgid "regular empty file" #~ msgstr "pusty zwykły plik" #~ msgid "regular file" #~ msgstr "zwykły plik" #~ msgid "directory" #~ msgstr "katalog" #~ msgid "block special file" #~ msgstr "blokowy plik specjalny" #~ msgid "character special file" #~ msgstr "znakowy plik specjalny" #~ msgid "fifo" #~ msgstr "potok" #~ msgid "symbolic link" #~ msgstr "dowiązanie symboliczne" #~ msgid "socket" #~ msgstr "gniazdo" #~ msgid "message queue" #~ msgstr "kolejka komunikatów" #~ msgid "semaphore" #~ msgstr "semafor" #~ msgid "shared memory object" #~ msgstr "obiekt w pamięci współdzielonej" #~ msgid "typed memory object" #~ msgstr "obiekt z typem w pamięci" #~ msgid "weird file" #~ msgstr "dziwny plik" #~ msgid "Address family for hostname not supported" #~ msgstr "Rodzina adresów dla podanej nazwy hosta nie jest obsługiwana" #~ msgid "Temporary failure in name resolution" #~ msgstr "Tymczasowy błąd rozwiązywania nazw" #~ msgid "Bad value for ai_flags" #~ msgstr "Błędna wartość ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Nienaprawialny błąd w rozwiązywaniu nazw" #~ msgid "ai_family not supported" #~ msgstr "ai_family zawiera nie obsługiwaną rodzinę protokołów" #~ msgid "Memory allocation failure" #~ msgstr "Błąd przydzielania pamięci" #~ msgid "No address associated with hostname" #~ msgstr "Brak adresu związanego z nazwą hosta" #~ msgid "Name or service not known" #~ msgstr "Nieznana nazwa lub usługa" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Usługa nie obsługiwana dla danego ai_socktype" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype zawiera nie obsługiwany typ gniazda" #~ msgid "System error" #~ msgstr "Błąd systemowy" #~ msgid "Argument buffer too small" #~ msgstr "Bufor argumentu zbyt mały" #~ msgid "Processing request in progress" #~ msgstr "Przetwarzanie żądania jest w toku" #~ msgid "Request canceled" #~ msgstr "Żądanie anulowane" #~ msgid "Request not canceled" #~ msgstr "Żądanie nie anulowane" #~ msgid "All requests done" #~ msgstr "Wszystkie żądania wykonane" #~ msgid "Interrupted by a signal" #~ msgstr "Przerwane przez sygnał" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Łańcuch parametru niepoprawnie zakodowany" #~ msgid "Unknown error" #~ msgstr "Nieznany błąd" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "błędny argument source_version dla compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "błędny argument target_version dla compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "nie udało się utworzyć \"%s\"" #~ msgid "error while writing \"%s\" file" #~ msgstr "błąd podczas zapisu pliku \"%s\"" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Nie znaleziono kompilatora Javy, proszę spróbować zainstalować gcj lub " #~ "ustawić $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Nie znaleziono maszyny wirtualnej Javy, proszę spróbować zainstalować gij " #~ "lub ustawić $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "błąd we/wy podprocesu %s" #~ msgid "cannot change permissions of %s" #~ msgstr "nie można zmienić uprawnień do %s" #~ msgid "cannot create directory %s" #~ msgstr "nie można utworzyć katalogu %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Nie udało się otworzyć /dev/zero do odczytu" #~ msgid "creation of reading thread failed" #~ msgstr "tworzenie wątku czytającego nie powiodło sie" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "nie można ustawić nieblokującego we/wy dla podprocesu %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "komunikacja z podprocesem %s nie powiodła się" #~ msgid "write to %s subprocess failed" #~ msgstr "zapis do podprocesu %s nie powiódł się" #~ msgid "read from %s subprocess failed" #~ msgstr "odczyt z podprocesu %s nie powiódł się" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "podproces %s zakończył się z kodem wyjścia %d" #~ msgid "creation of threads failed" #~ msgstr "tworzenie wątków nie powiodło się" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "podproces %s zakończył się kodem wyjścia %d" #~ msgid "Franc,ois Pinard" #~ msgstr "François Pinard" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #~ msgid "Success" #~ msgstr "Sukces" #~ msgid "No match" #~ msgstr "Nic nie pasuje" #~ msgid "Invalid regular expression" #~ msgstr "Błędne wyrażenie regularne" #~ msgid "Invalid collation character" #~ msgstr "Błędny znak sortowany" #~ msgid "Invalid character class name" #~ msgstr "Błędna nazwa klasy znaków" #~ msgid "Trailing backslash" #~ msgstr "Kończący znak `\\'" #~ msgid "Invalid back reference" #~ msgstr "Błędne odniesienie wstecz" #~ msgid "Unmatched [ or [^" #~ msgstr "Niesparowane [ lub [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Niesparowane ( lub \\(" #~ msgid "Unmatched \\{" #~ msgstr "Niesparowane \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Błędna zawartość \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Błędny koniec zakresu" #~ msgid "Memory exhausted" #~ msgstr "Pamięć wyczerpana" #~ msgid "Invalid preceding regular expression" #~ msgstr "Błędne poprzedzające wyrażenie regularne" #~ msgid "Premature end of regular expression" #~ msgstr "Przedwczesny koniec wyrażenia regularnego" #~ msgid "Regular expression too big" #~ msgstr "Wyrażenie regularne zbyt duże" #~ msgid "Unmatched ) or \\)" #~ msgstr "Niesparowane ) lub \\)" #~ msgid "No previous regular expression" #~ msgstr "Brak poprzedniego wyrażenia regularnego" #~ msgid "^[yY]" #~ msgstr "^[yYtT]" #~ msgid "^[nN]" #~ msgstr "^[nN]" #~ msgid "setting permissions for %s" #~ msgstr "ustawianie uprawnień %s" #~ msgid "Hangup" #~ msgstr "Rozłączenie" #~ msgid "Interrupt" #~ msgstr "Przerwanie" #~ msgid "Quit" #~ msgstr "Wyjście" #~ msgid "Illegal instruction" #~ msgstr "Niedozwolona instrukcja" #~ msgid "Trace/breakpoint trap" #~ msgstr "Pułapka debuggera/breakpoint" #~ msgid "Aborted" #~ msgstr "Przerwano" #~ msgid "Floating point exception" #~ msgstr "Błąd w obliczeniach zmiennoprzecinkowych" #~ msgid "Killed" #~ msgstr "Unicestwiono" #~ msgid "Bus error" #~ msgstr "Błąd szyny" #~ msgid "Segmentation fault" #~ msgstr "Naruszenie ochrony pamięci" #~ msgid "Broken pipe" #~ msgstr "Przerwany potok" #~ msgid "Alarm clock" #~ msgstr "Budzik" #~ msgid "Terminated" #~ msgstr "Zakończono" #~ msgid "Urgent I/O condition" #~ msgstr "Nagły stan we/wy" #~ msgid "Stopped (signal)" #~ msgstr "Zatrzymano (sygnał)" #~ msgid "Stopped" #~ msgstr "Zatrzymano" #~ msgid "Continued" #~ msgstr "Kontynuacja" #~ msgid "Child exited" #~ msgstr "Zakończenie procesu potomnego" #~ msgid "Stopped (tty input)" #~ msgstr "Zatrzymano (wejście z tty)" #~ msgid "Stopped (tty output)" #~ msgstr "Zatrzymano (wyjście na tty)" #~ msgid "I/O possible" #~ msgstr "Możliwa operacja we/wy" #~ msgid "CPU time limit exceeded" #~ msgstr "Przekroczony limit czasu procesora" #~ msgid "File size limit exceeded" #~ msgstr "Przekroczony limit rozmiaru pliku" #~ msgid "Virtual timer expired" #~ msgstr "Upłynął czas stopera wirtualnego" #~ msgid "Profiling timer expired" #~ msgstr "Upłynął czas stopera profilującego" #~ msgid "Window changed" #~ msgstr "Okno zmienione" #~ msgid "User defined signal 1" #~ msgstr "Sygnał użytkownika 1" #~ msgid "User defined signal 2" #~ msgstr "Sygnał użytkownika 2" #~ msgid "EMT trap" #~ msgstr "Pułapka EMT" #~ msgid "Bad system call" #~ msgstr "Błędne wywołanie systemowe" #~ msgid "Stack fault" #~ msgstr "Błąd stosu" #~ msgid "Information request" #~ msgstr "Żądanie informacji" #~ msgid "Power failure" #~ msgstr "Awaria zasilania" #~ msgid "Resource lost" #~ msgstr "Utrata zasobów" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "błąd zapisu do zamkniętego potoku lub gniazda" #~ msgid "cannot create pipe" #~ msgstr "nie można utworzyć potoku" #~ msgid "Real-time signal %d" #~ msgstr "Sygnał czasu rzeczywistego %d" #~ msgid "Unknown signal %d" #~ msgstr "Nieznany sygnał %d" #~ msgid "iconv function not usable" #~ msgstr "nie można użyć funkcji iconv" #~ msgid "iconv function not available" #~ msgstr "funkcja iconv nie jest dostępna" #~ msgid "character out of range" #~ msgstr "znak spoza zakresu" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "nie można przekształcić U+%04X do lokalnego zestawu znaków" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "nie można przekształcić U+%04X do lokalnego zestawu znaków: %s" #~ msgid "invalid user" #~ msgstr "błędny użytkownik" #~ msgid "invalid group" #~ msgstr "błędna grupa" #~ msgid "invalid spec" #~ msgstr "błędna specyfikacja" #~ msgid "unable to display error message" #~ msgstr "nie można wyświetlić komunikatu błędu" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Pakietujący: %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Pakietujący: %s\n" #~ msgid "(C)" #~ msgstr "(C)" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Licencja GPLv3+: GNU GPL wersja 3 lub późniejsza:\n" #~ "\n" #~ "To jest oprogramowanie wolnodostępne: można je modyfikować i " #~ "rozpowszechniać.\n" #~ "Nie ma ŻADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n" #~ msgid "Written by %s.\n" #~ msgstr "Autor: %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Autorzy: %s i %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Autorzy: %s, %s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Autorzy: %s, %s, %s\n" #~ "i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Autorzy: %s, %s, %s,\n" #~ "%s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Autorzy: %s, %s, %s,\n" #~ "%s, %s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Autorzy: %s, %s, %s,\n" #~ "%s, %s, %s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Autorzy: %s, %s, %s,\n" #~ "%s, %s, %s, %s\n" #~ "i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Autorzy: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s i %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Autorzy: %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s i inni.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Prosimy zgłaszać błędy na adres <%s>.\n" #~ "Błędy w tłumaczeniu prosimy zgłaszać na adres .\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Błędy pakietującego (%s) prosimy zgłaszać na adres <%s>.\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "Strona domowa pakietu %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "Strona domowa pakietu %s: .\n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Ogólna pomoc przy używaniu oprogramowania GNU: .\n" #~ msgid "_open_osfhandle failed" #~ msgstr "_open_osfhandle nie powiodło się" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "nie można odtworzyć fd %d: dup2 nie powiodło się" #~ msgid "%s subprocess" #~ msgstr "podproces %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "podproces %s dostał krytyczny sygnał %d" #~ msgid "stdin" #~ msgstr "standardowego wejścia" #~ msgid "stdout" #~ msgstr "standardowego wyjścia" #~ msgid "stderr" #~ msgstr "standardowego wyjścia diagnostycznego" #~ msgid "unknown stream" #~ msgstr "nieznanego strumienia" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "nie udało się ponownie otworzyć %s w trybie %s" #~ msgid "string comparison failed" #~ msgstr "nie udało się porównanie łańcuchów znaków" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Ustaw LC_ALL='C' żeby obejść problem" #~ msgid "The strings compared were %s and %s." #~ msgstr "Porównywane łańcuchy znaków do %s i %s." #~ msgid "cannot perform formatted output" #~ msgstr "nie można sformatować wyjścia" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "błędny argument opcji %s%s `%s'" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "błędny przyrostek argumentu opcji %s%s `%s'" #~ msgid "%s%s argument `%s' too large" #~ msgstr "argument opcji %s%s `%s' zbyt duży" freedink-108.4+dfsg/gnulib/po/uk.po0000644000175000017500000005745012421730234014706 0ustar meme# Ukrainian messages for gnulib # This file is distributed under the same license as the gnulib package. # Copyright (C) 2010 Free Software Foundation, Inc. # # Sergey Poznyakoff , 2010. # Yuri Chornoivan , 2011. msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2011-08-22 09:50+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.1\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Невідома системна помилка" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: параметр «%s» є неоднозначним, можливі варіанти:" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: параметр '--%s' не може мати аргументу\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: параметр '%c%s' не може мати аргументу\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: для використання параметра «--%s» слід вказати аргумент\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: невідомий параметр '--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: невідомий параметр '%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: Некоректний параметр -- '%c'\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: параметр вимагає аргументу -- '%c'\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: параметр '-W %s' неоднозначний\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: параметр '-W %s' не може мати аргументу\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: для використання параметра «-W %s» слід вказати аргумент\n" #: gnulib/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" msgstr "не вдається змінити поточний каталог" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "не вдається зберегти поточний каталог" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "пам'ять вичерпано" #~ msgid "invalid argument %s for %s" #~ msgstr "некоректний аргумент %s для %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "неоднозначний аргумент %s для %s" #~ msgid "Valid arguments are:" #~ msgstr "Дозволені аргументи такі:" #~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" #~ msgstr "ARGP_HELP_FMT: значення %s є менше ніж або дорівнює %s" #~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value" #~ msgstr "%.*s: параметр ARGP_HELP_FMT вимагає значення" #~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive" #~ msgstr "%.*s: параметр ARGP_HELP_FMT має бути додатнім" #~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter" #~ msgstr "%.*s: Невідомий параметр ARGP_HELP_FMT" #~ msgid "Garbage in ARGP_HELP_FMT: %s" #~ msgstr "Хибні дані в ARGP_HELP_FMT: %s" #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Аргументи, обов'язкові для довгих ключів, є обов'язковими й для коротких." #~ msgid "Usage:" #~ msgstr "Використання:" #~ msgid " or: " #~ msgstr " чи: " #~ msgid " [OPTION...]" #~ msgstr " [ПАРАМЕТР...]" #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "" #~ "Спробуйте `%s --help' або `%s --usage' для отримання докладнішого опису.\n" #~ msgid "Report bugs to %s.\n" #~ msgstr "Про помилки звітуйте на <%s>.\n" #~ msgid "give this help list" #~ msgstr "вивести цю довідку" #~ msgid "give a short usage message" #~ msgstr "вивести коротке повідомлення про використання" #~ msgid "NAME" #~ msgstr "НАЗВА" #~ msgid "set the program name" #~ msgstr "встановити назву програми" #~ msgid "SECS" #~ msgstr "СЕКУНДИ" #~ msgid "hang for SECS seconds (default 3600)" #~ msgstr "зачекати вказану кількість секунд (типово 3600)" #~ msgid "print program version" #~ msgstr "вивести версію програми" #~ msgid "(PROGRAM ERROR) No version known!?" #~ msgstr "(ПОМИЛКА ПРОГРАМУВАННЯ) Невідома версія!?" #~ msgid "%s: Too many arguments\n" #~ msgstr "%s: забагато аргументів\n" #~ msgid "(PROGRAM ERROR) Option should have been recognized!?" #~ msgstr "(ПОМИЛКА ПРОГРАМУВАННЯ) Параметр мала бути розпізнана!?" #~ msgid "program error" #~ msgstr "помилка програми" #~ msgid "stack overflow" #~ msgstr "переповнення стосу" #~ msgid "cannot find a temporary directory, try setting $TMPDIR" #~ msgstr "не вдається знайти тимчасовий каталог, спробуйте встановити $TMPDIR" #~ msgid "cannot create a temporary directory using template \"%s\"" #~ msgstr "" #~ "не вдається створити тимчасовий каталог використовуючи шаблон \"%s\"" #~ msgid "cannot remove temporary file %s" #~ msgstr "не вдається усунути тимчасовий файл %s" #~ msgid "cannot remove temporary directory %s" #~ msgstr "не вдається усунути тимчасовий каталог %s" #~ msgid "error closing file" #~ msgstr "помилка закриття файлу" #~ msgid "write error" #~ msgstr "помилка запису" #~ msgid "preserving permissions for %s" #~ msgstr "збереження прав доступу до %s" #~ msgid "error while opening \"%s\" for reading" #~ msgstr "помилка під час відкриття \"%s\" для читання" #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "неможливо відкрити резервний файл \"%s\" для запису" #~ msgid "error reading \"%s\"" #~ msgstr "помилка читання \"%s\"" #~ msgid "error writing \"%s\"" #~ msgstr "помилка запису \"%s\"" #~ msgid "error after reading \"%s\"" #~ msgstr "помилка після читання \"%s\"" #~ msgid "fdopen() failed" #~ msgstr "помилка fdopen()" #~ msgid "C# compiler not found, try installing pnet" #~ msgstr "не знайдено компілятора C#, спробуйте встановити pnet" #~ msgid "C# virtual machine not found, try installing pnet" #~ msgstr "не знайдено віртуальної машини C#, спробуйте встановити pnet" #~ msgid "%s subprocess failed" #~ msgstr "нащадок %s зазнав невдачі" #~ msgid "regular empty file" #~ msgstr "звичайний порожній файл" #~ msgid "regular file" #~ msgstr "звичайний файл" #~ msgid "directory" #~ msgstr "каталог" #~ msgid "block special file" #~ msgstr "спеціальний блоковий файл" #~ msgid "character special file" #~ msgstr "спеціальний символьний файл" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "символьне посилання" #~ msgid "socket" #~ msgstr "гніздо" #~ msgid "message queue" #~ msgstr "черга повідомлень" #~ msgid "semaphore" #~ msgstr "семафор" #~ msgid "shared memory object" #~ msgstr "спільний об'єкт пам'яті" #~ msgid "typed memory object" #~ msgstr "типізований об'єкт пам'яті" #~ msgid "weird file" #~ msgstr "дивний файл" #~ msgid "Address family for hostname not supported" #~ msgstr "Родина адрес для назви вузла не підтримується" #~ msgid "Temporary failure in name resolution" #~ msgstr "Тимчасова помилка розв'язування назви вузла" #~ msgid "Bad value for ai_flags" #~ msgstr "Недійсне значення ai_flags" #~ msgid "Non-recoverable failure in name resolution" #~ msgstr "Невиправна помилка розв'язування назви вузла" #~ msgid "ai_family not supported" #~ msgstr "ai_family не підтримується" #~ msgid "Memory allocation failure" #~ msgstr "Помилка розподілу пам'яті" #~ msgid "No address associated with hostname" #~ msgstr "З цією назвою вузла не пов’язано жодної адреси" #~ msgid "Name or service not known" #~ msgstr "Невідоме ім'я або служба" #~ msgid "Servname not supported for ai_socktype" #~ msgstr "Підтримки назв служб у ai_socktype не передбачено" #~ msgid "ai_socktype not supported" #~ msgstr "ai_socktype не підтримується" #~ msgid "System error" #~ msgstr "Системна помилка" #~ msgid "Argument buffer too small" #~ msgstr "Замалий буфер для аргументів" #~ msgid "Processing request in progress" #~ msgstr "Виконується обробка запиту" #~ msgid "Request canceled" #~ msgstr "Запит скасовано" #~ msgid "Request not canceled" #~ msgstr "Запит не скасовано" #~ msgid "All requests done" #~ msgstr "Всі запити оброблено" #~ msgid "Interrupted by a signal" #~ msgstr "Переривання сигналом" #~ msgid "Parameter string not correctly encoded" #~ msgstr "Неправильно закодований рядок параметра" #~ msgid "Unknown error" #~ msgstr "Невідома помилка" #~ msgid "invalid source_version argument to compile_java_class" #~ msgstr "недійсне значення аргументу source_version для compile_java_class" #~ msgid "invalid target_version argument to compile_java_class" #~ msgstr "недійсне значення аргументу target_version для compile_java_class" #~ msgid "failed to create \"%s\"" #~ msgstr "не вдалося створити \"%s\"" #~ msgid "error while writing \"%s\" file" #~ msgstr "помилка запису у файл \"%s\"" #~ msgid "Java compiler not found, try installing gcj or set $JAVAC" #~ msgstr "" #~ "Не знайдено компілятора java, спробуйте встановити gcj або задати " #~ "значення $JAVAC" #~ msgid "Java virtual machine not found, try installing gij or set $JAVA" #~ msgstr "" #~ "Не знайдено віртуальної машини java, спробуйте встановити gij або задати " #~ "значення $JAVA" #~ msgid "%s subprocess I/O error" #~ msgstr "помилка вводу-виводу нащадка %s" #~ msgid "cannot change permissions of %s" #~ msgstr "не вдається змінити права доступу до %s" #~ msgid "cannot create directory %s" #~ msgstr "не вдається створити каталог %s" #~ msgid "Failed to open /dev/zero for read" #~ msgstr "Не вдалося відкрити /dev/zero для читання" #~ msgid "creation of reading thread failed" #~ msgstr "не вдалося створити потік читання" #~ msgid "cannot set up nonblocking I/O to %s subprocess" #~ msgstr "не вдається встановити неблокуючий ввід-вивід з підпроцесом %s" #~ msgid "communication with %s subprocess failed" #~ msgstr "помилка зв'язку з підпроцесом %s" #~ msgid "write to %s subprocess failed" #~ msgstr "помилка запису у підпроцес %s" #~ msgid "read from %s subprocess failed" #~ msgstr "помилка читання з підпроцесу %s" #~ msgid "subprocess %s terminated with exit code %d" #~ msgstr "підпроцес %s закінчився кодом %d" #~ msgid "creation of threads failed" #~ msgstr "помилка створення потоків" #~ msgid "%s subprocess terminated with exit code %d" #~ msgstr "підпроцес %s закінчився кодом %d" #~ msgid "Franc,ois Pinard" #~ msgstr "Franc,ois Pinard" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "'" #~ msgid "Success" #~ msgstr "Успіх" #~ msgid "No match" #~ msgstr "Брак збігів" #~ msgid "Invalid regular expression" #~ msgstr "Некоректний формальний вираз" #~ msgid "Invalid collation character" #~ msgstr "Некоректний об'єднувальний символ" #~ msgid "Invalid character class name" #~ msgstr "Некоректна назва класу символів" #~ msgid "Trailing backslash" #~ msgstr "Зворотна похила риска наприкінці виразу" #~ msgid "Invalid back reference" #~ msgstr "Недійсне зворотнє посилання" #~ msgid "Unmatched [ or [^" #~ msgstr "Незакрита [ або [^" #~ msgid "Unmatched ( or \\(" #~ msgstr "Незакрита ( або \\(" #~ msgid "Unmatched \\{" #~ msgstr "Незакрита \\{" #~ msgid "Invalid content of \\{\\}" #~ msgstr "Некоректний вміст \\{\\}" #~ msgid "Invalid range end" #~ msgstr "Некоректний кінець діапазону" #~ msgid "Memory exhausted" #~ msgstr "Пам'ять вичерпана" #~ msgid "Invalid preceding regular expression" #~ msgstr "Некоректний попередній формальний вираз" #~ msgid "Premature end of regular expression" #~ msgstr "Передчасне закінчення формального виразу" #~ msgid "Regular expression too big" #~ msgstr "Завеликий формальний вираз" #~ msgid "Unmatched ) or \\)" #~ msgstr "Неузгоджена ) або \\)" #~ msgid "No previous regular expression" #~ msgstr "Не вказано попереднього формального виразу" #~ msgid "^[yY]" #~ msgstr "^[yYтТ]" #~ msgid "^[nN]" #~ msgstr "^[nNнН]" #~ msgid "setting permissions for %s" #~ msgstr "встановлення прав доступу до %s" #~ msgid "Hangup" #~ msgstr "Відбій" #~ msgid "Interrupt" #~ msgstr "Переривання" #~ msgid "Quit" #~ msgstr "Закінчення" #~ msgid "Illegal instruction" #~ msgstr "Недійсна інструкція" #~ msgid "Trace/breakpoint trap" #~ msgstr "Перехоплення трасування/контрольної точки" #~ msgid "Aborted" #~ msgstr "Аварійне завершення" #~ msgid "Floating point exception" #~ msgstr "Виняток операції з рухомою крапкою" #~ msgid "Killed" #~ msgstr "Знищено" #~ msgid "Bus error" #~ msgstr "Помилка шини" #~ msgid "Segmentation fault" #~ msgstr "Помилка сегментації" #~ msgid "Broken pipe" #~ msgstr "Розімкнений конвеєр" #~ msgid "Alarm clock" #~ msgstr "Таймер" #~ msgid "Terminated" #~ msgstr "Закінчено" #~ msgid "Urgent I/O condition" #~ msgstr "Екстрена ситуація вводу-виводу" #~ msgid "Stopped (signal)" #~ msgstr "Припинення (сигнал)" #~ msgid "Stopped" #~ msgstr "Припинення" #~ msgid "Continued" #~ msgstr "Продовження" #~ msgid "Child exited" #~ msgstr "Нащадок завершився" #~ msgid "Stopped (tty input)" #~ msgstr "Припинення (ввід з консолі)" #~ msgid "Stopped (tty output)" #~ msgstr "Припинення (вивід на консоль)" #~ msgid "I/O possible" #~ msgstr "Можливий ввід-вивід" #~ msgid "CPU time limit exceeded" #~ msgstr "Перевищення ліміту часу ЦП" #~ msgid "File size limit exceeded" #~ msgstr "Перевищення ліміту розміру файлів" #~ msgid "Virtual timer expired" #~ msgstr "Відлік віртуального таймера завершено" #~ msgid "Profiling timer expired" #~ msgstr "Відлік таймера профілювання завершено" #~ msgid "Window changed" #~ msgstr "Вікно змінилося" #~ msgid "User defined signal 1" #~ msgstr "Визначений користувачем сигнал 1" #~ msgid "User defined signal 2" #~ msgstr "Визначений користувачем сигнал 2" #~ msgid "EMT trap" #~ msgstr "Пастка EMT" #~ msgid "Bad system call" #~ msgstr "Некоректний системний виклик" #~ msgid "Stack fault" #~ msgstr "Збій стосу" #~ msgid "Information request" #~ msgstr "Запит інформації" #~ msgid "Power failure" #~ msgstr "Аварія живлення" #~ msgid "Resource lost" #~ msgstr "Втрата засобу" #~ msgid "error writing to a closed pipe or socket" #~ msgstr "помилка запису у закритий конвеєр або гніздо" #~ msgid "cannot create pipe" #~ msgstr "не вдається створити конвеєр" #~ msgid "Real-time signal %d" #~ msgstr "Сигнал реального часу %d" #~ msgid "Unknown signal %d" #~ msgstr "Невідомий сигнал %d" #~ msgid "iconv function not usable" #~ msgstr "функція iconv непридатна до вжитку" #~ msgid "iconv function not available" #~ msgstr "функція iconv недоступна" #~ msgid "character out of range" #~ msgstr "символ поза діапазоном" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "не вдається передати U+%04X у локальному зборі знаків" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "не вдається передати U+%04X у локальному зборі знаків: %s" #~ msgid "invalid user" #~ msgstr "Некоректний користувач" #~ msgid "invalid group" #~ msgstr "недійсна група" #~ msgid "invalid spec" #~ msgstr "недійсна специфікація" #~ msgid "unable to display error message" #~ msgstr "не вдається вивести повідомлення про помилку" #~ msgid "Packaged by %s (%s)\n" #~ msgstr "Пакет створив %s (%s)\n" #~ msgid "Packaged by %s\n" #~ msgstr "Пакет створив %s\n" #~ msgid "(C)" #~ msgstr "©" #~ msgid "" #~ "\n" #~ "License GPLv3+: GNU GPL version 3 or later .\n" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Ліцензія GPLv3+: GNU GPL версії 3 або пізнішої \n" #~ "Це вільне програмне забезпечення: ви можете змінювати та розповсюджувати " #~ "його.\n" #~ "Не надається ЖОДНИХ ГАРАНТІЙ в межах дозволених законодавством.\n" #~ "\n" #~ msgid "Written by %s.\n" #~ msgstr "Автор: %s.\n" #~ msgid "Written by %s and %s.\n" #~ msgstr "Автори: %s та %s.\n" #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Автори: %s, %s та %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Автори: %s, %s, %s\n" #~ "та %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Автори: %s, %s, %s\n" #~ "%s, та %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, and %s.\n" #~ msgstr "" #~ "Автори: %s, %s, %s\n" #~ "%s, %s та %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, and %s.\n" #~ msgstr "" #~ "Автори: %s, %s, %s\n" #~ "%s, %s, %s та %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "" #~ "Автори: %s, %s, %s\n" #~ "%s, %s, %s, %s та %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "" #~ "Автори: %s, %s, %s\n" #~ "%s, %s, %s, %s,\n" #~ "%s та %s.\n" #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s, and others.\n" #~ msgstr "" #~ "Автори: %s, %s, %s\n" #~ "%s, %s, %s, %s,\n" #~ "%s, %s та інші.\n" #~ msgid "" #~ "\n" #~ "Report bugs to: %s\n" #~ msgstr "" #~ "\n" #~ "Про помилки звітуйте на %s\n" #~ msgid "Report %s bugs to: %s\n" #~ msgstr "Про помилки у програмі %s звітуйте на %s\n" #~ msgid "%s home page: <%s>\n" #~ msgstr "домашня сторінка %s: <%s>\n" #~ msgid "%s home page: \n" #~ msgstr "домашня сторінка %s: \n" #~ msgid "General help using GNU software: \n" #~ msgstr "" #~ "Загальна допомога щодо використання ПО GNU: \n" #~ msgid "_open_osfhandle failed" #~ msgstr "помилка _open_osfhandle" #~ msgid "cannot restore fd %d: dup2 failed" #~ msgstr "не вдається відновити дескриптор %d: помилка dup2" #~ msgid "%s subprocess" #~ msgstr "нащадок процесу %s" #~ msgid "%s subprocess got fatal signal %d" #~ msgstr "підпроцес %s отримав фатальний сигнал %d" #~ msgid "stdin" #~ msgstr "stdin" #~ msgid "stdout" #~ msgstr "stdout" #~ msgid "stderr" #~ msgstr "stderr" #~ msgid "unknown stream" #~ msgstr "невідомий потік" #~ msgid "failed to reopen %s with mode %s" #~ msgstr "не вдалося відкрити %s у режимі %s" #~ msgid "string comparison failed" #~ msgstr "невдале порівняння рядків" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Встановити LC_ALL='C', щоб уникнути цієї помилки." #~ msgid "The strings compared were %s and %s." #~ msgstr "Порівнювалися рядки: \"%s\" та \"%s\"." #~ msgid "cannot perform formatted output" #~ msgstr "неможливо здійснити форматований вивід" #~ msgid "invalid %s%s argument `%s'" #~ msgstr "некоректний аргумент для %s%s: `%s'" #~ msgid "invalid suffix in %s%s argument `%s'" #~ msgstr "некоректний суфікс в аргументі для %s%s: `%s'" #~ msgid "%s%s argument `%s' too large" #~ msgstr "завеликий аргумент для %s%s: `%s'" freedink-108.4+dfsg/gnulib/po/Makevars0000644000175000017500000000572012420231033015404 0ustar meme## DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Usually the message domain is the same as the package name. # But here it has a '-gnulib' suffix. DOMAIN = freedink-gnulib # These two variables depend on the location of this directory. subdir = gnulib/po top_builddir = ../.. # These options get passed to xgettext. XGETTEXT_OPTIONS = \ --keyword=_ --flag=_:1:pass-c-format \ --keyword=N_ --flag=N_:1:pass-c-format \ --keyword='proper_name:1,"This is a proper name. See the gettext manual, section Names."' \ --keyword='proper_name_utf8:1,"This is a proper name. See the gettext manual, section Names."' \ --flag=error:3:c-format --flag=error_at_line:5:c-format # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. gnulib is copyrighted by the FSF. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = bug-gnulib@gnu.org # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = no freedink-108.4+dfsg/gnulib/po/ms.po0000644000175000017500000002060512421730234014676 0ustar meme# Terjemahan coreutils untuk Bahasa Melayu. # Copyright (C) 2001 Free Software Foundation, Inc. # Hasbullah Bin Pit , 2003. # msgid "" msgstr "" "Project-Id-Version: coreutils 5.0.90\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2003-08-10 16:00+0800\n" "Last-Translator: Hasbullah Bin Pit \n" "Language-Team: Malay \n" "Language: ms\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: gnulib/lib/error.c:188 msgid "Unknown system error" msgstr "Ralat sistem yang tidak diketahui" #: gnulib/lib/getopt.c:547 gnulib/lib/getopt.c:576 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: opsyen `%s' adalah ambiguous\n" #: gnulib/lib/getopt.c:624 gnulib/lib/getopt.c:628 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opsyen `--%s' tidak mengizinkan hujah\n" #: gnulib/lib/getopt.c:637 gnulib/lib/getopt.c:642 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opsyen `%c%s' tidak mengizinkan hujah\n" #: gnulib/lib/getopt.c:685 gnulib/lib/getopt.c:704 #, fuzzy, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: opsyen `%s' memerlukan hujah\n" #: gnulib/lib/getopt.c:742 gnulib/lib/getopt.c:745 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opensyen tidak dikenali `--%s'\n" #: gnulib/lib/getopt.c:753 gnulib/lib/getopt.c:756 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opensyen tidak dikenali `%c%s'\n" #: gnulib/lib/getopt.c:805 gnulib/lib/getopt.c:808 #, fuzzy, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: opsyen tidak sah -- %c\n" #: gnulib/lib/getopt.c:861 gnulib/lib/getopt.c:878 gnulib/lib/getopt.c:1088 #: gnulib/lib/getopt.c:1106 #, fuzzy, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: opsyen memerlukan hujah -- %c\n" #: gnulib/lib/getopt.c:934 gnulib/lib/getopt.c:950 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opsyen `-W %s' adalah ambiguous\n" #: gnulib/lib/getopt.c:974 gnulib/lib/getopt.c:992 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opsyen `-W %s' tidak mengizinkan hujan\n" #: gnulib/lib/getopt.c:1013 gnulib/lib/getopt.c:1031 #, fuzzy, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: opsyen `%s' memerlukan hujah\n" #: gnulib/lib/openat-die.c:38 #, fuzzy, c-format msgid "unable to record current working directory" msgstr "gagal untuk kembali ke direktori kerja pemulaan" #: gnulib/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" msgstr "gagal untuk kembali ke direktori kerja pemulaan" #: gnulib/lib/xalloc-die.c:34 msgid "memory exhausted" msgstr "memori keletihan" #~ msgid "invalid argument %s for %s" #~ msgstr "hujah tidak sah %s bagi %s" #~ msgid "ambiguous argument %s for %s" #~ msgstr "hujah ambiguous %s bagi %s" #~ msgid "Valid arguments are:" #~ msgstr "Hujah sah adalah:" #, fuzzy #~ msgid "" #~ "Mandatory or optional arguments to long options are also mandatory or " #~ "optional for any corresponding short options." #~ msgstr "" #~ "Hujah mandatori kepada opsyen panjang andalah mandatori bagi opsyen " #~ "pendek juga.\n" #, fuzzy #~ msgid " [OPTION...]" #~ msgstr "Pengunaan: %s [OPSYEN]...\n" #, fuzzy #~ msgid "Try `%s --help' or `%s --usage' for more information.\n" #~ msgstr "Cuba `%s --help' untuk maklumat lanjut .\n" #, fuzzy #~ msgid "Report bugs to %s.\n" #~ msgstr "" #~ "\n" #~ "Lapor pepijat ke <%s>.\n" #~ msgid "NAME" #~ msgstr "NAMA" #, fuzzy #~ msgid "%s: Too many arguments\n" #~ msgstr "terlalu banyak hujah" #, fuzzy #~ msgid "program error" #~ msgstr "ralat membaca" #~ msgid "write error" #~ msgstr "ralat menulis" #, fuzzy #~ msgid "error while opening \"%s\" for reading" #~ msgstr "tak dapat buka %s untuk dibaca" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" #~ msgstr "tak dapat buka %s untuk dibaca" #, fuzzy #~ msgid "error reading \"%s\"" #~ msgstr "membaca %s" #, fuzzy #~ msgid "error writing \"%s\"" #~ msgstr "menulis %s" #, fuzzy #~ msgid "error after reading \"%s\"" #~ msgstr "membaca %s" #, fuzzy #~ msgid "fdopen() failed" #~ msgstr "pembukaan gagal" #, fuzzy #~ msgid "%s subprocess failed" #~ msgstr "fail istimewa blok" #~ msgid "regular empty file" #~ msgstr "fail kosong biasa" #~ msgid "regular file" #~ msgstr "fail biasa" #~ msgid "directory" #~ msgstr "direktori" #~ msgid "block special file" #~ msgstr "fail istimewa blok" #~ msgid "character special file" #~ msgstr "fail istimewa aksara" #~ msgid "fifo" #~ msgstr "fifo" #~ msgid "symbolic link" #~ msgstr "pautan simbolik" #~ msgid "socket" #~ msgstr "soket" #~ msgid "message queue" #~ msgstr "giliran mesej" #~ msgid "shared memory object" #~ msgstr "objek memori terkongsi" #, fuzzy #~ msgid "typed memory object" #~ msgstr "objek memori terkongsi" #~ msgid "weird file" #~ msgstr "fail pelik" #, fuzzy #~ msgid "Address family for hostname not supported" #~ msgstr "fail fifo tidak disokong" #, fuzzy #~ msgid "ai_family not supported" #~ msgstr "fail fifo tidak disokong" #, fuzzy #~ msgid "ai_socktype not supported" #~ msgstr "fail fifo tidak disokong" #, fuzzy #~ msgid "System error" #~ msgstr "ralat menulis" #, fuzzy #~ msgid "Unknown error" #~ msgstr "Ralat sistem yang tidak diketahui" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: opsyen tidak dibenarkan -- %c\n" #~ msgid "block size" #~ msgstr "saiz blok" #~ msgid "%s exists but is not a directory" #~ msgstr "%s wujud tapi ianya bukan direktori" #~ msgid "cannot change owner and/or group of %s" #~ msgstr "tak dapat menukar hakmilik dan/atau kumpulan %s" #~ msgid "cannot create directory %s" #~ msgstr "tak dapat mencipta direktori %s" #~ msgid "cannot chdir to directory %s" #~ msgstr "tak dapat chdir ke direktori %s" #~ msgid "cannot change permissions of %s" #~ msgstr "tak dapat menukar keizinan %s" #, fuzzy #~ msgid "Failed to open /dev/zero for read" #~ msgstr "gagal mengekalkan keizinan bagi %s" #, fuzzy #~ msgid "cannot create pipe" #~ msgstr "tak boleh mencipta pautan %s" #~ msgid "`" #~ msgstr "`" #~ msgid "'" #~ msgstr "`" #, fuzzy #~ msgid "Invalid regular expression" #~ msgstr "%s: ungkapan biasa (regexp) tidak sah: %s" #, fuzzy #~ msgid "Invalid character class name" #~ msgstr "aksara tidak sah pada %s pada rentetan mod %s" #, fuzzy #~ msgid "Memory exhausted" #~ msgstr "memori keletihan" #, fuzzy #~ msgid "Invalid preceding regular expression" #~ msgstr "%s: ungkapan biasa (regexp) tidak sah: %s" #, fuzzy #~ msgid "Premature end of regular expression" #~ msgstr "ralat pada carian ungkapan biasa (regexp)" #, fuzzy #~ msgid "Regular expression too big" #~ msgstr "%s: ungkapan biasa (regexp) tidak sah: %s" #, fuzzy #~ msgid "No previous regular expression" #~ msgstr "ralat pada carian ungkapan biasa (regexp)" #~ msgid "^[yY]" #~ msgstr "^[yY]" #~ msgid "^[nN]" #~ msgstr "^[tT]" #~ msgid "iconv function not usable" #~ msgstr "fungsi iconv tak boleh digunakan" #~ msgid "iconv function not available" #~ msgstr "fungsi iconv tidak ada" #~ msgid "character out of range" #~ msgstr "aksara di luar julat" #~ msgid "cannot convert U+%04X to local character set" #~ msgstr "tak dapat menukar U+%04X ke set aksara lokal" #~ msgid "cannot convert U+%04X to local character set: %s" #~ msgstr "tak dapat menukar U+%04X ke set aksara lokal: %s" #~ msgid "invalid user" #~ msgstr "pengguna tidak sah" #~ msgid "invalid group" #~ msgstr "kumpulan tidak sah" #~ msgid "cannot get the login group of a numeric UID" #~ msgstr "tak boleh mendapatkan kumpulan logmasuk untuk UID numerik" #~ msgid "Written by %s.\n" #~ msgstr "Ditulis oleh %s.\n" #, fuzzy #~ msgid "Written by %s and %s.\n" #~ msgstr "Ditulis oleh %s.\n" #, fuzzy #~ msgid "Written by %s, %s, and %s.\n" #~ msgstr "Ditulis oleh %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "and %s.\n" #~ msgstr "Ditulis oleh %s.\n" #, fuzzy #~ msgid "" #~ "Written by %s, %s, %s,\n" #~ "%s, and %s.\n" #~ msgstr "Ditulis oleh %s.\n" #~ msgid "string comparison failed" #~ msgstr "perbandingan rentetan gagal" #~ msgid "Set LC_ALL='C' to work around the problem." #~ msgstr "Tetapkan LC_ALL='C' untuk mengatasi masalah." #~ msgid "The strings compared were %s and %s." #~ msgstr "Rentetan dibandingkan adalah %s dan %s." freedink-108.4+dfsg/gnulib/po/eu.gmo0000644000175000017500000000114512421730234015032 0ustar meme4L`av;TUnknown system errormemory exhaustedProject-Id-Version: coreutils-5.2.1 Report-Msgid-Bugs-To: bug-gnulib@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2005-01-04 20:27+0100 Last-Translator: Mikel Olasagasti Language-Team: Basque Language: eu MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Sistema-errore ezezagunamemoria agortutafreedink-108.4+dfsg/gnulib/m4/0000755000175000017500000000000012421730244013617 5ustar memefreedink-108.4+dfsg/gnulib/m4/unistd-safer.m40000644000175000017500000000053012330466613016470 0ustar meme#serial 9 dnl Copyright (C) 2002, 2005-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_UNISTD_SAFER], [ AC_CHECK_FUNCS_ONCE([pipe]) ]) freedink-108.4+dfsg/gnulib/m4/string_h.m40000644000175000017500000001271412330466613015710 0ustar meme# Configure a GNU-like replacement for . # Copyright (C) 2007-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 21 # Written by Paul Eggert. AC_DEFUN([gl_HEADER_STRING_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_HEADER_STRING_H_BODY]) ]) AC_DEFUN([gl_HEADER_STRING_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) gl_NEXT_HEADERS([string.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include ]], [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r strsignal strverscmp]) ]) AC_DEFUN([gl_STRING_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], [ GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL]) GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL]) GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR]) GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM]) GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY]) GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR]) GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR]) GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY]) GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY]) GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL]) GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP]) GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT]) GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP]) GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN]) GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK]) GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP]) GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR]) GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR]) GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R]) GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN]) GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN]) GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR]) GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR]) GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR]) GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP]) GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP]) GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP]) GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR]) GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN]) GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK]) GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN]) GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP]) GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R]) GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR]) GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R]) GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL]) GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FFSL=1; AC_SUBST([HAVE_FFSL]) HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR]) HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY]) HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL]) HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP]) HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP]) HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN]) HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK]) HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP]) HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R]) HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) ]) freedink-108.4+dfsg/gnulib/m4/warn-on-use.m40000644000175000017500000000415412330466613016245 0ustar meme# warn-on-use.m4 serial 5 dnl Copyright (C) 2010-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) # --------------------------------------- # For each whitespace-separated element in the list of NAMES, define # HAVE_RAW_DECL_name if the function has a declaration among INCLUDES # even after being undefined as a macro. # # See warn-on-use.h for some hints on how to poison function names, as # well as ideas on poisoning global variables and macros. NAMES may # include global variables, but remember that only functions work with # _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single # header, but if the replacement header pulls in other headers because # some systems declare functions in the wrong header, then INCLUDES # should do likewise. # # It is generally safe to assume declarations for functions declared # in the intersection of C89 and C11 (such as printf) without # needing gl_WARN_ON_USE_PREPARE. AC_DEFUN([gl_WARN_ON_USE_PREPARE], [ m4_foreach_w([gl_decl], [$2], [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), [Define to 1 if ]m4_defn([gl_decl])[ is declared even after undefining macros.])])dnl dnl FIXME: gl_Symbol must be used unquoted until we can assume dnl autoconf 2.64 or newer. for gl_func in m4_flatten([$2]); do AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl AC_CACHE_CHECK([whether $gl_func is declared without a macro], gl_Symbol, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], [@%:@undef $gl_func (void) $gl_func;])], [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])]) AS_VAR_IF(gl_Symbol, [yes], [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) dnl shortcut - if the raw declaration exists, then set a cache dnl variable to allow skipping any later AC_CHECK_DECL efforts eval ac_cv_have_decl_$gl_func=yes]) AS_VAR_POPDEF([gl_Symbol])dnl done ]) freedink-108.4+dfsg/gnulib/m4/off_t.m40000644000175000017500000000100612330466613015160 0ustar meme# off_t.m4 serial 1 dnl Copyright (C) 2012-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check whether to override the 'off_t' type. dnl Set WINDOWS_64_BIT_OFF_T. AC_DEFUN([gl_TYPE_OFF_T], [ m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_OFF_T=0 ]) AC_SUBST([WINDOWS_64_BIT_OFF_T]) ]) freedink-108.4+dfsg/gnulib/m4/time_h.m40000644000175000017500000001122512330466613015334 0ustar meme# Configure a more-standard replacement for . # Copyright (C) 2000-2001, 2003-2007, 2009-2014 Free Software Foundation, Inc. # serial 8 # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert and Jim Meyering. AC_DEFUN([gl_HEADER_TIME_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_HEADER_TIME_H_BODY]) ]) AC_DEFUN([gl_HEADER_TIME_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) gl_NEXT_HEADERS([time.h]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) ]) dnl Check whether 'struct timespec' is declared dnl in time.h, sys/time.h, or pthread.h. AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], [ AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_time_h=yes], [gl_cv_sys_struct_timespec_in_time_h=no])]) TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_sys_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_sys_time_h=yes], [gl_cv_sys_struct_timespec_in_sys_time_h=no])]) if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_pthread_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_pthread_h=yes], [gl_cv_sys_struct_timespec_in_pthread_h=no])]) if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 fi fi fi AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) ]) AC_DEFUN([gl_TIME_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS], [ GNULIB_MKTIME=0; AC_SUBST([GNULIB_MKTIME]) GNULIB_NANOSLEEP=0; AC_SUBST([GNULIB_NANOSLEEP]) GNULIB_STRPTIME=0; AC_SUBST([GNULIB_STRPTIME]) GNULIB_TIMEGM=0; AC_SUBST([GNULIB_TIMEGM]) GNULIB_TIME_R=0; AC_SUBST([GNULIB_TIME_R]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R]) HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP]) HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME]) HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM]) dnl If another module says to replace or to not replace, do that. dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK; dnl this lets maintainers check for portability. REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R]) REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) dnl Hack so that the time module doesn't depend on the sys_time module. dnl First, default GNULIB_GETTIMEOFDAY to 0 if sys_time is absent. : ${GNULIB_GETTIMEOFDAY=0}; AC_SUBST([GNULIB_GETTIMEOFDAY]) dnl Second, it's OK to not use GNULIB_PORTCHECK for REPLACE_GMTIME dnl and REPLACE_LOCALTIME, as portability to Solaris 2.6 and earlier dnl is no longer a big deal. REPLACE_GMTIME=0; AC_SUBST([REPLACE_GMTIME]) REPLACE_LOCALTIME=0; AC_SUBST([REPLACE_LOCALTIME]) ]) freedink-108.4+dfsg/gnulib/m4/gettext.m40000644000175000017500000003561512330466613015564 0ustar meme# gettext.m4 serial 66 (gettext-0.18.2) dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) freedink-108.4+dfsg/gnulib/m4/pathmax.m40000644000175000017500000000220412330466613015526 0ustar meme# pathmax.m4 serial 10 dnl Copyright (C) 2002-2003, 2005-2006, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_PATHMAX], [ dnl Prerequisites of lib/pathmax.h. AC_CHECK_HEADERS_ONCE([sys/param.h]) ]) # Expands to a piece of C program that defines PATH_MAX in the same way as # "pathmax.h" will do. AC_DEFUN([gl_PATHMAX_SNIPPET], [[ /* Arrange to define PATH_MAX, like "pathmax.h" does. */ #if HAVE_UNISTD_H # include #endif #include #if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN # include #endif #if !defined PATH_MAX && defined MAXPATHLEN # define PATH_MAX MAXPATHLEN #endif #ifdef __hpux # undef PATH_MAX # define PATH_MAX 1024 #endif #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # undef PATH_MAX # define PATH_MAX 260 #endif ]]) # Prerequisites of gl_PATHMAX_SNIPPET. AC_DEFUN([gl_PATHMAX_SNIPPET_PREREQ], [ AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h]) ]) freedink-108.4+dfsg/gnulib/m4/stdint.m40000644000175000017500000003701412330466613015400 0ustar meme# stdint.m4 serial 43 dnl Copyright (C) 2001-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Bruno Haible. dnl Test whether is supported or must be substituted. AC_DEFUN_ONCE([gl_STDINT_H], [ AC_PREREQ([2.59])dnl dnl Check for long long int and unsigned long long int. AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) if test $ac_cv_type_long_long_int = yes; then HAVE_LONG_LONG_INT=1 else HAVE_LONG_LONG_INT=0 fi AC_SUBST([HAVE_LONG_LONG_INT]) AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) if test $ac_cv_type_unsigned_long_long_int = yes; then HAVE_UNSIGNED_LONG_LONG_INT=1 else HAVE_UNSIGNED_LONG_LONG_INT=0 fi AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT]) dnl Check for , in the same way as gl_WCHAR_H does. AC_CHECK_HEADERS_ONCE([wchar.h]) if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi AC_SUBST([HAVE_WCHAR_H]) dnl Check for . dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h. if test $ac_cv_header_inttypes_h = yes; then HAVE_INTTYPES_H=1 else HAVE_INTTYPES_H=0 fi AC_SUBST([HAVE_INTTYPES_H]) dnl Check for . dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h. if test $ac_cv_header_sys_types_h = yes; then HAVE_SYS_TYPES_H=1 else HAVE_SYS_TYPES_H=0 fi AC_SUBST([HAVE_SYS_TYPES_H]) gl_CHECK_NEXT_HEADERS([stdint.h]) if test $ac_cv_header_stdint_h = yes; then HAVE_STDINT_H=1 else HAVE_STDINT_H=0 fi AC_SUBST([HAVE_STDINT_H]) dnl Now see whether we need a substitute . if test $ac_cv_header_stdint_h = yes; then AC_CACHE_CHECK([whether stdint.h conforms to C99], [gl_cv_header_working_stdint_h], [gl_cv_header_working_stdint_h=no AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ #if !(defined WCHAR_MIN && defined WCHAR_MAX) #error "WCHAR_MIN, WCHAR_MAX not defined in " #endif ] gl_STDINT_INCLUDES [ #ifdef INT8_MAX int8_t a1 = INT8_MAX; int8_t a1min = INT8_MIN; #endif #ifdef INT16_MAX int16_t a2 = INT16_MAX; int16_t a2min = INT16_MIN; #endif #ifdef INT32_MAX int32_t a3 = INT32_MAX; int32_t a3min = INT32_MIN; #endif #ifdef INT64_MAX int64_t a4 = INT64_MAX; int64_t a4min = INT64_MIN; #endif #ifdef UINT8_MAX uint8_t b1 = UINT8_MAX; #else typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; #endif #ifdef UINT16_MAX uint16_t b2 = UINT16_MAX; #endif #ifdef UINT32_MAX uint32_t b3 = UINT32_MAX; #endif #ifdef UINT64_MAX uint64_t b4 = UINT64_MAX; #endif int_least8_t c1 = INT8_C (0x7f); int_least8_t c1max = INT_LEAST8_MAX; int_least8_t c1min = INT_LEAST8_MIN; int_least16_t c2 = INT16_C (0x7fff); int_least16_t c2max = INT_LEAST16_MAX; int_least16_t c2min = INT_LEAST16_MIN; int_least32_t c3 = INT32_C (0x7fffffff); int_least32_t c3max = INT_LEAST32_MAX; int_least32_t c3min = INT_LEAST32_MIN; int_least64_t c4 = INT64_C (0x7fffffffffffffff); int_least64_t c4max = INT_LEAST64_MAX; int_least64_t c4min = INT_LEAST64_MIN; uint_least8_t d1 = UINT8_C (0xff); uint_least8_t d1max = UINT_LEAST8_MAX; uint_least16_t d2 = UINT16_C (0xffff); uint_least16_t d2max = UINT_LEAST16_MAX; uint_least32_t d3 = UINT32_C (0xffffffff); uint_least32_t d3max = UINT_LEAST32_MAX; uint_least64_t d4 = UINT64_C (0xffffffffffffffff); uint_least64_t d4max = UINT_LEAST64_MAX; int_fast8_t e1 = INT_FAST8_MAX; int_fast8_t e1min = INT_FAST8_MIN; int_fast16_t e2 = INT_FAST16_MAX; int_fast16_t e2min = INT_FAST16_MIN; int_fast32_t e3 = INT_FAST32_MAX; int_fast32_t e3min = INT_FAST32_MIN; int_fast64_t e4 = INT_FAST64_MAX; int_fast64_t e4min = INT_FAST64_MIN; uint_fast8_t f1 = UINT_FAST8_MAX; uint_fast16_t f2 = UINT_FAST16_MAX; uint_fast32_t f3 = UINT_FAST32_MAX; uint_fast64_t f4 = UINT_FAST64_MAX; #ifdef INTPTR_MAX intptr_t g = INTPTR_MAX; intptr_t gmin = INTPTR_MIN; #endif #ifdef UINTPTR_MAX uintptr_t h = UINTPTR_MAX; #endif intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; #include /* for CHAR_BIT */ #define TYPE_MINIMUM(t) \ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) ((t) 0 < (t) -1 \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) struct s { int check_PTRDIFF: PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) ? 1 : -1; /* Detect bug in FreeBSD 6.0 / ia64. */ int check_SIG_ATOMIC: SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) ? 1 : -1; int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; int check_WCHAR: WCHAR_MIN == TYPE_MINIMUM (wchar_t) && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) ? 1 : -1; /* Detect bug in mingw. */ int check_WINT: WINT_MIN == TYPE_MINIMUM (wint_t) && WINT_MAX == TYPE_MAXIMUM (wint_t) ? 1 : -1; /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ int check_UINT8_C: (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; int check_UINT16_C: (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; /* Detect bugs in OpenBSD 3.9 stdint.h. */ #ifdef UINT8_MAX int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; #endif #ifdef UINT16_MAX int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; #endif #ifdef UINT32_MAX int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; #endif #ifdef UINT64_MAX int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; #endif int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; }; ]])], [dnl Determine whether the various *_MIN, *_MAX macros are usable dnl in preprocessor expression. We could do it by compiling a test dnl program for each of these macros. It is faster to run a program dnl that inspects the macro expansion. dnl This detects a bug on HP-UX 11.23/ia64. AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include ] gl_STDINT_INCLUDES [ #include #include #define MVAL(macro) MVAL1(macro) #define MVAL1(expression) #expression static const char *macro_values[] = { #ifdef INT8_MAX MVAL (INT8_MAX), #endif #ifdef INT16_MAX MVAL (INT16_MAX), #endif #ifdef INT32_MAX MVAL (INT32_MAX), #endif #ifdef INT64_MAX MVAL (INT64_MAX), #endif #ifdef UINT8_MAX MVAL (UINT8_MAX), #endif #ifdef UINT16_MAX MVAL (UINT16_MAX), #endif #ifdef UINT32_MAX MVAL (UINT32_MAX), #endif #ifdef UINT64_MAX MVAL (UINT64_MAX), #endif NULL }; ]], [[ const char **mv; for (mv = macro_values; *mv != NULL; mv++) { const char *value = *mv; /* Test whether it looks like a cast expression. */ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 || strncmp (value, "((int)"/*)*/, 6) == 0 || strncmp (value, "((signed short)"/*)*/, 15) == 0 || strncmp (value, "((signed char)"/*)*/, 14) == 0) return mv - macro_values + 1; } return 0; ]])], [gl_cv_header_working_stdint_h=yes], [], [dnl When cross-compiling, assume it works. gl_cv_header_working_stdint_h=yes ]) ]) ]) fi if test "$gl_cv_header_working_stdint_h" = yes; then STDINT_H= else dnl Check for , and for dnl (used in Linux libc4 >= 4.6.7 and libc5). AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) if test $ac_cv_header_sys_inttypes_h = yes; then HAVE_SYS_INTTYPES_H=1 else HAVE_SYS_INTTYPES_H=0 fi AC_SUBST([HAVE_SYS_INTTYPES_H]) if test $ac_cv_header_sys_bitypes_h = yes; then HAVE_SYS_BITYPES_H=1 else HAVE_SYS_BITYPES_H=0 fi AC_SUBST([HAVE_SYS_BITYPES_H]) gl_STDINT_TYPE_PROPERTIES STDINT_H=stdint.h fi AC_SUBST([STDINT_H]) AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"]) ]) dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) dnl Determine the size of each of the given types in bits. AC_DEFUN([gl_STDINT_BITSIZEOF], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to the number of bits in type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT], [$2 #include ], [result=unknown]) eval gl_cv_bitsizeof_${gltype}=\$result ]) eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then dnl Use a nonempty default, because some compilers, such as IRIX 5 cc, dnl do a syntax check even on unused #if conditions and give an error dnl on valid C code like this: dnl #if 0 dnl # if > 32 dnl # endif dnl #endif result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result]) eval BITSIZEOF_${GLTYPE}=\$result done m4_foreach_w([gltype], [$1], [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) dnl Determine the signedness of each of the given types. dnl Define HAVE_SIGNED_TYPE if type is signed. AC_DEFUN([gl_CHECK_TYPES_SIGNED], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to 1 if ']gltype[' is a signed integer type.])]) for gltype in $1 ; do AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])], result=yes, result=no) eval gl_cv_type_${gltype}_signed=\$result ]) eval result=\$gl_cv_type_${gltype}_signed GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` if test "$result" = yes; then AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1]) eval HAVE_SIGNED_${GLTYPE}=1 else eval HAVE_SIGNED_${GLTYPE}=0 fi done m4_foreach_w([gltype], [$1], [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) dnl Determine the suffix to use for integer constants of the given types. dnl Define t_SUFFIX for each such type. AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], [Define to l, ll, u, ul, ull, etc., as suitable for constants of type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for $gltype integer literal suffix], [gl_cv_type_${gltype}_suffix], [eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ extern $gltype foo; extern $gltype1 foo;]])], [eval gl_cv_type_${gltype}_suffix=\$glsuf]) eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done]) GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) done m4_foreach_w([gltype], [$1], [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) ]) dnl gl_STDINT_INCLUDES AC_DEFUN([gl_STDINT_INCLUDES], [[ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif ]]) dnl gl_STDINT_TYPE_PROPERTIES dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t dnl of interest to stdint.in.h. AC_DEFUN([gl_STDINT_TYPE_PROPERTIES], [ AC_REQUIRE([gl_MULTIARCH]) if test $APPLE_UNIVERSAL_BUILD = 0; then gl_STDINT_BITSIZEOF([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_cv_type_ptrdiff_t_signed=yes gl_cv_type_size_t_signed=no if test $APPLE_UNIVERSAL_BUILD = 0; then gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99 dnl requirement that wint_t is "unchanged by default argument promotions". dnl In this case gnulib's and override wint_t. dnl Set the variable BITSIZEOF_WINT_T accordingly. if test $BITSIZEOF_WINT_T -lt 32; then BITSIZEOF_WINT_T=32 fi ]) dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. dnl Remove this when we can assume autoconf >= 2.61. m4_ifdef([AC_COMPUTE_INT], [], [ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) ]) # Hey Emacs! # Local Variables: # indent-tabs-mode: nil # End: freedink-108.4+dfsg/gnulib/m4/getcwd-path-max.m40000644000175000017500000001304012330466613017056 0ustar meme# serial 19 # Check for several getcwd bugs with long file names. # If so, arrange to compile the wrapper function. # This is necessary for at least GNU libc on linux-2.4.19 and 2.4.20. # I've heard that this is due to a Linux kernel bug, and that it has # been fixed between 2.4.21-pre3 and 2.4.21-pre4. # Copyright (C) 2003-2007, 2009-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # From Jim Meyering AC_DEFUN([gl_FUNC_GETCWD_PATH_MAX], [ AC_CHECK_DECLS_ONCE([getcwd]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_HEADERS_ONCE([unistd.h]) AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ]) AC_CACHE_CHECK([whether getcwd handles long file names properly], gl_cv_func_getcwd_path_max, [# Arrange for deletion of the temporary directory this test creates. ac_clean_files="$ac_clean_files confdir3" dnl Please keep this in sync with tests/test-getcwd.c. AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ #include #include #if HAVE_UNISTD_H # include #else # include #endif #include #include #include #include #include ]gl_PATHMAX_SNIPPET[ #ifndef AT_FDCWD # define AT_FDCWD 0 #endif #ifdef ENAMETOOLONG # define is_ENAMETOOLONG(x) ((x) == ENAMETOOLONG) #else # define is_ENAMETOOLONG(x) 0 #endif /* Use the getcwd function, not any macro. */ #undef getcwd /* Don't get link errors because mkdir is redefined to rpl_mkdir. */ #undef mkdir #ifndef S_IRWXU # define S_IRWXU 0700 #endif /* The length of this name must be 8. */ #define DIR_NAME "confdir3" #define DIR_NAME_LEN 8 #define DIR_NAME_SIZE (DIR_NAME_LEN + 1) /* The length of "../". */ #define DOTDOTSLASH_LEN 3 /* Leftover bytes in the buffer, to work around library or OS bugs. */ #define BUF_SLOP 20 int main () { #ifndef PATH_MAX /* The Hurd doesn't define this, so getcwd can't exhibit the bug -- at least not on a local file system. And if we were to start worrying about remote file systems, we'd have to enable the wrapper function all of the time, just to be safe. That's not worth the cost. */ exit (0); #elif ((INT_MAX / (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1) \ - DIR_NAME_SIZE - BUF_SLOP) \ <= PATH_MAX) /* FIXME: Assuming there's a system for which this is true, this should be done in a compile test. */ exit (0); #else char buf[PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1) + DIR_NAME_SIZE + BUF_SLOP]; char *cwd = getcwd (buf, PATH_MAX); size_t initial_cwd_len; size_t cwd_len; int fail = 0; size_t n_chdirs = 0; if (cwd == NULL) exit (10); cwd_len = initial_cwd_len = strlen (cwd); while (1) { size_t dotdot_max = PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN); char *c = NULL; cwd_len += DIR_NAME_SIZE; /* If mkdir or chdir fails, it could be that this system cannot create any file with an absolute name longer than PATH_MAX, such as cygwin. If so, leave fail as 0, because the current working directory can't be too long for getcwd if it can't even be created. For other errors, be pessimistic and consider that as a failure, too. */ if (mkdir (DIR_NAME, S_IRWXU) < 0 || chdir (DIR_NAME) < 0) { if (! (errno == ERANGE || is_ENAMETOOLONG (errno))) fail = 20; break; } if (PATH_MAX <= cwd_len && cwd_len < PATH_MAX + DIR_NAME_SIZE) { c = getcwd (buf, PATH_MAX); if (!c && errno == ENOENT) { fail = 11; break; } if (c) { fail = 31; break; } if (! (errno == ERANGE || is_ENAMETOOLONG (errno))) { fail = 21; break; } } if (dotdot_max <= cwd_len - initial_cwd_len) { if (dotdot_max + DIR_NAME_SIZE < cwd_len - initial_cwd_len) break; c = getcwd (buf, cwd_len + 1); if (!c) { if (! (errno == ERANGE || errno == ENOENT || is_ENAMETOOLONG (errno))) { fail = 22; break; } if (AT_FDCWD || errno == ERANGE || errno == ENOENT) { fail = 12; break; } } } if (c && strlen (c) != cwd_len) { fail = 23; break; } ++n_chdirs; } /* Leaving behind such a deep directory is not polite. So clean up here, right away, even though the driving shell script would also clean up. */ { size_t i; /* Try rmdir first, in case the chdir failed. */ rmdir (DIR_NAME); for (i = 0; i <= n_chdirs; i++) { if (chdir ("..") < 0) break; if (rmdir (DIR_NAME) != 0) break; } } exit (fail); #endif } ]])], [gl_cv_func_getcwd_path_max=yes], [case $? in 10|11|12) gl_cv_func_getcwd_path_max='no, but it is partly working';; 31) gl_cv_func_getcwd_path_max='no, it has the AIX bug';; *) gl_cv_func_getcwd_path_max=no;; esac], [case "$host_os" in aix*) gl_cv_func_getcwd_path_max='no, it has the AIX bug';; *) gl_cv_func_getcwd_path_max=no;; esac]) ]) ]) freedink-108.4+dfsg/gnulib/m4/vasnprintf.m40000644000175000017500000002113312330466613016260 0ustar meme# vasnprintf.m4 serial 36 dnl Copyright (C) 2002-2004, 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_VASNPRINTF], [ AC_CHECK_FUNCS_ONCE([vasnprintf]) if test $ac_cv_func_vasnprintf = no; then gl_REPLACE_VASNPRINTF fi ]) AC_DEFUN([gl_REPLACE_VASNPRINTF], [ AC_CHECK_FUNCS_ONCE([vasnprintf]) AC_LIBOBJ([vasnprintf]) AC_LIBOBJ([printf-args]) AC_LIBOBJ([printf-parse]) AC_LIBOBJ([asnprintf]) if test $ac_cv_func_vasnprintf = yes; then AC_DEFINE([REPLACE_VASNPRINTF], [1], [Define if vasnprintf exists but is overridden by gnulib.]) fi gl_PREREQ_PRINTF_ARGS gl_PREREQ_PRINTF_PARSE gl_PREREQ_VASNPRINTF gl_PREREQ_ASNPRINTF ]) # Prerequisites of lib/printf-args.h, lib/printf-args.c. AC_DEFUN([gl_PREREQ_PRINTF_ARGS], [ AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) ]) # Prerequisites of lib/printf-parse.h, lib/printf-parse.c. AC_DEFUN([gl_PREREQ_PRINTF_PARSE], [ AC_REQUIRE([gl_FEATURES_H]) AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) AC_REQUIRE([AC_TYPE_SIZE_T]) AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) AC_REQUIRE([gt_AC_TYPE_INTMAX_T]) ]) # Prerequisites of lib/vasnprintf.c. AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], [ AC_REQUIRE([AC_FUNC_ALLOCA]) AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). AC_CHECK_DECLS([_snprintf], , , [[#include ]]) dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE. AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) dnl We can avoid a lot of code by assuming that snprintf's return value dnl conforms to ISO C99. So check that. AC_REQUIRE([gl_SNPRINTF_RETVAL_C99]) case "$gl_cv_func_snprintf_retval_c99" in *yes) AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1], [Define if the return value of the snprintf function is the number of of bytes (excluding the terminating NUL) that would have been produced if the buffer had been large enough.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting 'long double' # arguments. AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE], [ AC_REQUIRE([gl_PRINTF_LONG_DOUBLE]) case "$gl_cv_func_printf_long_double" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'long double' arguments.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double' # arguments. AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE], [ AC_REQUIRE([gl_PRINTF_INFINITE]) case "$gl_cv_func_printf_infinite" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for infinite 'double' arguments.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double' # arguments. AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE], [ AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE]) dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if dnl NEED_PRINTF_LONG_DOUBLE is already set. AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE]) case "$gl_cv_func_printf_long_double" in *yes) case "$gl_cv_func_printf_infinite_long_double" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for infinite 'long double' arguments.]) ;; esac ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive. AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A], [ AC_REQUIRE([gl_PRINTF_DIRECTIVE_A]) case "$gl_cv_func_printf_directive_a" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1], [Define if the vasnprintf implementation needs special code for the 'a' and 'A' directives.]) AC_CHECK_FUNCS([nl_langinfo]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive. AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F], [ AC_REQUIRE([gl_PRINTF_DIRECTIVE_F]) case "$gl_cv_func_printf_directive_f" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1], [Define if the vasnprintf implementation needs special code for the 'F' directive.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive. AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS], [ AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS]) case "$gl_cv_func_printf_directive_ls" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1], [Define if the vasnprintf implementation needs special code for the 'ls' directive.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the ' flag. AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING], [ AC_REQUIRE([gl_PRINTF_FLAG_GROUPING]) case "$gl_cv_func_printf_flag_grouping" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1], [Define if the vasnprintf implementation needs special code for the ' flag.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag. AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST], [ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST]) case "$gl_cv_func_printf_flag_leftadjust" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1], [Define if the vasnprintf implementation needs special code for the '-' flag.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag. AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO], [ AC_REQUIRE([gl_PRINTF_FLAG_ZERO]) case "$gl_cv_func_printf_flag_zero" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1], [Define if the vasnprintf implementation needs special code for the 0 flag.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting large precisions. AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION], [ AC_REQUIRE([gl_PRINTF_PRECISION]) case "$gl_cv_func_printf_precision" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1], [Define if the vasnprintf implementation needs special code for supporting large precisions without arbitrary bounds.]) AC_DEFINE([NEED_PRINTF_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'double' arguments.]) AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'long double' arguments.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory # conditions. AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM], [ AC_REQUIRE([gl_PRINTF_ENOMEM]) case "$gl_cv_func_printf_enomem" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_ENOMEM], [1], [Define if the vasnprintf implementation needs special code for surviving out-of-memory conditions.]) AC_DEFINE([NEED_PRINTF_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'double' arguments.]) AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'long double' arguments.]) ;; esac ]) # Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance. AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS], [ AC_REQUIRE([gl_PREREQ_VASNPRINTF]) gl_PREREQ_VASNPRINTF_LONG_DOUBLE gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE gl_PREREQ_VASNPRINTF_DIRECTIVE_A gl_PREREQ_VASNPRINTF_DIRECTIVE_F gl_PREREQ_VASNPRINTF_DIRECTIVE_LS gl_PREREQ_VASNPRINTF_FLAG_GROUPING gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST gl_PREREQ_VASNPRINTF_FLAG_ZERO gl_PREREQ_VASNPRINTF_PRECISION gl_PREREQ_VASNPRINTF_ENOMEM ]) # Prerequisites of lib/asnprintf.c. AC_DEFUN([gl_PREREQ_ASNPRINTF], [ ]) freedink-108.4+dfsg/gnulib/m4/malloc.m40000644000175000017500000000627612330466613015350 0ustar meme# malloc.m4 serial 14 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. m4_version_prereq([2.70], [] ,[ # This is taken from the following Autoconf patch: # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 AC_DEFUN([_AC_FUNC_MALLOC_IF], [ AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CHECK_HEADERS([stdlib.h]) AC_CACHE_CHECK([for GNU libc compatible malloc], [ac_cv_func_malloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif ]], [[return ! malloc (0);]]) ], [ac_cv_func_malloc_0_nonnull=yes], [ac_cv_func_malloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* \ | hpux* | solaris* | cygwin* | mingw*) ac_cv_func_malloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_malloc_0_nonnull=no ;; esac ]) ]) AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2]) ])# _AC_FUNC_MALLOC_IF ]) # gl_FUNC_MALLOC_GNU # ------------------ # Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if # it is not. AC_DEFUN([gl_FUNC_MALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl _AC_FUNC_MALLOC_IF is defined in Autoconf. _AC_FUNC_MALLOC_IF( [AC_DEFINE([HAVE_MALLOC_GNU], [1], [Define to 1 if your system has a GNU libc compatible 'malloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_MALLOC_GNU], [0]) REPLACE_MALLOC=1 ]) ]) # gl_FUNC_MALLOC_POSIX # -------------------- # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it # fails), and replace malloc if it is not. AC_DEFUN([gl_FUNC_MALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) if test $gl_cv_func_malloc_posix = yes; then AC_DEFINE([HAVE_MALLOC_POSIX], [1], [Define if the 'malloc' function is POSIX compliant.]) else REPLACE_MALLOC=1 fi ]) # Test whether malloc, realloc, calloc are POSIX compliant, # Set gl_cv_func_malloc_posix to yes or no accordingly. AC_DEFUN([gl_CHECK_MALLOC_POSIX], [ AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant], [gl_cv_func_malloc_posix], [ dnl It is too dangerous to try to allocate a large amount of memory: dnl some systems go to their knees when you do that. So assume that dnl all Unix implementations of the function are POSIX compliant. AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[]], [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ choke me #endif ]])], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no]) ]) ]) freedink-108.4+dfsg/gnulib/m4/dirent_h.m40000644000175000017500000000476612330466613015677 0ustar meme# dirent_h.m4 serial 16 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Bruno Haible. AC_DEFUN([gl_DIRENT_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) dnl is always overridden, because of GNULIB_POSIXCHECK. gl_CHECK_NEXT_HEADERS([dirent.h]) if test $ac_cv_header_dirent_h = yes; then HAVE_DIRENT_H=1 else HAVE_DIRENT_H=0 fi AC_SUBST([HAVE_DIRENT_H]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [alphasort closedir dirfd fdopendir opendir readdir rewinddir scandir]) ]) AC_DEFUN([gl_DIRENT_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_DIRENT_H_DEFAULTS], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR GNULIB_OPENDIR=0; AC_SUBST([GNULIB_OPENDIR]) GNULIB_READDIR=0; AC_SUBST([GNULIB_READDIR]) GNULIB_REWINDDIR=0; AC_SUBST([GNULIB_REWINDDIR]) GNULIB_CLOSEDIR=0; AC_SUBST([GNULIB_CLOSEDIR]) GNULIB_DIRFD=0; AC_SUBST([GNULIB_DIRFD]) GNULIB_FDOPENDIR=0; AC_SUBST([GNULIB_FDOPENDIR]) GNULIB_SCANDIR=0; AC_SUBST([GNULIB_SCANDIR]) GNULIB_ALPHASORT=0; AC_SUBST([GNULIB_ALPHASORT]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_OPENDIR=1; AC_SUBST([HAVE_OPENDIR]) HAVE_READDIR=1; AC_SUBST([HAVE_READDIR]) HAVE_REWINDDIR=1; AC_SUBST([HAVE_REWINDDIR]) HAVE_CLOSEDIR=1; AC_SUBST([HAVE_CLOSEDIR]) HAVE_DECL_DIRFD=1; AC_SUBST([HAVE_DECL_DIRFD]) HAVE_DECL_FDOPENDIR=1;AC_SUBST([HAVE_DECL_FDOPENDIR]) HAVE_FDOPENDIR=1; AC_SUBST([HAVE_FDOPENDIR]) HAVE_SCANDIR=1; AC_SUBST([HAVE_SCANDIR]) HAVE_ALPHASORT=1; AC_SUBST([HAVE_ALPHASORT]) REPLACE_OPENDIR=0; AC_SUBST([REPLACE_OPENDIR]) REPLACE_CLOSEDIR=0; AC_SUBST([REPLACE_CLOSEDIR]) REPLACE_DIRFD=0; AC_SUBST([REPLACE_DIRFD]) REPLACE_FDOPENDIR=0; AC_SUBST([REPLACE_FDOPENDIR]) ]) freedink-108.4+dfsg/gnulib/m4/readlink.m40000644000175000017500000000467012330466613015666 0ustar meme# readlink.m4 serial 12 dnl Copyright (C) 2003, 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_READLINK], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_FUNCS_ONCE([readlink]) if test $ac_cv_func_readlink = no; then HAVE_READLINK=0 else AC_CACHE_CHECK([whether readlink signature is correct], [gl_cv_decl_readlink_works], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include /* Cause compilation failure if original declaration has wrong type. */ ssize_t readlink (const char *, char *, size_t);]])], [gl_cv_decl_readlink_works=yes], [gl_cv_decl_readlink_works=no])]) dnl Solaris 9 ignores trailing slash. dnl FreeBSD 7.2 dereferences only one level of links with trailing slash. AC_CACHE_CHECK([whether readlink handles trailing slash correctly], [gl_cv_func_readlink_works], [# We have readlink, so assume ln -s works. ln -s conftest.no-such conftest.link ln -s conftest.link conftest.lnk2 AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[char buf[20]; return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;]])], [gl_cv_func_readlink_works=yes], [gl_cv_func_readlink_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_readlink_works="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_readlink_works="guessing no" ;; esac ]) rm -f conftest.link conftest.lnk2]) case "$gl_cv_func_readlink_works" in *yes) if test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 fi ;; *) AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink fails to recognize a trailing slash.]) REPLACE_READLINK=1 ;; esac fi ]) # Like gl_FUNC_READLINK, except prepare for separate compilation # (no REPLACE_READLINK, no AC_LIBOBJ). AC_DEFUN([gl_FUNC_READLINK_SEPARATE], [ AC_CHECK_FUNCS_ONCE([readlink]) gl_PREREQ_READLINK ]) # Prerequisites of lib/readlink.c. AC_DEFUN([gl_PREREQ_READLINK], [ : ]) freedink-108.4+dfsg/gnulib/m4/strndup.m40000644000175000017500000000321712330466613015570 0ustar meme# strndup.m4 serial 21 dnl Copyright (C) 2002-2003, 2005-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRNDUP], [ dnl Persuade glibc to declare strndup(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_CHECK_DECLS_ONCE([strndup]) AC_CHECK_FUNCS_ONCE([strndup]) if test $ac_cv_have_decl_strndup = no; then HAVE_DECL_STRNDUP=0 fi if test $ac_cv_func_strndup = yes; then HAVE_STRNDUP=1 # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'. AC_CACHE_CHECK([for working strndup], [gl_cv_func_strndup_works], [AC_RUN_IFELSE([ AC_LANG_PROGRAM([[#include #include ]], [[ #if !HAVE_DECL_STRNDUP extern #ifdef __cplusplus "C" #endif char *strndup (const char *, size_t); #endif char *s; s = strndup ("some longer string", 15); free (s); s = strndup ("shorter string", 13); return s[13] != '\0';]])], [gl_cv_func_strndup_works=yes], [gl_cv_func_strndup_works=no], [ changequote(,)dnl case $host_os in aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";; *) gl_cv_func_strndup_works="guessing yes";; esac changequote([,])dnl ])]) case $gl_cv_func_strndup_works in *no) REPLACE_STRNDUP=1 ;; esac else HAVE_STRNDUP=0 fi ]) freedink-108.4+dfsg/gnulib/m4/xsize.m40000644000175000017500000000062612330466613015234 0ustar meme# xsize.m4 serial 5 dnl Copyright (C) 2003-2004, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_XSIZE], [ dnl Prerequisites of lib/xsize.h. AC_REQUIRE([gl_SIZE_MAX]) AC_CHECK_HEADERS([stdint.h]) ]) freedink-108.4+dfsg/gnulib/m4/wchar_t.m40000644000175000017500000000146212330466613015520 0ustar meme# wchar_t.m4 serial 4 (gettext-0.18.2) dnl Copyright (C) 2002-2003, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether has the 'wchar_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WCHAR_T], [ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include wchar_t foo = (wchar_t)'\0';]], [[]])], [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) if test $gt_cv_c_wchar_t = yes; then AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) fi ]) freedink-108.4+dfsg/gnulib/m4/mode_t.m40000644000175000017500000000234212330466613015336 0ustar meme# mode_t.m4 serial 2 dnl Copyright (C) 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # For using mode_t, it's sufficient to use AC_TYPE_MODE_T and # include . # Define PROMOTED_MODE_T to the type that is the result of "default argument # promotion" (ISO C 6.5.2.2.(6)) of the type mode_t. AC_DEFUN([gl_PROMOTED_TYPE_MODE_T], [ AC_REQUIRE([AC_TYPE_MODE_T]) AC_CACHE_CHECK([for promoted mode_t type], [gl_cv_promoted_mode_t], [ dnl Assume mode_t promotes to 'int' if and only if it is smaller than 'int', dnl and to itself otherwise. This assumption is not guaranteed by the ISO C dnl standard, but we don't know of any real-world counterexamples. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[typedef int array[2 * (sizeof (mode_t) < sizeof (int)) - 1];]])], [gl_cv_promoted_mode_t='int'], [gl_cv_promoted_mode_t='mode_t']) ]) AC_DEFINE_UNQUOTED([PROMOTED_MODE_T], [$gl_cv_promoted_mode_t], [Define to the type that is the result of default argument promotions of type mode_t.]) ]) freedink-108.4+dfsg/gnulib/m4/errno_h.m40000644000175000017500000000623412330466613015527 0ustar meme# errno_h.m4 serial 12 dnl Copyright (C) 2004, 2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], [ AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ AC_EGREP_CPP([booboo],[ #include #if !defined ETXTBSY booboo #endif #if !defined ENOMSG booboo #endif #if !defined EIDRM booboo #endif #if !defined ENOLINK booboo #endif #if !defined EPROTO booboo #endif #if !defined EMULTIHOP booboo #endif #if !defined EBADMSG booboo #endif #if !defined EOVERFLOW booboo #endif #if !defined ENOTSUP booboo #endif #if !defined ENETRESET booboo #endif #if !defined ECONNABORTED booboo #endif #if !defined ESTALE booboo #endif #if !defined EDQUOT booboo #endif #if !defined ECANCELED booboo #endif #if !defined EOWNERDEAD booboo #endif #if !defined ENOTRECOVERABLE booboo #endif #if !defined EILSEQ booboo #endif ], [gl_cv_header_errno_h_complete=no], [gl_cv_header_errno_h_complete=yes]) ]) if test $gl_cv_header_errno_h_complete = yes; then ERRNO_H='' else gl_NEXT_HEADERS([errno.h]) ERRNO_H='errno.h' fi AC_SUBST([ERRNO_H]) AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"]) gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) gl_REPLACE_ERRNO_VALUE([ENOLINK]) gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) ]) # Assuming $1 = EOVERFLOW. # The EOVERFLOW errno value ought to be defined in , according to # POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and # some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. # Check for the value of EOVERFLOW. # Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. AC_DEFUN([gl_REPLACE_ERRNO_VALUE], [ if test -n "$ERRNO_H"; then AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ AC_EGREP_CPP([yes],[ #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=yes], [gl_cv_header_errno_h_]$1[=no]) if test $gl_cv_header_errno_h_]$1[ = no; then AC_EGREP_CPP([yes],[ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=hidden]) if test $gl_cv_header_errno_h_]$1[ = hidden; then dnl The macro exists but is hidden. dnl Define it to the same value. AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include ]) fi fi ]) case $gl_cv_header_errno_h_]$1[ in yes | no) ]$1[_HIDDEN=0; ]$1[_VALUE= ;; *) ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" ;; esac AC_SUBST($1[_HIDDEN]) AC_SUBST($1[_VALUE]) fi ]) dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. dnl Remove this when we can assume autoconf >= 2.61. m4_ifdef([AC_COMPUTE_INT], [], [ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) ]) freedink-108.4+dfsg/gnulib/m4/xalloc.m40000644000175000017500000000047212330466613015353 0ustar meme# xalloc.m4 serial 18 dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_XALLOC], [:]) freedink-108.4+dfsg/gnulib/m4/openat.m40000644000175000017500000000166112330466613015360 0ustar meme# serial 45 # See if we need to use our replacement for Solaris' openat et al functions. dnl Copyright (C) 2004-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Written by Jim Meyering. AC_DEFUN([gl_FUNC_OPENAT], [ AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([openat]) AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink in yes+*yes) ;; yes+*) # Solaris 9 has *at functions, but uniformly mishandles trailing # slash in all of them. REPLACE_OPENAT=1 ;; *) HAVE_OPENAT=0 ;; esac ]) # Prerequisites of lib/openat.c. AC_DEFUN([gl_PREREQ_OPENAT], [ AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T]) : ]) freedink-108.4+dfsg/gnulib/m4/setenv.m40000644000175000017500000001101212330466613015365 0ustar meme# setenv.m4 serial 26 dnl Copyright (C) 2001-2004, 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_SETENV], [ AC_REQUIRE([gl_FUNC_SETENV_SEPARATE]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles if test $ac_cv_func_setenv = no; then HAVE_SETENV=0 else AC_CACHE_CHECK([whether setenv validates arguments], [gl_cv_func_setenv_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include ]], [[ int result = 0; { if (setenv ("", "", 0) != -1) result |= 1; else if (errno != EINVAL) result |= 2; } { if (setenv ("a", "=", 1) != 0) result |= 4; else if (strcmp (getenv ("a"), "=") != 0) result |= 8; } return result; ]])], [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_setenv_works="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_setenv_works="guessing no" ;; esac ])]) case "$gl_cv_func_setenv_works" in *yes) ;; *) REPLACE_SETENV=1 ;; esac fi ]) # Like gl_FUNC_SETENV, except prepare for separate compilation # (no REPLACE_SETENV, no AC_LIBOBJ). AC_DEFUN([gl_FUNC_SETENV_SEPARATE], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_CHECK_DECLS_ONCE([setenv]) if test $ac_cv_have_decl_setenv = no; then HAVE_DECL_SETENV=0 fi AC_CHECK_FUNCS_ONCE([setenv]) gl_PREREQ_SETENV ]) AC_DEFUN([gl_FUNC_UNSETENV], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_DECLS_ONCE([unsetenv]) if test $ac_cv_have_decl_unsetenv = no; then HAVE_DECL_UNSETENV=0 fi AC_CHECK_FUNCS([unsetenv]) if test $ac_cv_func_unsetenv = no; then HAVE_UNSETENV=0 else HAVE_UNSETENV=1 dnl Some BSDs return void, failing to do error checking. AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #undef _BSD #define _BSD 1 /* unhide unsetenv declaration in OSF/1 5.1 */ #include extern #ifdef __cplusplus "C" #endif int unsetenv (const char *name); ]], [[]])], [gt_cv_func_unsetenv_ret='int'], [gt_cv_func_unsetenv_ret='void'])]) if test $gt_cv_func_unsetenv_ret = 'void'; then AC_DEFINE([VOID_UNSETENV], [1], [Define to 1 if unsetenv returns void instead of int.]) REPLACE_UNSETENV=1 fi dnl Solaris 10 unsetenv does not remove all copies of a name. dnl Haiku alpha 2 unsetenv gets confused by assignment to environ. dnl OpenBSD 4.7 unsetenv("") does not fail. AC_CACHE_CHECK([whether unsetenv obeys POSIX], [gl_cv_func_unsetenv_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include extern char **environ; ]], [[ char entry1[] = "a=1"; char entry2[] = "b=2"; char *env[] = { entry1, entry2, NULL }; if (putenv ((char *) "a=1")) return 1; if (putenv (entry2)) return 2; entry2[0] = 'a'; unsetenv ("a"); if (getenv ("a")) return 3; if (!unsetenv ("") || errno != EINVAL) return 4; entry2[0] = 'b'; environ = env; if (!getenv ("a")) return 5; entry2[0] = 'a'; unsetenv ("a"); if (getenv ("a")) return 6; ]])], [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_unsetenv_works="guessing no" ;; esac ])]) case "$gl_cv_func_unsetenv_works" in *yes) ;; *) REPLACE_UNSETENV=1 ;; esac fi ]) # Prerequisites of lib/setenv.c. AC_DEFUN([gl_PREREQ_SETENV], [ AC_REQUIRE([AC_FUNC_ALLOCA]) AC_REQUIRE([gl_ENVIRON]) AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CHECK_HEADERS([search.h]) AC_CHECK_FUNCS([tsearch]) ]) # Prerequisites of lib/unsetenv.c. AC_DEFUN([gl_PREREQ_UNSETENV], [ AC_REQUIRE([gl_ENVIRON]) AC_CHECK_HEADERS_ONCE([unistd.h]) ]) freedink-108.4+dfsg/gnulib/m4/msvc-inval.m40000644000175000017500000000133412330466613016146 0ustar meme# msvc-inval.m4 serial 1 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_INVAL], [ AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler]) if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1], [Define to 1 on MSVC platforms that have the "invalid parameter handler" concept.]) else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER]) ]) freedink-108.4+dfsg/gnulib/m4/lib-prefix.m40000644000175000017500000002042212330466613016127 0ustar meme# lib-prefix.m4 serial 7 (gettext-0.18) dnl Copyright (C) 2001-2005, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_EGREP_CPP([sixtyfour bits], [ #ifdef _LP64 sixtyfour bits #endif ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ]) freedink-108.4+dfsg/gnulib/m4/mmap-anon.m40000644000175000017500000000373312330466613015757 0ustar meme# mmap-anon.m4 serial 10 dnl Copyright (C) 2005, 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Detect how mmap can be used to create anonymous (not file-backed) memory # mappings. # - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS # and MAP_ANON exist and have the same value. # - On HP-UX, only MAP_ANONYMOUS exists. # - On Mac OS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists. # - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be # used. AC_DEFUN([gl_FUNC_MMAP_ANON], [ dnl Persuade glibc to define MAP_ANONYMOUS. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is # irrelevant for anonymous mappings. AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no]) # Try to allow MAP_ANONYMOUS. gl_have_mmap_anonymous=no if test $gl_have_mmap = yes; then AC_MSG_CHECKING([for MAP_ANONYMOUS]) AC_EGREP_CPP([I cannot identify this map], [ #include #ifdef MAP_ANONYMOUS I cannot identify this map #endif ], [gl_have_mmap_anonymous=yes]) if test $gl_have_mmap_anonymous != yes; then AC_EGREP_CPP([I cannot identify this map], [ #include #ifdef MAP_ANON I cannot identify this map #endif ], [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON], [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.]) gl_have_mmap_anonymous=yes]) fi AC_MSG_RESULT([$gl_have_mmap_anonymous]) if test $gl_have_mmap_anonymous = yes; then AC_DEFINE([HAVE_MAP_ANONYMOUS], [1], [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including config.h and .]) fi fi ]) freedink-108.4+dfsg/gnulib/m4/fchdir.m40000644000175000017500000000402412330466613015325 0ustar meme# fchdir.m4 serial 21 dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FCHDIR], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_DECLS_ONCE([fchdir]) if test $ac_cv_have_decl_fchdir = no; then HAVE_DECL_FCHDIR=0 fi AC_REQUIRE([gl_TEST_FCHDIR]) if test $HAVE_FCHDIR = 0; then AC_LIBOBJ([fchdir]) gl_PREREQ_FCHDIR AC_DEFINE([REPLACE_FCHDIR], [1], [Define to 1 if gnulib's fchdir() replacement is used.]) dnl We must also replace anything that can manipulate a directory fd, dnl to keep our bookkeeping up-to-date. We don't have to replace dnl fstatat, since no platform has fstatat but lacks fchdir. AC_CACHE_CHECK([whether open can visit directories], [gl_cv_func_open_directory_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include ]], [return open(".", O_RDONLY) < 0;])], [gl_cv_func_open_directory_works=yes], [gl_cv_func_open_directory_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_open_directory_works="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_open_directory_works="guessing no" ;; esac ])]) case "$gl_cv_func_open_directory_works" in *yes) ;; *) AC_DEFINE([REPLACE_OPEN_DIRECTORY], [1], [Define to 1 if open() should work around the inability to open a directory.]) ;; esac fi ]) # Determine whether to use the overrides in lib/fchdir.c. AC_DEFUN([gl_TEST_FCHDIR], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([fchdir]) if test $ac_cv_func_fchdir = no; then HAVE_FCHDIR=0 fi ]) # Prerequisites of lib/fchdir.c. AC_DEFUN([gl_PREREQ_FCHDIR], [:]) freedink-108.4+dfsg/gnulib/m4/gnulib-cache.m40000644000175000017500000000413412420231175016402 0ustar meme# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the specification of how gnulib-tool is used. # It acts as a cache: It is written and read by gnulib-tool. # In projects that use version control, this file is meant to be put under # version control, like the configure.ac and various Makefile.am files. # Specification in the form of a command-line invocation: # gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --po-base=gnulib/po --doc-base=doc --tests-base=tests --aux-dir=autotools --no-conditional-dependencies --no-libtool --macro-prefix=gl --po-domain=freedink alloca canonicalize dirname getopt-gnu gettext hash relocatable-prog strcase strdup-posix strings vasprintf xalloc # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([]) gl_MODULES([ alloca canonicalize dirname getopt-gnu gettext hash relocatable-prog strcase strdup-posix strings vasprintf xalloc ]) gl_AVOID([]) gl_SOURCE_BASE([gnulib/lib]) gl_M4_BASE([gnulib/m4]) gl_PO_BASE([gnulib/po]) gl_DOC_BASE([doc]) gl_TESTS_BASE([tests]) gl_LIB([libgnu]) gl_MAKEFILE_NAME([]) gl_MACRO_PREFIX([gl]) gl_PO_DOMAIN([freedink]) gl_WITNESS_C_MACRO([]) freedink-108.4+dfsg/gnulib/m4/memchr.m40000644000175000017500000000534012330466613015343 0ustar meme# memchr.m4 serial 12 dnl Copyright (C) 2002-2004, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_FUNC_MEMCHR], [ dnl Check for prerequisites for memory fence checks. gl_FUNC_MMAP_ANON AC_CHECK_HEADERS_ONCE([sys/mman.h]) AC_CHECK_FUNCS_ONCE([mprotect]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) m4_ifdef([gl_FUNC_MEMCHR_OBSOLETE], [ dnl These days, we assume memchr is present. But if support for old dnl platforms is desired: AC_CHECK_FUNCS_ONCE([memchr]) if test $ac_cv_func_memchr = no; then HAVE_MEMCHR=0 fi ]) if test $HAVE_MEMCHR = 1; then # Detect platform-specific bugs in some versions of glibc: # memchr should not dereference anything with length 0 # http://bugzilla.redhat.com/499689 # memchr should not dereference overestimated length after a match # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737 # http://sourceware.org/bugzilla/show_bug.cgi?id=10162 # Assume that memchr works on platforms that lack mprotect. AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #if HAVE_SYS_MMAN_H # include # include # include # include # ifndef MAP_FILE # define MAP_FILE 0 # endif #endif ]], [[ int result = 0; char *fence = NULL; #if HAVE_SYS_MMAN_H && HAVE_MPROTECT # if HAVE_MAP_ANONYMOUS const int flags = MAP_ANONYMOUS | MAP_PRIVATE; const int fd = -1; # else /* !HAVE_MAP_ANONYMOUS */ const int flags = MAP_FILE | MAP_PRIVATE; int fd = open ("/dev/zero", O_RDONLY, 0666); if (fd >= 0) # endif { int pagesize = getpagesize (); char *two_pages = (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE, flags, fd, 0); if (two_pages != (char *)(-1) && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0) fence = two_pages + pagesize; } #endif if (fence) { if (memchr (fence, 0, 0)) result |= 1; strcpy (fence - 9, "12345678"); if (memchr (fence - 9, 0, 79) != fence - 1) result |= 2; if (memchr (fence - 1, 0, 3) != fence - 1) result |= 4; } return result; ]])], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no], [dnl Be pessimistic for now. gl_cv_func_memchr_works="guessing no"])]) if test "$gl_cv_func_memchr_works" != yes; then REPLACE_MEMCHR=1 fi fi ]) # Prerequisites of lib/memchr.c. AC_DEFUN([gl_PREREQ_MEMCHR], [ AC_CHECK_HEADERS([bp-sym.h]) ]) freedink-108.4+dfsg/gnulib/m4/include_next.m40000644000175000017500000002077312330466613016560 0ustar meme# include_next.m4 serial 23 dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Derek Price. dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER. dnl dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to dnl 'include' otherwise. dnl dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler dnl supports it in the special case that it is the first include directive in dnl the given file, or to 'include' otherwise. dnl dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next, dnl so as to avoid GCC warnings when the gcc option -pedantic is used. dnl '#pragma GCC system_header' has the same effect as if the file was found dnl through the include search path specified with '-isystem' options (as dnl opposed to the search path specified with '-I' options). Namely, gcc dnl does not warn about some things, and on some systems (Solaris and Interix) dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead dnl of plain '__STDC__'. dnl dnl PRAGMA_COLUMNS can be used in files that override system header files, so dnl as to avoid compilation errors on HP NonStop systems when the gnulib file dnl is included by a system header file that does a "#pragma COLUMNS 80" (which dnl has the effect of truncating the lines of that file and all files that it dnl includes to 80 columns) and the gnulib file has lines longer than 80 dnl columns. AC_DEFUN([gl_INCLUDE_NEXT], [ AC_LANG_PREPROC_REQUIRE() AC_CACHE_CHECK([whether the preprocessor supports include_next], [gl_cv_have_include_next], [rm -rf conftestd1a conftestd1b conftestd2 mkdir conftestd1a conftestd1b conftestd2 dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on dnl AIX 6.1 support include_next when used as first preprocessor directive dnl in a file, but not when preceded by another include directive. Check dnl for this bug by including . dnl Additionally, with this same compiler, include_next is a no-op when dnl used in a header file that was included by specifying its absolute dnl file name. Despite these two bugs, include_next is used in the dnl compiler's . By virtue of the second bug, we need to use dnl include_next as well in this case. cat < conftestd1a/conftest.h #define DEFINED_IN_CONFTESTD1 #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd1b/conftest.h #define DEFINED_IN_CONFTESTD1 #include #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd2/conftest.h #ifndef DEFINED_IN_CONFTESTD1 #error "include_next test doesn't work" #endif #define DEFINED_IN_CONFTESTD2 EOF gl_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" dnl We intentionally avoid using AC_LANG_SOURCE here. AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=yes], [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=buggy], [gl_cv_have_include_next=no]) ]) CPPFLAGS="$gl_save_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 ]) PRAGMA_SYSTEM_HEADER= if test $gl_cv_have_include_next = yes; then INCLUDE_NEXT=include_next INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next if test -n "$GCC"; then PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' fi else if test $gl_cv_have_include_next = buggy; then INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next else INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include fi fi AC_SUBST([INCLUDE_NEXT]) AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) AC_SUBST([PRAGMA_SYSTEM_HEADER]) AC_CACHE_CHECK([whether system header files limit the line length], [gl_cv_pragma_columns], [dnl HP NonStop systems, which define __TANDEM, have this misfeature. AC_EGREP_CPP([choke me], [ #ifdef __TANDEM choke me #endif ], [gl_cv_pragma_columns=yes], [gl_cv_pragma_columns=no]) ]) if test $gl_cv_pragma_columns = yes; then PRAGMA_COLUMNS="#pragma COLUMNS 10000" else PRAGMA_COLUMNS= fi AC_SUBST([PRAGMA_COLUMNS]) ]) # gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------------ # For each arg foo.h, if #include_next works, define NEXT_FOO_H to be # ''; otherwise define it to be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # Also, if #include_next works as first preprocessing directive in a file, # define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be ''; otherwise define it to # be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # That way, a header file with the following line: # #@INCLUDE_NEXT@ @NEXT_FOO_H@ # or # #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@ # behaves (after sed substitution) as if it contained # #include_next # even if the compiler does not support include_next. # The three "///" are to pacify Sun C 5.8, which otherwise would say # "warning: #include of /usr/include/... may be non-portable". # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. # Note: This macro assumes that the header file is not empty after # preprocessing, i.e. it does not only define preprocessor macros but also # provides some type/enum definitions or function/variable declarations. # # This macro also checks whether each header exists, by invoking # AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument. AC_DEFUN([gl_CHECK_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [check]) ]) # gl_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------ # Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist. # This is suitable for headers like that are standardized by C89 # and therefore can be assumed to exist. AC_DEFUN([gl_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [assume]) ]) # The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS. AC_DEFUN([gl_NEXT_HEADERS_INTERNAL], [ AC_REQUIRE([gl_INCLUDE_NEXT]) AC_REQUIRE([AC_CANONICAL_HOST]) m4_if([$2], [check], [AC_CHECK_HEADERS_ONCE([$1]) ]) dnl FIXME: gl_next_header and gl_header_exists must be used unquoted dnl until we can assume autoconf 2.64 or newer. m4_foreach_w([gl_HEADER_NAME], [$1], [AS_VAR_PUSHDEF([gl_next_header], [gl_cv_next_]m4_defn([gl_HEADER_NAME])) if test $gl_cv_have_include_next = yes; then AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) else AC_CACHE_CHECK( [absolute name of <]m4_defn([gl_HEADER_NAME])[>], m4_defn([gl_next_header]), [m4_if([$2], [check], [AS_VAR_PUSHDEF([gl_header_exists], [ac_cv_header_]m4_defn([gl_HEADER_NAME])) if test AS_VAR_GET(gl_header_exists) = yes; then AS_VAR_POPDEF([gl_header_exists]) ]) gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME) AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME)) AS_VAR_SET(gl_next_header, ['"'$gl_header'"']) m4_if([$2], [check], [else AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) fi ]) ]) fi AC_SUBST( AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), [AS_VAR_GET(gl_next_header)]) if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'gl_HEADER_NAME'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=AS_VAR_GET(gl_next_header) fi AC_SUBST( AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), [$gl_next_as_first_directive]) AS_VAR_POPDEF([gl_next_header])]) ]) # Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE; # this fallback is safe for all earlier autoconf versions. m4_define_default([AC_LANG_DEFINES_PROVIDED]) freedink-108.4+dfsg/gnulib/m4/filenamecat.m40000644000175000017500000000075512330466613016345 0ustar meme# filenamecat.m4 serial 11 dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FILE_NAME_CONCAT], [ AC_REQUIRE([gl_FILE_NAME_CONCAT_LGPL]) ]) AC_DEFUN([gl_FILE_NAME_CONCAT_LGPL], [ dnl Prerequisites of lib/filenamecat-lgpl.c. AC_CHECK_FUNCS_ONCE([mempcpy]) ]) freedink-108.4+dfsg/gnulib/m4/save-cwd.m40000644000175000017500000000057012330466613015601 0ustar meme# serial 10 dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Prerequisites for lib/save-cwd.c. AC_DEFUN([gl_SAVE_CWD], [ AC_CHECK_FUNCS_ONCE([fchdir]) ]) freedink-108.4+dfsg/gnulib/m4/environ.m40000644000175000017500000000261612330466613015553 0ustar meme# environ.m4 serial 6 dnl Copyright (C) 2001-2004, 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_ENVIRON], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl Persuade glibc to declare environ. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_HEADERS_ONCE([unistd.h]) gt_CHECK_VAR_DECL( [#if HAVE_UNISTD_H #include #endif /* mingw, BeOS, Haiku declare environ in , not in . */ #include ], [environ]) if test $gt_cv_var_environ_declaration != yes; then HAVE_DECL_ENVIRON=0 fi ]) # Check if a variable is properly declared. # gt_CHECK_VAR_DECL(includes,variable) AC_DEFUN([gt_CHECK_VAR_DECL], [ define([gt_cv_var], [gt_cv_var_]$2[_declaration]) AC_MSG_CHECKING([if $2 is properly declared]) AC_CACHE_VAL([gt_cv_var], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[$1 extern struct { int foo; } $2;]], [[$2.foo = 1;]])], [gt_cv_var=no], [gt_cv_var=yes])]) AC_MSG_RESULT([$gt_cv_var]) if test $gt_cv_var = yes; then AC_DEFINE([HAVE_]m4_translit($2, [a-z], [A-Z])[_DECL], 1, [Define if you have the declaration of $2.]) fi undefine([gt_cv_var]) ]) freedink-108.4+dfsg/gnulib/m4/ssize_t.m40000644000175000017500000000146312330466613015552 0ustar meme# ssize_t.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2001-2003, 2006, 2010-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether ssize_t is defined. AC_DEFUN([gt_TYPE_SSIZE_T], [ AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x;]])], [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])]) if test $gt_cv_ssize_t = no; then AC_DEFINE([ssize_t], [int], [Define as a signed type of the same size as size_t.]) fi ]) freedink-108.4+dfsg/gnulib/m4/fstat.m40000644000175000017500000000164612330466613015216 0ustar meme# fstat.m4 serial 4 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSTAT], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_REQUIRE([gl_MSVC_INVAL]) if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_FSTAT=1 fi AC_REQUIRE([gl_HEADER_SYS_STAT_H]) if test $WINDOWS_64_BIT_ST_SIZE = 1; then REPLACE_FSTAT=1 fi dnl Replace fstat() for supporting the gnulib-defined open() on directories. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then case "$gl_cv_func_open_directory_works" in *yes) ;; *) REPLACE_FSTAT=1 ;; esac fi ]) ]) # Prerequisites of lib/fstat.c. AC_DEFUN([gl_PREREQ_FSTAT], [:]) freedink-108.4+dfsg/gnulib/m4/lstat.m40000644000175000017500000000511212330466613015214 0ustar meme# serial 26 # Copyright (C) 1997-2001, 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. dnl From Jim Meyering. AC_DEFUN([gl_FUNC_LSTAT], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) dnl If lstat does not exist, the replacement does dnl "#define lstat stat", and lstat.c is a no-op. AC_CHECK_FUNCS_ONCE([lstat]) if test $ac_cv_func_lstat = yes; then AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) case "$gl_cv_func_lstat_dereferences_slashed_symlink" in *no) REPLACE_LSTAT=1 ;; esac else HAVE_LSTAT=0 fi ]) # Prerequisites of lib/lstat.c. AC_DEFUN([gl_PREREQ_LSTAT], [:]) AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], [ dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ. AC_CACHE_CHECK([whether lstat correctly handles trailing slash], [gl_cv_func_lstat_dereferences_slashed_symlink], [rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then AC_RUN_IFELSE( [AC_LANG_PROGRAM( [AC_INCLUDES_DEFAULT], [[struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ]])], [gl_cv_func_lstat_dereferences_slashed_symlink=yes], [gl_cv_func_lstat_dereferences_slashed_symlink=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; esac ]) else # If the 'ln -s' command failed, then we probably don't even # have an lstat function. gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" fi rm -f conftest.sym conftest.file ]) case "$gl_cv_func_lstat_dereferences_slashed_symlink" in *yes) AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1], [Define to 1 if 'lstat' dereferences a symlink specified with a trailing slash.]) ;; esac ]) freedink-108.4+dfsg/gnulib/m4/chdir-long.m40000644000175000017500000000207612330466613016121 0ustar meme#serial 15 # Use Gnulib's robust chdir function. # It can handle arbitrarily long directory names, which means # that when it is given the name of an existing directory, it # never fails with ENAMETOOLONG. # Arrange to compile chdir-long.c only on systems that define PATH_MAX. dnl Copyright (C) 2004-2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Written by Jim Meyering. AC_DEFUN([gl_FUNC_CHDIR_LONG], [ AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ]) AC_CACHE_CHECK([whether this system has an arbitrary file name length limit], gl_cv_have_arbitrary_file_name_length_limit, [AC_EGREP_CPP([have_arbitrary_file_name_length_limit], gl_PATHMAX_SNIPPET[ #ifdef PATH_MAX have_arbitrary_file_name_length_limit #endif], gl_cv_have_arbitrary_file_name_length_limit=yes, gl_cv_have_arbitrary_file_name_length_limit=no)]) ]) AC_DEFUN([gl_PREREQ_CHDIR_LONG], [:]) freedink-108.4+dfsg/gnulib/m4/open.m40000644000175000017500000000504612330466613015034 0ustar meme# open.m4 serial 14 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_OPEN], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in mingw* | pw*) REPLACE_OPEN=1 ;; *) dnl open("foo/") should not create a file when the file name has a dnl trailing slash. FreeBSD only has the problem on symlinks. AC_CHECK_FUNCS_ONCE([lstat]) AC_CACHE_CHECK([whether open recognizes a trailing slash], [gl_cv_func_open_slash], [# Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then touch conftest.tmp ln -s conftest.tmp conftest.lnk fi AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #if HAVE_UNISTD_H # include #endif int main () { int result = 0; #if HAVE_LSTAT if (open ("conftest.lnk/", O_RDONLY) != -1) result |= 1; #endif if (open ("conftest.sl/", O_CREAT, 0600) >= 0) result |= 2; return result; }]])], [gl_cv_func_open_slash=yes], [gl_cv_func_open_slash=no], [ changequote(,)dnl case "$host_os" in freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*) gl_cv_func_open_slash="guessing no" ;; *) gl_cv_func_open_slash="guessing yes" ;; esac changequote([,])dnl ]) rm -f conftest.sl conftest.tmp conftest.lnk ]) case "$gl_cv_func_open_slash" in *no) AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1], [Define to 1 if open() fails to recognize a trailing slash.]) REPLACE_OPEN=1 ;; esac ;; esac dnl Replace open() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ if test $REPLACE_OPEN = 0; then gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then REPLACE_OPEN=1 fi fi ]) dnl Replace open() for supporting the gnulib-defined O_NONBLOCK flag. m4_ifdef([gl_NONBLOCKING_IO], [ if test $REPLACE_OPEN = 0; then gl_NONBLOCKING_IO if test $gl_cv_have_open_O_NONBLOCK != yes; then REPLACE_OPEN=1 fi fi ]) ]) # Prerequisites of lib/open.c. AC_DEFUN([gl_PREREQ_OPEN], [ AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T]) : ]) freedink-108.4+dfsg/gnulib/m4/size_max.m40000644000175000017500000000577012330466613015716 0ustar meme# size_max.m4 serial 10 dnl Copyright (C) 2003, 2005-2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([gl_SIZE_MAX], [ AC_CHECK_HEADERS([stdint.h]) dnl First test whether the system already has SIZE_MAX. AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ gl_cv_size_max= AC_EGREP_CPP([Found it], [ #include #if HAVE_STDINT_H #include #endif #ifdef SIZE_MAX Found it #endif ], [gl_cv_size_max=yes]) if test -z "$gl_cv_size_max"; then dnl Define it ourselves. Here we assume that the type 'size_t' is not wider dnl than the type 'unsigned long'. Try hard to find a definition that can dnl be used in a preprocessor #if, i.e. doesn't contain a cast. AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], [#include #include ], [size_t_bits_minus_1=]) AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], [#include ], [fits_in_uint=]) if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then if test $fits_in_uint = 1; then dnl Even though SIZE_MAX fits in an unsigned int, it must be of type dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include extern size_t foo; extern unsigned long foo; ]], [[]])], [fits_in_uint=0]) fi dnl We cannot use 'expr' to simplify this expression, because 'expr' dnl works only with 'long' integers in the host environment, while we dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. if test $fits_in_uint = 1; then gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" else gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" fi else dnl Shouldn't happen, but who knows... gl_cv_size_max='((size_t)~(size_t)0)' fi fi ]) if test "$gl_cv_size_max" != yes; then AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], [Define as the maximum value of type 'size_t', if the system doesn't define it.]) fi dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after dnl . Remember that the #undef in AH_VERBATIM gets replaced with dnl #define by AC_DEFINE_UNQUOTED. AH_VERBATIM([SIZE_MAX], [/* Define as the maximum value of type 'size_t', if the system doesn't define it. */ #ifndef SIZE_MAX # undef SIZE_MAX #endif]) ]) dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. dnl Remove this when we can assume autoconf >= 2.61. m4_ifdef([AC_COMPUTE_INT], [], [ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) ]) freedink-108.4+dfsg/gnulib/m4/dup2.m40000644000175000017500000000562612330466613014751 0ustar meme#serial 20 dnl Copyright (C) 2002, 2005, 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_DUP2], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) m4_ifdef([gl_FUNC_DUP2_OBSOLETE], [ AC_CHECK_FUNCS_ONCE([dup2]) if test $ac_cv_func_dup2 = no; then HAVE_DUP2=0 fi ], [ AC_DEFINE([HAVE_DUP2], [1], [Define to 1 if you have the 'dup2' function.]) ]) if test $HAVE_DUP2 = 1; then AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works], [AC_RUN_IFELSE([ AC_LANG_PROGRAM([[#include #include #include ]], [int result = 0; #ifdef FD_CLOEXEC if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1) result |= 1; #endif if (dup2 (1, 1) == 0) result |= 2; #ifdef FD_CLOEXEC if (fcntl (1, F_GETFD) != FD_CLOEXEC) result |= 4; #endif close (0); if (dup2 (0, 0) != -1) result |= 8; /* Many gnulib modules require POSIX conformance of EBADF. */ if (dup2 (2, 1000000) == -1 && errno != EBADF) result |= 16; /* Flush out some cygwin core dumps. */ if (dup2 (2, -1) != -1 || errno != EBADF) result |= 32; dup2 (2, 255); dup2 (2, 256); return result; ]) ], [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no], [case "$host_os" in mingw*) # on this platform, dup2 always returns 0 for success gl_cv_func_dup2_works="guessing no" ;; cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0 gl_cv_func_dup2_works="guessing no" ;; linux*) # On linux between 2008-07-27 and 2009-05-11, dup2 of a # closed fd may yield -EBADF instead of -1 / errno=EBADF. gl_cv_func_dup2_works="guessing no" ;; freebsd*) # on FreeBSD 6.1, dup2(1,1000000) gives EMFILE, not EBADF. gl_cv_func_dup2_works="guessing no" ;; haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC. gl_cv_func_dup2_works="guessing no" ;; *) gl_cv_func_dup2_works="guessing yes" ;; esac]) ]) case "$gl_cv_func_dup2_works" in *yes) ;; *) REPLACE_DUP2=1 AC_CHECK_FUNCS([setdtablesize]) ;; esac fi dnl Replace dup2() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then if test $HAVE_DUP2 = 1; then REPLACE_DUP2=1 fi fi ]) ]) # Prerequisites of lib/dup2.c. AC_DEFUN([gl_PREREQ_DUP2], []) freedink-108.4+dfsg/gnulib/m4/d-ino.m40000644000175000017500000000337412330466613015103 0ustar meme# serial 14 dnl From Jim Meyering. dnl dnl Check whether struct dirent has a member named d_ino. dnl # Copyright (C) 1997, 1999-2001, 2003-2004, 2006-2007, 2009-2014 Free Software # Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO], [AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([for d_ino member in directory struct], gl_cv_struct_dirent_d_ino, [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include ]], [[DIR *dp = opendir ("."); struct dirent *e; struct stat st; if (! dp) return 1; e = readdir (dp); if (! e) return 2; if (lstat (e->d_name, &st) != 0) return 3; if (e->d_ino != st.st_ino) return 4; return 0; ]])], [gl_cv_struct_dirent_d_ino=yes], [gl_cv_struct_dirent_d_ino=no], [case "$host_os" in # Guess yes on glibc systems with Linux kernel. linux*-gnu*) gl_cv_struct_dirent_d_ino="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_struct_dirent_d_ino="guessing no" ;; esac ])]) case "$gl_cv_struct_dirent_d_ino" in *yes) AC_DEFINE([D_INO_IN_DIRENT], [1], [Define if struct dirent has a member d_ino that actually works.]) ;; esac ] ) freedink-108.4+dfsg/gnulib/m4/getcwd.m40000644000175000017500000001122712330466613015346 0ustar meme# getcwd.m4 - check for working getcwd that is compatible with glibc # Copyright (C) 2001, 2003-2007, 2009-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert. # serial 12 AC_DEFUN([gl_FUNC_GETCWD_NULL], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CACHE_CHECK([whether getcwd (NULL, 0) allocates memory for result], [gl_cv_func_getcwd_null], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ # if HAVE_UNISTD_H # include # else /* on Windows with MSVC */ # include # endif # ifndef getcwd char *getcwd (); # endif ]], [[ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* mingw cwd does not start with '/', but getcwd does allocate. However, mingw fails to honor non-zero size. */ #else if (chdir ("/") != 0) return 1; else { char *f = getcwd (NULL, 0); if (! f) return 2; if (f[0] != '/') return 3; if (f[1] != '\0') return 4; return 0; } #endif ]])], [gl_cv_func_getcwd_null=yes], [gl_cv_func_getcwd_null=no], [[case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_getcwd_null="guessing yes";; # Guess yes on Cygwin. cygwin*) gl_cv_func_getcwd_null="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_getcwd_null="guessing no";; esac ]])]) ]) AC_DEFUN([gl_FUNC_GETCWD_SIGNATURE], [ AC_CACHE_CHECK([for getcwd with POSIX signature], [gl_cv_func_getcwd_posix_signature], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[extern #ifdef __cplusplus "C" #endif char *getcwd (char *, size_t); ]]) ], [gl_cv_func_getcwd_posix_signature=yes], [gl_cv_func_getcwd_posix_signature=no]) ]) ]) dnl Guarantee that getcwd will malloc with a NULL first argument. Assumes dnl that either the system getcwd is robust, or that calling code is okay dnl with spurious failures when run from a directory with an absolute name dnl larger than 4k bytes. dnl dnl Assumes that getcwd exists; if you are worried about obsolete dnl platforms that lacked getcwd(), then you need to use the GPL module. AC_DEFUN([gl_FUNC_GETCWD_LGPL], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_GETCWD_NULL]) AC_REQUIRE([gl_FUNC_GETCWD_SIGNATURE]) case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_posix_signature in *yes,yes) ;; *) dnl Minimal replacement lib/getcwd-lgpl.c. REPLACE_GETCWD=1 ;; esac ]) dnl Check for all known getcwd bugs; useful for a program likely to be dnl executed from an arbitrary location. AC_DEFUN([gl_FUNC_GETCWD], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_GETCWD_NULL]) AC_REQUIRE([gl_FUNC_GETCWD_SIGNATURE]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles gl_abort_bug=no case "$host_os" in mingw*) gl_cv_func_getcwd_path_max=yes ;; *) gl_FUNC_GETCWD_PATH_MAX case "$gl_cv_func_getcwd_null" in *yes) gl_FUNC_GETCWD_ABORT_BUG([gl_abort_bug=yes]) ;; esac ;; esac dnl Define HAVE_MINIMALLY_WORKING_GETCWD and HAVE_PARTLY_WORKING_GETCWD dnl if appropriate. case "$gl_cv_func_getcwd_path_max" in "no"|"no, it has the AIX bug") ;; *) AC_DEFINE([HAVE_MINIMALLY_WORKING_GETCWD], [1], [Define to 1 if getcwd minimally works, that is, its result can be trusted when it succeeds.]) ;; esac case "$gl_cv_func_getcwd_path_max" in "no, but it is partly working") AC_DEFINE([HAVE_PARTLY_WORKING_GETCWD], [1], [Define to 1 if getcwd works, except it sometimes fails when it shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT.]) ;; esac if { case "$gl_cv_func_getcwd_null" in *yes) false;; *) true;; esac; } \ || test $gl_cv_func_getcwd_posix_signature != yes \ || test "$gl_cv_func_getcwd_path_max" != yes \ || test $gl_abort_bug = yes; then REPLACE_GETCWD=1 fi ]) # Prerequisites of lib/getcwd.c, when full replacement is in effect. AC_DEFUN([gl_PREREQ_GETCWD], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO]) : ]) freedink-108.4+dfsg/gnulib/m4/progtest.m40000644000175000017500000000604012330466613015735 0ustar meme# progtest.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1996-2003, 2005, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) freedink-108.4+dfsg/gnulib/m4/relocatable.m40000644000175000017500000001075412330466613016352 0ustar meme# relocatable.m4 serial 18 dnl Copyright (C) 2003, 2005-2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl gl_RELOCATABLE([RELOCWRAPPER-DIR]) dnl ---------------------------------------------------------- dnl Support for relocatable programs. dnl Supply RELOCWRAPPER-DIR as the directory where relocwrapper.c may be found. AC_DEFUN([gl_RELOCATABLE], [ AC_REQUIRE([gl_RELOCATABLE_BODY]) gl_RELOCATABLE_LIBRARY : ${RELOCATABLE_CONFIG_H_DIR='$(top_builddir)'} RELOCATABLE_SRC_DIR="\$(top_srcdir)/$gl_source_base" RELOCATABLE_BUILD_DIR="\$(top_builddir)/$gl_source_base" ]) dnl The guts of gl_RELOCATABLE. Needs to be expanded only once. AC_DEFUN([gl_RELOCATABLE_BODY], [ AC_REQUIRE([AC_PROG_INSTALL]) dnl This AC_BEFORE invocation leads to unjustified autoconf warnings dnl when gl_RELOCATABLE_BODY is invoked more than once. dnl We need this AC_BEFORE because AC_PROG_INSTALL is documented to dnl overwrite earlier settings of INSTALL and INSTALL_PROGRAM (even dnl though in autoconf-2.52..2.60 it doesn't do so), but we want this dnl macro's setting of INSTALL_PROGRAM to persist. AC_BEFORE([AC_PROG_INSTALL],[gl_RELOCATABLE_BODY]) AC_REQUIRE([AC_LIB_LIBPATH]) AC_REQUIRE([gl_RELOCATABLE_LIBRARY_BODY]) is_noop=no use_elf_origin_trick=no use_wrapper=no if test $RELOCATABLE = yes; then # --enable-relocatable implies --disable-rpath enable_rpath=no AC_CHECK_HEADERS([mach-o/dyld.h]) AC_CHECK_FUNCS([_NSGetExecutablePath]) case "$host_os" in mingw*) is_noop=yes ;; linux* | kfreebsd*) use_elf_origin_trick=yes ;; esac if test $is_noop = yes; then RELOCATABLE_LDFLAGS=: AC_SUBST([RELOCATABLE_LDFLAGS]) else if test $use_elf_origin_trick = yes; then dnl Use the dynamic linker's support for relocatable programs. case "$ac_aux_dir" in /*) reloc_ldflags="$ac_aux_dir/reloc-ldflags" ;; *) reloc_ldflags="\$(top_builddir)/$ac_aux_dir/reloc-ldflags" ;; esac RELOCATABLE_LDFLAGS="\"$reloc_ldflags\" \"\$(host)\" \"\$(RELOCATABLE_LIBRARY_PATH)\"" AC_SUBST([RELOCATABLE_LDFLAGS]) else use_wrapper=yes dnl Unfortunately we cannot define INSTALL_PROGRAM to a command dnl consisting of more than one word - libtool doesn't support this. dnl So we abuse the INSTALL_PROGRAM_ENV hook, originally meant for the dnl 'install-strip' target. INSTALL_PROGRAM_ENV="RELOC_LIBRARY_PATH_VAR=\"$shlibpath_var\" RELOC_LIBRARY_PATH_VALUE=\"\$(RELOCATABLE_LIBRARY_PATH)\" RELOC_PREFIX=\"\$(prefix)\" RELOC_DESTDIR=\"\$(DESTDIR)\" RELOC_COMPILE_COMMAND=\"\$(CC) \$(CPPFLAGS) \$(CFLAGS) \$(LDFLAGS)\" RELOC_SRCDIR=\"\$(RELOCATABLE_SRC_DIR)\" RELOC_BUILDDIR=\"\$(RELOCATABLE_BUILD_DIR)\" RELOC_CONFIG_H_DIR=\"\$(RELOCATABLE_CONFIG_H_DIR)\" RELOC_EXEEXT=\"\$(EXEEXT)\" RELOC_STRIP_PROG=\"\$(RELOCATABLE_STRIP)\" RELOC_INSTALL_PROG=\"$INSTALL_PROGRAM\"" AC_SUBST([INSTALL_PROGRAM_ENV]) case "$ac_aux_dir" in /*) INSTALL_PROGRAM="$ac_aux_dir/install-reloc" ;; *) INSTALL_PROGRAM="\$(top_builddir)/$ac_aux_dir/install-reloc" ;; esac fi fi fi AM_CONDITIONAL([RELOCATABLE_VIA_LD], [test $is_noop = yes || test $use_elf_origin_trick = yes]) AM_CONDITIONAL([RELOCATABLE_VIA_WRAPPER], [test $use_wrapper = yes]) dnl RELOCATABLE_LIBRARY_PATH can be set in configure.ac. Default is empty. AC_SUBST([RELOCATABLE_LIBRARY_PATH]) AC_SUBST([RELOCATABLE_CONFIG_H_DIR]) AC_SUBST([RELOCATABLE_SRC_DIR]) AC_SUBST([RELOCATABLE_BUILD_DIR]) dnl Ensure RELOCATABLE_STRIP is defined in Makefiles (at least those dnl generated by automake), with value ':'. RELOCATABLE_STRIP=':' AC_SUBST([RELOCATABLE_STRIP]) ]) dnl Determine the platform dependent parameters needed to use relocatability: dnl shlibpath_var. AC_DEFUN([AC_LIB_LIBPATH], [ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library path variable], [acl_cv_libpath], [ LD="$LD" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.libpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_libpath=${acl_cv_shlibpath_var:-none} ]) shlibpath_var="$acl_cv_shlibpath_var" ]) freedink-108.4+dfsg/gnulib/m4/rewinddir.m40000644000175000017500000000070212330466613016054 0ustar meme# rewinddir.m4 serial 1 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_REWINDDIR], [ AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) AC_CHECK_FUNCS([rewinddir]) if test $ac_cv_func_rewinddir = no; then HAVE_REWINDDIR=0 fi ]) freedink-108.4+dfsg/gnulib/m4/msvc-nothrow.m40000644000175000017500000000053012330466613016532 0ustar meme# msvc-nothrow.m4 serial 1 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_NOTHROW], [ AC_REQUIRE([gl_MSVC_INVAL]) ]) freedink-108.4+dfsg/gnulib/m4/xgetcwd.m40000644000175000017500000000046312330466613015536 0ustar meme#serial 8 dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_XGETCWD], [ : ]) freedink-108.4+dfsg/gnulib/m4/opendir.m40000644000175000017500000000133612330466613015531 0ustar meme# opendir.m4 serial 2 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_OPENDIR], [ AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) AC_CHECK_FUNCS([opendir]) if test $ac_cv_func_opendir = no; then HAVE_OPENDIR=0 fi dnl Replace opendir() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then if test $HAVE_OPENDIR = 1; then REPLACE_OPENDIR=1 fi fi ]) ]) freedink-108.4+dfsg/gnulib/m4/stat.m40000644000175000017500000000521412330466613015043 0ustar meme# serial 11 # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STAT], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([lstat]) dnl mingw is the only known platform where stat(".") and stat("./") differ AC_CACHE_CHECK([whether stat handles trailing slashes on directories], [gl_cv_func_stat_dir_slash], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[struct stat st; return stat (".", &st) != stat ("./", &st);]])], [gl_cv_func_stat_dir_slash=yes], [gl_cv_func_stat_dir_slash=no], [case $host_os in mingw*) gl_cv_func_stat_dir_slash="guessing no";; *) gl_cv_func_stat_dir_slash="guessing yes";; esac])]) dnl AIX 7.1, Solaris 9, mingw64 mistakenly succeed on stat("file/"). dnl (For mingw, this is due to a broken stat() override in libmingwex.a.) dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/"). AC_CACHE_CHECK([whether stat handles trailing slashes on files], [gl_cv_func_stat_file_slash], [touch conftest.tmp # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then ln -s conftest.tmp conftest.lnk fi AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[int result = 0; struct stat st; if (!stat ("conftest.tmp/", &st)) result |= 1; #if HAVE_LSTAT if (!stat ("conftest.lnk/", &st)) result |= 2; #endif return result; ]])], [gl_cv_func_stat_file_slash=yes], [gl_cv_func_stat_file_slash=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_stat_file_slash="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_stat_file_slash="guessing no" ;; esac ]) rm -f conftest.tmp conftest.lnk]) case $gl_cv_func_stat_dir_slash in *no) REPLACE_STAT=1 AC_DEFINE([REPLACE_FUNC_STAT_DIR], [1], [Define to 1 if stat needs help when passed a directory name with a trailing slash]);; esac case $gl_cv_func_stat_file_slash in *no) REPLACE_STAT=1 AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs help when passed a file name with a trailing slash]);; esac ]) # Prerequisites of lib/stat.c. AC_DEFUN([gl_PREREQ_STAT], [:]) freedink-108.4+dfsg/gnulib/m4/canonicalize.m40000644000175000017500000000717112330466613016533 0ustar meme# canonicalize.m4 serial 26 dnl Copyright (C) 2003-2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Provides canonicalize_file_name and canonicalize_filename_mode, but does # not provide or fix realpath. AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([canonicalize_file_name]) AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) AC_REQUIRE([gl_FUNC_REALPATH_WORKS]) if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_CANONICALIZE_FILE_NAME=1 ;; esac fi ]) # Provides canonicalize_file_name and realpath. AC_DEFUN([gl_CANONICALIZE_LGPL], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE]) if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 if test $ac_cv_func_realpath = no; then HAVE_REALPATH=0 else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_REALPATH=1 ;; esac fi else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_CANONICALIZE_FILE_NAME=1 REPLACE_REALPATH=1 ;; esac fi ]) # Like gl_CANONICALIZE_LGPL, except prepare for separate compilation # (no REPLACE_CANONICALIZE_FILE_NAME, no REPLACE_REALPATH, no AC_LIBOBJ). AC_DEFUN([gl_CANONICALIZE_LGPL_SEPARATE], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([canonicalize_file_name getcwd readlink]) AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) AC_REQUIRE([gl_FUNC_REALPATH_WORKS]) AC_CHECK_HEADERS_ONCE([sys/param.h]) ]) # Check whether realpath works. Assume that if a platform has both # realpath and canonicalize_file_name, but the former is broken, then # so is the latter. AC_DEFUN([gl_FUNC_REALPATH_WORKS], [ AC_CHECK_FUNCS_ONCE([realpath]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether realpath works], [gl_cv_func_realpath_works], [ touch conftest.a mkdir conftest.d AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ ]GL_NOCRASH[ #include #include ]], [[ int result = 0; { char *name = realpath ("conftest.a", NULL); if (!(name && *name == '/')) result |= 1; } { char *name = realpath ("conftest.b/../conftest.a", NULL); if (name != NULL) result |= 2; } { char *name = realpath ("conftest.a/", NULL); if (name != NULL) result |= 4; } { char *name1 = realpath (".", NULL); char *name2 = realpath ("conftest.d//./..", NULL); if (strcmp (name1, name2) != 0) result |= 8; } return result; ]]) ], [gl_cv_func_realpath_works=yes], [gl_cv_func_realpath_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_realpath_works="guessing no" ;; esac ]) rm -rf conftest.a conftest.d ]) case "$gl_cv_func_realpath_works" in *yes) AC_DEFINE([FUNC_REALPATH_WORKS], [1], [Define to 1 if realpath() can malloc memory, always gives an absolute path, and handles trailing slash correctly.]) ;; esac ]) freedink-108.4+dfsg/gnulib/m4/getcwd-abort-bug.m40000644000175000017500000001016612330466613017227 0ustar meme# serial 7 # Determine whether getcwd aborts when the length of the working directory # name is unusually large. Any length between 4k and 16k trigger the bug # when using glibc-2.4.90-9 or older. # Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # From Jim Meyering # gl_FUNC_GETCWD_ABORT_BUG([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) AC_DEFUN([gl_FUNC_GETCWD_ABORT_BUG], [ AC_CHECK_DECLS_ONCE([getcwd]) AC_CHECK_HEADERS_ONCE([unistd.h]) AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ]) AC_CHECK_FUNCS([getpagesize]) AC_CACHE_CHECK([whether getcwd aborts when 4k < cwd_length < 16k], gl_cv_func_getcwd_abort_bug, [# Remove any remnants of a previous test. rm -rf confdir-14B--- # Arrange for deletion of the temporary directory this test creates. ac_clean_files="$ac_clean_files confdir-14B---" dnl Please keep this in sync with tests/test-getcwd.c. AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ #include #include #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include #endif #include #include ]gl_PATHMAX_SNIPPET[ /* Don't get link errors because mkdir is redefined to rpl_mkdir. */ #undef mkdir #ifndef S_IRWXU # define S_IRWXU 0700 #endif /* FIXME: skip the run-test altogether on systems without getpagesize. */ #if ! HAVE_GETPAGESIZE # define getpagesize() 0 #endif /* This size is chosen to be larger than PATH_MAX (4k), yet smaller than the 16kB pagesize on ia64 linux. Those conditions make the code below trigger a bug in glibc's getcwd implementation before 2.4.90-10. */ #define TARGET_LEN (5 * 1024) int main () { char *cwd; size_t initial_cwd_len; int fail = 0; /* The bug is triggered when PATH_MAX < getpagesize (), so skip this relatively expensive and invasive test if that's not true. */ #ifdef PATH_MAX int bug_possible = PATH_MAX < getpagesize (); #else int bug_possible = 0; #endif if (! bug_possible) return 0; cwd = getcwd (NULL, 0); if (cwd == NULL) return 2; initial_cwd_len = strlen (cwd); free (cwd); if (1) { static char const dir_name[] = "confdir-14B---"; size_t desired_depth = ((TARGET_LEN - 1 - initial_cwd_len) / sizeof dir_name); size_t d; for (d = 0; d < desired_depth; d++) { if (mkdir (dir_name, S_IRWXU) < 0 || chdir (dir_name) < 0) { if (! (errno == ERANGE || errno == ENAMETOOLONG || errno == ENOENT)) fail = 3; /* Unable to construct deep hierarchy. */ break; } } /* If libc has the bug in question, this invocation of getcwd results in a failed assertion. */ cwd = getcwd (NULL, 0); if (cwd == NULL) fail = 4; /* getcwd didn't assert, but it failed for a long name where the answer could have been learned. */ free (cwd); /* Call rmdir first, in case the above chdir failed. */ rmdir (dir_name); while (0 < d--) { if (chdir ("..") < 0) { fail = 5; break; } rmdir (dir_name); } } return fail; } ]])], [gl_cv_func_getcwd_abort_bug=no], [dnl An abort will provoke an exit code of something like 134 (128 + 6). dnl An exit code of 4 can also occur (in OpenBSD 4.9, NetBSD 5.1 for dnl example): getcwd (NULL, 0) fails rather than returning a string dnl longer than PATH_MAX. This may be POSIX compliant (in some dnl interpretations of POSIX). But gnulib's getcwd module wants to dnl provide a non-NULL value in this case. ret=$? if test $ret -ge 128 || test $ret = 4; then gl_cv_func_getcwd_abort_bug=yes else gl_cv_func_getcwd_abort_bug=no fi], [gl_cv_func_getcwd_abort_bug=yes]) ]) AS_IF([test $gl_cv_func_getcwd_abort_bug = yes], [$1], [$2]) ]) freedink-108.4+dfsg/gnulib/m4/dup.m40000644000175000017500000000135312330466613014660 0ustar meme# dup.m4 serial 3 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_DUP], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_MSVC_INVAL]) if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_DUP=1 fi dnl Replace dup() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then REPLACE_DUP=1 fi ]) ]) # Prerequisites of lib/dup.c. AC_DEFUN([gl_PREREQ_DUP], [:]) freedink-108.4+dfsg/gnulib/m4/stdbool.m40000644000175000017500000000637112330466613015543 0ustar meme# Check for stdbool.h that conforms to C99. dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. #serial 5 # Prepare for substituting if it is not supported. AC_DEFUN([AM_STDBOOL_H], [ AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) # Define two additional variables used in the Makefile substitution. if test "$ac_cv_header_stdbool_h" = yes; then STDBOOL_H='' else STDBOOL_H='stdbool.h' fi AC_SUBST([STDBOOL_H]) AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"]) if test "$ac_cv_type__Bool" = yes; then HAVE__BOOL=1 else HAVE__BOOL=0 fi AC_SUBST([HAVE__BOOL]) ]) # AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future. AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H]) # This version of the macro is needed in autoconf <= 2.68. AC_DEFUN([AC_CHECK_HEADER_STDBOOL], [AC_CACHE_CHECK([for stdbool.h that conforms to C99], [ac_cv_header_stdbool_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; /* See body of main program for 'e'. */ char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; ]], [[ bool e = &s; *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ]])], [ac_cv_header_stdbool_h=yes], [ac_cv_header_stdbool_h=no])]) AC_CHECK_TYPES([_Bool]) ]) freedink-108.4+dfsg/gnulib/m4/malloca.m40000644000175000017500000000110112330466613015467 0ustar meme# malloca.m4 serial 1 dnl Copyright (C) 2003-2004, 2006-2007, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MALLOCA], [ dnl Use the autoconf tests for alloca(), but not the AC_SUBSTed variables dnl @ALLOCA@ and @LTALLOCA@. dnl gl_FUNC_ALLOCA dnl Already brought in by the module dependencies. AC_REQUIRE([gl_EEMALLOC]) AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) ]) freedink-108.4+dfsg/gnulib/m4/absolute-header.m40000644000175000017500000001034712330466613017137 0ustar meme# absolute-header.m4 serial 16 dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Derek Price. # gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...) # --------------------------------------- # Find the absolute name of a header file, testing first if the header exists. # If the header were sys/inttypes.h, this macro would define # ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h # in config.h # (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"'). # The three "///" are to pacify Sun C 5.8, which otherwise would say # "warning: #include of /usr/include/... may be non-portable". # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. # Note: This macro assumes that the header file is not empty after # preprocessing, i.e. it does not only define preprocessor macros but also # provides some type/enum definitions or function/variable declarations. AC_DEFUN([gl_ABSOLUTE_HEADER], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_PREPROC_REQUIRE()dnl dnl FIXME: gl_absolute_header and ac_header_exists must be used unquoted dnl until we can assume autoconf 2.64 or newer. m4_foreach_w([gl_HEADER_NAME], [$1], [AS_VAR_PUSHDEF([gl_absolute_header], [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>], m4_defn([gl_absolute_header]), [AS_VAR_PUSHDEF([ac_header_exists], [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl if test AS_VAR_GET(ac_header_exists) = yes; then gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME])) fi AS_VAR_POPDEF([ac_header_exists])dnl ])dnl AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])), ["AS_VAR_GET(gl_absolute_header)"], [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.]) AS_VAR_POPDEF([gl_absolute_header])dnl ])dnl ])# gl_ABSOLUTE_HEADER # gl_ABSOLUTE_HEADER_ONE(HEADER) # ------------------------------ # Like gl_ABSOLUTE_HEADER, except that: # - it assumes that the header exists, # - it uses the current CPPFLAGS, # - it does not cache the result, # - it is silent. AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])]) dnl AIX "xlc -E" and "cc -E" omit #line directives for header files dnl that contain only a #include of other header files and no dnl non-comment tokens of their own. This leads to a failure to dnl detect the absolute name of , , dnl and others. The workaround is to force preservation of comments dnl through option -C. This ensures all necessary #line directives dnl are present. GCC supports option -C as well. case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac changequote(,) case "$host_os" in mingw*) dnl For the sake of native Windows compilers (excluding gcc), dnl treat backslash as a directory separator, like /. dnl Actually, these compilers use a double-backslash as dnl directory separator, inside the dnl # line "filename" dnl directives. gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac dnl A sed expression that turns a string into a basic regular dnl expression, for use within "/.../". gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo '$1' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' changequote([,]) dnl eval is necessary to expand gl_absname_cpp. dnl Ultrix and Pyramid sh refuse to redirect output of eval, dnl so use subshell. AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]), [`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | sed -n "$gl_absolute_header_sed"`]) ]) freedink-108.4+dfsg/gnulib/m4/intlmacosx.m40000644000175000017500000000475312330466613016260 0ustar meme# intlmacosx.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2004-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in Mac OS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) freedink-108.4+dfsg/gnulib/m4/sys_stat_h.m40000644000175000017500000000723612330466613016256 0ustar meme# sys_stat_h.m4 serial 28 -*- Autoconf -*- dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Eric Blake. dnl Provide a GNU-like . AC_DEFUN([gl_HEADER_SYS_STAT_H], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) dnl Check for broken stat macros. AC_REQUIRE([AC_HEADER_STAT]) gl_CHECK_NEXT_HEADERS([sys/stat.h]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to override 'struct stat'. m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_ST_SIZE=0 ]) AC_SUBST([WINDOWS_64_BIT_ST_SIZE]) if test $WINDOWS_64_BIT_ST_SIZE = 1; then AC_DEFINE([_GL_WINDOWS_64_BIT_ST_SIZE], [1], [Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct stat.st_size becomes 64-bit.]) fi dnl Define types that are supposed to be defined in or dnl . AC_CHECK_TYPE([nlink_t], [], [AC_DEFINE([nlink_t], [int], [Define to the type of st_nlink in struct stat, or a supertype.])], [#include #include ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat]) ]) # gl_HEADER_SYS_STAT_H AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_SYS_STAT_H_DEFAULTS], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR GNULIB_FCHMODAT=0; AC_SUBST([GNULIB_FCHMODAT]) GNULIB_FSTAT=0; AC_SUBST([GNULIB_FSTAT]) GNULIB_FSTATAT=0; AC_SUBST([GNULIB_FSTATAT]) GNULIB_FUTIMENS=0; AC_SUBST([GNULIB_FUTIMENS]) GNULIB_LCHMOD=0; AC_SUBST([GNULIB_LCHMOD]) GNULIB_LSTAT=0; AC_SUBST([GNULIB_LSTAT]) GNULIB_MKDIRAT=0; AC_SUBST([GNULIB_MKDIRAT]) GNULIB_MKFIFO=0; AC_SUBST([GNULIB_MKFIFO]) GNULIB_MKFIFOAT=0; AC_SUBST([GNULIB_MKFIFOAT]) GNULIB_MKNOD=0; AC_SUBST([GNULIB_MKNOD]) GNULIB_MKNODAT=0; AC_SUBST([GNULIB_MKNODAT]) GNULIB_STAT=0; AC_SUBST([GNULIB_STAT]) GNULIB_UTIMENSAT=0; AC_SUBST([GNULIB_UTIMENSAT]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FCHMODAT=1; AC_SUBST([HAVE_FCHMODAT]) HAVE_FSTATAT=1; AC_SUBST([HAVE_FSTATAT]) HAVE_FUTIMENS=1; AC_SUBST([HAVE_FUTIMENS]) HAVE_LCHMOD=1; AC_SUBST([HAVE_LCHMOD]) HAVE_LSTAT=1; AC_SUBST([HAVE_LSTAT]) HAVE_MKDIRAT=1; AC_SUBST([HAVE_MKDIRAT]) HAVE_MKFIFO=1; AC_SUBST([HAVE_MKFIFO]) HAVE_MKFIFOAT=1; AC_SUBST([HAVE_MKFIFOAT]) HAVE_MKNOD=1; AC_SUBST([HAVE_MKNOD]) HAVE_MKNODAT=1; AC_SUBST([HAVE_MKNODAT]) HAVE_UTIMENSAT=1; AC_SUBST([HAVE_UTIMENSAT]) REPLACE_FSTAT=0; AC_SUBST([REPLACE_FSTAT]) REPLACE_FSTATAT=0; AC_SUBST([REPLACE_FSTATAT]) REPLACE_FUTIMENS=0; AC_SUBST([REPLACE_FUTIMENS]) REPLACE_LSTAT=0; AC_SUBST([REPLACE_LSTAT]) REPLACE_MKDIR=0; AC_SUBST([REPLACE_MKDIR]) REPLACE_MKFIFO=0; AC_SUBST([REPLACE_MKFIFO]) REPLACE_MKNOD=0; AC_SUBST([REPLACE_MKNOD]) REPLACE_STAT=0; AC_SUBST([REPLACE_STAT]) REPLACE_UTIMENSAT=0; AC_SUBST([REPLACE_UTIMENSAT]) ]) freedink-108.4+dfsg/gnulib/m4/lib-ld.m40000644000175000017500000000714312330466613015236 0ustar meme# lib-ld.m4 serial 6 dnl Copyright (C) 1996-2003, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL([acl_cv_path_LD], [if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 to declare asprintf() and vasprintf(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) ]) # Prerequisites of lib/vasprintf.c. AC_DEFUN([gl_PREREQ_VASPRINTF], [ ]) # Prerequisites of lib/asprintf.c. AC_DEFUN([gl_PREREQ_ASPRINTF], [ ]) freedink-108.4+dfsg/gnulib/m4/realloc.m40000644000175000017500000000475312330466613015520 0ustar meme# realloc.m4 serial 13 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. m4_version_prereq([2.70], [] ,[ # This is taken from the following Autoconf patch: # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 AC_DEFUN([_AC_FUNC_REALLOC_IF], [ AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CHECK_HEADERS([stdlib.h]) AC_CACHE_CHECK([for GNU libc compatible realloc], [ac_cv_func_realloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *realloc (); #endif ]], [[return ! realloc (0, 0);]]) ], [ac_cv_func_realloc_0_nonnull=yes], [ac_cv_func_realloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* \ | hpux* | solaris* | cygwin* | mingw*) ac_cv_func_realloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_realloc_0_nonnull=no ;; esac ]) ]) AS_IF([test $ac_cv_func_realloc_0_nonnull = yes], [$1], [$2]) ])# AC_FUNC_REALLOC ]) # gl_FUNC_REALLOC_GNU # ------------------- # Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace # realloc if it is not. AC_DEFUN([gl_FUNC_REALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl _AC_FUNC_REALLOC_IF is defined in Autoconf. _AC_FUNC_REALLOC_IF( [AC_DEFINE([HAVE_REALLOC_GNU], [1], [Define to 1 if your system has a GNU libc compatible 'realloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_REALLOC_GNU], [0]) REPLACE_REALLOC=1 ]) ])# gl_FUNC_REALLOC_GNU # gl_FUNC_REALLOC_POSIX # --------------------- # Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it # fails), and replace realloc if it is not. AC_DEFUN([gl_FUNC_REALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) if test $gl_cv_func_malloc_posix = yes; then AC_DEFINE([HAVE_REALLOC_POSIX], [1], [Define if the 'realloc' function is POSIX compliant.]) else REPLACE_REALLOC=1 fi ]) freedink-108.4+dfsg/gnulib/m4/sys_time_h.m40000644000175000017500000000734112330466613016236 0ustar meme# Configure a replacement for . # serial 8 # Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert and Martin Lambers. AC_DEFUN([gl_HEADER_SYS_TIME_H], [ dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1 dnl statements that occur in other macros. AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY]) ]) AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) gl_CHECK_NEXT_HEADERS([sys/time.h]) if test $ac_cv_header_sys_time_h != yes; then HAVE_SYS_TIME_H=0 fi dnl On native Windows with MSVC, 'struct timeval' is defined in dnl only. So include that header in the list. gl_PREREQ_SYS_H_WINSOCK2 AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif ]], [[static struct timeval x; x.tv_sec = x.tv_usec;]])], [gl_cv_sys_struct_timeval=yes], [gl_cv_sys_struct_timeval=no]) ]) if test $gl_cv_sys_struct_timeval != yes; then HAVE_STRUCT_TIMEVAL=0 else dnl On native Windows with a 64-bit 'time_t', 'struct timeval' is defined dnl (in and for mingw64, in only dnl for MSVC) with a tv_sec field of type 'long' (32-bit!), which is dnl smaller than the 'time_t' type mandated by POSIX. dnl On OpenBSD 5.1 amd64, tv_sec is 64 bits and time_t 32 bits, but dnl that is good enough. AC_CACHE_CHECK([for wide-enough struct timeval.tv_sec member], [gl_cv_sys_struct_timeval_tv_sec], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif ]], [[static struct timeval x; typedef int verify_tv_sec_type[ sizeof (time_t) <= sizeof x.tv_sec ? 1 : -1 ]; ]])], [gl_cv_sys_struct_timeval_tv_sec=yes], [gl_cv_sys_struct_timeval_tv_sec=no]) ]) if test $gl_cv_sys_struct_timeval_tv_sec != yes; then REPLACE_STRUCT_TIMEVAL=1 fi fi dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_SYS_TIME_H # include #endif #include ]], [gettimeofday]) ]) AC_DEFUN([gl_SYS_TIME_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS], [ GNULIB_GETTIMEOFDAY=0; AC_SUBST([GNULIB_GETTIMEOFDAY]) dnl Assume POSIX behavior unless another module says otherwise. HAVE_GETTIMEOFDAY=1; AC_SUBST([HAVE_GETTIMEOFDAY]) HAVE_STRUCT_TIMEVAL=1; AC_SUBST([HAVE_STRUCT_TIMEVAL]) HAVE_SYS_TIME_H=1; AC_SUBST([HAVE_SYS_TIME_H]) REPLACE_GETTIMEOFDAY=0; AC_SUBST([REPLACE_GETTIMEOFDAY]) REPLACE_STRUCT_TIMEVAL=0; AC_SUBST([REPLACE_STRUCT_TIMEVAL]) ]) freedink-108.4+dfsg/gnulib/m4/po.m40000644000175000017500000004504112330466613014510 0ustar meme# po.m4 serial 21 (gettext-0.18.3) dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.60]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_SED])dnl AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" tab=`printf '\t'` if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" < ]], [fcntl openat]) ]) AC_DEFUN([gl_FCNTL_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_FCNTL_H_DEFAULTS], [ GNULIB_FCNTL=0; AC_SUBST([GNULIB_FCNTL]) GNULIB_NONBLOCKING=0; AC_SUBST([GNULIB_NONBLOCKING]) GNULIB_OPEN=0; AC_SUBST([GNULIB_OPEN]) GNULIB_OPENAT=0; AC_SUBST([GNULIB_OPENAT]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FCNTL=1; AC_SUBST([HAVE_FCNTL]) HAVE_OPENAT=1; AC_SUBST([HAVE_OPENAT]) REPLACE_FCNTL=0; AC_SUBST([REPLACE_FCNTL]) REPLACE_OPEN=0; AC_SUBST([REPLACE_OPEN]) REPLACE_OPENAT=0; AC_SUBST([REPLACE_OPENAT]) ]) freedink-108.4+dfsg/gnulib/m4/double-slash-root.m40000644000175000017500000000312512330466613017432 0ustar meme# double-slash-root.m4 serial 4 -*- Autoconf -*- dnl Copyright (C) 2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_DOUBLE_SLASH_ROOT], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether // is distinct from /], [gl_cv_double_slash_root], [ if test x"$cross_compiling" = xyes ; then # When cross-compiling, there is no way to tell whether // is special # short of a list of hosts. However, the only known hosts to date # that have a distinct // are Apollo DomainOS (too old to port to), # Cygwin, and z/OS. If anyone knows of another system for which // has # special semantics and is distinct from /, please report it to # . case $host in *-cygwin | i370-ibm-openedition) gl_cv_double_slash_root=yes ;; *) # Be optimistic and assume that / and // are the same when we # don't know. gl_cv_double_slash_root='unknown, assuming no' ;; esac else set x `ls -di / // 2>/dev/null` if test "$[2]" = "$[4]" && wc //dev/null >/dev/null 2>&1; then gl_cv_double_slash_root=no else gl_cv_double_slash_root=yes fi fi]) if test "$gl_cv_double_slash_root" = yes; then AC_DEFINE([DOUBLE_SLASH_IS_DISTINCT_ROOT], [1], [Define to 1 if // is a file system root distinct from /.]) fi ]) freedink-108.4+dfsg/gnulib/m4/alloca.m40000644000175000017500000001037212330466613015324 0ustar meme# alloca.m4 serial 14 dnl Copyright (C) 2002-2004, 2006-2007, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_ALLOCA], [ AC_REQUIRE([AC_FUNC_ALLOCA]) if test $ac_cv_func_alloca_works = no; then gl_PREREQ_ALLOCA fi # Define an additional variable used in the Makefile substitution. if test $ac_cv_working_alloca_h = yes; then AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [ AC_EGREP_CPP([Need own alloca], [ #if defined __GNUC__ || defined _AIX || defined _MSC_VER Need own alloca #endif ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no]) ]) if test $gl_cv_rpl_alloca = yes; then dnl OK, alloca can be implemented through a compiler built-in. AC_DEFINE([HAVE_ALLOCA], [1], [Define to 1 if you have 'alloca' after including , a header that may be supplied by this distribution.]) ALLOCA_H=alloca.h else dnl alloca exists as a library function, i.e. it is slow and probably dnl a memory leak. Don't define HAVE_ALLOCA in this case. ALLOCA_H= fi else ALLOCA_H=alloca.h fi AC_SUBST([ALLOCA_H]) AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"]) ]) # Prerequisites of lib/alloca.c. # STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. AC_DEFUN([gl_PREREQ_ALLOCA], [:]) # This works around a bug in autoconf <= 2.68. # See . m4_version_prereq([2.69], [] ,[ # This is taken from the following Autoconf patch: # http://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497 # _AC_LIBOBJ_ALLOCA # ----------------- # Set up the LIBOBJ replacement of 'alloca'. Well, not exactly # AC_LIBOBJ since we actually set the output variable 'ALLOCA'. # Nevertheless, for Automake, AC_LIBSOURCES it. m4_define([_AC_LIBOBJ_ALLOCA], [# The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. AC_LIBSOURCES(alloca.c) AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.]) AC_CACHE_CHECK(whether 'alloca.c' needs Cray hooks, ac_cv_os_cray, [AC_EGREP_CPP(webecray, [#if defined CRAY && ! defined CRAY2 webecray #else wenotbecray #endif ], ac_cv_os_cray=yes, ac_cv_os_cray=no)]) if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do AC_CHECK_FUNC($ac_func, [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func, [Define to one of '_getb67', 'GETB67', 'getb67' for Cray-2 and Cray-YMP systems. This function is required for 'alloca.c' support on those systems.]) break]) done fi AC_CACHE_CHECK([stack direction for C alloca], [ac_cv_c_stack_direction], [AC_RUN_IFELSE([AC_LANG_SOURCE( [AC_INCLUDES_DEFAULT int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; }])], [ac_cv_c_stack_direction=1], [ac_cv_c_stack_direction=-1], [ac_cv_c_stack_direction=0])]) AH_VERBATIM([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ @%:@undef STACK_DIRECTION])dnl AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) ])# _AC_LIBOBJ_ALLOCA ]) freedink-108.4+dfsg/gnulib/m4/eealloc.m40000644000175000017500000000166712330466613015504 0ustar meme# eealloc.m4 serial 3 dnl Copyright (C) 2003, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_EEALLOC], [ AC_REQUIRE([gl_EEMALLOC]) AC_REQUIRE([gl_EEREALLOC]) ]) AC_DEFUN([gl_EEMALLOC], [ _AC_FUNC_MALLOC_IF( [gl_cv_func_malloc_0_nonnull=1], [gl_cv_func_malloc_0_nonnull=0]) AC_DEFINE_UNQUOTED([MALLOC_0_IS_NONNULL], [$gl_cv_func_malloc_0_nonnull], [If malloc(0) is != NULL, define this to 1. Otherwise define this to 0.]) ]) AC_DEFUN([gl_EEREALLOC], [ _AC_FUNC_REALLOC_IF( [gl_cv_func_realloc_0_nonnull=1], [gl_cv_func_realloc_0_nonnull=0]) AC_DEFINE_UNQUOTED([REALLOC_0_IS_NONNULL], [$gl_cv_func_realloc_0_nonnull], [If realloc(NULL,0) is != NULL, define this to 1. Otherwise define this to 0.]) ]) freedink-108.4+dfsg/gnulib/m4/dirname.m40000644000175000017500000000105412330466613015505 0ustar meme#serial 10 -*- autoconf -*- dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_DIRNAME], [ AC_REQUIRE([gl_DIRNAME_LGPL]) ]) AC_DEFUN([gl_DIRNAME_LGPL], [ dnl Prerequisites of lib/dirname.h. AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) dnl No prerequisites of lib/basename-lgpl.c, lib/dirname-lgpl.c, dnl lib/stripslash.c. ]) freedink-108.4+dfsg/gnulib/m4/intmax_t.m40000644000175000017500000000416612330466613015720 0ustar meme# intmax_t.m4 serial 8 dnl Copyright (C) 1997-2004, 2006-2007, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. AC_PREREQ([2.53]) # Define intmax_t to 'long' or 'long long' # if it is not already defined in or . AC_DEFUN([gl_AC_TYPE_INTMAX_T], [ dnl For simplicity, we assume that a header file defines 'intmax_t' if and dnl only if it defines 'uintmax_t'. AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) AC_REQUIRE([gl_AC_HEADER_STDINT_H]) if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) test $ac_cv_type_long_long_int = yes \ && ac_type='long long' \ || ac_type='long' AC_DEFINE_UNQUOTED([intmax_t], [$ac_type], [Define to long or long long if and don't define.]) else AC_DEFINE([HAVE_INTMAX_T], [1], [Define if you have the 'intmax_t' type in or .]) fi ]) dnl An alternative would be to explicitly test for 'intmax_t'. AC_DEFUN([gt_AC_TYPE_INTMAX_T], [ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) AC_REQUIRE([gl_AC_HEADER_STDINT_H]) AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #if HAVE_STDINT_H_WITH_UINTMAX #include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX #include #endif ]], [[intmax_t x = -1; return !x;]])], [gt_cv_c_intmax_t=yes], [gt_cv_c_intmax_t=no])]) if test $gt_cv_c_intmax_t = yes; then AC_DEFINE([HAVE_INTMAX_T], [1], [Define if you have the 'intmax_t' type in or .]) else AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) test $ac_cv_type_long_long_int = yes \ && ac_type='long long' \ || ac_type='long' AC_DEFINE_UNQUOTED([intmax_t], [$ac_type], [Define to long or long long if and don't define.]) fi ]) freedink-108.4+dfsg/gnulib/m4/extensions.m40000644000175000017500000001223712330466613016272 0ustar meme# serial 13 -*- Autoconf -*- # Enable extensions on systems that normally disable them. # Copyright (C) 2003, 2006-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git # Autoconf. Perhaps we can remove this once we can assume Autoconf # 2.70 or later everywhere, but since Autoconf mutates rapidly # enough in this area it's likely we'll need to redefine # AC_USE_SYSTEM_EXTENSIONS for quite some time. # If autoconf reports a warning # warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # the fix is # 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked # but always AC_REQUIREd, # 2) to ensure that for each occurrence of # AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) # or # AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # the corresponding gnulib module description has 'extensions' among # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS # invocation occurs in gl_EARLY, not in gl_INIT. # AC_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. # # Remember that #undef in AH_VERBATIM gets replaced with #define by # AC_DEFINE. The goal here is to define all known feature-enabling # macros, then, if reports of conflicts are made, disable macros that # cause problems on some platforms (such as __EXTENSIONS__). AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], [AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl AC_BEFORE([$0], [AC_RUN_IFELSE])dnl AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=]) if test "$MINIX" = yes; then AC_DEFINE([_POSIX_SOURCE], [1], [Define to 1 if you need to in order for 'stat' and other things to work.]) AC_DEFINE([_POSIX_1_SOURCE], [2], [Define to 2 if the system does not provide POSIX.1 features except with this defined.]) AC_DEFINE([_MINIX], [1], [Define to 1 if on MINIX.]) AC_DEFINE([_NETBSD_SOURCE], [1], [Define to 1 to make NetBSD features available. MINIX 3 needs this.]) fi dnl Use a different key than __EXTENSIONS__, as that name broke existing dnl configure.ac when using autoheader 2.62. AH_VERBATIM([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on OS X. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions if necessary. HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif ]) AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], [ac_cv_safe_to_define___extensions__], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ # define __EXTENSIONS__ 1 ]AC_INCLUDES_DEFAULT])], [ac_cv_safe_to_define___extensions__=yes], [ac_cv_safe_to_define___extensions__=no])]) test $ac_cv_safe_to_define___extensions__ = yes && AC_DEFINE([__EXTENSIONS__]) AC_DEFINE([_ALL_SOURCE]) AC_DEFINE([_DARWIN_C_SOURCE]) AC_DEFINE([_GNU_SOURCE]) AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) AC_DEFINE([_TANDEM_SOURCE]) AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], [ac_cv_should_define__xopen_source], [ac_cv_should_define__xopen_source=no AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #include mbstate_t x;]])], [], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #define _XOPEN_SOURCE 500 #include mbstate_t x;]])], [ac_cv_should_define__xopen_source=yes])])]) test $ac_cv_should_define__xopen_source = yes && AC_DEFINE([_XOPEN_SOURCE], [500]) ])# AC_USE_SYSTEM_EXTENSIONS # gl_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], [ dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS. dnl gnulib does not need it. But if it gets required by third-party macros dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE, dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck. AC_REQUIRE([AC_GNU_SOURCE]) AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) ]) freedink-108.4+dfsg/gnulib/m4/multiarch.m40000644000175000017500000000367412330466613016070 0ustar meme# multiarch.m4 serial 7 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Determine whether the compiler is or may be producing universal binaries. # # On Mac OS X 10.5 and later systems, the user can create libraries and # executables that work on multiple system types--known as "fat" or # "universal" binaries--by specifying multiple '-arch' options to the # compiler but only a single '-arch' option to the preprocessor. Like # this: # # ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ # CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ # CPP="gcc -E" CXXCPP="g++ -E" # # Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly. AC_DEFUN_ONCE([gl_MULTIARCH], [ dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. gl_cv_c_multiarch=no AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; ]])], [ dnl Check for potential -arch flags. It is not universal unless dnl there are at least two -arch flags with different values. arch= prev= for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do if test -n "$prev"; then case $word in i?86 | x86_64 | ppc | ppc64) if test -z "$arch" || test "$arch" = "$word"; then arch="$word" else gl_cv_c_multiarch=yes fi ;; esac prev= else if test "x$word" = "x-arch"; then prev=arch fi fi done ]) if test $gl_cv_c_multiarch = yes; then APPLE_UNIVERSAL_BUILD=1 else APPLE_UNIVERSAL_BUILD=0 fi AC_SUBST([APPLE_UNIVERSAL_BUILD]) ]) freedink-108.4+dfsg/gnulib/m4/wint_t.m40000644000175000017500000000203512330466613015372 0ustar meme# wint_t.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2003, 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether has the 'wint_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WINT_T], [ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #include #include wint_t foo = (wchar_t)'\0';]], [[]])], [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])]) if test $gt_cv_c_wint_t = yes; then AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) fi ]) freedink-108.4+dfsg/gnulib/m4/nls.m40000644000175000017500000000231512330466613014663 0ustar meme# nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) freedink-108.4+dfsg/gnulib/m4/stdlib_h.m40000644000175000017500000001310112330466613015652 0ustar meme# stdlib_h.m4 serial 42 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDLIB_H], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) gl_NEXT_HEADERS([stdlib.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include #if HAVE_SYS_LOADAVG_H # include #endif #if HAVE_RANDOM_H # include #endif ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt ptsname ptsname_r random random_r realpath rpmatch secure_getenv setenv setstate setstate_r srandom srandom_r strtod strtoll strtoull unlockpt unsetenv]) ]) AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_STDLIB_H_DEFAULTS], [ GNULIB__EXIT=0; AC_SUBST([GNULIB__EXIT]) GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL]) GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX]) GNULIB_CANONICALIZE_FILE_NAME=0; AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME]) GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG]) GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT]) GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT]) GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX]) GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC]) GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP]) GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP]) GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS]) GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP]) GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS]) GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT]) GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME]) GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R]) GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV]) GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM]) GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R]) GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX]) GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH]) GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH]) GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV]) GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV]) GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD]) GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL]) GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL]) GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX]) GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT]) GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV]) GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE__EXIT=1; AC_SUBST([HAVE__EXIT]) HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL]) HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME]) HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP]) HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP]) HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS]) HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT]) HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R]) HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM]) HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H]) HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV]) HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC]) REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC]) REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC]) REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH]) REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV]) REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB]) ]) freedink-108.4+dfsg/gnulib/m4/sys_socket_h.m40000644000175000017500000001416312330466613016570 0ustar meme# sys_socket_h.m4 serial 23 dnl Copyright (C) 2005-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson. AC_DEFUN([gl_HEADER_SYS_SOCKET], [ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have dnl old-style declarations (with return type 'int' instead of 'ssize_t') dnl unless _POSIX_PII_SOCKET is defined. case "$host_os" in osf*) AC_DEFINE([_POSIX_PII_SOCKET], [1], [Define to 1 in order to get the POSIX compatible declarations of socket functions.]) ;; esac AC_CACHE_CHECK([whether is self-contained], [gl_cv_header_sys_socket_h_selfcontained], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[]])], [gl_cv_header_sys_socket_h_selfcontained=yes], [gl_cv_header_sys_socket_h_selfcontained=no]) ]) if test $gl_cv_header_sys_socket_h_selfcontained = yes; then dnl If the shutdown function exists, should define dnl SHUT_RD, SHUT_WR, SHUT_RDWR. AC_CHECK_FUNCS([shutdown]) if test $ac_cv_func_shutdown = yes; then AC_CACHE_CHECK([whether defines the SHUT_* macros], [gl_cv_header_sys_socket_h_shut], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])], [gl_cv_header_sys_socket_h_shut=yes], [gl_cv_header_sys_socket_h_shut=no]) ]) if test $gl_cv_header_sys_socket_h_shut = no; then SYS_SOCKET_H='sys/socket.h' fi fi fi # We need to check for ws2tcpip.h now. gl_PREREQ_SYS_H_SOCKET AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[ /* sys/types.h is not needed according to POSIX, but the sys/socket.h in i386-unknown-freebsd4.10 and powerpc-apple-darwin5.5 required it. */ #include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) if test $ac_cv_type_struct_sockaddr_storage = no; then HAVE_STRUCT_SOCKADDR_STORAGE=0 fi if test $ac_cv_type_sa_family_t = no; then HAVE_SA_FAMILY_T=0 fi if test $ac_cv_type_struct_sockaddr_storage != no; then AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family], [], [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0], [#include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) fi if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then SYS_SOCKET_H='sys/socket.h' fi gl_PREREQ_SYS_H_WINSOCK2 dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ /* Some systems require prerequisite headers. */ #include #include ]], [socket connect accept bind getpeername getsockname getsockopt listen recv send recvfrom sendto setsockopt shutdown accept4]) ]) AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], [ dnl Check prerequisites of the replacement. AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) gl_CHECK_NEXT_HEADERS([sys/socket.h]) if test $ac_cv_header_sys_socket_h = yes; then HAVE_SYS_SOCKET_H=1 HAVE_WS2TCPIP_H=0 else HAVE_SYS_SOCKET_H=0 if test $ac_cv_header_ws2tcpip_h = yes; then HAVE_WS2TCPIP_H=1 else HAVE_WS2TCPIP_H=0 fi fi AC_SUBST([HAVE_SYS_SOCKET_H]) AC_SUBST([HAVE_WS2TCPIP_H]) ]) # Common prerequisites of the replacement and of the # replacement. # Sets and substitutes HAVE_WINSOCK2_H. AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2], [ m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])]) AC_CHECK_HEADERS_ONCE([sys/socket.h]) if test $ac_cv_header_sys_socket_h != yes; then dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make dnl the check for those headers unconditional; yet cygwin reports dnl that the headers are present but cannot be compiled (since on dnl cygwin, all socket information should come from sys/socket.h). AC_CHECK_HEADERS([winsock2.h]) fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi AC_SUBST([HAVE_WINSOCK2_H]) ]) AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], [ GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET]) GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT]) GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT]) GNULIB_BIND=0; AC_SUBST([GNULIB_BIND]) GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME]) GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME]) GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT]) GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN]) GNULIB_RECV=0; AC_SUBST([GNULIB_RECV]) GNULIB_SEND=0; AC_SUBST([GNULIB_SEND]) GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM]) GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO]) GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT]) GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN]) GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4]) HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T]) HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4]) ]) freedink-108.4+dfsg/gnulib/m4/stdint_h.m40000644000175000017500000000174312330466613015707 0ustar meme# stdint_h.m4 serial 9 dnl Copyright (C) 1997-2004, 2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_STDINT_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([gl_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[uintmax_t i = (uintmax_t) -1; return !i;]])], [gl_cv_header_stdint_h=yes], [gl_cv_header_stdint_h=no])]) if test $gl_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) freedink-108.4+dfsg/gnulib/m4/closedir.m40000644000175000017500000000134612330466613015676 0ustar meme# closedir.m4 serial 2 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_CLOSEDIR], [ AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) AC_CHECK_FUNCS([closedir]) if test $ac_cv_func_closedir = no; then HAVE_CLOSEDIR=0 fi dnl Replace closedir() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then if test $HAVE_CLOSEDIR = 1; then REPLACE_CLOSEDIR=1 fi fi ]) ]) freedink-108.4+dfsg/gnulib/m4/nocrash.m40000644000175000017500000001055512330466613015531 0ustar meme# nocrash.m4 serial 4 dnl Copyright (C) 2005, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini. AC_PREREQ([2.13]) dnl Expands to some code for use in .c programs that will cause the configure dnl test to exit instead of crashing. This is useful to avoid triggering dnl action from a background debugger and to avoid core dumps. dnl Usage: ... dnl ]GL_NOCRASH[ dnl ... dnl int main() { nocrash_init(); ... } AC_DEFUN([GL_NOCRASH],[[ #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include /* A POSIX signal handler. */ static void exception_handler (int sig) { exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif ]]) freedink-108.4+dfsg/gnulib/m4/strerror.m40000644000175000017500000000623612330466613015757 0ustar meme# strerror.m4 serial 17 dnl Copyright (C) 2002, 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRERROR], [ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_REQUIRE([gl_HEADER_ERRNO_H]) AC_REQUIRE([gl_FUNC_STRERROR_0]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS]) ]) if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then AC_CACHE_CHECK([for working strerror function], [gl_cv_func_working_strerror], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[if (!*strerror (-2)) return 1;]])], [gl_cv_func_working_strerror=yes], [gl_cv_func_working_strerror=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_working_strerror="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_working_strerror="guessing no" ;; esac ]) ]) case "$gl_cv_func_working_strerror" in *yes) ;; *) dnl The system's strerror() fails to return a string for out-of-range dnl integers. Replace it. REPLACE_STRERROR=1 ;; esac m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ dnl If the system's strerror_r or __xpg_strerror_r clobbers strerror's dnl buffer, we must replace strerror. case "$gl_cv_func_strerror_r_works" in *no) REPLACE_STRERROR=1 ;; esac ]) else dnl The system's strerror() cannot know about the new errno values we add dnl to , or any fix for strerror(0). Replace it. REPLACE_STRERROR=1 fi ]) dnl Detect if strerror(0) passes (that is, does not set errno, and does not dnl return a string that matches strerror(-1)). AC_DEFUN([gl_FUNC_STRERROR_0], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles REPLACE_STRERROR_0=0 AC_CACHE_CHECK([whether strerror(0) succeeds], [gl_cv_func_strerror_0_works], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[int result = 0; char *str; errno = 0; str = strerror (0); if (!*str) result |= 1; if (errno) result |= 2; if (strstr (str, "nknown") || strstr (str, "ndefined")) result |= 4; return result;]])], [gl_cv_func_strerror_0_works=yes], [gl_cv_func_strerror_0_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_strerror_0_works="guessing no" ;; esac ]) ]) case "$gl_cv_func_strerror_0_works" in *yes) ;; *) REPLACE_STRERROR_0=1 AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0) does not return a message implying success.]) ;; esac ]) freedink-108.4+dfsg/gnulib/m4/gnulib-common.m40000644000175000017500000004012112330466613016632 0ustar meme# gnulib-common.m4 serial 34 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # gl_COMMON # is expanded unconditionally through gnulib-tool magic. AC_DEFUN([gl_COMMON], [ dnl Use AC_REQUIRE here, so that the code is expanded once only. AC_REQUIRE([gl_00GNULIB]) AC_REQUIRE([gl_COMMON_BODY]) ]) AC_DEFUN([gl_COMMON_BODY], [ AH_VERBATIM([_Noreturn], [/* The _Noreturn keyword of C11. */ #if ! (defined _Noreturn \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif ]) AH_VERBATIM([isoc99_inline], [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif]) AH_VERBATIM([unused_parameter], [/* Define as a marker that can be attached to declarations that might not be used. This helps to reduce warnings, such as from GCC -Wunused-parameter. */ #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_UNUSED __attribute__ ((__unused__)) #else # define _GL_UNUSED #endif /* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name is a misnomer outside of parameter lists. */ #define _UNUSED_PARAMETER_ _GL_UNUSED /* The __pure__ attribute was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The __const__ attribute was added in gcc 2.95. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) #else # define _GL_ATTRIBUTE_CONST /* empty */ #endif ]) dnl Preparation for running test programs: dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not dnl to /dev/tty, so they can be redirected to log files. Such diagnostics dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. LIBC_FATAL_STDERR_=1 export LIBC_FATAL_STDERR_ ]) # gl_MODULE_INDICATOR_CONDITION # expands to a C preprocessor expression that evaluates to 1 or 0, depending # whether a gnulib module that has been requested shall be considered present # or not. m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) # gl_MODULE_INDICATOR_SET_VARIABLE([modulename]) # sets the shell variable that indicates the presence of the given module to # a C preprocessor expression that will evaluate to 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], [ gl_MODULE_INDICATOR_SET_VARIABLE_AUX( [GNULIB_[]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], [gl_MODULE_INDICATOR_CONDITION]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable]) # modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION. # The shell variable's value is a C preprocessor expression that evaluates # to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], [ m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], [ dnl Simplify the expression VALUE || 1 to 1. $1=1 ], [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], [gl_MODULE_INDICATOR_CONDITION])]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition]) # modifies the shell variable to include the given condition. The shell # variable's value is a C preprocessor expression that evaluates to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], [ dnl Simplify the expression 1 || CONDITION to 1. if test "$[]$1" != 1; then dnl Simplify the expression 0 || CONDITION to CONDITION. if test "$[]$1" = 0; then $1=$2 else $1="($[]$1 || $2)" fi fi ]) # gl_MODULE_INDICATOR([modulename]) # defines a C macro indicating the presence of the given module # in a location where it can be used. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 0 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR], [ AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [gl_MODULE_INDICATOR_CONDITION], [Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module $1 shall be considered present.]) ]) # gl_MODULE_INDICATOR_FOR_TESTS([modulename]) # defines a C macro indicating the presence of the given module # in lib or tests. This is useful to determine whether the module # should be tested. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [ AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], [Define to 1 when the gnulib module $1 should be tested.]) ]) # gl_ASSERT_NO_GNULIB_POSIXCHECK # asserts that there will never be a need to #define GNULIB_POSIXCHECK. # and thereby enables an optimization of configure and config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], [ dnl Override gl_WARN_ON_USE_PREPARE. dnl But hide this definition from 'aclocal'. AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) ]) # gl_ASSERT_NO_GNULIB_TESTS # asserts that there will be no gnulib tests in the scope of the configure.ac # and thereby enables an optimization of config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], [ dnl Override gl_MODULE_INDICATOR_FOR_TESTS. AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) ]) # Test whether exists. # Set HAVE_FEATURES_H. AC_DEFUN([gl_FEATURES_H], [ AC_CHECK_HEADERS_ONCE([features.h]) if test $ac_cv_header_features_h = yes; then HAVE_FEATURES_H=1 else HAVE_FEATURES_H=0 fi AC_SUBST([HAVE_FEATURES_H]) ]) # m4_foreach_w # is a backport of autoconf-2.59c's m4_foreach_w. # Remove this macro when we can assume autoconf >= 2.60. m4_ifndef([m4_foreach_w], [m4_define([m4_foreach_w], [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])]) # AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH]) # ---------------------------------------------------- # Backport of autoconf-2.63b's macro. # Remove this macro when we can assume autoconf >= 2.64. m4_ifndef([AS_VAR_IF], [m4_define([AS_VAR_IF], [AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])]) # gl_PROG_CC_C99 # Modifies the value of the shell variable CC in an attempt to make $CC # understand ISO C99 source code. # This is like AC_PROG_CC_C99, except that # - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60, # - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC # , # but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99 # . # Remaining problems: # - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options # to CC twice # . # - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard. AC_DEFUN([gl_PROG_CC_C99], [ dnl Change that version number to the minimum Autoconf version that supports dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls. m4_version_prereq([9.0], [AC_REQUIRE([AC_PROG_CC_C99])], [AC_REQUIRE([AC_PROG_CC_STDC])]) ]) # gl_PROG_AR_RANLIB # Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler. # The user can set the variables AR, ARFLAGS, RANLIB if he wants to override # the values. AC_DEFUN([gl_PROG_AR_RANLIB], [ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler dnl as "cc", and GCC as "gcc". They have different object file formats and dnl library formats. In particular, the GNU binutils programs ar, ranlib dnl produce libraries that work only with gcc, not with cc. AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], [ AC_EGREP_CPP([Amsterdam], [ #ifdef __ACK__ Amsterdam #endif ], [gl_cv_c_amsterdam_compiler=yes], [gl_cv_c_amsterdam_compiler=no]) ]) if test -z "$AR"; then if test $gl_cv_c_amsterdam_compiler = yes; then AR='cc -c.a' if test -z "$ARFLAGS"; then ARFLAGS='-o' fi else dnl Use the Automake-documented default values for AR and ARFLAGS, dnl but prefer ${host}-ar over ar (useful for cross-compiling). AC_CHECK_TOOL([AR], [ar], [ar]) if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi else if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi AC_SUBST([AR]) AC_SUBST([ARFLAGS]) if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' else dnl Use the ranlib program if it is available. AC_PROG_RANLIB fi fi AC_SUBST([RANLIB]) ]) # AC_PROG_MKDIR_P # is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix # for interoperability with automake-1.9.6 from autoconf-2.62. # Remove this macro when we can assume autoconf >= 2.62 or # autoconf >= 2.60 && automake >= 1.10. # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. m4_ifndef([AC_AUTOCONF_VERSION],[ m4_ifdef([AC_PROG_MKDIR_P], [ dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed. m4_define([AC_PROG_MKDIR_P], m4_defn([AC_PROG_MKDIR_P])[ AC_SUBST([MKDIR_P])])], [ dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P. AC_DEFUN_ONCE([AC_PROG_MKDIR_P], [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake MKDIR_P='$(mkdir_p)' AC_SUBST([MKDIR_P])])]) ]) # AC_C_RESTRICT # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61, # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ # works. # This definition can be removed once autoconf >= 2.62 can be assumed. # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. m4_ifndef([AC_AUTOCONF_VERSION],[ AC_DEFUN([AC_C_RESTRICT], [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], [ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; }]], [[int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t)]])], [ac_cv_c_restrict=$ac_kw]) test "$ac_cv_c_restrict" != no && break done ]) AH_VERBATIM([restrict], [/* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict, even though the corresponding Sun C compiler does, which causes "#define restrict _Restrict" in the previous line. Perhaps some future version of Sun C++ will work with _Restrict; if so, it'll probably define __RESTRICT, just as Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict #endif]) case $ac_cv_c_restrict in restrict) ;; no) AC_DEFINE([restrict], []) ;; *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; esac ]) ]) # gl_BIGENDIAN # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. # Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some # macros invoke AC_C_BIGENDIAN with arguments. AC_DEFUN([gl_BIGENDIAN], [ AC_C_BIGENDIAN ]) # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not # output a spurious "(cached)" mark in the midst of other configure output. # This macro should be used instead of AC_CACHE_VAL when it is not surrounded # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. AC_DEFUN([gl_CACHE_VAL_SILENT], [ saved_as_echo_n="$as_echo_n" as_echo_n=':' AC_CACHE_VAL([$1], [$2]) as_echo_n="$saved_as_echo_n" ]) # AS_VAR_COPY was added in autoconf 2.63b m4_define_default([AS_VAR_COPY], [AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])]) # AC_PROG_SED was added in autoconf 2.59b m4_ifndef([AC_PROG_SED], [AC_DEFUN([AC_PROG_SED], [AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED, [dnl ac_script should not contain more than 99 commands (for HP-UX sed), dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed. ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed AS_UNSET([ac_script]) if test -z "$SED"; then ac_path_SED_found=false _AS_PATH_WALK([], [ for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" AS_EXECUTABLE_P(["$ac_path_SED"]) || continue case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED=$ac_path_SED ac_path_SED_found=:;; *) ac_count=0 _AS_ECHO_N([0123456789]) >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >> conftest.nl "$ac_path_SED" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_SED_max-0}; then # Best so far, but keep looking for better ac_cv_path_SED=$ac_path_SED ac_path_SED_max=$ac_count fi test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done]) if test -z "$ac_cv_path_SED"; then AC_ERROR([no acceptable sed could be found in \$PATH]) fi else ac_cv_path_SED=$SED fi SED="$ac_cv_path_SED" AC_SUBST([SED])dnl rm -f conftest.sed ])])]) freedink-108.4+dfsg/gnulib/m4/same.m40000644000175000017500000000064512330466613015020 0ustar meme#serial 9 dnl Copyright (C) 2002-2003, 2005-2006, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Prerequisites of lib/same.c. AC_DEFUN([gl_SAME], [ AC_REQUIRE([AC_SYS_LONG_FILE_NAMES]) AC_CHECK_FUNCS_ONCE([pathconf]) ]) freedink-108.4+dfsg/gnulib/m4/gnulib-comp.m40000644000175000017500000006133512420231227016301 0ustar meme# DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the compiled summary of the specification in # gnulib-cache.m4. It lists the computed macro invocations that need # to be invoked from configure.ac. # In projects that use version control, this file can be treated like # other built files. # This macro should be invoked from ./configure.ac, in the section # "Checks for programs", right after AC_PROG_CC, and certainly before # any checks for libraries, header files, types and library functions. AC_DEFUN([gl_EARLY], [ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable AC_REQUIRE([gl_PROG_AR_RANLIB]) # Code from module absolute-header: # Code from module alloca: # Code from module alloca-opt: # Code from module allocator: # Code from module areadlink: # Code from module areadlink-with-size: # Code from module at-internal: # Code from module bitrotate: # Code from module canonicalize: # Code from module canonicalize-lgpl: # Code from module careadlinkat: # Code from module chdir: # Code from module chdir-long: # Code from module cloexec: # Code from module close: # Code from module closedir: # Code from module d-ino: # Code from module dirent: # Code from module dirfd: # Code from module dirname: # Code from module dirname-lgpl: # Code from module dosname: # Code from module double-slash-root: # Code from module dup: # Code from module dup2: # Code from module environ: # Code from module errno: # Code from module error: # Code from module exitfail: # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: # Code from module fchdir: # Code from module fcntl: # Code from module fcntl-h: # Code from module fd-hook: # Code from module fdopendir: # Code from module file-set: # Code from module filename: # Code from module filenamecat-lgpl: # Code from module float: # Code from module fstat: # Code from module fstatat: # Code from module getcwd: # Code from module getcwd-lgpl: # Code from module getdtablesize: # Code from module getopt-gnu: # Code from module getopt-posix: # Code from module gettext: # Code from module gettext-h: # Code from module gettimeofday: # Code from module hash: # Code from module hash-pjw: # Code from module hash-triple: # Code from module havelib: # Code from module include_next: # Code from module intprops: # Code from module largefile: AC_REQUIRE([AC_SYS_LARGEFILE]) # Code from module lstat: # Code from module malloc-posix: # Code from module malloca: # Code from module memchr: # Code from module mempcpy: # Code from module memrchr: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: # Code from module nocrash: # Code from module open: # Code from module openat: # Code from module openat-die: # Code from module openat-h: # Code from module opendir: # Code from module pathmax: # Code from module progname: # Code from module readdir: # Code from module readlink: # Code from module realloc-posix: # Code from module relocatable-prog: # Code from module relocatable-prog-wrapper: # Code from module rewinddir: # Code from module same: # Code from module same-inode: # Code from module save-cwd: # Code from module size_max: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stat: # Code from module stdbool: # Code from module stddef: # Code from module stdint: # Code from module stdio: # Code from module stdlib: # Code from module strcase: # Code from module strdup-posix: # Code from module strerror: # Code from module strerror-override: # Code from module string: # Code from module strings: # Code from module strndup: # Code from module strnlen: # Code from module sys_stat: # Code from module sys_time: # Code from module sys_types: # Code from module time: # Code from module unistd: # Code from module unistd-safer: # Code from module vasnprintf: # Code from module vasprintf: # Code from module verify: # Code from module wchar: # Code from module xalloc: # Code from module xalloc-die: # Code from module xalloc-oversized: # Code from module xgetcwd: # Code from module xreadlink: # Code from module xsize: # Code from module xstrndup: ]) # This macro should be invoked from ./configure.ac, in the section # "Check for header files, types and library functions". AC_DEFUN([gl_INIT], [ AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) gl_cond_libtool=false gl_libdeps= gl_ltlibdeps= gl_m4_base='gnulib/m4' m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) m4_pushdef([gl_LIBSOURCES_LIST], []) m4_pushdef([gl_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='gnulib/lib' gl_FUNC_ALLOCA AC_LIBOBJ([openat-proc]) gl_FUNC_CANONICALIZE_FILENAME_MODE gl_MODULE_INDICATOR([canonicalize]) gl_MODULE_INDICATOR_FOR_TESTS([canonicalize]) gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name]) gl_CANONICALIZE_LGPL if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1; then AC_LIBOBJ([canonicalize-lgpl]) fi gl_MODULE_INDICATOR([canonicalize-lgpl]) gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name]) gl_STDLIB_MODULE_INDICATOR([realpath]) AC_CHECK_FUNCS_ONCE([readlinkat]) gl_UNISTD_MODULE_INDICATOR([chdir]) gl_FUNC_CHDIR_LONG if test $gl_cv_have_arbitrary_file_name_length_limit = yes; then AC_LIBOBJ([chdir-long]) gl_PREREQ_CHDIR_LONG fi gl_MODULE_INDICATOR_FOR_TESTS([cloexec]) gl_FUNC_CLOSE if test $REPLACE_CLOSE = 1; then AC_LIBOBJ([close]) fi gl_UNISTD_MODULE_INDICATOR([close]) gl_FUNC_CLOSEDIR if test $HAVE_CLOSEDIR = 0 || test $REPLACE_CLOSEDIR = 1; then AC_LIBOBJ([closedir]) fi gl_DIRENT_MODULE_INDICATOR([closedir]) gl_CHECK_TYPE_STRUCT_DIRENT_D_INO gl_DIRENT_H gl_FUNC_DIRFD if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then AC_LIBOBJ([dirfd]) gl_PREREQ_DIRFD fi gl_DIRENT_MODULE_INDICATOR([dirfd]) gl_DIRNAME gl_MODULE_INDICATOR([dirname]) gl_DIRNAME_LGPL gl_DOUBLE_SLASH_ROOT gl_FUNC_DUP if test $REPLACE_DUP = 1; then AC_LIBOBJ([dup]) gl_PREREQ_DUP fi gl_UNISTD_MODULE_INDICATOR([dup]) gl_FUNC_DUP2 if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then AC_LIBOBJ([dup2]) gl_PREREQ_DUP2 fi gl_UNISTD_MODULE_INDICATOR([dup2]) gl_ENVIRON gl_UNISTD_MODULE_INDICATOR([environ]) gl_HEADER_ERRNO_H gl_ERROR if test $ac_cv_lib_error_at_line = no; then AC_LIBOBJ([error]) gl_PREREQ_ERROR fi m4_ifdef([AM_XGETTEXT_OPTION], [AM_][XGETTEXT_OPTION([--flag=error:3:c-format]) AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) AC_REQUIRE([gl_EXTERN_INLINE]) gl_FUNC_FCHDIR gl_UNISTD_MODULE_INDICATOR([fchdir]) gl_FUNC_FCNTL if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then AC_LIBOBJ([fcntl]) fi gl_FCNTL_MODULE_INDICATOR([fcntl]) gl_FCNTL_H gl_FUNC_FDOPENDIR if test $HAVE_FDOPENDIR = 0 || test $REPLACE_FDOPENDIR = 1; then AC_LIBOBJ([fdopendir]) fi gl_DIRENT_MODULE_INDICATOR([fdopendir]) gl_MODULE_INDICATOR([fdopendir]) gl_FILE_NAME_CONCAT_LGPL gl_FLOAT_H if test $REPLACE_FLOAT_LDBL = 1; then AC_LIBOBJ([float]) fi if test $REPLACE_ITOLD = 1; then AC_LIBOBJ([itold]) fi gl_FUNC_FSTAT if test $REPLACE_FSTAT = 1; then AC_LIBOBJ([fstat]) gl_PREREQ_FSTAT fi gl_SYS_STAT_MODULE_INDICATOR([fstat]) gl_FUNC_FSTATAT if test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1; then AC_LIBOBJ([fstatat]) fi gl_SYS_STAT_MODULE_INDICATOR([fstatat]) gl_FUNC_GETCWD if test $REPLACE_GETCWD = 1; then AC_LIBOBJ([getcwd]) gl_PREREQ_GETCWD fi gl_MODULE_INDICATOR([getcwd]) gl_UNISTD_MODULE_INDICATOR([getcwd]) gl_FUNC_GETCWD_LGPL if test $REPLACE_GETCWD = 1; then AC_LIBOBJ([getcwd-lgpl]) fi gl_UNISTD_MODULE_INDICATOR([getcwd]) gl_FUNC_GETDTABLESIZE if test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1; then AC_LIBOBJ([getdtablesize]) gl_PREREQ_GETDTABLESIZE fi gl_UNISTD_MODULE_INDICATOR([getdtablesize]) gl_FUNC_GETOPT_GNU if test $REPLACE_GETOPT = 1; then AC_LIBOBJ([getopt]) AC_LIBOBJ([getopt1]) gl_PREREQ_GETOPT dnl Arrange for unistd.h to include getopt.h. GNULIB_GL_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu]) gl_FUNC_GETOPT_POSIX if test $REPLACE_GETOPT = 1; then AC_LIBOBJ([getopt]) AC_LIBOBJ([getopt1]) gl_PREREQ_GETOPT dnl Arrange for unistd.h to include getopt.h. GNULIB_GL_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac. AM_GNU_GETTEXT_VERSION([0.18.1]) AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) gl_FUNC_GETTIMEOFDAY if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then AC_LIBOBJ([gettimeofday]) gl_PREREQ_GETTIMEOFDAY fi gl_SYS_TIME_MODULE_INDICATOR([gettimeofday]) AC_REQUIRE([gl_LARGEFILE]) gl_FUNC_LSTAT if test $REPLACE_LSTAT = 1; then AC_LIBOBJ([lstat]) gl_PREREQ_LSTAT fi gl_SYS_STAT_MODULE_INDICATOR([lstat]) gl_FUNC_MALLOC_POSIX if test $REPLACE_MALLOC = 1; then AC_LIBOBJ([malloc]) fi gl_STDLIB_MODULE_INDICATOR([malloc-posix]) gl_MALLOCA gl_FUNC_MEMCHR if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then AC_LIBOBJ([memchr]) gl_PREREQ_MEMCHR fi gl_STRING_MODULE_INDICATOR([memchr]) gl_FUNC_MEMPCPY if test $HAVE_MEMPCPY = 0; then AC_LIBOBJ([mempcpy]) gl_PREREQ_MEMPCPY fi gl_STRING_MODULE_INDICATOR([mempcpy]) gl_FUNC_MEMRCHR if test $ac_cv_func_memrchr = no; then AC_LIBOBJ([memrchr]) gl_PREREQ_MEMRCHR fi gl_STRING_MODULE_INDICATOR([memrchr]) gl_MSVC_INVAL if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then AC_LIBOBJ([msvc-inval]) fi gl_MSVC_NOTHROW if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then AC_LIBOBJ([msvc-nothrow]) fi gl_MULTIARCH gl_FUNC_OPEN if test $REPLACE_OPEN = 1; then AC_LIBOBJ([open]) gl_PREREQ_OPEN fi gl_FCNTL_MODULE_INDICATOR([open]) gl_FUNC_OPENAT if test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1; then AC_LIBOBJ([openat]) gl_PREREQ_OPENAT fi gl_MODULE_INDICATOR([openat]) dnl for lib/getcwd.c gl_FCNTL_MODULE_INDICATOR([openat]) gl_FUNC_OPENDIR if test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1; then AC_LIBOBJ([opendir]) fi gl_DIRENT_MODULE_INDICATOR([opendir]) gl_PATHMAX AC_CHECK_DECLS([program_invocation_name], [], [], [#include ]) AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include ]) gl_FUNC_READDIR if test $HAVE_READDIR = 0; then AC_LIBOBJ([readdir]) fi gl_DIRENT_MODULE_INDICATOR([readdir]) gl_FUNC_READLINK if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then AC_LIBOBJ([readlink]) gl_PREREQ_READLINK fi gl_UNISTD_MODULE_INDICATOR([readlink]) gl_FUNC_REALLOC_POSIX if test $REPLACE_REALLOC = 1; then AC_LIBOBJ([realloc]) fi gl_STDLIB_MODULE_INDICATOR([realloc-posix]) gl_RELOCATABLE([$gl_source_base]) if test $RELOCATABLE = yes; then AC_LIBOBJ([progreloc]) AC_LIBOBJ([relocatable]) fi gl_FUNC_READLINK_SEPARATE gl_CANONICALIZE_LGPL_SEPARATE gl_MALLOCA gl_RELOCATABLE_LIBRARY gl_FUNC_SETENV_SEPARATE gl_FUNC_REWINDDIR if test $HAVE_REWINDDIR = 0; then AC_LIBOBJ([rewinddir]) fi gl_DIRENT_MODULE_INDICATOR([rewinddir]) gl_SAME gl_SAVE_CWD gl_SIZE_MAX gt_TYPE_SSIZE_T gl_FUNC_STAT if test $REPLACE_STAT = 1; then AC_LIBOBJ([stat]) gl_PREREQ_STAT fi gl_SYS_STAT_MODULE_INDICATOR([stat]) AM_STDBOOL_H gl_STDDEF_H gl_STDINT_H gl_STDIO_H gl_STDLIB_H gl_STRCASE if test $HAVE_STRCASECMP = 0; then AC_LIBOBJ([strcasecmp]) gl_PREREQ_STRCASECMP fi if test $HAVE_STRNCASECMP = 0; then AC_LIBOBJ([strncasecmp]) gl_PREREQ_STRNCASECMP fi gl_FUNC_STRDUP_POSIX if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then AC_LIBOBJ([strdup]) gl_PREREQ_STRDUP fi gl_STRING_MODULE_INDICATOR([strdup]) gl_FUNC_STRERROR if test $REPLACE_STRERROR = 1; then AC_LIBOBJ([strerror]) fi gl_MODULE_INDICATOR([strerror]) gl_STRING_MODULE_INDICATOR([strerror]) AC_REQUIRE([gl_HEADER_ERRNO_H]) AC_REQUIRE([gl_FUNC_STRERROR_0]) if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then AC_LIBOBJ([strerror-override]) gl_PREREQ_SYS_H_WINSOCK2 fi gl_HEADER_STRING_H gl_HEADER_STRINGS_H gl_FUNC_STRNDUP if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then AC_LIBOBJ([strndup]) fi gl_STRING_MODULE_INDICATOR([strndup]) gl_FUNC_STRNLEN if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then AC_LIBOBJ([strnlen]) gl_PREREQ_STRNLEN fi gl_STRING_MODULE_INDICATOR([strnlen]) gl_HEADER_SYS_STAT_H AC_PROG_MKDIR_P gl_HEADER_SYS_TIME_H AC_PROG_MKDIR_P gl_SYS_TYPES_H AC_PROG_MKDIR_P gl_HEADER_TIME_H gl_UNISTD_H gl_UNISTD_SAFER gl_FUNC_VASNPRINTF gl_FUNC_VASPRINTF gl_STDIO_MODULE_INDICATOR([vasprintf]) m4_ifdef([AM_XGETTEXT_OPTION], [AM_][XGETTEXT_OPTION([--flag=asprintf:2:c-format]) AM_][XGETTEXT_OPTION([--flag=vasprintf:2:c-format])]) gl_WCHAR_H gl_XALLOC gl_XGETCWD gl_XSIZE gl_XSTRNDUP # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || for gl_file in ]gl_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([gl_LIBSOURCES_DIR]) m4_popdef([gl_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gl_libobjs= gl_ltlibobjs= if test -n "$gl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" done fi AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) ]) gltests_libdeps= gltests_ltlibdeps= m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) m4_pushdef([gltests_LIBSOURCES_LIST], []) m4_pushdef([gltests_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='tests' changequote(,)dnl gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS changequote([, ])dnl AC_SUBST([gltests_WITNESS]) gl_module_indicator_condition=$gltests_WITNESS m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) m4_popdef([gl_MODULE_INDICATOR_CONDITION]) m4_ifval(gltests_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || for gl_file in ]gltests_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([gltests_LIBSOURCES_DIR]) m4_popdef([gltests_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gltests_libobjs= gltests_ltlibobjs= if test -n "$gltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" done fi AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) ]) LIBGNU_LIBDEPS="$gl_libdeps" AC_SUBST([LIBGNU_LIBDEPS]) LIBGNU_LTLIBDEPS="$gl_ltlibdeps" AC_SUBST([LIBGNU_LTLIBDEPS]) ]) # Like AC_LIBOBJ, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_LIBOBJ], [ AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gl_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gl_LIBSOURCES_DIR], [gnulib/lib]) m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_LIBOBJ], [ AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gltests_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gltests_LIBSOURCES_DIR], [tests]) m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # This macro records the list of files which have been installed by # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([gl_FILE_LIST], [ build-aux/config.libpath build-aux/config.rpath build-aux/install-reloc build-aux/reloc-ldflags build-aux/snippet/_Noreturn.h build-aux/snippet/arg-nonnull.h build-aux/snippet/c++defs.h build-aux/snippet/warn-on-use.h doc/relocatable.texi lib/alloca.c lib/alloca.in.h lib/allocator.c lib/allocator.h lib/areadlink-with-size.c lib/areadlink.c lib/areadlink.h lib/asnprintf.c lib/asprintf.c lib/at-func.c lib/basename-lgpl.c lib/basename.c lib/bitrotate.c lib/bitrotate.h lib/c-ctype.c lib/c-ctype.h lib/canonicalize-lgpl.c lib/canonicalize.c lib/canonicalize.h lib/careadlinkat.c lib/careadlinkat.h lib/chdir-long.c lib/chdir-long.h lib/cloexec.c lib/cloexec.h lib/close.c lib/closedir.c lib/dirent-private.h lib/dirent.in.h lib/dirfd.c lib/dirname-lgpl.c lib/dirname.c lib/dirname.h lib/dosname.h lib/dup-safer.c lib/dup.c lib/dup2.c lib/errno.in.h lib/error.c lib/error.h lib/exitfail.c lib/exitfail.h lib/fchdir.c lib/fcntl.c lib/fcntl.in.h lib/fd-hook.c lib/fd-hook.h lib/fd-safer.c lib/fdopendir.c lib/file-set.c lib/file-set.h lib/filename.h lib/filenamecat-lgpl.c lib/filenamecat.h lib/float+.h lib/float.c lib/float.in.h lib/fstat.c lib/fstatat.c lib/getcwd-lgpl.c lib/getcwd.c lib/getdtablesize.c lib/getopt.c lib/getopt.in.h lib/getopt1.c lib/getopt_int.h lib/gettext.h lib/gettimeofday.c lib/hash-pjw.c lib/hash-pjw.h lib/hash-triple.c lib/hash-triple.h lib/hash.c lib/hash.h lib/intprops.h lib/itold.c lib/lstat.c lib/malloc.c lib/malloca.c lib/malloca.h lib/malloca.valgrind lib/memchr.c lib/memchr.valgrind lib/mempcpy.c lib/memrchr.c lib/msvc-inval.c lib/msvc-inval.h lib/msvc-nothrow.c lib/msvc-nothrow.h lib/open.c lib/openat-die.c lib/openat-priv.h lib/openat-proc.c lib/openat.c lib/openat.h lib/opendir.c lib/pathmax.h lib/pipe-safer.c lib/printf-args.c lib/printf-args.h lib/printf-parse.c lib/printf-parse.h lib/progname.c lib/progname.h lib/progreloc.c lib/readdir.c lib/readlink.c lib/realloc.c lib/relocatable.c lib/relocatable.h lib/relocwrapper.c lib/rewinddir.c lib/same-inode.h lib/same.c lib/same.h lib/save-cwd.c lib/save-cwd.h lib/setenv.c lib/size_max.h lib/stat.c lib/stdbool.in.h lib/stddef.in.h lib/stdint.in.h lib/stdio.in.h lib/stdlib.in.h lib/strcasecmp.c lib/strdup.c lib/strerror-override.c lib/strerror-override.h lib/strerror.c lib/string.in.h lib/strings.in.h lib/stripslash.c lib/strncasecmp.c lib/strndup.c lib/strnlen.c lib/sys_stat.in.h lib/sys_time.in.h lib/sys_types.in.h lib/time.in.h lib/unistd--.h lib/unistd-safer.h lib/unistd.c lib/unistd.in.h lib/vasnprintf.c lib/vasnprintf.h lib/vasprintf.c lib/verify.h lib/wchar.in.h lib/xalloc-die.c lib/xalloc-oversized.h lib/xalloc.h lib/xgetcwd.c lib/xgetcwd.h lib/xmalloc.c lib/xreadlink.c lib/xreadlink.h lib/xsize.c lib/xsize.h lib/xstrndup.c lib/xstrndup.h m4/00gnulib.m4 m4/absolute-header.m4 m4/alloca.m4 m4/canonicalize.m4 m4/chdir-long.m4 m4/close.m4 m4/closedir.m4 m4/codeset.m4 m4/d-ino.m4 m4/dirent_h.m4 m4/dirfd.m4 m4/dirname.m4 m4/double-slash-root.m4 m4/dup.m4 m4/dup2.m4 m4/eealloc.m4 m4/environ.m4 m4/errno_h.m4 m4/error.m4 m4/exponentd.m4 m4/extensions.m4 m4/extern-inline.m4 m4/fchdir.m4 m4/fcntl-o.m4 m4/fcntl.m4 m4/fcntl_h.m4 m4/fdopendir.m4 m4/filenamecat.m4 m4/float_h.m4 m4/fstat.m4 m4/fstatat.m4 m4/getcwd-abort-bug.m4 m4/getcwd-path-max.m4 m4/getcwd.m4 m4/getdtablesize.m4 m4/getopt.m4 m4/gettext.m4 m4/gettimeofday.m4 m4/glibc2.m4 m4/glibc21.m4 m4/gnulib-common.m4 m4/iconv.m4 m4/include_next.m4 m4/intdiv0.m4 m4/intl.m4 m4/intldir.m4 m4/intlmacosx.m4 m4/intmax.m4 m4/intmax_t.m4 m4/inttypes-pri.m4 m4/inttypes_h.m4 m4/largefile.m4 m4/lcmessage.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/lock.m4 m4/longlong.m4 m4/lstat.m4 m4/malloc.m4 m4/malloca.m4 m4/math_h.m4 m4/memchr.m4 m4/mempcpy.m4 m4/memrchr.m4 m4/mmap-anon.m4 m4/mode_t.m4 m4/msvc-inval.m4 m4/msvc-nothrow.m4 m4/multiarch.m4 m4/nls.m4 m4/nocrash.m4 m4/off_t.m4 m4/open.m4 m4/openat.m4 m4/opendir.m4 m4/pathmax.m4 m4/po.m4 m4/printf-posix.m4 m4/printf.m4 m4/progtest.m4 m4/readdir.m4 m4/readlink.m4 m4/realloc.m4 m4/relocatable-lib.m4 m4/relocatable.m4 m4/rewinddir.m4 m4/same.m4 m4/save-cwd.m4 m4/setenv.m4 m4/size_max.m4 m4/ssize_t.m4 m4/stat.m4 m4/stdbool.m4 m4/stddef_h.m4 m4/stdint.m4 m4/stdint_h.m4 m4/stdio_h.m4 m4/stdlib_h.m4 m4/strcase.m4 m4/strdup.m4 m4/strerror.m4 m4/string_h.m4 m4/strings_h.m4 m4/strndup.m4 m4/strnlen.m4 m4/sys_socket_h.m4 m4/sys_stat_h.m4 m4/sys_time_h.m4 m4/sys_types_h.m4 m4/threadlib.m4 m4/time_h.m4 m4/uintmax_t.m4 m4/unistd-safer.m4 m4/unistd_h.m4 m4/vasnprintf.m4 m4/vasprintf.m4 m4/visibility.m4 m4/warn-on-use.m4 m4/wchar_h.m4 m4/wchar_t.m4 m4/wint_t.m4 m4/xalloc.m4 m4/xgetcwd.m4 m4/xsize.m4 m4/xstrndup.m4 ]) freedink-108.4+dfsg/gnulib/m4/printf.m40000644000175000017500000016635012330466613015403 0ustar meme# printf.m4 serial 50 dnl Copyright (C) 2003, 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Test whether the *printf family of functions supports the 'j', 'z', 't', dnl 'L' size specifiers. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_sizes_c99. AC_DEFUN([gl_PRINTF_SIZES_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_AC_HEADER_STDINT_H]) AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports size specifiers as in C99], [gl_cv_func_printf_sizes_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include #if HAVE_STDINT_H_WITH_UINTMAX # include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX # include #endif static char buf[100]; int main () { int result = 0; #if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX buf[0] = '\0'; if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0 || strcmp (buf, "12345671 33") != 0) result |= 1; #endif buf[0] = '\0'; if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0 || strcmp (buf, "12345672 33") != 0) result |= 2; buf[0] = '\0'; if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0 || strcmp (buf, "12345673 33") != 0) result |= 4; buf[0] = '\0'; if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0 || strcmp (buf, "1.5 33") != 0) result |= 8; return result; }]])], [gl_cv_func_printf_sizes_c99=yes], [gl_cv_func_printf_sizes_c99=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4]*) gl_cv_func_printf_sizes_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_sizes_c99="guessing no";; darwin*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_printf_sizes_c99="guessing no";; openbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; solaris*) gl_cv_func_printf_sizes_c99="guessing no";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_printf_sizes_c99="guessing no";; netbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_printf_sizes_c99="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports 'long double' dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_long_double. AC_DEFUN([gl_PRINTF_LONG_DOUBLE], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports 'long double' arguments], [gl_cv_func_printf_long_double], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[10000]; int main () { int result = 0; buf[0] = '\0'; if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.750000 33") != 0) result |= 1; buf[0] = '\0'; if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.750000e+00 33") != 0) result |= 2; buf[0] = '\0'; if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.75 33") != 0) result |= 4; return result; }]])], [gl_cv_func_printf_long_double=yes], [gl_cv_func_printf_long_double=no], [ changequote(,)dnl case "$host_os" in beos*) gl_cv_func_printf_long_double="guessing no";; mingw* | pw*) gl_cv_func_printf_long_double="guessing no";; *) gl_cv_func_printf_long_double="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports infinite and NaN dnl 'double' arguments and negative zero arguments in the %f, %e, %g dnl directives. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_infinite. AC_DEFUN([gl_PRINTF_INFINITE], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports infinite 'double' arguments], [gl_cv_func_printf_infinite], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static int strisnan (const char *string, size_t start_index, size_t end_index) { if (start_index < end_index) { if (string[start_index] == '-') start_index++; if (start_index + 3 <= end_index && memcmp (string + start_index, "nan", 3) == 0) { start_index += 3; if (start_index == end_index || (string[start_index] == '(' && string[end_index - 1] == ')')) return 1; } } return 0; } static int have_minus_zero () { static double plus_zero = 0.0; double minus_zero = - plus_zero; return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0; } static char buf[10000]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%f", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%f", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%f", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%e", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 4; if (sprintf (buf, "%e", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 4; if (sprintf (buf, "%e", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 8; if (sprintf (buf, "%g", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 16; if (sprintf (buf, "%g", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 16; if (sprintf (buf, "%g", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 32; /* This test fails on HP-UX 10.20. */ if (have_minus_zero ()) if (sprintf (buf, "%g", - zero) < 0 || strcmp (buf, "-0") != 0) result |= 64; return result; }]])], [gl_cv_func_printf_infinite=yes], [gl_cv_func_printf_infinite=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5]*) gl_cv_func_printf_infinite="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";; darwin*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";; hpux*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_printf_infinite="guessing no";; netbsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_infinite="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_printf_infinite="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports infinite and NaN dnl 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_infinite_long_double. AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE], [ AC_REQUIRE([gl_PRINTF_LONG_DOUBLE]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_BIGENDIAN]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl The user can set or unset the variable gl_printf_safe to indicate dnl that he wishes a safe handling of non-IEEE-754 'long double' values. if test -n "$gl_printf_safe"; then AC_DEFINE([CHECK_PRINTF_SAFE], [1], [Define if you wish *printf() functions that have a safe handling of non-IEEE-754 'long double' values.]) fi case "$gl_cv_func_printf_long_double" in *yes) AC_CACHE_CHECK([whether printf supports infinite 'long double' arguments], [gl_cv_func_printf_infinite_long_double], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ ]GL_NOCRASH[ #include #include #include static int strisnan (const char *string, size_t start_index, size_t end_index) { if (start_index < end_index) { if (string[start_index] == '-') start_index++; if (start_index + 3 <= end_index && memcmp (string + start_index, "nan", 3) == 0) { start_index += 3; if (start_index == end_index || (string[start_index] == '(' && string[end_index - 1] == ')')) return 1; } } return 0; } static char buf[10000]; static long double zeroL = 0.0L; int main () { int result = 0; nocrash_init(); if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Lf", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; if (sprintf (buf, "%Le", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Le", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Le", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Lg", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; #if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ # ifdef WORDS_BIGENDIAN # define LDBL80_WORDS(exponent,manthi,mantlo) \ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \ (unsigned int) (mantlo) << 16 \ } # else # define LDBL80_WORDS(exponent,manthi,mantlo) \ { mantlo, manthi, exponent } # endif { /* Quiet NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; } { /* Signalling NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; } { /* Pseudo-NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 4; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 4; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 4; } { /* Pseudo-Infinity. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 8; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 8; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 8; } { /* Pseudo-Zero. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 16; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 16; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 16; } { /* Unnormalized number. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 32; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 32; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 32; } { /* Pseudo-Denormal. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 64; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 64; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 64; } #endif return result; }]])], [gl_cv_func_printf_infinite_long_double=yes], [gl_cv_func_printf_infinite_long_double=no], [ changequote(,)dnl case "$host_cpu" in # Guess no on ia64, x86_64, i386. ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";; *) case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5]*) gl_cv_func_printf_infinite_long_double="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";; hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_printf_infinite_long_double="guessing no";; esac ;; esac changequote([,])dnl ]) ]) ;; *) gl_cv_func_printf_infinite_long_double="irrelevant" ;; esac ]) dnl Test whether the *printf family of functions supports the 'a' and 'A' dnl conversion specifier for hexadecimal output of floating-point numbers. dnl (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_directive_a. AC_DEFUN([gl_PRINTF_DIRECTIVE_A], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives], [gl_cv_func_printf_directive_a], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0 || (strcmp (buf, "0x1.922p+1 33") != 0 && strcmp (buf, "0x3.244p+0 33") != 0 && strcmp (buf, "0x6.488p-1 33") != 0 && strcmp (buf, "0xc.91p-2 33") != 0)) result |= 1; if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0 || (strcmp (buf, "-0X1.922P+1 33") != 0 && strcmp (buf, "-0X3.244P+0 33") != 0 && strcmp (buf, "-0X6.488P-1 33") != 0 && strcmp (buf, "-0XC.91P-2 33") != 0)) result |= 2; /* This catches a FreeBSD 6.1 bug: it doesn't round. */ if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0 || (strcmp (buf, "0x1.83p+0 33") != 0 && strcmp (buf, "0x3.05p-1 33") != 0 && strcmp (buf, "0x6.0ap-2 33") != 0 && strcmp (buf, "0xc.14p-3 33") != 0)) result |= 4; /* This catches a FreeBSD 6.1 bug. See */ if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0 || buf[0] == '0') result |= 8; /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug. */ if (sprintf (buf, "%.1a", 1.999) < 0 || (strcmp (buf, "0x1.0p+1") != 0 && strcmp (buf, "0x2.0p+0") != 0 && strcmp (buf, "0x4.0p-1") != 0 && strcmp (buf, "0x8.0p-2") != 0)) result |= 16; /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a glibc 2.4 bug . */ if (sprintf (buf, "%.1La", 1.999L) < 0 || (strcmp (buf, "0x1.0p+1") != 0 && strcmp (buf, "0x2.0p+0") != 0 && strcmp (buf, "0x4.0p-1") != 0 && strcmp (buf, "0x8.0p-2") != 0)) result |= 32; return result; }]])], [gl_cv_func_printf_directive_a=yes], [gl_cv_func_printf_directive_a=no], [ case "$host_os" in # Guess yes on glibc >= 2.5 systems. *-gnu*) AC_EGREP_CPP([BZ2908], [ #include #ifdef __GNU_LIBRARY__ #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__ BZ2908 #endif #endif ], [gl_cv_func_printf_directive_a="guessing yes"], [gl_cv_func_printf_directive_a="guessing no"]) ;; # If we don't know, assume the worst. *) gl_cv_func_printf_directive_a="guessing no";; esac ]) ]) ]) dnl Test whether the *printf family of functions supports the %F format dnl directive. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_directive_f. AC_DEFUN([gl_PRINTF_DIRECTIVE_F], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'F' directive], [gl_cv_func_printf_directive_f], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0 || strcmp (buf, "1234567.000000 33") != 0) result |= 1; if (sprintf (buf, "%F", 1.0 / zero) < 0 || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0)) result |= 2; /* This catches a Cygwin 1.5.x bug. */ if (sprintf (buf, "%.F", 1234.0) < 0 || strcmp (buf, "1234") != 0) result |= 4; return result; }]])], [gl_cv_func_printf_directive_f=yes], [gl_cv_func_printf_directive_f=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5]*) gl_cv_func_printf_directive_f="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";; darwin*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; solaris*) gl_cv_func_printf_sizes_c99="guessing no";; # If we don't know, assume the worst. *) gl_cv_func_printf_directive_f="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports the %n format dnl directive. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_directive_n. AC_DEFUN([gl_PRINTF_DIRECTIVE_N], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'n' directive], [gl_cv_func_printf_directive_n], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #ifdef _MSC_VER /* See page about "Parameter Validation" on msdn.microsoft.com. */ static void cdecl invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { exit (1); } #endif static char fmtstring[10]; static char buf[100]; int main () { int count = -1; #ifdef _MSC_VER _set_invalid_parameter_handler (invalid_parameter_handler); #endif /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2) support %n in format strings in read-only memory but not in writable memory. */ strcpy (fmtstring, "%d %n"); if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0 || strcmp (buf, "123 ") != 0 || count != 4) return 1; return 0; }]])], [gl_cv_func_printf_directive_n=yes], [gl_cv_func_printf_directive_n=no], [ changequote(,)dnl case "$host_os" in mingw*) gl_cv_func_printf_directive_n="guessing no";; *) gl_cv_func_printf_directive_n="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports the %ls format dnl directive and in particular, when a precision is specified, whether dnl the functions stop converting the wide string argument when the number dnl of bytes that have been produced by this conversion equals or exceeds dnl the precision. dnl Result is gl_cv_func_printf_directive_ls. AC_DEFUN([gl_PRINTF_DIRECTIVE_LS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'ls' directive], [gl_cv_func_printf_directive_ls], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #include #include #include int main () { int result = 0; char buf[100]; /* Test whether %ls works at all. This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on Cygwin 1.5. */ { static const wchar_t wstring[] = { 'a', 'b', 'c', 0 }; buf[0] = '\0'; if (sprintf (buf, "%ls", wstring) < 0 || strcmp (buf, "abc") != 0) result |= 1; } /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an assertion failure inside libc), but not on OpenBSD 4.0. */ { static const wchar_t wstring[] = { 'a', 0 }; buf[0] = '\0'; if (sprintf (buf, "%ls", wstring) < 0 || strcmp (buf, "a") != 0) result |= 2; } /* Test whether precisions in %ls are supported as specified in ISO C 99 section 7.19.6.1: "If a precision is specified, no more than that many bytes are written (including shift sequences, if any), and the array shall contain a null wide character if, to equal the multibyte character sequence length given by the precision, the function would need to access a wide character one past the end of the array." This test fails on Solaris 10. */ { static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 }; buf[0] = '\0'; if (sprintf (buf, "%.2ls", wstring) < 0 || strcmp (buf, "ab") != 0) result |= 8; } return result; }]])], [gl_cv_func_printf_directive_ls=yes], [gl_cv_func_printf_directive_ls=no], [ changequote(,)dnl case "$host_os" in openbsd*) gl_cv_func_printf_directive_ls="guessing no";; irix*) gl_cv_func_printf_directive_ls="guessing no";; solaris*) gl_cv_func_printf_directive_ls="guessing no";; cygwin*) gl_cv_func_printf_directive_ls="guessing no";; beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";; *) gl_cv_func_printf_directive_ls="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports POSIX/XSI format dnl strings with positions. (POSIX:2001) dnl Result is gl_cv_func_printf_positions. AC_DEFUN([gl_PRINTF_POSITIONS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with positions], [gl_cv_func_printf_positions], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include /* The string "%2$d %1$d", with dollar characters protected from the shell's dollar expansion (possibly an autoconf bug). */ static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; static char buf[100]; int main () { sprintf (buf, format, 33, 55); return (strcmp (buf, "55 33") != 0); }]])], [gl_cv_func_printf_positions=yes], [gl_cv_func_printf_positions=no], [ changequote(,)dnl case "$host_os" in netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*) gl_cv_func_printf_positions="guessing no";; beos*) gl_cv_func_printf_positions="guessing no";; mingw* | pw*) gl_cv_func_printf_positions="guessing no";; *) gl_cv_func_printf_positions="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports POSIX/XSI format dnl strings with the ' flag for grouping of decimal digits. (POSIX:2001) dnl Result is gl_cv_func_printf_flag_grouping. AC_DEFUN([gl_PRINTF_FLAG_GROUPING], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the grouping flag], [gl_cv_func_printf_flag_grouping], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; int main () { if (sprintf (buf, "%'d %d", 1234567, 99) < 0 || buf[strlen (buf) - 1] != '9') return 1; return 0; }]])], [gl_cv_func_printf_flag_grouping=yes], [gl_cv_func_printf_flag_grouping=no], [ changequote(,)dnl case "$host_os" in cygwin*) gl_cv_func_printf_flag_grouping="guessing no";; netbsd*) gl_cv_func_printf_flag_grouping="guessing no";; mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";; *) gl_cv_func_printf_flag_grouping="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports the - flag correctly. dnl (ISO C99.) See dnl dnl Result is gl_cv_func_printf_flag_leftadjust. AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly], [gl_cv_func_printf_flag_leftadjust], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; int main () { /* Check that a '-' flag is not annihilated by a negative width. */ if (sprintf (buf, "a%-*sc", -3, "b") < 0 || strcmp (buf, "ab c") != 0) return 1; return 0; }]])], [gl_cv_func_printf_flag_leftadjust=yes], [gl_cv_func_printf_flag_leftadjust=no], [ changequote(,)dnl case "$host_os" in # Guess yes on HP-UX 11. hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";; # Guess no on HP-UX 10 and older. hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";; # Guess yes otherwise. *) gl_cv_func_printf_flag_leftadjust="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports padding of non-finite dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See dnl dnl Result is gl_cv_func_printf_flag_zero. AC_DEFUN([gl_PRINTF_FLAG_ZERO], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the zero flag correctly], [gl_cv_func_printf_flag_zero], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; static double zero = 0.0; int main () { if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0 || (strcmp (buf, " inf") != 0 && strcmp (buf, " infinity") != 0)) return 1; return 0; }]])], [gl_cv_func_printf_flag_zero=yes], [gl_cv_func_printf_flag_zero=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_printf_flag_zero="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_flag_zero="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_printf_flag_zero="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports large precisions. dnl On mingw, precisions larger than 512 are treated like 512, in integer, dnl floating-point or pointer output. On Solaris 10/x86, precisions larger dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC, dnl precisions larger than 510 in floating-point output yield wrong results. dnl On AIX 7.1, precisions larger than 998 in floating-point output yield dnl wrong results. On BeOS, precisions larger than 1044 crash the program. dnl Result is gl_cv_func_printf_precision. AC_DEFUN([gl_PRINTF_PRECISION], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports large precisions], [gl_cv_func_printf_precision], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[5000]; int main () { int result = 0; #ifdef __BEOS__ /* On BeOS, this would crash and show a dialog box. Avoid the crash. */ return 1; #endif if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3) result |= 1; if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5) result |= 2; if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5 || buf[0] != '1') result |= 4; if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5 || buf[0] != '1') result |= 4; return result; }]])], [gl_cv_func_printf_precision=yes], [gl_cv_func_printf_precision=no], [ changequote(,)dnl case "$host_os" in # Guess no only on Solaris, native Windows, and BeOS systems. solaris*) gl_cv_func_printf_precision="guessing no" ;; mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;; beos*) gl_cv_func_printf_precision="guessing no" ;; *) gl_cv_func_printf_precision="guessing yes" ;; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions recovers gracefully in case dnl of an out-of-memory condition, or whether it crashes the entire program. dnl Result is gl_cv_func_printf_enomem. AC_DEFUN([gl_PRINTF_ENOMEM], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_MULTIARCH]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf survives out-of-memory conditions], [gl_cv_func_printf_enomem], [ gl_cv_func_printf_enomem="guessing no" if test "$cross_compiling" = no; then if test $APPLE_UNIVERSAL_BUILD = 0; then AC_LANG_CONFTEST([AC_LANG_SOURCE([ ]GL_NOCRASH[ changequote(,)dnl #include #include #include #include #include int main() { struct rlimit limit; int ret; nocrash_init (); /* Some printf implementations allocate temporary space with malloc. */ /* On BSD systems, malloc() is limited by RLIMIT_DATA. */ #ifdef RLIMIT_DATA if (getrlimit (RLIMIT_DATA, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_DATA, &limit) < 0) return 77; #endif /* On Linux systems, malloc() is limited by RLIMIT_AS. */ #ifdef RLIMIT_AS if (getrlimit (RLIMIT_AS, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_AS, &limit) < 0) return 77; #endif /* Some printf implementations allocate temporary space on the stack. */ #ifdef RLIMIT_STACK if (getrlimit (RLIMIT_STACK, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_STACK, &limit) < 0) return 77; #endif ret = printf ("%.5000000f", 1.0); return !(ret == 5000002 || (ret < 0 && errno == ENOMEM)); } changequote([,])dnl ])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then (./conftest 2>&AS_MESSAGE_LOG_FD result=$? _AS_ECHO_LOG([\$? = $result]) if test $result != 0 && test $result != 77; then result=1; fi exit $result ) >/dev/null 2>/dev/null case $? in 0) gl_cv_func_printf_enomem="yes" ;; 77) gl_cv_func_printf_enomem="guessing no" ;; *) gl_cv_func_printf_enomem="no" ;; esac else gl_cv_func_printf_enomem="guessing no" fi rm -fr conftest* else dnl A universal build on Apple Mac OS X platforms. dnl The result would be 'no' in 32-bit mode and 'yes' in 64-bit mode. dnl But we need a configuration result that is valid in both modes. gl_cv_func_printf_enomem="guessing no" fi fi if test "$gl_cv_func_printf_enomem" = "guessing no"; then changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on Solaris. solaris*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on AIX. aix*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on HP-UX/hppa. hpux*) case "$host_cpu" in hppa*) gl_cv_func_printf_enomem="guessing yes";; *) gl_cv_func_printf_enomem="guessing no";; esac ;; # Guess yes on IRIX. irix*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on OSF/1. osf*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on Haiku. haiku*) gl_cv_func_printf_enomem="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_printf_enomem="guessing no";; esac changequote([,])dnl fi ]) ]) dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001) dnl Result is ac_cv_func_snprintf. AC_DEFUN([gl_SNPRINTF_PRESENCE], [ AC_CHECK_FUNCS_ONCE([snprintf]) ]) dnl Test whether the string produced by the snprintf function is always NUL dnl terminated. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_snprintf_truncation_c99. AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf truncates the result as in C99], [gl_cv_func_snprintf_truncation_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char buf[100]; int main () { strcpy (buf, "ABCDEF"); my_snprintf (buf, 3, "%d %d", 4567, 89); if (memcmp (buf, "45\0DEF", 6) != 0) return 1; return 0; }]])], [gl_cv_func_snprintf_truncation_c99=yes], [gl_cv_func_snprintf_truncation_c99=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_truncation_c99="guessing no";; darwin*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_snprintf_truncation_c99="guessing no";; openbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) gl_cv_func_snprintf_truncation_c99="guessing no";; solaris*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_truncation_c99="guessing no";; aix*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";; hpux*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on IRIX >= 6.5. irix6.5) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on OSF/1 >= 5. osf[3-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";; osf*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_truncation_c99="guessing no";; netbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_snprintf_truncation_c99="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the return value of the snprintf function is the number dnl of bytes (excluding the terminating NUL) that would have been produced dnl if the buffer had been large enough. (ISO C99, POSIX:2001) dnl For example, this test program fails on IRIX 6.5: dnl --------------------------------------------------------------------- dnl #include dnl int main() dnl { dnl static char buf[8]; dnl int retval = snprintf (buf, 3, "%d", 12345); dnl return retval >= 0 && retval < 3; dnl } dnl --------------------------------------------------------------------- dnl Result is gl_cv_func_snprintf_retval_c99. AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf returns a byte count as in C99], [gl_cv_func_snprintf_retval_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char buf[100]; int main () { strcpy (buf, "ABCDEF"); if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7) return 1; if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7) return 2; if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7) return 3; return 0; }]])], [gl_cv_func_snprintf_retval_c99=yes], [gl_cv_func_snprintf_retval_c99=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4]*) gl_cv_func_snprintf_retval_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_retval_c99="guessing no";; darwin*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_snprintf_retval_c99="guessing no";; openbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; solaris*) gl_cv_func_printf_sizes_c99="guessing no";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_retval_c99="guessing no";; aix*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_retval_c99="guessing no";; netbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_retval_c99="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_snprintf_retval_c99="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the snprintf function supports the %n format directive dnl also in truncated portions of the format string. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_snprintf_directive_n. AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive], [gl_cv_func_snprintf_directive_n], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char fmtstring[10]; static char buf[100]; int main () { int count = -1; /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2) support %n in format strings in read-only memory but not in writable memory. */ strcpy (fmtstring, "%d %n"); my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55); if (count != 6) return 1; return 0; }]])], [gl_cv_func_snprintf_directive_n=yes], [gl_cv_func_snprintf_directive_n=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4]*) gl_cv_func_snprintf_directive_n="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_directive_n="guessing no";; darwin*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) gl_cv_func_snprintf_directive_n="guessing no";; solaris*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_directive_n="guessing no";; aix*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on IRIX >= 6.5. irix6.5) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on OSF/1 >= 5. osf[3-4]*) gl_cv_func_snprintf_directive_n="guessing no";; osf*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_directive_n="guessing no";; netbsd*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_directive_n="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_snprintf_directive_n="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the snprintf function, when passed a size = 1, writes any dnl output without bounds in this case, behaving like sprintf. This is the dnl case on Linux libc5. dnl Result is gl_cv_func_snprintf_size1. AC_DEFUN([gl_SNPRINTF_SIZE1], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf respects a size of 1], [gl_cv_func_snprintf_size1], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif int main() { static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; my_snprintf (buf, 1, "%d", 12345); return buf[1] != 'E'; }]])], [gl_cv_func_snprintf_size1=yes], [gl_cv_func_snprintf_size1=no], [gl_cv_func_snprintf_size1="guessing yes"]) ]) ]) dnl Test whether the vsnprintf function, when passed a zero size, produces no dnl output. (ISO C99, POSIX:2001) dnl For example, snprintf nevertheless writes a NUL byte in this case dnl on OSF/1 5.1: dnl --------------------------------------------------------------------- dnl #include dnl int main() dnl { dnl static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; dnl snprintf (buf, 0, "%d", 12345); dnl return buf[0] != 'D'; dnl } dnl --------------------------------------------------------------------- dnl And vsnprintf writes any output without bounds in this case, behaving like dnl vsprintf, on HP-UX 11 and OSF/1 5.1: dnl --------------------------------------------------------------------- dnl #include dnl #include dnl static int my_snprintf (char *buf, int size, const char *format, ...) dnl { dnl va_list args; dnl int ret; dnl va_start (args, format); dnl ret = vsnprintf (buf, size, format, args); dnl va_end (args); dnl return ret; dnl } dnl int main() dnl { dnl static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; dnl my_snprintf (buf, 0, "%d", 12345); dnl return buf[0] != 'D'; dnl } dnl --------------------------------------------------------------------- dnl Result is gl_cv_func_vsnprintf_zerosize_c99. AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99], [gl_cv_func_vsnprintf_zerosize_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } int main() { static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; my_snprintf (buf, 0, "%d", 12345); return buf[0] != 'D'; }]])], [gl_cv_func_vsnprintf_zerosize_c99=yes], [gl_cv_func_vsnprintf_zerosize_c99=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on Cygwin. cygwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; solaris*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; aix*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on IRIX >= 6.5. irix6.5) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; netbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on mingw. mingw* | pw*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; esac changequote([,])dnl ]) ]) ]) dnl The results of these tests on various platforms are: dnl dnl 1 = gl_PRINTF_SIZES_C99 dnl 2 = gl_PRINTF_LONG_DOUBLE dnl 3 = gl_PRINTF_INFINITE dnl 4 = gl_PRINTF_INFINITE_LONG_DOUBLE dnl 5 = gl_PRINTF_DIRECTIVE_A dnl 6 = gl_PRINTF_DIRECTIVE_F dnl 7 = gl_PRINTF_DIRECTIVE_N dnl 8 = gl_PRINTF_DIRECTIVE_LS dnl 9 = gl_PRINTF_POSITIONS dnl 10 = gl_PRINTF_FLAG_GROUPING dnl 11 = gl_PRINTF_FLAG_LEFTADJUST dnl 12 = gl_PRINTF_FLAG_ZERO dnl 13 = gl_PRINTF_PRECISION dnl 14 = gl_PRINTF_ENOMEM dnl 15 = gl_SNPRINTF_PRESENCE dnl 16 = gl_SNPRINTF_TRUNCATION_C99 dnl 17 = gl_SNPRINTF_RETVAL_C99 dnl 18 = gl_SNPRINTF_DIRECTIVE_N dnl 19 = gl_SNPRINTF_SIZE1 dnl 20 = gl_VSNPRINTF_ZEROSIZE_C99 dnl dnl 1 = checking whether printf supports size specifiers as in C99... dnl 2 = checking whether printf supports 'long double' arguments... dnl 3 = checking whether printf supports infinite 'double' arguments... dnl 4 = checking whether printf supports infinite 'long double' arguments... dnl 5 = checking whether printf supports the 'a' and 'A' directives... dnl 6 = checking whether printf supports the 'F' directive... dnl 7 = checking whether printf supports the 'n' directive... dnl 8 = checking whether printf supports the 'ls' directive... dnl 9 = checking whether printf supports POSIX/XSI format strings with positions... dnl 10 = checking whether printf supports the grouping flag... dnl 11 = checking whether printf supports the left-adjust flag correctly... dnl 12 = checking whether printf supports the zero flag correctly... dnl 13 = checking whether printf supports large precisions... dnl 14 = checking whether printf survives out-of-memory conditions... dnl 15 = checking for snprintf... dnl 16 = checking whether snprintf truncates the result as in C99... dnl 17 = checking whether snprintf returns a byte count as in C99... dnl 18 = checking whether snprintf fully supports the 'n' directive... dnl 19 = checking whether snprintf respects a size of 1... dnl 20 = checking whether vsnprintf respects a zero size as in C99... dnl dnl . = yes, # = no. dnl dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . . dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . . dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . . dnl Mac OS X 10.5.8 . . . # # . . . . . . # . . . . . . . . dnl Mac OS X 10.3.9 . . . . # . . . . . . # . # . . . . . . dnl OpenBSD 3.9, 4.0 . . # # # # . # . # . # . # . . . . . . dnl Cygwin 1.7.0 (2009) . . . # . . . ? . . . . . ? . . . . . . dnl Cygwin 1.5.25 (2008) . . . # # . . # . . . . . # . . . . . . dnl Cygwin 1.5.19 (2006) # . . # # # . # . # . # # # . . . . . . dnl Solaris 11 2011-11 . . # # # . . # . . . # . . . . . . . . dnl Solaris 10 . . # # # . . # . . . # # . . . . . . . dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . . dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # # dnl AIX 7.1 . . # # # . . . . . . # # . . . . . . . dnl AIX 5.2 . . # # # . . . . . . # . . . . . . . . dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . # . . . dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . . dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . # dnl HP-UX 10.20 # . # . # # . ? . . # # . . . . # # ? # dnl IRIX 6.5 # . # # # # . # . . . # . . . . # . . . dnl OSF/1 5.1 # . # # # # . . . . . # . . . . # . . # dnl OSF/1 4.0d # . # # # # . . . . . # . . # # # # # # dnl NetBSD 5.0 . . . # # . . . . . . # . # . . . . . . dnl NetBSD 4.0 . ? ? ? ? ? . ? . ? ? ? ? ? . . . ? ? ? dnl NetBSD 3.0 . . . . # # . ? # # ? # . # . . . . . . dnl Haiku . . . # # # . # . . . . . ? . . ? . . . dnl BeOS # # . # # # . ? # . ? . # ? . . ? . . . dnl old mingw / msvcrt # # # # # # . . # # . # # ? . # # # . . dnl MSVC 9 # # # # # # # . # # . # # ? # # # # . . dnl mingw 2009-2011 . # . # . . . . # # . . . ? . . . . . . dnl mingw-w64 2011 # # # # # # . . # # . # # ? . # # # . . freedink-108.4+dfsg/gnulib/m4/stddef_h.m40000644000175000017500000000275512330466613015657 0ustar memednl A placeholder for POSIX 2008 , for platforms that have issues. # stddef_h.m4 serial 4 dnl Copyright (C) 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDDEF_H], [ AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) AC_REQUIRE([gt_TYPE_WCHAR_T]) STDDEF_H= if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 STDDEF_H=stddef.h fi AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], [gl_cv_decl_null_works], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include int test[2 * (sizeof NULL == sizeof (void *)) -1]; ]])], [gl_cv_decl_null_works=yes], [gl_cv_decl_null_works=no])]) if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 STDDEF_H=stddef.h fi AC_SUBST([STDDEF_H]) AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"]) if test -n "$STDDEF_H"; then gl_NEXT_HEADERS([stddef.h]) fi ]) AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) ]) AC_DEFUN([gl_STDDEF_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) ]) freedink-108.4+dfsg/gnulib/m4/fdopendir.m40000644000175000017500000000330012330466613016034 0ustar meme# serial 10 # See if we need to provide fdopendir. dnl Copyright (C) 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Written by Eric Blake. AC_DEFUN([gl_FUNC_FDOPENDIR], [ AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) dnl FreeBSD 7.3 has the function, but failed to declare it. AC_CHECK_DECLS([fdopendir], [], [HAVE_DECL_FDOPENDIR=0], [[ #include ]]) AC_CHECK_FUNCS_ONCE([fdopendir]) if test $ac_cv_func_fdopendir = no; then HAVE_FDOPENDIR=0 else AC_CACHE_CHECK([whether fdopendir works], [gl_cv_func_fdopendir_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include #if !HAVE_DECL_FDOPENDIR extern # ifdef __cplusplus "C" # endif DIR *fdopendir (int); #endif ]], [int result = 0; int fd = open ("conftest.c", O_RDONLY); if (fd < 0) result |= 1; if (fdopendir (fd)) result |= 2; if (close (fd)) result |= 4; return result;])], [gl_cv_func_fdopendir_works=yes], [gl_cv_func_fdopendir_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu*) gl_cv_func_fdopendir_works="guessing yes" ;; # If we don't know, assume the worst. *) gl_cv_func_fdopendir_works="guessing no" ;; esac ])]) case "$gl_cv_func_fdopendir_works" in *yes) ;; *) REPLACE_FDOPENDIR=1 ;; esac fi ]) freedink-108.4+dfsg/gnulib/m4/fcntl.m40000644000175000017500000000600512330466613015175 0ustar meme# fcntl.m4 serial 5 dnl Copyright (C) 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # For now, this module ensures that fcntl() # - supports F_DUPFD correctly # - supports or emulates F_DUPFD_CLOEXEC # - supports F_GETFD # Still to be ported to mingw: # - F_SETFD # - F_GETFL, F_SETFL # - F_GETOWN, F_SETOWN # - F_GETLK, F_SETLK, F_SETLKW AC_DEFUN([gl_FUNC_FCNTL], [ dnl Persuade glibc to expose F_DUPFD_CLOEXEC. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS_ONCE([fcntl]) if test $ac_cv_func_fcntl = no; then gl_REPLACE_FCNTL else dnl cygwin 1.5.x F_DUPFD has wrong errno, and allows negative target dnl haiku alpha 2 F_DUPFD has wrong errno AC_CACHE_CHECK([whether fcntl handles F_DUPFD correctly], [gl_cv_func_fcntl_f_dupfd_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [[int result = 0; if (fcntl (0, F_DUPFD, -1) != -1) result |= 1; if (errno != EINVAL) result |= 2; return result; ]])], [gl_cv_func_fcntl_f_dupfd_works=yes], [gl_cv_func_fcntl_f_dupfd_works=no], [# Guess that it works on glibc systems case $host_os in #(( *-gnu*) gl_cv_func_fcntl_f_dupfd_works="guessing yes";; *) gl_cv_func_fcntl_f_dupfd_works="guessing no";; esac])]) case $gl_cv_func_fcntl_f_dupfd_works in *yes) ;; *) gl_REPLACE_FCNTL AC_DEFINE([FCNTL_DUPFD_BUGGY], [1], [Define this to 1 if F_DUPFD behavior does not match POSIX]) ;; esac dnl Many systems lack F_DUPFD_CLOEXEC AC_CACHE_CHECK([whether fcntl understands F_DUPFD_CLOEXEC], [gl_cv_func_fcntl_f_dupfd_cloexec], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #ifndef F_DUPFD_CLOEXEC choke me #endif ]])], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #ifdef __linux__ /* The Linux kernel only added F_DUPFD_CLOEXEC in 2.6.24, so we always replace it to support the semantics on older kernels that failed with EINVAL. */ choke me #endif ]])], [gl_cv_func_fcntl_f_dupfd_cloexec=yes], [gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"])], [gl_cv_func_fcntl_f_dupfd_cloexec=no])]) if test "$gl_cv_func_fcntl_f_dupfd_cloexec" != yes; then gl_REPLACE_FCNTL dnl No witness macro needed for this bug. fi fi dnl Replace fcntl() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then gl_REPLACE_FCNTL fi ]) ]) AC_DEFUN([gl_REPLACE_FCNTL], [ AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([fcntl]) if test $ac_cv_func_fcntl = no; then HAVE_FCNTL=0 else REPLACE_FCNTL=1 fi ]) freedink-108.4+dfsg/gnulib/m4/error.m40000644000175000017500000000151012330466613015214 0ustar meme#serial 14 # Copyright (C) 1996-1998, 2001-2004, 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_ERROR], [ dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer dnl maintained in Autoconf and because it invokes AC_LIBOBJ. AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[error_at_line (0, 0, "", 0, "an error occurred");]])], [ac_cv_lib_error_at_line=yes], [ac_cv_lib_error_at_line=no])]) ]) # Prerequisites of lib/error.c. AC_DEFUN([gl_PREREQ_ERROR], [ AC_REQUIRE([AC_FUNC_STRERROR_R]) : ]) freedink-108.4+dfsg/gnulib/m4/iconv.m40000644000175000017500000002162012330466613015205 0ustar meme# iconv.m4 serial 18 (gettext-0.18.2) dnl Copyright (C) 2000-2002, 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static const char input[] = "\263"; char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; const char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; }]])], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], [ changequote(,)dnl case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac changequote([,])dnl ]) LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) fi ]) freedink-108.4+dfsg/gnulib/m4/exponentd.m40000644000175000017500000000755212330466613016103 0ustar meme# exponentd.m4 serial 3 dnl Copyright (C) 2007-2008, 2010-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_DOUBLE_EXPONENT_LOCATION], [ AC_CACHE_CHECK([where to find the exponent in a 'double'], [gl_cv_cc_double_expbit0], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include #define NWORDS \ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { double value; unsigned int word[NWORDS]; } memory_double; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (double x) { memory_double m; size_t i; /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ memset (&m, 0, sizeof (memory_double)); m.value = x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; add_to_ored_words (0.25); add_to_ored_words (0.5); add_to_ored_words (1.0); add_to_ored_words (2.0); add_to_ored_words (4.0); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } ]])], [gl_cv_cc_double_expbit0=`cat conftest.out`], [gl_cv_cc_double_expbit0="unknown"], [ dnl On ARM, there are two 'double' floating-point formats, used by dnl different sets of instructions: The older FPA instructions assume dnl that they are stored in big-endian word order, while the words dnl (like integer types) are stored in little-endian byte order. dnl The newer VFP instructions assume little-endian order dnl consistently. AC_EGREP_CPP([mixed_endianness], [ #if defined arm || defined __arm || defined __arm__ mixed_endianness #endif ], [gl_cv_cc_double_expbit0="unknown"], [ pushdef([AC_MSG_CHECKING],[:])dnl pushdef([AC_MSG_RESULT],[:])dnl pushdef([AC_MSG_RESULT_UNQUOTED],[:])dnl AC_C_BIGENDIAN( [gl_cv_cc_double_expbit0="word 0 bit 20"], [gl_cv_cc_double_expbit0="word 1 bit 20"], [gl_cv_cc_double_expbit0="unknown"]) popdef([AC_MSG_RESULT_UNQUOTED])dnl popdef([AC_MSG_RESULT])dnl popdef([AC_MSG_CHECKING])dnl ]) ]) rm -f conftest.out ]) case "$gl_cv_cc_double_expbit0" in word*bit*) word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` AC_DEFINE_UNQUOTED([DBL_EXPBIT0_WORD], [$word], [Define as the word index where to find the exponent of 'double'.]) AC_DEFINE_UNQUOTED([DBL_EXPBIT0_BIT], [$bit], [Define as the bit index in the word where to find bit 0 of the exponent of 'double'.]) ;; esac ]) freedink-108.4+dfsg/gnulib/m4/fcntl-o.m40000644000175000017500000001107412330466613015433 0ustar meme# fcntl-o.m4 serial 4 dnl Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Paul Eggert. # Test whether the flags O_NOATIME and O_NOFOLLOW actually work. # Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. # Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. AC_DEFUN([gl_FCNTL_O_FLAGS], [ dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes dnl AC_GNU_SOURCE. m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], [AC_REQUIRE([AC_GNU_SOURCE])]) AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CHECK_FUNCS_ONCE([symlink]) AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include # include # defined sleep(n) _sleep ((n) * 1000) #endif #include #ifndef O_NOATIME #define O_NOATIME 0 #endif #ifndef O_NOFOLLOW #define O_NOFOLLOW 0 #endif static int const constants[] = { O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY }; ]], [[ int result = !constants; #if HAVE_SYMLINK { static char const sym[] = "conftest.sym"; if (symlink ("/dev/null", sym) != 0) result |= 2; else { int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); if (fd >= 0) { close (fd); result |= 4; } } if (unlink (sym) != 0 || symlink (".", sym) != 0) result |= 2; else { int fd = open (sym, O_RDONLY | O_NOFOLLOW); if (fd >= 0) { close (fd); result |= 4; } } unlink (sym); } #endif { static char const file[] = "confdefs.h"; int fd = open (file, O_RDONLY | O_NOATIME); if (fd < 0) result |= 8; else { struct stat st0; if (fstat (fd, &st0) != 0) result |= 16; else { char c; sleep (1); if (read (fd, &c, 1) != 1) result |= 24; else { if (close (fd) != 0) result |= 32; else { struct stat st1; if (stat (file, &st1) != 0) result |= 40; else if (st0.st_atime != st1.st_atime) result |= 64; } } } } } return result;]])], [gl_cv_header_working_fcntl_h=yes], [case $? in #( 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( *) gl_cv_header_working_fcntl_h='no';; esac], [gl_cv_header_working_fcntl_h=cross-compiling])]) case $gl_cv_header_working_fcntl_h in #( *O_NOATIME* | no | cross-compiling) ac_val=0;; #( *) ac_val=1;; esac AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], [Define to 1 if O_NOATIME works.]) case $gl_cv_header_working_fcntl_h in #( *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( *) ac_val=1;; esac AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], [Define to 1 if O_NOFOLLOW works.]) ]) freedink-108.4+dfsg/gnulib/m4/unistd_h.m40000644000175000017500000002153112330466613015705 0ustar meme# unistd_h.m4 serial 67 dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Simon Josefsson, Bruno Haible. AC_DEFUN([gl_UNISTD_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([unistd.h]) if test $ac_cv_header_unistd_h = yes; then HAVE_UNISTD_H=1 else HAVE_UNISTD_H=0 fi AC_SUBST([HAVE_UNISTD_H]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Determine WINDOWS_64_BIT_OFF_T. AC_REQUIRE([gl_TYPE_OFF_T]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_UNISTD_H # include #endif /* Some systems declare various items in the wrong headers. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include # include # include # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include # endif #endif ]], [chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups gethostname getlogin getlogin_r getpagesize getusershell setusershell endusershell group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite readlink readlinkat rmdir sethostname sleep symlink symlinkat ttyname_r unlink unlinkat usleep]) ]) AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_UNISTD_H_DEFAULTS], [ GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR]) GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN]) GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE]) GNULIB_DUP=0; AC_SUBST([GNULIB_DUP]) GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2]) GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3]) GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON]) GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS]) GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT]) GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR]) GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT]) GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC]) GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC]) GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE]) GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD]) GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME]) GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE]) GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS]) GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME]) GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN]) GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R]) GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE]) GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL]) GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER]) GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY]) GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN]) GNULIB_LINK=0; AC_SUBST([GNULIB_LINK]) GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT]) GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE]) GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2]) GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD]) GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE]) GNULIB_READ=0; AC_SUBST([GNULIB_READ]) GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT]) GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR]) GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME]) GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP]) GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK]) GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT]) GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R]) GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING]) GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE]) GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK]) GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT]) GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP]) GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) HAVE_DUP2=1; AC_SUBST([HAVE_DUP2]) HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) HAVE_LINK=1; AC_SUBST([HAVE_LINK]) HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE]) REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) REPLACE_READ=0; AC_SUBST([REPLACE_READ]) REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) ]) freedink-108.4+dfsg/gnulib/m4/largefile.m40000644000175000017500000001233212330466613016021 0ustar meme# Enable large files on systems where this is not the default. # Copyright 1992-1996, 1998-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # The following implementation works around a problem in autoconf <= 2.69; # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, # or configures them incorrectly in some cases. m4_version_prereq([2.70], [] ,[ # _AC_SYS_LARGEFILE_TEST_INCLUDES # ------------------------------- m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [@%:@include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ @%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]];[]dnl ]) # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, # CACHE-VAR, # DESCRIPTION, # PROLOGUE, [FUNCTION-BODY]) # -------------------------------------------------------- m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], [AC_CACHE_CHECK([for $1 value needed for large files], [$3], [while :; do m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( [AC_LANG_PROGRAM([$5], [$6])], [$3=no; break]) m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( [AC_LANG_PROGRAM([@%:@define $1 $2 $5], [$6])], [$3=$2; break]) $3=unknown break done]) case $$3 in #( no | unknown) ;; *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; esac rm -rf conftest*[]dnl ])# _AC_SYS_LARGEFILE_MACRO_VALUE # AC_SYS_LARGEFILE # ---------------- # By default, many hosts won't let programs access large files; # one must use special compiler options to get large-file access to work. # For more details about this brain damage please see: # http://www.unix-systems.org/version2/whatsnew/lfs20mar.html AC_DEFUN([AC_SYS_LARGEFILE], [AC_ARG_ENABLE(largefile, [ --disable-largefile omit support for large files]) if test "$enable_largefile" != no; then AC_CACHE_CHECK([for special C compiler options needed for large files], ac_cv_sys_largefile_CC, [ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) AC_COMPILE_IFELSE([], [break]) CC="$CC -n32" AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) break done CC=$ac_save_CC rm -f conftest.$ac_ext fi]) if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits, [Number of bits in a file offset, on hosts where this is settable.], [_AC_SYS_LARGEFILE_TEST_INCLUDES]) if test $ac_cv_sys_file_offset_bits = unknown; then _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files, [Define for large files, on AIX-style hosts.], [_AC_SYS_LARGEFILE_TEST_INCLUDES]) fi AC_DEFINE([_DARWIN_USE_64_BIT_INODE], [1], [Enable large inode numbers on Mac OS X 10.5.]) fi ])# AC_SYS_LARGEFILE ])# m4_version_prereq 2.70 # Enable large files on systems where this is implemented by Gnulib, not by the # system headers. # Set the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE if Gnulib # overrides ensure that off_t or 'struct size.st_size' are 64-bit, respectively. AC_DEFUN([gl_LARGEFILE], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in mingw*) dnl Native Windows. dnl mingw64 defines off_t to a 64-bit type already, if dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; ]], [[]])], [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) ]) if test $gl_cv_type_off_t_64 = no; then WINDOWS_64_BIT_OFF_T=1 else WINDOWS_64_BIT_OFF_T=0 fi dnl But all native Windows platforms (including mingw64) have a 32-bit dnl st_size member in 'struct stat'. WINDOWS_64_BIT_ST_SIZE=1 ;; *) dnl Nothing to do on gnulib's side. dnl A 64-bit off_t is dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, dnl OSF/1, Cygwin, dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on dnl glibc, HP-UX, Solaris, dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, dnl - impossible to achieve on Minix 3.1.8. WINDOWS_64_BIT_OFF_T=0 WINDOWS_64_BIT_ST_SIZE=0 ;; esac ]) freedink-108.4+dfsg/gnulib/m4/stdio_h.m40000644000175000017500000002243312330466613015523 0ustar meme# stdio_h.m4 serial 43 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDIO_H], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_NEXT_HEADERS([stdio.h]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. GNULIB_FSCANF=1 gl_MODULE_INDICATOR([fscanf]) GNULIB_SCANF=1 gl_MODULE_INDICATOR([scanf]) GNULIB_FGETC=1 GNULIB_GETC=1 GNULIB_GETCHAR=1 GNULIB_FGETS=1 GNULIB_FREAD=1 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_READ_FUNCS=1 AC_LIBOBJ([stdio-read]) fi ]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. GNULIB_FPRINTF=1 GNULIB_PRINTF=1 GNULIB_VFPRINTF=1 GNULIB_VPRINTF=1 GNULIB_FPUTC=1 GNULIB_PUTC=1 GNULIB_PUTCHAR=1 GNULIB_FPUTS=1 GNULIB_PUTS=1 GNULIB_FWRITE=1 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or dnl GNULIB_SIGPIPE redundant. m4_ifdef([gl_SIGNAL_SIGPIPE], [ gl_SIGNAL_SIGPIPE if test $gl_cv_header_signal_h_SIGPIPE != yes; then REPLACE_STDIO_WRITE_FUNCS=1 AC_LIBOBJ([stdio-write]) fi ]) dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_WRITE_FUNCS=1 AC_LIBOBJ([stdio-write]) fi ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by both C89 and C11. gl_WARN_ON_USE_PREPARE([[#include ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen renameat snprintf tmpfile vdprintf vsnprintf]) ]) AC_DEFUN([gl_STDIO_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_STDIO_H_DEFAULTS], [ GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF]) GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE]) GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN]) GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH]) GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC]) GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS]) GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN]) GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF]) GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX]) GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE]) GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC]) GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS]) GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD]) GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN]) GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF]) GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK]) GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO]) GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL]) GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO]) GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE]) GNULIB_GETC=0; AC_SUBST([GNULIB_GETC]) GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR]) GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM]) GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE]) GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF]) GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX]) GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE]) GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR]) GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN]) GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF]) GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX]) GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC]) GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR]) GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS]) GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE]) GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME]) GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT]) GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF]) GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF]) GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX]) GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING]) GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE]) GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE]) GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF]) GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF]) GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF]) GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF]) GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF]) GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX]) GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF]) GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX]) GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF]) GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO]) HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM]) HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE]) HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF]) HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF]) HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF]) HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF]) HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO]) HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO]) HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE]) HAVE_POPEN=1; AC_SUBST([HAVE_POPEN]) HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT]) HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF]) HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF]) REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF]) REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE]) REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN]) REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE]) REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN]) REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK]) REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO]) REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL]) REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO]) REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM]) REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE]) REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF]) REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR]) REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN]) REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF]) REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE]) REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME]) REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT]) REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF]) REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF]) REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS]) REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS]) REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE]) REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF]) REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF]) REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF]) REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF]) REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF]) REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF]) ]) freedink-108.4+dfsg/gnulib/m4/getopt.m40000644000175000017500000003013412330466613015371 0ustar meme# getopt.m4 serial 44 dnl Copyright (C) 2002-2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Request a POSIX compliant getopt function. AC_DEFUN([gl_FUNC_GETOPT_POSIX], [ m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_GETOPT_CHECK_HEADERS]) dnl Other modules can request the gnulib implementation of the getopt dnl functions unconditionally, by defining gl_REPLACE_GETOPT_ALWAYS. dnl argp.m4 does this. m4_ifdef([gl_REPLACE_GETOPT_ALWAYS], [ REPLACE_GETOPT=1 ], [ REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi ]) if test $REPLACE_GETOPT = 1; then dnl Arrange for getopt.h to be created. gl_GETOPT_SUBSTITUTE_HEADER fi ]) # Request a POSIX compliant getopt function with GNU extensions (such as # options with optional arguments) and the functions getopt_long, # getopt_long_only. AC_DEFUN([gl_FUNC_GETOPT_GNU], [ m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU]) AC_REQUIRE([gl_FUNC_GETOPT_POSIX]) ]) # Determine whether to replace the entire getopt facility. AC_DEFUN([gl_GETOPT_CHECK_HEADERS], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON dnl Persuade Solaris to declare optarg, optind, opterr, optopt. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) gl_CHECK_NEXT_HEADERS([getopt.h]) if test $ac_cv_header_getopt_h = yes; then HAVE_GETOPT_H=1 else HAVE_GETOPT_H=0 fi AC_SUBST([HAVE_GETOPT_H]) gl_replace_getopt= dnl Test whether is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes]) fi dnl Test whether the function getopt_long is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes]) fi dnl POSIX 2008 does not specify leading '+' behavior, but see dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on dnl the next version of POSIX. For now, we only guarantee leading '+' dnl behavior with getopt-gnu. if test -z "$gl_replace_getopt"; then AC_CACHE_CHECK([whether getopt is POSIX compatible], [gl_cv_func_getopt_posix], [ dnl Merging these three different test programs into a single one dnl would require a reset mechanism. On BSD systems, it can be done dnl through 'optreset'; on some others (glibc), it can be done by dnl setting 'optind' to 0; on others again (HP-UX, IRIX, OSF/1, dnl Solaris 9, musl libc), there is no such mechanism. if test $cross_compiling = no; then dnl Sanity check. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char a[] = "-a"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, a, foo, bar, NULL }; int c; c = getopt (4, argv, "ab"); if (!(c == 'a')) return 1; c = getopt (4, argv, "ab"); if (!(c == -1)) return 2; if (!(optind == 2)) return 3; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) if test $gl_cv_func_getopt_posix = maybe; then dnl Sanity check with '+'. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char donald[] = "donald"; static char p[] = "-p"; static char billy[] = "billy"; static char duck[] = "duck"; static char a[] = "-a"; static char bar[] = "bar"; char *argv[] = { program, donald, p, billy, duck, a, bar, NULL }; int c; c = getopt (7, argv, "+abp:q:"); if (!(c == -1)) return 4; if (!(strcmp (argv[0], "program") == 0)) return 5; if (!(strcmp (argv[1], "donald") == 0)) return 6; if (!(strcmp (argv[2], "-p") == 0)) return 7; if (!(strcmp (argv[3], "billy") == 0)) return 8; if (!(strcmp (argv[4], "duck") == 0)) return 9; if (!(strcmp (argv[5], "-a") == 0)) return 10; if (!(strcmp (argv[6], "bar") == 0)) return 11; if (!(optind == 1)) return 12; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) fi if test $gl_cv_func_getopt_posix = maybe; then dnl Detect Mac OS X 10.5, AIX 7.1, mingw bug. AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char ab[] = "-ab"; char *argv[3] = { program, ab, NULL }; if (getopt (2, argv, "ab:") != 'a') return 13; if (getopt (2, argv, "ab:") != '?') return 14; if (optopt != 'b') return 15; if (optind != 2) return 16; return 0; } ]])], [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no]) fi else case "$host_os" in darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";; *) gl_cv_func_getopt_posix="guessing yes";; esac fi ]) case "$gl_cv_func_getopt_posix" in *no) gl_replace_getopt=yes ;; esac fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu], [# Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the # optstring is necessary for programs like m4 that have POSIX-mandated # semantics for supporting options interspersed with files. # Also, since getopt_long is a GNU extension, we require optind=0. # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT; # so take care to revert to the correct (non-)export state. dnl GNU Coding Standards currently allow awk but not env; besides, env dnl is ambiguous with environment values that contain newlines. gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" #include #include ]GL_NOCRASH[ ]], [[ int result = 0; nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; static char plus[] = "-+"; char *argv[3] = { conftest, plus, NULL }; opterr = 0; if (getopt (2, argv, "+a") != '?') result |= 1; } /* This code succeeds on glibc 2.8, mingw, and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; static char p[] = "-p"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, p, foo, bar, NULL }; optind = 1; if (getopt (4, argv, "p::") != 'p') result |= 2; else if (optarg != NULL) result |= 4; else if (getopt (4, argv, "p::") != -1) result |= 6; else if (optind != 2) result |= 8; } /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */ { static char program[] = "program"; static char foo[] = "foo"; static char p[] = "-p"; char *argv[] = { program, foo, p, NULL }; optind = 0; if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') result |= 16; } /* This code fails on glibc 2.11. */ { static char program[] = "program"; static char b[] = "-b"; static char a[] = "-a"; char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') result |= 32; else if (getopt (3, argv, "+:a:b") != ':') result |= 32; } /* This code dumps core on glibc 2.14. */ { static char program[] = "program"; static char w[] = "-W"; static char dummy[] = "dummy"; char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') result |= 64; } return result; ]])], [gl_cv_func_getopt_gnu=yes], [gl_cv_func_getopt_gnu=no], [dnl Cross compiling. Assume the worst, even on glibc platforms. gl_cv_func_getopt_gnu="guessing no" ]) case $gl_had_POSIXLY_CORRECT in exported) ;; yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;; *) AS_UNSET([POSIXLY_CORRECT]) ;; esac ]) if test "$gl_cv_func_getopt_gnu" != yes; then gl_replace_getopt=yes else AC_CACHE_CHECK([for working GNU getopt_long function], [gl_cv_func_getopt_long_gnu], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include ]], [[static const struct option long_options[] = { { "xtremely-",no_argument, NULL, 1003 }, { "xtra", no_argument, NULL, 1001 }, { "xtreme", no_argument, NULL, 1002 }, { "xtremely", no_argument, NULL, 1003 }, { NULL, 0, NULL, 0 } }; /* This code fails on OpenBSD 5.0. */ { static char program[] = "program"; static char xtremel[] = "--xtremel"; char *argv[] = { program, xtremel, NULL }; int option_index; optind = 1; opterr = 0; if (getopt_long (2, argv, "", long_options, &option_index) != 1003) return 1; } return 0; ]])], [gl_cv_func_getopt_long_gnu=yes], [gl_cv_func_getopt_long_gnu=no], [dnl Cross compiling. Guess no on OpenBSD, yes otherwise. case "$host_os" in openbsd*) gl_cv_func_getopt_long_gnu="guessing no";; *) gl_cv_func_getopt_long_gnu="guessing yes";; esac ]) ]) case "$gl_cv_func_getopt_long_gnu" in *yes) ;; *) gl_replace_getopt=yes ;; esac fi fi ]) AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], [ GETOPT_H=getopt.h AC_DEFINE([__GETOPT_PREFIX], [[rpl_]], [Define to rpl_ if the getopt replacement functions and variables should be used.]) AC_SUBST([GETOPT_H]) ]) # Prerequisites of lib/getopt*. AC_DEFUN([gl_PREREQ_GETOPT], [ AC_CHECK_DECLS_ONCE([getenv]) ]) freedink-108.4+dfsg/gnulib/m4/dirfd.m40000644000175000017500000000465512330466613015170 0ustar meme# serial 22 -*- Autoconf -*- dnl Find out how to get the file descriptor associated with an open DIR*. # Copyright (C) 2001-2006, 2008-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. dnl From Jim Meyering AC_DEFUN([gl_FUNC_DIRFD], [ AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) dnl Persuade glibc to declare dirfd(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS([dirfd]) AC_CHECK_DECLS([dirfd], , , [[#include #include ]]) if test $ac_cv_have_decl_dirfd = no; then HAVE_DECL_DIRFD=0 fi AC_CACHE_CHECK([whether dirfd is a macro], gl_cv_func_dirfd_macro, [AC_EGREP_CPP([dirent_header_defines_dirfd], [ #include #include #ifdef dirfd dirent_header_defines_dirfd #endif], gl_cv_func_dirfd_macro=yes, gl_cv_func_dirfd_macro=no)]) # Use the replacement only if we have no function or macro with that name. if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then if test $ac_cv_have_decl_dirfd = yes; then # If the system declares dirfd already, let's declare rpl_dirfd instead. REPLACE_DIRFD=1 fi fi ]) dnl Prerequisites of lib/dirfd.c. AC_DEFUN([gl_PREREQ_DIRFD], [ AC_CACHE_CHECK([how to get the file descriptor associated with an open DIR*], [gl_cv_sys_dir_fd_member_name], [ dirfd_save_CFLAGS=$CFLAGS for ac_expr in d_fd dd_fd; do CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [[DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;]])], [dir_fd_found=yes] ) CFLAGS=$dirfd_save_CFLAGS test "$dir_fd_found" = yes && break done test "$dir_fd_found" = yes || ac_expr=no_such_member gl_cv_sys_dir_fd_member_name=$ac_expr ] ) if test $gl_cv_sys_dir_fd_member_name != no_such_member; then AC_DEFINE_UNQUOTED([DIR_FD_MEMBER_NAME], [$gl_cv_sys_dir_fd_member_name], [the name of the file descriptor member of DIR]) fi AH_VERBATIM([DIR_TO_FD], [#ifdef DIR_FD_MEMBER_NAME # define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) #else # define DIR_TO_FD(Dir_p) -1 #endif ]) ]) freedink-108.4+dfsg/gnulib/m4/extern-inline.m40000644000175000017500000000670712330466613016661 0ustar memednl 'extern inline' a la ISO C99. dnl Copyright 2012-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_EXTERN_INLINE], [ AH_VERBATIM([extern_inline], [/* Please see the Gnulib manual for how to use these macros. Suppress extern inline with HP-UX cc, as it appears to be broken; see . Suppress extern inline with Sun C in standards-conformance mode, as it mishandles inline functions that call each other. E.g., for 'inline void f (void) { } inline void g (void) { f (); }', c99 incorrectly complains 'reference to static identifier "f" in extern inline function'. This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. Suppress the use of extern inline on problematic Apple configurations. OS X 10.8 and earlier mishandle it; see, e.g., . OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and for clang but remains for g++; see . Perhaps Apple will fix this some day. */ #if (defined __APPLE__ \ && (defined __header_inline \ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ && ! defined __clang__) \ : ((! defined _DONT_USE_CTYPE_INLINE_ \ && (defined __GNUC__ || defined __cplusplus)) \ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ && defined __GNUC__ && ! defined __cplusplus)))) # define _GL_EXTERN_INLINE_APPLE_BUG #endif #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !(defined __SUNPRO_C && __STDC__))) \ && !defined _GL_EXTERN_INLINE_APPLE_BUG) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline # define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ && !defined _GL_EXTERN_INLINE_APPLE_BUG) # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern # define _GL_EXTERN_INLINE_IN_USE #else # define _GL_INLINE static _GL_UNUSED # define _GL_EXTERN_INLINE static _GL_UNUSED #endif #if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ # define _GL_INLINE_HEADER_CONST_PRAGMA # else # define _GL_INLINE_HEADER_CONST_PRAGMA \ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") # endif /* Suppress GCC's bogus "no previous prototype for 'FOO'" and "no previous declaration for 'FOO'" diagnostics, when FOO is an inline function in the header; see . */ # define _GL_INLINE_HEADER_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ _GL_INLINE_HEADER_CONST_PRAGMA # define _GL_INLINE_HEADER_END \ _Pragma ("GCC diagnostic pop") #else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif]) ]) freedink-108.4+dfsg/gnulib/m4/relocatable-lib.m40000644000175000017500000000274412330466613017116 0ustar meme# relocatable-lib.m4 serial 6 dnl Copyright (C) 2003, 2005-2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Support for relocatable libraries. AC_DEFUN([gl_RELOCATABLE_LIBRARY], [ AC_REQUIRE([gl_RELOCATABLE_LIBRARY_BODY]) ]) AC_DEFUN([gl_RELOCATABLE_LIBRARY_BODY], [ AC_REQUIRE([gl_RELOCATABLE_NOP]) dnl Easier to put this here once, instead of into the DEFS of each Makefile. if test "X$prefix" = "XNONE"; then reloc_final_prefix="$ac_default_prefix" else reloc_final_prefix="$prefix" fi AC_DEFINE_UNQUOTED([INSTALLPREFIX], ["${reloc_final_prefix}"], [Define to the value of ${prefix}, as a string.]) if test $RELOCATABLE = yes; then AC_DEFINE([ENABLE_RELOCATABLE], [1], [Define to 1 if the package shall run at any location in the file system.]) fi ]) dnl Support for relocatable packages for which it is a nop. AC_DEFUN([gl_RELOCATABLE_NOP], [ AC_MSG_CHECKING([whether to activate relocatable installation]) AC_ARG_ENABLE([relocatable], [AS_HELP_STRING([--enable-relocatable], [install a package that can be moved in the file system])], [if test "$enableval" != no; then RELOCATABLE=yes else RELOCATABLE=no fi ], RELOCATABLE=no) AC_SUBST([RELOCATABLE]) AC_MSG_RESULT([$RELOCATABLE]) ]) freedink-108.4+dfsg/gnulib/m4/wchar_h.m40000644000175000017500000002224012330466613015501 0ustar memednl A placeholder for ISO C99 , for platforms that have issues. dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Eric Blake. # wchar_h.m4 serial 39 AC_DEFUN([gl_WCHAR_H], [ AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) dnl Prepare for creating substitute . dnl Check for (missing in Linux uClibc when built without wide dnl character support). dnl is always overridden, because of GNULIB_POSIXCHECK. gl_CHECK_NEXT_HEADERS([wchar.h]) if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi AC_SUBST([HAVE_WCHAR_H]) AC_REQUIRE([gl_FEATURES_H]) AC_REQUIRE([gt_TYPE_WINT_T]) if test $gt_cv_c_wint_t = yes; then HAVE_WINT_T=1 else HAVE_WINT_T=0 fi AC_SUBST([HAVE_WINT_T]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be included before . */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include # include # include #endif #include ]], [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth ]) ]) dnl Check whether is usable at all. AC_DEFUN([gl_WCHAR_H_INLINE_OK], [ dnl Test whether suffers due to the transition from '__inline' to dnl 'gnu_inline'. See dnl and . In summary, dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and dnl the option -std=c99 or -std=gnu99, leads to a broken . AC_CACHE_CHECK([whether uses 'inline' correctly], [gl_cv_header_wchar_h_correct_inline], [gl_cv_header_wchar_h_correct_inline=yes AC_LANG_CONFTEST([ AC_LANG_SOURCE([[#define wcstod renamed_wcstod /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #include #include extern int zero (void); int main () { return zero(); } ]])]) if AC_TRY_EVAL([ac_compile]); then mv conftest.$ac_objext conftest1.$ac_objext AC_LANG_CONFTEST([ AC_LANG_SOURCE([[#define wcstod renamed_wcstod /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #include #include int zero (void) { return 0; } ]])]) if AC_TRY_EVAL([ac_compile]); then mv conftest.$ac_objext conftest2.$ac_objext if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then : else gl_cv_header_wchar_h_correct_inline=no fi fi fi rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext ]) if test $gl_cv_header_wchar_h_correct_inline = no; then AC_MSG_ERROR([ cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS). This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in C99 mode. You have four options: - Add the flag -fgnu89-inline to CC and reconfigure, or - Fix your include files, using parts of , or - Use a gcc version older than 4.3, or - Don't use the flags -std=c99 or -std=gnu99. Configuration aborted.]) fi ]) AC_DEFUN([gl_WCHAR_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_WCHAR_H_DEFAULTS], [ GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC]) GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB]) GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT]) GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC]) GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN]) GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS]) GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS]) GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB]) GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS]) GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS]) GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH]) GNULIB_WMEMCHR=0; AC_SUBST([GNULIB_WMEMCHR]) GNULIB_WMEMCMP=0; AC_SUBST([GNULIB_WMEMCMP]) GNULIB_WMEMCPY=0; AC_SUBST([GNULIB_WMEMCPY]) GNULIB_WMEMMOVE=0; AC_SUBST([GNULIB_WMEMMOVE]) GNULIB_WMEMSET=0; AC_SUBST([GNULIB_WMEMSET]) GNULIB_WCSLEN=0; AC_SUBST([GNULIB_WCSLEN]) GNULIB_WCSNLEN=0; AC_SUBST([GNULIB_WCSNLEN]) GNULIB_WCSCPY=0; AC_SUBST([GNULIB_WCSCPY]) GNULIB_WCPCPY=0; AC_SUBST([GNULIB_WCPCPY]) GNULIB_WCSNCPY=0; AC_SUBST([GNULIB_WCSNCPY]) GNULIB_WCPNCPY=0; AC_SUBST([GNULIB_WCPNCPY]) GNULIB_WCSCAT=0; AC_SUBST([GNULIB_WCSCAT]) GNULIB_WCSNCAT=0; AC_SUBST([GNULIB_WCSNCAT]) GNULIB_WCSCMP=0; AC_SUBST([GNULIB_WCSCMP]) GNULIB_WCSNCMP=0; AC_SUBST([GNULIB_WCSNCMP]) GNULIB_WCSCASECMP=0; AC_SUBST([GNULIB_WCSCASECMP]) GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP]) GNULIB_WCSCOLL=0; AC_SUBST([GNULIB_WCSCOLL]) GNULIB_WCSXFRM=0; AC_SUBST([GNULIB_WCSXFRM]) GNULIB_WCSDUP=0; AC_SUBST([GNULIB_WCSDUP]) GNULIB_WCSCHR=0; AC_SUBST([GNULIB_WCSCHR]) GNULIB_WCSRCHR=0; AC_SUBST([GNULIB_WCSRCHR]) GNULIB_WCSCSPN=0; AC_SUBST([GNULIB_WCSCSPN]) GNULIB_WCSSPN=0; AC_SUBST([GNULIB_WCSSPN]) GNULIB_WCSPBRK=0; AC_SUBST([GNULIB_WCSPBRK]) GNULIB_WCSSTR=0; AC_SUBST([GNULIB_WCSSTR]) GNULIB_WCSTOK=0; AC_SUBST([GNULIB_WCSTOK]) GNULIB_WCSWIDTH=0; AC_SUBST([GNULIB_WCSWIDTH]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC]) HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT]) HAVE_MBRTOWC=1; AC_SUBST([HAVE_MBRTOWC]) HAVE_MBRLEN=1; AC_SUBST([HAVE_MBRLEN]) HAVE_MBSRTOWCS=1; AC_SUBST([HAVE_MBSRTOWCS]) HAVE_MBSNRTOWCS=1; AC_SUBST([HAVE_MBSNRTOWCS]) HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB]) HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS]) HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS]) HAVE_WMEMCHR=1; AC_SUBST([HAVE_WMEMCHR]) HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP]) HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY]) HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE]) HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET]) HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN]) HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN]) HAVE_WCSCPY=1; AC_SUBST([HAVE_WCSCPY]) HAVE_WCPCPY=1; AC_SUBST([HAVE_WCPCPY]) HAVE_WCSNCPY=1; AC_SUBST([HAVE_WCSNCPY]) HAVE_WCPNCPY=1; AC_SUBST([HAVE_WCPNCPY]) HAVE_WCSCAT=1; AC_SUBST([HAVE_WCSCAT]) HAVE_WCSNCAT=1; AC_SUBST([HAVE_WCSNCAT]) HAVE_WCSCMP=1; AC_SUBST([HAVE_WCSCMP]) HAVE_WCSNCMP=1; AC_SUBST([HAVE_WCSNCMP]) HAVE_WCSCASECMP=1; AC_SUBST([HAVE_WCSCASECMP]) HAVE_WCSNCASECMP=1; AC_SUBST([HAVE_WCSNCASECMP]) HAVE_WCSCOLL=1; AC_SUBST([HAVE_WCSCOLL]) HAVE_WCSXFRM=1; AC_SUBST([HAVE_WCSXFRM]) HAVE_WCSDUP=1; AC_SUBST([HAVE_WCSDUP]) HAVE_WCSCHR=1; AC_SUBST([HAVE_WCSCHR]) HAVE_WCSRCHR=1; AC_SUBST([HAVE_WCSRCHR]) HAVE_WCSCSPN=1; AC_SUBST([HAVE_WCSCSPN]) HAVE_WCSSPN=1; AC_SUBST([HAVE_WCSSPN]) HAVE_WCSPBRK=1; AC_SUBST([HAVE_WCSPBRK]) HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR]) HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK]) HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH]) HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB]) HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH]) REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T]) REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC]) REPLACE_WCTOB=0; AC_SUBST([REPLACE_WCTOB]) REPLACE_MBSINIT=0; AC_SUBST([REPLACE_MBSINIT]) REPLACE_MBRTOWC=0; AC_SUBST([REPLACE_MBRTOWC]) REPLACE_MBRLEN=0; AC_SUBST([REPLACE_MBRLEN]) REPLACE_MBSRTOWCS=0; AC_SUBST([REPLACE_MBSRTOWCS]) REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS]) REPLACE_WCRTOMB=0; AC_SUBST([REPLACE_WCRTOMB]) REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS]) REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS]) REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH]) REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH]) ]) freedink-108.4+dfsg/gnulib/m4/strnlen.m40000644000175000017500000000156112330466613015556 0ustar meme# strnlen.m4 serial 13 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRNLEN], [ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) dnl Persuade glibc to declare strnlen(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CHECK_DECLS_ONCE([strnlen]) if test $ac_cv_have_decl_strnlen = no; then HAVE_DECL_STRNLEN=0 else m4_pushdef([AC_LIBOBJ], [:]) dnl Note: AC_FUNC_STRNLEN does AC_LIBOBJ([strnlen]). AC_FUNC_STRNLEN m4_popdef([AC_LIBOBJ]) if test $ac_cv_func_strnlen_working = no; then REPLACE_STRNLEN=1 fi fi ]) # Prerequisites of lib/strnlen.c. AC_DEFUN([gl_PREREQ_STRNLEN], [:]) freedink-108.4+dfsg/gnulib/m4/inttypes_h.m40000644000175000017500000000177412330466613016265 0ustar meme# inttypes_h.m4 serial 10 dnl Copyright (C) 1997-2004, 2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[uintmax_t i = (uintmax_t) -1; return !i;]])], [gl_cv_header_inttypes_h=yes], [gl_cv_header_inttypes_h=no])]) if test $gl_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) freedink-108.4+dfsg/gnulib/m4/readdir.m40000644000175000017500000000067012330466613015503 0ustar meme# readdir.m4 serial 1 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_READDIR], [ AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) AC_CHECK_FUNCS([readdir]) if test $ac_cv_func_readdir = no; then HAVE_READDIR=0 fi ]) freedink-108.4+dfsg/gnulib/m4/longlong.m40000644000175000017500000001120312330466613015702 0ustar meme# longlong.m4 serial 17 dnl Copyright (C) 1999-2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_LONG_LONG_INT if 'long long int' works. # This fixes a bug in Autoconf 2.61, and can be faster # than what's in Autoconf 2.62 through 2.68. # Note: If the type 'long long int' exists but is only 32 bits large # (as on some very old compilers), HAVE_LONG_LONG_INT will not be # defined. In this case you can treat 'long long int' like 'long int'. AC_DEFUN([AC_TYPE_LONG_LONG_INT], [ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], [ac_cv_type_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int if test $ac_cv_type_long_long_int = yes; then dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. dnl If cross compiling, assume the bug is not important, since dnl nobody cross compiles for this platform as far as we know. AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[@%:@include @%:@ifndef LLONG_MAX @%:@ define HALF \ (1LL << (sizeof (long long int) * CHAR_BIT - 2)) @%:@ define LLONG_MAX (HALF - 1 + HALF) @%:@endif]], [[long long int n = 1; int i; for (i = 0; ; i++) { long long int m = n << i; if (m >> i != n) return 1; if (LLONG_MAX / 2 < m) break; } return 0;]])], [], [ac_cv_type_long_long_int=no], [:]) fi fi]) if test $ac_cv_type_long_long_int = yes; then AC_DEFINE([HAVE_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'long long int'.]) fi ]) # Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. # This fixes a bug in Autoconf 2.61, and can be faster # than what's in Autoconf 2.62 through 2.68. # Note: If the type 'unsigned long long int' exists but is only 32 bits # large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT # will not be defined. In this case you can treat 'unsigned long long int' # like 'unsigned long int'. AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ AC_CACHE_CHECK([for unsigned long long int], [ac_cv_type_unsigned_long_long_int], [ac_cv_type_unsigned_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then AC_LINK_IFELSE( [_AC_TYPE_LONG_LONG_SNIPPET], [], [ac_cv_type_unsigned_long_long_int=no]) fi]) if test $ac_cv_type_unsigned_long_long_int = yes; then AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'unsigned long long int'.]) fi ]) # Expands to a C program that can be used to test for simultaneous support # of 'long long' and 'unsigned long long'. We don't want to say that # 'long long' is available if 'unsigned long long' is not, or vice versa, # because too many programs rely on the symmetry between signed and unsigned # integer types (excluding 'bool'). AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [ AC_LANG_PROGRAM( [[/* For now, do not test the preprocessor; as of 2007 there are too many implementations with broken preprocessors. Perhaps this can be revisited in 2012. In the meantime, code should not expect #if to work with literals wider than 32 bits. */ /* Test literals. */ long long int ll = 9223372036854775807ll; long long int nll = -9223372036854775807LL; unsigned long long int ull = 18446744073709551615ULL; /* Test constant expressions. */ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) ? 1 : -1)]; typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 ? 1 : -1)]; int i = 63;]], [[/* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; unsigned long long int ullmax = 18446744073709551615ull; return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) | (llmax / ll) | (llmax % ll) | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) | (ullmax / ull) | (ullmax % ull));]]) ]) freedink-108.4+dfsg/gnulib/m4/strcase.m40000644000175000017500000000201212330466613015525 0ustar meme# strcase.m4 serial 11 dnl Copyright (C) 2002, 2005-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STRCASE], [ gl_FUNC_STRCASECMP gl_FUNC_STRNCASECMP ]) AC_DEFUN([gl_FUNC_STRCASECMP], [ AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) AC_CHECK_FUNCS([strcasecmp]) if test $ac_cv_func_strcasecmp = no; then HAVE_STRCASECMP=0 fi ]) AC_DEFUN([gl_FUNC_STRNCASECMP], [ AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) AC_CHECK_FUNCS([strncasecmp]) if test $ac_cv_func_strncasecmp = yes; then HAVE_STRNCASECMP=1 else HAVE_STRNCASECMP=0 fi AC_CHECK_DECLS([strncasecmp]) if test $ac_cv_have_decl_strncasecmp = no; then HAVE_DECL_STRNCASECMP=0 fi ]) # Prerequisites of lib/strcasecmp.c. AC_DEFUN([gl_PREREQ_STRCASECMP], [ : ]) # Prerequisites of lib/strncasecmp.c. AC_DEFUN([gl_PREREQ_STRNCASECMP], [ : ]) freedink-108.4+dfsg/gnulib/m4/lib-link.m40000644000175000017500000010044312330466613015571 0ustar meme# lib-link.m4 serial 26 (gettext-0.18.2) dnl Copyright (C) 2001-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.54]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_LINK_IFELSE( [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_libname_spec, dnl acl_library_names_spec, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl Autoconf >= 2.61 supports dots in --with options. pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(P_A_C_K[-prefix], [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) freedink-108.4+dfsg/gnulib/m4/memrchr.m40000644000175000017500000000125312330466613015524 0ustar meme# memrchr.m4 serial 10 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_MEMRCHR], [ dnl Persuade glibc to declare memrchr(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_CHECK_DECLS_ONCE([memrchr]) if test $ac_cv_have_decl_memrchr = no; then HAVE_DECL_MEMRCHR=0 fi AC_CHECK_FUNCS([memrchr]) ]) # Prerequisites of lib/memrchr.c. AC_DEFUN([gl_PREREQ_MEMRCHR], [:]) freedink-108.4+dfsg/gnulib/m4/fstatat.m40000644000175000017500000000367112330466613015543 0ustar meme# fstatat.m4 serial 3 dnl Copyright (C) 2004-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Written by Jim Meyering. # If we have the fstatat function, and it has the bug (in AIX 7.1) # that it does not fill in st_size correctly, use the replacement function. AC_DEFUN([gl_FUNC_FSTATAT], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_FUNCS_ONCE([fstatat]) if test $ac_cv_func_fstatat = no; then HAVE_FSTATAT=0 else dnl Test for an AIX 7.1 bug; see dnl . AC_CACHE_CHECK([whether fstatat (..., 0) works], [gl_cv_func_fstatat_zero_flag], [AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ #include #include int main (void) { struct stat a; return fstatat (AT_FDCWD, ".", &a, 0) != 0; } ]])], [gl_cv_func_fstatat_zero_flag=yes], [gl_cv_func_fstatat_zero_flag=no], [case "$host_os" in aix*) gl_cv_func_fstatat_zero_flag="guessing no";; *) gl_cv_func_fstatat_zero_flag="guessing yes";; esac ]) ]) case $gl_cv_func_fstatat_zero_flag+$gl_cv_func_lstat_dereferences_slashed_symlink in *yes+*yes) ;; *) REPLACE_FSTATAT=1 case $gl_cv_func_fstatat_zero_flag in *yes) AC_DEFINE([HAVE_WORKING_FSTATAT_ZERO_FLAG], [1], [Define to 1 if fstatat (..., 0) works. For example, it does not work in AIX 7.1.]) ;; esac ;; esac fi ]) freedink-108.4+dfsg/gnulib/m4/strdup.m40000644000175000017500000000165712330466613015420 0ustar meme# strdup.m4 serial 13 dnl Copyright (C) 2002-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRDUP], [ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([strdup]) AC_CHECK_DECLS_ONCE([strdup]) if test $ac_cv_have_decl_strdup = no; then HAVE_DECL_STRDUP=0 fi ]) AC_DEFUN([gl_FUNC_STRDUP_POSIX], [ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) AC_CHECK_FUNCS_ONCE([strdup]) if test $ac_cv_func_strdup = yes; then if test $gl_cv_func_malloc_posix != yes; then REPLACE_STRDUP=1 fi fi AC_CHECK_DECLS_ONCE([strdup]) if test $ac_cv_have_decl_strdup = no; then HAVE_DECL_STRDUP=0 fi ]) # Prerequisites of lib/strdup.c. AC_DEFUN([gl_PREREQ_STRDUP], [:]) freedink-108.4+dfsg/gnulib/m4/getdtablesize.m40000644000175000017500000000311412330466613016713 0ustar meme# getdtablesize.m4 serial 5 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_GETDTABLESIZE], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS_ONCE([getdtablesize]) if test $ac_cv_func_getdtablesize = yes; then # Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft limit # up to an unchangeable hard limit; all other platforms correctly # require setrlimit before getdtablesize() can report a larger value. AC_CACHE_CHECK([whether getdtablesize works], [gl_cv_func_getdtablesize_works], [AC_RUN_IFELSE([ AC_LANG_PROGRAM([[#include ]], [int size = getdtablesize(); if (dup2 (0, getdtablesize()) != -1) return 1; if (size != getdtablesize()) return 2; ])], [gl_cv_func_getdtablesize_works=yes], [gl_cv_func_getdtablesize_works=no], [case "$host_os" in cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows gl_cv_func_getdtablesize_works="guessing no" ;; *) gl_cv_func_getdtablesize_works="guessing yes" ;; esac]) ]) case "$gl_cv_func_getdtablesize_works" in *yes) ;; *) REPLACE_GETDTABLESIZE=1 ;; esac else HAVE_GETDTABLESIZE=0 fi ]) # Prerequisites of lib/getdtablesize.c. AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [:]) freedink-108.4+dfsg/gnulib/m4/mempcpy.m40000644000175000017500000000134612330466613015544 0ustar meme# mempcpy.m4 serial 11 dnl Copyright (C) 2003-2004, 2006-2007, 2009-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_MEMPCPY], [ dnl Persuade glibc to declare mempcpy(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl The mempcpy() declaration in lib/string.in.h uses 'restrict'. AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_CHECK_FUNCS([mempcpy]) if test $ac_cv_func_mempcpy = no; then HAVE_MEMPCPY=0 fi ]) # Prerequisites of lib/mempcpy.c. AC_DEFUN([gl_PREREQ_MEMPCPY], [ : ]) freedink-108.4+dfsg/gnulib/m4/strings_h.m40000644000175000017500000000316312330466613016071 0ustar meme# Configure a replacement for . # serial 6 # Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_HEADER_STRINGS_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_HEADER_STRINGS_H_BODY]) ]) AC_DEFUN([gl_HEADER_STRINGS_H_BODY], [ AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([strings.h]) if test $ac_cv_header_strings_h = yes; then HAVE_STRINGS_H=1 else HAVE_STRINGS_H=0 fi AC_SUBST([HAVE_STRINGS_H]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ /* Minix 3.1.8 has a bug: must be included before . */ #include #include ]], [ffs strcasecmp strncasecmp]) ]) AC_DEFUN([gl_STRINGS_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) ]) AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS], [ GNULIB_FFS=0; AC_SUBST([GNULIB_FFS]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FFS=1; AC_SUBST([HAVE_FFS]) HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP]) HAVE_DECL_STRNCASECMP=1; AC_SUBST([HAVE_DECL_STRNCASECMP]) ]) freedink-108.4+dfsg/gnulib/m4/sys_types_h.m40000644000175000017500000000121712330466613016440 0ustar meme# sys_types_h.m4 serial 5 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_SYS_TYPES_H], [ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) gl_NEXT_HEADERS([sys/types.h]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to override the 'off_t' type. AC_REQUIRE([gl_TYPE_OFF_T]) ]) AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS], [ ]) freedink-108.4+dfsg/gnulib/m4/float_h.m40000644000175000017500000000466312330466613015513 0ustar meme# float_h.m4 serial 9 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FLOAT_H], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) FLOAT_H= REPLACE_FLOAT_LDBL=0 case "$host_os" in aix* | beos* | openbsd* | mirbsd* | irix*) FLOAT_H=float.h ;; freebsd*) case "$host_cpu" in changequote(,)dnl i[34567]86 ) changequote([,])dnl FLOAT_H=float.h ;; x86_64 ) # On x86_64 systems, the C compiler may still be generating # 32-bit code. AC_EGREP_CPP([yes], [#if defined __LP64__ || defined __x86_64__ || defined __amd64__ yes #endif], [], [FLOAT_H=float.h]) ;; esac ;; linux*) case "$host_cpu" in powerpc*) FLOAT_H=float.h ;; esac ;; esac case "$host_os" in aix* | freebsd* | linux*) if test -n "$FLOAT_H"; then REPLACE_FLOAT_LDBL=1 fi ;; esac dnl Test against glibc-2.7 Linux/SPARC64 bug. REPLACE_ITOLD=0 AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works], [gl_cv_func_itold_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ int i = -1; volatile long double ld; int main () { ld += i * 1.0L; if (ld > 0) return 1; return 0; }]])], [gl_cv_func_itold_works=yes], [gl_cv_func_itold_works=no], [case "$host" in sparc*-*-linux*) AC_EGREP_CPP([yes], [#if defined __LP64__ || defined __arch64__ yes #endif], [gl_cv_func_itold_works="guessing no"], [gl_cv_func_itold_works="guessing yes"]) ;; *) gl_cv_func_itold_works="guessing yes" ;; esac ]) ]) case "$gl_cv_func_itold_works" in *no) REPLACE_ITOLD=1 dnl We add the workaround to but also to , dnl to increase the chances that the fix function gets pulled in. FLOAT_H=float.h ;; esac if test -n "$FLOAT_H"; then gl_NEXT_HEADERS([float.h]) fi AC_SUBST([FLOAT_H]) AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"]) AC_SUBST([REPLACE_ITOLD]) ]) freedink-108.4+dfsg/gnulib/m4/00gnulib.m40000644000175000017500000000415212330466613015510 0ustar meme# 00gnulib.m4 serial 3 dnl Copyright (C) 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This file must be named something that sorts before all other dnl gnulib-provided .m4 files. It is needed until such time as we can dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE and dnl m4_divert semantics. # Until autoconf 2.63, handling of the diversion stack required m4_init # to be called first; but this does not happen with aclocal. Wrapping # the entire execution in another layer of the diversion stack fixes this. # Worse, prior to autoconf 2.62, m4_wrap depended on the underlying m4 # for whether it was FIFO or LIFO; in order to properly balance with # m4_init, we need to undo our push just before anything wrapped within # the m4_init body. The way to ensure this is to wrap both sides of # m4_init with a one-shot macro that does the pop at the right time. m4_ifndef([_m4_divert_diversion], [m4_divert_push([KILL]) m4_define([gl_divert_fixup], [m4_divert_pop()m4_define([$0])]) m4_define([m4_init], [gl_divert_fixup()]m4_defn([m4_init])[gl_divert_fixup()])]) # AC_DEFUN_ONCE([NAME], VALUE) # ---------------------------- # Define NAME to expand to VALUE on the first use (whether by direct # expansion, or by AC_REQUIRE), and to nothing on all subsequent uses. # Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This # definition is slower than the version in Autoconf 2.64, because it # can only use interfaces that existed since 2.59; but it achieves the # same effect. Quoting is necessary to avoid confusing Automake. m4_version_prereq([2.63.263], [], [m4_define([AC][_DEFUN_ONCE], [AC][_DEFUN([$1], [AC_REQUIRE([_gl_DEFUN_ONCE([$1])], [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl [AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])]) # gl_00GNULIB # ----------- # Witness macro that this file has been included. Needed to force # Automake to include this file prior to all other gnulib .m4 files. AC_DEFUN([gl_00GNULIB]) freedink-108.4+dfsg/gnulib/m4/gettimeofday.m40000644000175000017500000001143512330466613016553 0ustar meme# serial 21 # Copyright (C) 2001-2003, 2005, 2007, 2009-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. dnl From Jim Meyering. AC_DEFUN([gl_FUNC_GETTIMEOFDAY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_SYS_TIME_H]) AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([gettimeofday]) gl_gettimeofday_timezone=void if test $ac_cv_func_gettimeofday != yes; then HAVE_GETTIMEOFDAY=0 else gl_FUNC_GETTIMEOFDAY_CLOBBER AC_CACHE_CHECK([for gettimeofday with POSIX signature], [gl_cv_func_gettimeofday_posix_signature], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include struct timeval c; int gettimeofday (struct timeval *restrict, void *restrict); ]], [[/* glibc uses struct timezone * rather than the POSIX void * if _GNU_SOURCE is defined. However, since the only portable use of gettimeofday uses NULL as the second parameter, and since the glibc definition is actually more typesafe, it is not worth wrapping this to get a compliant signature. */ int (*f) (struct timeval *restrict, void *restrict) = gettimeofday; int x = f (&c, 0); return !(x | c.tv_sec | c.tv_usec); ]])], [gl_cv_func_gettimeofday_posix_signature=yes], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int gettimeofday (struct timeval *restrict, struct timezone *restrict); ]])], [gl_cv_func_gettimeofday_posix_signature=almost], [gl_cv_func_gettimeofday_posix_signature=no])])]) if test $gl_cv_func_gettimeofday_posix_signature = almost; then gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 fi dnl If we override 'struct timeval', we also have to override gettimeofday. if test $REPLACE_STRUCT_TIMEVAL = 1; then REPLACE_GETTIMEOFDAY=1 fi m4_ifdef([gl_FUNC_TZSET_CLOBBER], [ gl_FUNC_TZSET_CLOBBER case "$gl_cv_func_tzset_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 gl_GETTIMEOFDAY_REPLACE_LOCALTIME AC_DEFINE([tzset], [rpl_tzset], [Define to rpl_tzset if the wrapper function should be used.]) AC_DEFINE([TZSET_CLOBBERS_LOCALTIME], [1], [Define if tzset clobbers localtime's static buffer.]) ;; esac ]) fi AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone], [Define this to 'void' or 'struct timezone' to match the system's declaration of the second argument to gettimeofday.]) ]) dnl See if gettimeofday clobbers the static buffer that localtime uses dnl for its return value. The gettimeofday function from Mac OS X 10.0.4 dnl (i.e., Darwin 1.3.7) has this problem. dnl dnl If it does, then arrange to use gettimeofday and localtime only via dnl the wrapper functions that work around the problem. AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER], [ AC_REQUIRE([gl_HEADER_SYS_TIME_H]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether gettimeofday clobbers localtime buffer], [gl_cv_func_gettimeofday_clobber], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include #include ]], [[ time_t t = 0; struct tm *lt; struct tm saved_lt; struct timeval tv; lt = localtime (&t); saved_lt = *lt; gettimeofday (&tv, NULL); return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0; ]])], [gl_cv_func_gettimeofday_clobber=no], [gl_cv_func_gettimeofday_clobber=yes], [# When cross-compiling: case "$host_os" in # Guess all is fine on glibc systems. *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; # If we don't know, assume the worst. *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; esac ])]) case "$gl_cv_func_gettimeofday_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 gl_GETTIMEOFDAY_REPLACE_LOCALTIME AC_DEFINE([GETTIMEOFDAY_CLOBBERS_LOCALTIME], [1], [Define if gettimeofday clobbers the localtime buffer.]) ;; esac ]) AC_DEFUN([gl_GETTIMEOFDAY_REPLACE_LOCALTIME], [ REPLACE_GMTIME=1 REPLACE_LOCALTIME=1 ]) # Prerequisites of lib/gettimeofday.c. AC_DEFUN([gl_PREREQ_GETTIMEOFDAY], [ AC_CHECK_HEADERS([sys/timeb.h]) AC_CHECK_FUNCS([_ftime]) ]) freedink-108.4+dfsg/gnulib/m4/xstrndup.m40000644000175000017500000000063112330466613015755 0ustar meme# xstrndup.m4 serial 2 dnl Copyright (C) 2003, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_XSTRNDUP], [ gl_PREREQ_XSTRNDUP ]) # Prerequisites of lib/xstrndup.c. AC_DEFUN([gl_PREREQ_XSTRNDUP], [ : ]) freedink-108.4+dfsg/bootstrap0000755000175000017500000000302512420231175013760 0ustar meme#!/bin/sh # Generates ./configure, Makefile.in's and tools # Copyright (C) 2007, 2008, 2010 Sylvain Beucler # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. # Cf. doc/bootstrap.txt. # Stop at first error: set -e # Print commands: set -x if [ "x$1" = xclean ]; then test ! -f Makefile || make maintainer-clean || true # Generated by aclocal. rm -f aclocal.m4 # Generated by autoheader. rm -f config.h.in # Generated by autoconf. rm -f configure rm -rf autom4te.cache/ # Generated or brought in by automake. find -name "Makefile.in" | xargs -r rm find autotools/ -type l | xargs -r rm exit; fi if ! which pkg-config > /dev/null; then echo "Please install 'pkg-config' (used to query installed dependencies)" echo "Cf. http://pkgconfig.freedesktop.org/" exit 1 fi # Gnulib # Look for gnulib-tool. Use '|| true' because of 'set -e' above GNULIB_TOOL=`PATH=gnulib-git:$PATH:/usr/src/gnulib which gnulib-tool \ || true` if [ -z "$GNULIB_TOOL" ]; then git clone git://git.savannah.gnu.org/gnulib.git gnulib-git GNULIB_TOOL=./gnulib-git/gnulib-tool fi $GNULIB_TOOL --update --more-symlinks # Beware of gnulib/gettext interaction, # cf. http://lists.gnu.org/archive/html/bug-gnulib/2008-12/msg00041.html if autoreconf --install --symlink --force $* then echo "You now can run ./configure" else echo "*** Error: please check the messages above. ***" fi freedink-108.4+dfsg/freedink.spec0000644000175000017500000001776612421727263014512 0ustar memeName: freedink Version: 108.4 Release: 1%{?dist} Summary: Humorous top-down adventure and role-playing game Group: Amusements/Games BuildRequires: SDL-devel SDL_gfx-devel SDL_ttf-devel SDL_image-devel SDL_mixer-devel BuildRequires: fontconfig-devel BuildRequires: desktop-file-utils BuildRequires: check-devel %if 0%{?suse_version} BuildRequires: update-desktop-files %endif License: GPLv3+ URL: http://www.gnu.org/software/freedink/ Source0: ftp://ftp.gnu.org/gnu/freedink/freedink-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: freedink-engine = %{version}-%{release} freedink-dfarc # Reference bundled copy of gnulib - cf. https://fedorahosted.org/fpc/ticket/174 Provides: bundled(gnulib) %description Dink Smallwood is an adventure/role-playing game, similar to Zelda, made by RTsoft. Besides twisted humor, it includes the actual game editor, allowing players to create hundreds of new adventures called Dink Modules or D-Mods for short. GNU FreeDink is a new and portable version of the game engine, which runs the original game as well as its D-Mods, with close compatibility, under multiple platforms. This package is a meta-package to install the game, its data and a front-end to manage game options and D-Mods. %package engine Summary: Humorous top-down adventure and role-playing game (engine) Group: Amusements/Games Requires: freedink-data # TiMidity++ is useful to play midis when /dev/sequencer isn't # functional (most of the time) and installing it prevents some # SDL_mixer freezes (see TROUBLESHOOTING). In Fedora this is done # through SDL_mixer dependencies. %if 0%{?suse_version} Requires: timidity %endif %if 0%{?with_included_liberation_font} # No dependency %else # Repect Fedora guidelines (see below) %if 0%{?fedora} Requires: liberation-sans-fonts %else Requires: liberation-fonts %endif %endif %description engine Dink Smallwood is an adventure/role-playing game, similar to Zelda, made by RTsoft. Besides twisted humor, it includes the actual game editor, allowing players to create hundreds of new adventures called Dink Modules or D-Mods for short. GNU FreeDink is a new and portable version of the game engine, which runs the original game as well as its D-Mods, with close compatibility, under multiple platforms. This package contains the game engine alone. %prep %setup -q # openSUSE does not allow empty packages, so create at least one file %if 0%{?suse_version} cat > README.META << EOF This is just a meta package to require all needed packages. EOF %endif %build # Using '--disable-embedded-resources' because 'rpmbuild' will remove # them anyway (so it can make the -debuginfo package -- too bad :/) %configure --disable-embedded-resources make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" %find_lang %{name} %find_lang %{name}-gnulib # %%files only support one '-f' argument (see below) cat %{name}-gnulib.lang >> %{name}.lang desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}edit.desktop %if 0%{?suse_version} %suse_update_desktop_file -i %name %suse_update_desktop_file -i %{name}edit %endif # http://fedoraproject.org/wiki/Packaging/Guidelines#Avoid_bundling_of_fonts_in_other_packages # Policy insists on not installing a different version of "Liberation # Sans". Beware that the system version may be different than the # official FreeDink font, because Liberation changes regularly. %if 0%{?with_included_liberation_font} # Include it nonetheless for the sake of avoiding # liberation-fonts<->liberation-sans-fonts conflicts in the # freedink.org repository %else # Remove it for compliance with Fedora guidelines rm $RPM_BUILD_ROOT%{_datadir}/%{name}/LiberationSans-Regular.ttf %endif %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) # openSUSE does not allow empty packages %if 0%{?suse_version} %doc README.META %endif %files engine -f %{name}.lang %defattr(-,root,root,-) %doc AUTHORS COPYING NEWS README THANKS TROUBLESHOOTING ChangeLog %{_bindir}/* %{_datadir}/appdata/* %{_datadir}/applications/* %{_datadir}/%{name}/ %{_datadir}/pixmaps/* %{_mandir}/man6/* %changelog * Wed Oct 22 2014 Sylvain Beucler - 108.4-1 - New upstream release * Sat Aug 16 2014 Fedora Release Engineering - 108.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Fri Jun 13 2014 Hans de Goede - 108.2-3 - Rebuild for new SDL_gfx * Sat Jun 07 2014 Fedora Release Engineering - 108.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Thu May 29 2014 Sylvain Beucler - 108.2-1 - New upstream release * Sat Aug 03 2013 Fedora Release Engineering - 1.08.20121209-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild * Wed Feb 13 2013 Fedora Release Engineering - 1.08.20121209-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild * Sun Dec 09 2012 Sylvain Beucler - 1.08.20120912-1 - New upstream release * Thu Jul 19 2012 Fedora Release Engineering - 1.08.20120427-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild * Sun Jun 10 2012 Sylvain Beucler - 1.08.20120427-2 - Add virtual provides for bundled(gnulib) copylib (#821754) * Fri Apr 27 2012 Sylvain Beucler - 1.08.20120427-1 - New upstream release * Fri Jan 13 2012 Fedora Release Engineering - 1.08.20101114-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild * Tue Feb 08 2011 Fedora Release Engineering - 1.08.20101114-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Sun Nov 14 2010 Sylvain Beucler - 1.08.20101114-1 - New upstream release * Tue Apr 20 2010 Sylvain Beucler - 1.08.20100420-1 - New upstream release * Sun Mar 21 2010 Sylvain Beucler - 1.08.20100321-1 - New upstream release * Fri Sep 18 2009 Sylvain Beucler - 1.08.20090918-1 - New upstream release * Wed Sep 16 2009 Sylvain Beucler - 1.08.20090916-1 - New upstream release - Can optionaly bundle default font, to avoid liberation-fonts vs. liberation-sans-fonts issues when building snapshot RPMs * Fri Jul 24 2009 Fedora Release Engineering - 1.08.20090120-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Tue Feb 24 2009 Fedora Release Engineering - 1.08.20090120-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild * Wed Feb 4 2009 Sylvain Beucler - 1.08.20090120-2 - Apply Fedora font rename: liberation-fonts -> liberation-sans-fonts * Tue Jan 20 2009 Sylvain Beucler - 1.08.20090120-1 - New upstream release (fix engine freeze in some DinkC scripts) * Fri Jan 9 2009 Sylvain Beucler - 1.08.20090109-2 - Bump version to fix build tag issue * Fri Jan 9 2009 Sylvain Beucler - 1.08.20090109-1 - New upstream release - Declare .mo translation catalogs * Sun Oct 5 2008 Sylvain Beucler - 1.08.20080920-4 - Use liberation-fonts in all distro versions * Wed Sep 24 2008 Sylvain Beucler - 1.08.20080920-3 - Don't use 'update-desktop-database' for simple desktop files - Fix unescaped macros in comments - Use spaces around '=' in version-specific dependency * Wed Sep 24 2008 Sylvain Beucler - 1.08.20080920-2 - Fix variable s/fedora_version/fedora/ - Meta-package depends on same version of freedink-engine - Use "install -p" to preserve timestamps - Validate installed .desktop files * Sat Sep 20 2008 Sylvain Beucler - 1.08.20080920-1 - New upstream release * Thu Aug 28 2008 Sylvain Beucler - 1.08.20080828-1 - Initial package freedink-108.4+dfsg/TROUBLESHOOTING0000644000175000017500000000503712344437027014245 0ustar memeTroubleshooting =============== Graphics -------- Q: Under GNU/Linux on 16:9 screens, the image is streched horizontally A: You can configure your screen scaling mode; with xrandr in a console: xrandr # check your screenname, e.g. LVDS-1 xrandr --output LVDS-1 --set "scaling mode" "Full aspect" Sound ----- Q: I want FreeDink to use my MIDI hardware or fluidsynth setup, but it uses TiMidity or default Fluidsynth instead. A: SDL_mixer (the MIDI component that FreeDink uses) can use both hardware and software sequencer. If '/etc/timidity/timidity.cfg' is present, it will use that first. You can remove that file if you want to use '/dev/sequencer' directly :) Under Debian, you can disable fluidsynth by using a wrong soundfont path: SDL_FORCE_SOUNDFONTS=1 freedink (you may also try fiddling with SDL_SOUNDFONTS=) You can also see above that there are some issues if '/dev/sequencer' is present but not functionnal, so it's best we use TiMidity by default for common Dinkers, and just let you remove '/etc/timidity/timidity.cfg' if you know better ;) Q: FreeDink is eating all the memory A: Try running FreeDink with fluidsynth *disabled* (see previous entry): SDL_FORCE_SOUNDFONTS=1 SDL_SOUNDFONTS= freedink Cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=748090 Q: Under GNU/Linux, FreeDink freezes when trying to play a sound or music. A: SDL_mixer (the component that provides the sound) is known to freeze when: * /dev/sequencer is present and * /etc/timidity/timidity.cfg isn't. An easy fix is to install Timidity++ (see BUILD). More information at http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=369670 Note that the Debian version of SDL_mixer now attemps to read /etc/timidity/freepats.cfg as well. Joystick -------- Q: The mouse cursor is constanatly going up by itself. A: If you run FreeDink in debug mode (option -d), and you see something like this: [info ] ThinkPad HDAPS joystick emulation [info ] ThinkPad HDAPS accelerometer data [info ] Picking the first one... [info ] Name: ThinkPad HDAPS joystick emulation [info ] Number of axes: 2 [info ] Number of buttons: 0 [info ] Number of balls: 0 [info ] Number of hats: 0 This means SDL interprets your laptop's accelerometer as a joystick device. This is nearly guaranteed to cause trouble, see here for more information: http://www.thinkwiki.org/wiki/HDAPS http://bugs.debian.org/690483 You can also disable the joystick (option --nojoy). freedink-108.4+dfsg/debian/0000755000175000017500000000000012421730246013243 5ustar memefreedink-108.4+dfsg/debian/source/0000755000175000017500000000000012330466347014552 5ustar memefreedink-108.4+dfsg/debian/source/format0000644000175000017500000000001412330466347015760 0ustar meme3.0 (quilt) freedink-108.4+dfsg/debian/copyright0000644000175000017500000001662112331523335015203 0ustar memeThis is GNU FreeDink. The original source can always be found at: http://ftp.gnu.org/gnu/freedink/ License: This file is part of GNU FreeDink GNU FreeDink 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 3 of the License, or (at your option) any later version. GNU FreeDink 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, see . On Debian systems, the complete text of the GNU General Public License version 3 can be found in `/usr/share/common-licenses/GPL-3'. FreeDink includes the 'Liberation Sans' font (but is not used in the Debian package which depends on ttf-liberation instead), cf. share/README.fonts. License: LIBERATION is a trademark of Red Hat, Inc. This agreement governs the use of the Software and any updates to the Software, regardless of the delivery mechanism. Subject to the following terms, Red Hat, Inc. ("Red Hat") grants to the user ("Client") a license to this work pursuant to the GNU General Public License v.2 with the exceptions set forth below and such other terms as our set forth in this End User License Agreement. 1. The Software and License Exception. LIBERATION font software (the "Software") consists of TrueType-OpenType formatted font software for rendering LIBERATION typefaces in sans serif, serif, and monospaced character styles. You are licensed to use, modify, copy, and distribute the Software pursuant to the GNU General Public License v.2 with the following exceptions: (a) As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. (b) As a further exception, any distribution of the object code of the Software in a physical product must provide you the right to access and modify the source code for the Software and to reinstall that modified version of the Software in object code form on the same physical product on which you received it. 2. Intellectual Property Rights. The Software and each of its components, including the source code, documentation, appearance, structure and organization are owned by Red Hat and others and are protected under copyright and other laws. Title to the Software and any component, or to any copy, modification, or merged portion shall remain with the aforementioned, subject to the applicable license. The "LIBERATION" trademark is a trademark of Red Hat, Inc. in the U.S. and other countries. This agreement does not permit Client to distribute modified versions of the Software using Red Hat's trademarks. If Client makes a redistribution of a modified version of the Software, then Client must modify the files names to remove any reference to the Red Hat trademarks and must not use the Red Hat trademarks in any way to reference or promote the modified Software. 3. Limited Warranty. To the maximum extent permitted under applicable law, the Software is provided and licensed "as is" without warranty of any kind, expressed or implied, including the implied warranties of merchantability, non-infringement or fitness for a particular purpose. Red Hat does not warrant that the functions contained in the Software will meet Client's requirements or that the operation of the Software will be entirely error free or appear precisely as described in the accompanying documentation. 4. Limitation of Remedies and Liability. To the maximum extent permitted by applicable law, Red Hat or any Red Hat authorized dealer will not be liable to Client for any incidental or consequential damages, including lost profits or lost savings arising out of the use or inability to use the Software, even if Red Hat or such dealer has been advised of the possibility of such damages. 5. General. If any provision of this agreement is held to be unenforceable, that shall not affect the enforceability of the remaining provisions. This agreement shall be governed by the laws of the State of North Carolina and of the United States, without regard to any conflict of laws provisions, except that the United Nations Convention on the International Sale of Goods shall not apply. On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'. FreeDink includes vgasys.fon (from Wine), cf. src/vgasys_fon.c. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA On Debian systems, the complete text of the GNU General Public License version 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1'. The gnulib directory is an embedded copy of gnulib: License: GNULib is a collection of unrelated source files. Each source file is provided under a different license (including GPL, LGPL, GFDL and others) and includes a license headers stating the terms that apply to that particular file. On Debian systems, the complete text of the GNU General Public License version 2 can be found in /usr/share/common-licenses/GPL-2 file, the GNU General Public License version 3 in /usr/share/common-licenses/GPL-3 file, the GNU Lesser General Public License version 3 in /usr/share/common-licenses/LGPL-3, and the GNU Free Document License in /usr/share/common-licenses/GFDL-1.3. The Debian packaging is Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Sylvain Beucler and is licensed under the GPL, either version 3, or (at your option) any later version, see `/usr/share/common-licenses/GPL-3'. Upstream keeps updated copyright and license notices in file headers, as well as an overview in the standard GNU 'AUTHORS' file. In doubt, they are the reference. freedink-108.4+dfsg/debian/control0000644000175000017500000000477612421723646014672 0ustar memeSource: freedink Section: games Priority: extra Maintainer: Debian Games Team Uploaders: Sylvain Beucler Build-Depends: debhelper (>= 9), autotools-dev, pkg-config, libsdl1.2-dev, libsdl-gfx1.2-dev, libsdl-ttf2.0-dev, libsdl-image1.2-dev, libsdl-mixer1.2-dev, libfontconfig1-dev, check Standards-Version: 3.9.6 Homepage: http://www.gnu.org/software/freedink/ Vcs-Git: git://git.savannah.gnu.org/freedink.git Vcs-Browser: http://git.savannah.gnu.org/cgit/freedink.git Package: freedink-engine Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, freedink-data, fonts-liberation, freepats Recommends: freedink-dfarc Description: humorous top-down adventure and role-playing game (engine) Dink Smallwood is an adventure/role-playing game, similar to Zelda, made by RTsoft. Besides twisted humor, it includes the actual game editor, allowing players to create hundreds of new adventures called Dink Modules or D-Mods for short. . GNU FreeDink is a new and portable version of the game engine, which runs the original game as well as its D-Mods, with close compatibility, under multiple platforms. . This package contains the game engine alone. Package: freedink-engine-dbg Section: debug Architecture: any Depends: ${misc:Depends}, freedink-engine (= ${binary:Version}) Description: debugging symbols for freedink Dink Smallwood is an adventure/role-playing game, similar to Zelda, made by RTsoft. Besides twisted humor, it includes the actual game editor, allowing players to create hundreds of new adventures called Dink Modules or D-Mods for short. . GNU FreeDink is a new and portable version of the game engine, which runs the original game as well as its D-Mods, with close compatibility, under multiple platforms. . This package contains the debugging symbols for freedink. Package: freedink Architecture: all Depends: ${misc:Depends}, freedink-engine, freedink-dfarc Description: humorous top-down adventure and role-playing game Dink Smallwood is an adventure/role-playing game, similar to Zelda, made by RTsoft. Besides twisted humor, it includes the actual game editor, allowing players to create hundreds of new adventures called Dink Modules or D-Mods for short. . GNU FreeDink is a new and portable version of the game engine, which runs the original game as well as its D-Mods, with close compatibility, under multiple platforms. . This package is a metapackage to install the game, its data and a front-end to manage game options and D-Mods. freedink-108.4+dfsg/debian/docs0000644000175000017500000000005312330466347014123 0ustar memeAUTHORS NEWS README THANKS TROUBLESHOOTING freedink-108.4+dfsg/debian/rules0000755000175000017500000000400412420231175014315 0ustar meme#!/usr/bin/make -f # -*- makefile -*- # # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # # Modified to make a template file for a multi-binary package with separated # build-arch and build-indep targets by Bill Allombert 2001 # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # This has to be exported to make some magic below work. export DH_OPTIONS # As of 2014-05, there are issues on Raspbian with -O2 or -Os # Cf. https://bugs.launchpad.net/raspbian/+bug/1322849 ifeq ($(DEB_HOST_ARCH), armhf) export DEB_CFLAGS_MAINT_SET=$(patsubst -O%,-O1,$(shell dpkg-buildflags --get CFLAGS)) endif %: dh $@ --parallel --with autotools_dev override_dh_auto_configure: # Using '--bindir=/usr/games' by Debian policy # (e.g. not the case for Fedora) # Using '--disable-embedded-resources' because 'dh_strip' will remove # them anyway, and we need it for the -dbg package -- too bad :/ dh_auto_configure -- --bindir=/usr/games --datadir=/usr/share/games --disable-embedded-resources override_dh_strip: # Create -dbg package with debug symbols for gdb dh_strip --dbg-package=freedink-engine-dbg override_dh_auto_install: # There's only one real package, let's not bother with # debian/tmp + move files in dh_install - install straight in # the appropriate directory dh_auto_install --destdir=debian/freedink-engine # Lintian complains with 'duplicate-font-file', let's have # FreeDink rely on libfontconfig + depend on ttf-liberation rm debian/freedink-engine/usr/share/games/freedink/LiberationSans-Regular.ttf # Install XPM icon cp -a src/freedink_xpm.c debian/freedink-engine/usr/share/pixmaps/freedink.xpm override_dh_installdocs: # --link-doc requires debhelper 7.4.2 dh_installdocs --link-doc=freedink-engine override_dh_installchangelogs: dh_installchangelogs ChangeLog freedink-108.4+dfsg/debian/menu0000644000175000017500000000051012330466347014135 0ustar meme?package(freedink-engine):needs="X11" section="Games/Adventure"\ title="GNU FreeDink" command="/usr/games/freedink"\ icon="/usr/share/pixmaps/freedink.xpm" ?package(freedink-engine):needs="X11" section="Games/Adventure"\ title="GNU FreeDinkedit" command="/usr/games/freedinkedit"\ icon="/usr/share/pixmaps/freedink.xpm" freedink-108.4+dfsg/debian/compat0000644000175000017500000000000212330466347014450 0ustar meme9 freedink-108.4+dfsg/debian/changelog0000644000175000017500000001026412421723533015121 0ustar memefreedink (108.4-1) unstable; urgency=low * New Upstream Version * Bump Standards-Version to 3.9.6 (no changes) -- Sylvain Beucler Wed, 22 Oct 2014 14:04:34 +0200 freedink (108.2-1) unstable; urgency=low * New Upstream Version * Depend on fonts-liberation rather than on renamed ttf-liberation (Closes: #722357) * Bump compat to 9 to address lintian 'hardening-no-relro' * Bump Standards-Version to 3.9.5 (no changes) * Use XPM icon from src/ rather than duplicating it in debian/ * Compile with -O1 on Raspbian to avoid weird segfault * watch: add pgpsigurlmangle option (fixes Lintian debian-watch-may-check-gpg-signature) -- Sylvain Beucler Thu, 29 May 2014 10:34:38 +0200 freedink (1.08.20121209-1) experimental; urgency=low * New Upstream Version (Closes: #688934) * Remove patch for install-reloc (integrated upstream) -- Sylvain Beucler Sun, 09 Dec 2012 18:09:55 +0100 freedink (1.08.20120427-2) unstable; urgency=low * Update install-reloc (Closes: #671044) -- Sylvain Beucler Wed, 2 May 2012 14:00:00 +0200 freedink (1.08.20120427-1) unstable; urgency=low * New Upstream Version * Upgrade packaging to debhelper 7 and source format 3.0 (quilt) * Update copyright file * Bump Standards-Version to 3.9.3 * Update official webpage -- Sylvain Beucler Fri, 27 Apr 2012 19:00:00 +0200 freedink (1.08.20101114-1) experimental; urgency=low * Precise licenses versions in debian/copyright, fixes copyright-refers-to-symlink-license lintian warning * Update copyright about new translations * Symlink 'freedink' documentation to 'freedink-engine' (requires debhelper >= 7.4.2) * Bump Standards-Version to 3.9.1 * Update my email address in Uploaders -- Sylvain Beucler Sun, 14 Nov 2010 00:59:28 +0100 freedink (1.08.20100420-1) unstable; urgency=low * New Upstream Version (Closes: #578444) * Add debian/source/format to document we're using source format 1.0 (to ease backports) and fix missing-debian-source-format lintian warning -- Sylvain Beucler Tue, 20 Apr 2010 22:19:58 +0200 freedink (1.08.20100321-1) unstable; urgency=low * New Upstream Version * Update years in debian/copyright and add translations information * Bump Standards-Version to 3.8.4 * Fix debhelper-but-no-misc-depends by adding ${misc:Depends} in binary packages dependencies * Add missing acsite.m4 which is necessary to autoreconf and was missing for tarball; note that the packaging does not autoreconf, but my sponsor asked for it ;) -- Sylvain Beucler Tue, 13 Apr 2010 17:42:59 +0200 freedink (1.08.20090918-1) unstable; urgency=low * New Upstream Version * Fix/update packaging copyright notices * Drop libffi dependency: not used upstream anymore * Replace timidity dependency with freepats, thanks to recent fix in sdl-mixer1.2 1.2.8-6 * Move -dbg package to the debug section * Don't symlink LiberationSans-Regular.ttf since FreeDink uses FontConfig to locate it * Bump Standards-Version to 3.8.3 * Move update of config.sub/config.guess from clean to build target * Add gbp.conf to ignore .gitignore files automatically * Rename BUILD to README.source -- Sylvain Beucler Fri, 18 Sep 2009 23:32:06 +0200 freedink (1.08.20090120-1) unstable; urgency=low [ Sylvain Beucler ] * New Upstream Version * update debian/BUILD * add a build-dependency on libffi-dev [ Gonéri Le Bouder ] * use Debian version of LiberationSans-Regular.ttf - freedink-engine depends on ttf-liberation - update debian/rules to create a symlink * update Sylvain's changelog entry to add some missing points * add the year 2009 in debian/copyright for Sylvain Beucler -- Sylvain Beucler Sat, 31 Jan 2009 23:15:04 +0100 freedink (1.08.20080920.dfsg-1) unstable; urgency=low * Initial package (Closes: #492760) * Reflect dfarc -> freedink-dfarc rename * Watch official ftp.gnu.org release location * Point Vcs-* to the Debian packaging rather than the development repository -- Sylvain Beucler Sat, 20 Sep 2008 20:34:22 +0200 freedink-108.4+dfsg/debian/watch0000644000175000017500000000016512420231175014272 0ustar memeversion=3 opts=pgpsigurlmangle=s/$/.sig/ \ http://ftp.gnu.org/gnu/freedink/freedink-(\d.*)\.tar\.gz debian uupdate freedink-108.4+dfsg/debian/README.source0000644000175000017500000000275212331513330015421 0ustar memeTo build the Debian package =========================== tar xzf freedink-*.tar.gz ln -s freedink-x.y.z.tar.gz freedink_x.y.z.orig.tar.gz git clone git://git.sv.gnu.org/freedink freedinkgit cp -a freedinkgit/debian freedink-*/ cd freedink-*/ debuild -us -uc MIDI support ============ Before Squeeze (i.e. if you backport), you needed to explicitely specify 'timidity' as a dependency, because its absence could cause troubles (see TROUBLESHOOTING in the source tarball and http://bugs.debian.org/369670). An alternative would be to 'touch /etc/timidity/timidity.cfg' on install but this looks ugly. Version 1.2.8-6 of the sdl-mixer1.2 packages introduces a non-official patch (05_fallback_to_freepats.diff) that addresses this issue. You could specify it as a Recommend, but this isn't supported by Synaptic yet, so let's keep it as a dependency until then. Nonetheless, 'freepats' is still a dependency, because it's essentially the only way to get MIDI support for FreeDink in Debian main. Gnulib ====== While it may look like FreeDink is embedding a private copy of Gnulib, this isn't the case. This point was raised on the mailing list with a favorable response from the ftp-masters: http://lists.gnu.org/archive/html/bug-gnulib/2008-11/msg00269.html http://lists.gnu.org/archive/html/bug-gnulib/2008-12/msg00018.html Learn more about Gnulib at http://www.gnu.org/software/gnulib/manual/html_node/Introduction.html Bottom-line: don't attempt to relink FreeDink with Debian's gnulib package. freedink-108.4+dfsg/debian/upstream/0000755000175000017500000000000012420231175015077 5ustar memefreedink-108.4+dfsg/debian/upstream/signing-key.asc0000644000175000017500000005107412420231175020022 0ustar meme-----BEGIN PGP PUBLIC KEY BLOCK----- Version: SKS 1.1.4 Comment: Hostname: pgp.mit.edu mQGiBD/Pj5QRBADpqGhFnQEr7/nDzhHFepX5AeZWZovFaqgh8YxlcYNxn9RxjRgyyWhIKc+j azErNCj2UP3qBrK+yNboTYjs9RZZ/R7uzyvfuStYIan9iGZREjPslZcWM41kzx6xjiVWmR4v p9D74i+COmp4HEupB2+BIWzmQGb+qHb893eDOmDWRwCg7TXNARjBgmTRXi55EBSKSFMh950D /1xxwa0wyP97aK66aPl08X/TasHawv3HYwpi0GHemhFuVRdwTgqMcnRcXE095/tsnWUL3WKX fXj+MgjtklENwLGq5UWB4ejGBETCk0QfRInksFx5gK6pUdVoSFJ9hgzZIEBCnbmbTPJVUBN/ Y4K88oLtKCdPXsXRufJlxGYqPDxtBADL7y39G6nQSSbhIeMxc8Ntw9B6Xduw1PtNutv4wBzm B9bIbMceuUmzA0hrD09r4QAPMbK0cvcn7HEx0fPQU0jeDUw70VS2ysJzuiZTuL+Du7UQnFkb OwttGyVSNhcxUoNgyLOrO+wtlVUT99mkMwQnpVH6WrU1EdJTqh8TkKeG1rQwU3lsdmFpbiBC ZXVjbGVyIChHTlUgTWFpbnRhaW5lcikgPGJldWNAYmV1Yy5uZXQ+iEYEEBECAAYFAkSvwkoA CgkQtzWmSeC6BMFGtQCeNwtYrrQy5wYWIoWEUw7au3KO99EAoIxyX7sx4kTmDw++JecZpQGD O7RRiEYEEBECAAYFAkawb+UACgkQbiFv7WQGnVz3tgCfZl6VcdDgI3Btz829rFVUtMjgRo0A mgOZxZy7/CvZ+mEzTN3JIQ/sNidDiEYEEBECAAYFAkh45zYACgkQgtzbJOwwNPFdpACeNhCr PR6XTKpjnKQjFU7UzhR4L68Anj4yp+HYOcRMZuiBE4p3qKrQ6+GYiEYEEBECAAYFAkh+iMUA CgkQQOzBVKi6weofMgCeMPxmlKocAm8SGMbbGS4bAoBiZtUAoJwoo8fYyLtHbnKYmM4Lr61W RtHHiEYEEBECAAYFAkh/MY8ACgkQOHNNd4eQFFIuhwCeOgfxH6y+D0L5O6k1W5Ek3YKeB+cA n22ZRkYITdHUy7GlfIr6l+WdVNv6iEYEEBECAAYFAkr8BYQACgkQ0bzg4o+hGhV96wCfcyLP CvFxeTpgv+LwL/+qphu9EsIAnRlIxXe52uPmjeTxs11oxUxqdH78iEYEEBECAAYFAksBlZsA CgkQ2yYwJIHdsGVO/gCfUAErowt1zqX7fY347HNML+dGG4gAoJefvis/cyXF55kltJiRCrKK BTOjiEYEEBECAAYFAksCppQACgkQGAVRutlaPDXeTACgsI6zbVov2woAxcI9x/JLQHTjOi4A mwRaDbx+nkTRMNzaOcdEyy3f1BuqiEYEEBECAAYFAksMPkwACgkQd92V4upS7PTw6ACfRlWI EQYTigT1FfwJcoQs7GUFSasAoJz97RL7H73SFyDiN8iN9RjtD7+hiEYEEBECAAYFAksSm28A CgkQXeJJllsDWKJ4RQCffmZL64p/QYSCCQjS5T7skjPE5DQAnRIO8in0Z7dx7uGGvwMWyD2q 8WwriEYEEBECAAYFAkscZIcACgkQxxpMZfBZsdECBgCfWX0IOv2OV7c7UyjHlZb6k6DR9OgA n3F9Mm3rBwPO7Xed5RpjNhsdRBwHiEYEEBECAAYFAktbGiIACgkQ8cBcumlruBnjCACgzPBq 8osA3WPF/eeywnx6RXgbFNcAoIBk3mnUOgmXR1C3bGRTthfO7jt4iEYEEBECAAYFAktbTJEA CgkQQxaTqKohBRLGvQCgpN0xT6FF5BvGYCzL2EnmHPAUZ4sAn1PwWmu8qQp9WQBDcy/tbgI1 alk3iEYEEBECAAYFAktcHrEACgkQ1cqbBPLEI7yb1ACgjjZ0KNrFttM5WJW+FHw8fJR3GvsA oK/lRWALYd1CM+jFN3BiKAywOx3TiEYEEBECAAYFAkthWwQACgkQMyVf6J54PgXfAACfbNus kWe04b9txdJ9/RGIMGqnQXIAoKm0CXfBsvuGUdCf/15TMSRMmYdIiEYEEBECAAYFAkt73w0A CgkQchi8veCammdYiQCcCNnr2mVXgsWhvTzVN7fjWbv9cdEAoLV9aJnac4GR+WIvrvlzLnbU uos7iEYEEBECAAYFAkw6Dg4ACgkQKLX03ZSPZGy6RQCdEyyx9FwLynoFBziEpxOJDsRJmjQA njoz+pkE9KugubhQceacG2mLHeJNiEYEEBECAAYFAkw9hV8ACgkQXsKnfzbsxSOUHgCgs52w CWrmqg9SNOvZ2GT/NF8EX8EAn23fO0jyRJbbKG2hrYbB5kb6wu48iEYEEBECAAYFAlBFxfkA CgkQv2Bwi0hCbH76oQCfaDtTMO25MaCgru3iGNmv18+yFQAAnAwA1VhRg8Behh3Kp9wxRU8T vyRBiEYEEBEIAAYFAktwKs8ACgkQh3TgaXYDPEEjTACeOkyxy5j5wJsTaJiMZs0THEoyoQcA njpEe5NtLUsa9OrTLQfG0UQ2Tw0kiEYEEBEIAAYFAkxyQJYACgkQJKAUGKwVtQx6lQCgpxvu RqA85zmT4MKahjERXkGqY4MAn0A7p3gqNTBZKrWdZAH4fLHg3ONdiEYEEBEKAAYFAk194E4A CgkQsczZcpAmcIbCwgCgqEKv3nWLgkavu3h7Monua3IIwyIAn1Tpzz4/IIsfpnWCaU0sjxHF +FYAiEYEEhECAAYFAkeWX9MACgkQLpeD3qamL1hW2wCguc1ckjbgvgDQUI8hdB8Q2jx1ReUA oJhf83bb6iRWVhq3i3zXkaxp98TRiEYEEhECAAYFAkh7FIMACgkQvzOavibF0oYVYQCgmthD J5hRK9taEiQCVFy7NMVF8JUAniNeESHWgC4WuypD7Kc8sylEtQ0CiFYEEBELAAYFAksSm28A CgkQ8q2FrB5Cs2fWCADeL08ePaqeJ7USYQi9eayeN+EQxG3DXYo9wPuZdwDeOjMPavd8xVkO Pnj1XbkOdkWhDQWw7tZtqlUAz4hZBBMRAgAZBQI/z4+UBAsHAwIDFQIDAxYCAQIeAQIXgAAK CRByWV6xgXBLkxx4AJ0Rpn6kRsXeYxRzp2Ak0OKrHIoSogCZAa+cnxL3nzKz+XQ+amJJHqsU 9/CIXgQREQgABgUCTDYKUQAKCRD31cm/dlxh42x4AP0eltuiLwoSAXMT0YwM+weO94GJjSUa 6Ms52UGcz73ZlwD9GtSHsvr116VLcGoJQ6ZLVB5DSVqY5sr8p2TPjnLGyHaIXgQSEQoABgUC TDWXZQAKCRA1qTt06C5CCehaAPwIJ1UPiao+C5pec/zfVDm3xhzBC+W4zikPlgQYkSJWDAEA skG+wGNk2OymU4LiH3XhICeQCIBVZDLBfdW+7T+yMamIYQQTEQIAGQUCP8+PlAQLBwMCAxUC AwMWAgECHgECF4AAEgkQcllesYFwS5MHZUdQRwABARx4AJ0Rpn6kRsXeYxRzp2Ak0OKrHIoS ogCZAa+cnxL3nzKz+XQ+amJJHqsU9/CInAQQAQIABgUCSH3vOAAKCRD1TYragIIf6vHzA/0S hh9xZRj2/yagQcZ1G6wNGpHgao+6H/CMoKSifTpjLVgU1V5vvZ691efo/BXKwfWJJk0YPfSR jULDyrEobOQ3WLshSc3GMq12lmOEyU2NC/VII0tjFVRBWHJtLdZ8bVceVDl8eM7I5CRjwQR2 kc1ZLxjuZv0bB9f5xTUEbuvNj4i8BBABAgAGBQJLBPEHAAoJEO2iHpS1ZXFv16oE/Au7CVAf k1Qy+3Wh9E7PlLEHez1EDlgCrM0Q7jcMYhFfKLi8aB2s6a7cL6q11gFeikIn/uRSE/QOVSBD WYyOyr/6Wh2R0SI6X041SAei5WsbLKvCE1CIKDGBz3Ye8liRUJxH5i0/t8SWW40zLmBi5waY 7WKWmJwVdSGH1U2m9YcH4pqUeq3zIbPToEOPYdzdUaIAnjv/EHqHCq/7IofoszyJARwEEAEI AAYFAktwKrcACgkQlnkJIV5zyd9TUggAkvhYFP4I+5lLF6a8q+YR2h0o7v2YqtjY5IGoc6zl Ohssv8VkllaLvwdJCMBlZWKSjattuMVrvdT9AOP1hum1G8M/q91c8uWSBgIlct/MbqLDD7Dc Znd6QyyrKfV8oaV/p0tpJ/GE2fQE85GcxEAoCA/ftS4gMl/cGyKRHK3SGPp4SdqEZ5q5obGf WyumGGsvpu3bRew7TRju5yo2V/oN1oRtDBNETwnB6mFnt8esHjlz0l3jq/dhIh5KtJdxezEC WkLN3qllFEZnXRiKqZ4i/0wFszPt+HdgJ3ffxKD4MkMICFEoQDpl+UQjZktUTC2D/2UfhqBG l6Xe7Uo4WWEKhokCHAQQAQIABgUCS4ARiAAKCRB2tTSy6ZAH4Cp7EADTTUBoh1I9i10dYq1b EWlvD9T8cygoYjNv4yZkT9Z4Rnl0DYkD00o6xkajWJgpke7tRAidzdZhgxNCZheKvXZMVIcr /MOsbw7AnFUay2kmbdYzwNrUKSgx2l6H2mUOblmVXRAnm41ravTVsaMhHvOD/3vadmf/8KWt eXFvWFfuptDsAagd4hQDD+1t/EUWaa+LbVWnKB4hN0FsbS2Bzzh9JDyHRAKFSOLPr5Uf7lHR R1eQZhSTo/PXcfNqyN187XF/M+Bla6Rk3S4KpDcjLuzmDFCu5pOOYHGHnxBq8etZMhfM6kld eIoMRdzojXAiEGWo8M7ulGLdX6dugGdP2aESg/joXJnl/XoqaxrM1e5VZ2y26Sh96kGtVpt/ C2ZohB7rQLPDPv5VVlz8XfFWfbGmETS3JgN/WmGAabCVc2VWoh3hjUb4y9xeXX/hTk+qBw+x BxVrodd+ASdAt7TpHJ1ysjucHkgtcGt6QPbAGmg2nGbe0eeOP3JQkWOseae09a3B1K12jv6z kCEmj06QlTV2OhToAaCzN99uEWpnvr0C/VxG/S4cYfua4A/WdarZ87xTR0tUgSdGq4p69+l3 N0hhZ/QS5HZJC7UDFI6hBeXB6D94LhSxEI+AVACu4EdwJLZHJ1kibTJ2WFbe9e6FKy9VVnDh iU8vGibZ+IdHXQzhdYkCHAQQAQIABgUCTDZNvwAKCRB/2fzLAAvu7ggXD/9Gq5AMUfGtrcJn h6jfrfa3okYHJP6U6e1I9gCLqf4+tpQ7AklH4FgjeIxy3oo05/ixJDQSsgs2qZsbl/3QNvES zjSdDIjzfHcdZ0Lbqvhvy/HHiWSuQsek2QvgPuvshNLgTB5RooOg/UR5c4a0fVz8h5Notpa6 lBYN7IIGa/PaG15mr19K6YqGTasqD4KdU9h5Whf8VNC5d+SRxiyt4JUBfGeWoxYzZcaquL5u VMgQryzwWOXPwj+GuhvGMSZm+Pstox1NVUxJpfYSIMn279WboDuXrSUzNgJKsxmB/BU5foH+ lMOjbVejFgLZk1EpKVLZIG3XijKhh9cDr31KL3Qr4SkcPjLeBi0jVTPcCMQrOrZd5moEdXcT Yrobop8G2Alk4JB1bYq0AO8Ls76aa1V7aunsb1+xBZCTrSEFxX0CB9rU3VxZFwpf50IWcN/d +kjg359v4LVeWWISZVpL6HrKfMm33vosQ5PELSmSJhO7mPHGvIoB1WYJgdzFoMak376qJ/jw AT8+iatQLTakmFU6L7IzRO4v3Q+PDtMPZAD3urgSCm4OR87KcXXdZpTpDgj4tA/IkRlTXnxB pNmOMp3G3srgse0eHgwxyUpNy5dxddC56hJK5roALHGbGNsFkgcgJDrbx0sd1+8NZR7eLafd piIrzfTSJRDkLyJfIm9A5IkCHAQQAQIABgUCTz/wvgAKCRBH0jpuVhZKwmVzEACNDWQtY3fI yuXVRNS4kLgpePtJM2TtCshrXcidBnjORuvM/opRRP6w08gyKTuG4frT0Dpc/lmF85519fnd IfPVIyXaIfKn63QaLorio/MzlV9VcHk8R4wVKpe4dumvrwd28rFqdGnf+R5yNBYwF+Fdnp0z 6ulxE3jN9+xGpwqEhyo+b0Qaz0e3pdVs0K32ucXdTEWoMeiUCs6D3s7iESkPeVWs2HrQnpFg fFQAjSmyTT1xRjoWh5HfZiNcdQEjh9DeCdtLAnzuu4OdiPY8p/0Jw6z99bpS3XnCnQnQY1C3 UL4wXlMYhem6BqoMspZjpoD1VostHuU0BgYXa2JOLrGmxm75K6zFeE7lihdhpXqTwAt/Wm9V Ieo8Wr/7petpc+IR/PRBneaaSGLOxCtuiVcUQpaTdO4uGhInPcBlsgw99X0Em4miVNCfFHCI HBkD7jTXWN8F6K2cjXIsuwR0tv2ny6ql6hvbqBbZUAwBS6W7ibBKOMiDj+TjwThYuosJWfEI mWf/Kt6mLRP8zk4sNy7xcqpwI5E8VG/VsoecFba2Pv+2jhEkpCSyIsNC7Re2JOr4lUrj8Wcj 1DSAoFyLAtHkq49b3S7d0Vwi6NLT/iWe60Z3/R8FRJuLSuPK6wRAqM1MSZiA9c7eEzdNtq3P tegCtAmQWqxmReUDVEcV1xZmQIkCHAQQAQIABgUCTz/6mgAKCRDE3LJa1xpZcuwDEACxFQ+6 Oxjgsm9FCC7ocCgoycZIpy4gwTfzcO7T3KUzGSQ7o8HkbMokblosklHmlydkysqX1eKBtXqG bUABwdKa612K5pbVFN1njNCBpWoEu1go7REPDIN8zgYNzAPDe6ARwE4qrWN+4L/SmaMXeFFd W4PS+qfAc2Zhvzb0cHzwy4Jx4tiV8fuSzQqQVaOUdh+dGvYTifJNq8OD0nLznhHvwQGoHsqv KCvvZ7jE4KaZlKGP6+jdM6LXEynEmTUccQBSJg2jzgHldt4ZoV+l7PIHxgHX2x8SGRb7WPm8 GjJ5ehBJytOEuGfKz7te8U/+pK//bS0hVBnWzMGIUgrLSMA+n5V5W+lXXVM26EbA4tVWpu1y upUKD+VaGBneLeWSqFUdFOPRVjE1u4vq0aeJ02Anwp3+JlRflATQ1yjSOCfAjNuJTqz1LlHD lIG+TrrAm3FCek4DtcPkULM4Q25W7WGeVL40/ALwz5F+fzkbiryk7bYdo0qTxVf29LE5t8hJ LjlF70focJkwtQFD2cBgZIhYrzXV8PjgFGVcAJ97d4m3wBBJ4pNfdaLN4nEeop9jOww/5tyE p516FBl/OrpodvRHiSrvbb+R769IUGHeI/VQomq6G4Rr1DIKnija0/c/Pe2Nh6cOu0I+HHmB exK+qy2e21fTtVi+INcpbyxh/zsUtIkCHAQQAQIABgUCT0AiOQAKCRDE3LJa1xpZchDuD/96 uT5DZFsbaeSsx2MNMM29HoABQoixXpKjUUdP7cpU9OG7fpUj1AAoH0+JHKNb+IpAAd2r0RDq 9WD3Bkb/4VyOXDEkQkJIPrjOryw9UlBMYGnMuZbN3npeLIYW5KgmUyVkDM9nUkJxIBZ5BtPX uGolmTQLsiRp5DUKmpjG4o8HTd4pCJElqavJK7jmFLXBmh4Z6MyP3zLItGJj+hrFotMIhhC3 byDecEnWQxftEQsgBMY56oEl7ZUFJRxlQ7FGi4PGSP8PcYQyvHQAGkGgOSVrTt4tUN4tAFzk 40og0WLbzArdmK+7tSkbrGBJKHqiWxiZfJ5xT753WsIiFZLBRvAyTPusyzhxVJQz1lehxSan kveK38pAOsMUZFeVMyIXeoFvtRjvqi6LhMywkxLRs1mhSH8ym5ZAr1KAkdxtLKqty+nx6EMQ MuvFfQoxTcC/6oPxZDELbxXwEf5kuheUQgCzfB+Wi07gHmnQ2wEe+uBE9z+fqF4W0fMUZMUB mBVnYVt7esGjf+E6zIAPVBqx2+NAEHqtUKrHBsT19ZaURUho0pIjGUisJTzg5EYpoTMR3KnU mC5lmydk/5KxE2ySq4MOIqTaOllUQm8RbswDs9Ed4B/QQP3BJE3zoVGcQ/R4VI5brOcykM/v 62kx+uRjceaHHcuBHIhgIXu83tyfJA5gZIkCHAQQAQgABgUCS1si3QAKCRDrNhcab/lDX7t5 D/9PO189JUKzxXnqSxuI8BzOGlQ0Mc9gz8x4G2E0Er9zze5pai+dbA6LFGeC3tznVbH50IzQ YRfQIUgWRwPtJl43db1NtAZj5yQV0ox65+QPdn2/3pShgtDdSY8FdRm0QAfkVABsFHEc5hLd SM4/GwU0BWXLUkMCimS5sTXO7bWLIzOBIJC6J3S1Hz+TCIpX5sEY1TDcyqan2ZtvRswVTHgq x1A6KR/IfUoi6Aiej339ATEg+KGjkJYfLcKA+P9JrgKNv/uJQ4Jf27GP7LpkVmivCBsEcdkx Ki7/uJt3KRYENnq+cCtDKc085+0k6dQoITyKrEXSyiaFsiLUTiGa7jlS/tgaMga3MXavCIgP Lhe3o3i92+WAPVUmh+sO4wWJTUoJxkO9AXemS3gjNkWHhxKLUCXFBSzzVBiOMWASoPmqz5ON zUtSXV8Q37O+bKa3Da+JhBdeF1bU+KuGXe3GH+g6uPB4Bbg2IHyckr302Rs9CVek1uc90EGm 5m+arxeaNq9an1qp/OUt/pHvIjkxKAtvd6Kf1tMNzK0qmLJM4wd2x3OUujbRQkJlRZgqT/cy QT/wsMsWBb4No67DlQ0u1LkVfYVQUE5UVS4NoRQ7/os992Dbwj6x6x31nso7gOfsBtSrropj R2Z+PMbwGIf2w/VXp50ttTvSrvNr5B++vX1k6IkCHAQQAQgABgUCTHJApwAKCRChsJtCMzlh 6KbjEACxRhSALC4iE5rWwTkhj0dSZkwKiSo8OOFJGIjT14AjTzxZJdgf/Kvezvp7Oa++2Hlg JEKu3Qo/75cG/IGoLuFWzpFbFVe0RBJvoJg1WoK93lGQo0iN4Vr+FvO67it38Ic0cyBlracj QIJRMPFclUfLf7bBZ/7k63AaJfRENOabmGSWA+VIP6owqUkWbR+YzB9XfZE3MGOpkPymaxRH LT23t3xUt4hUAh9yu53nQ/HRpjcVUxde5Hbq9VWlLmUSfAE2weUI/t4akTilY1EPUtHlgTWs iLxEGsf8XkNvMfSBOZjhZVINpthQ+/NW7QDS/dp0FwRppwtc3m128xjDJcq5VSYaqhzRL93D 3/VgbRrUc3G6XksJosPgbrzqhFO6uj3DuKGQh1pJurI94vf3u6g2IvsvO1cfcjBIM/SdkeNZ 4fF885D1bTjrHFXTsNIwj1EwRXoobi5aeTbM3FrTYFA5MBxrPGR0KNyyjPUIktP1EB7FIgNp cU+xfEHotOpPYQyVJHAlWDyNCwrSSC8TeJWfrOp1xvu5qT6ga8CuZeSinrRW4X133sWaxjr2 0TleQXvm6MjLTsutul2fJFUyjGXdgqUNwZD10n+aUOGEJ28Xsr4uPifF5EVxCh3WlxbGMRlh UtGzuPMdxdIQqewt5w99+spdjL1/pidIM0hmUIeeWIkCHAQQAQoABgUCS1sk2QAKCRCnPgBV VY+43fTLEADL5tyaIGWt40btRFJ3V8uNpO/CgSx9xiiv8AmEZhGdtNgsjns+JXXo7wOhtTDk YR8PP/Y1DlOTWMGBnvDwxNwaUKlwCEfPy/b1jER4/pQE0N6tYMI2cZA7AbYZZuSSPLZNPWJS bxYXfD1qndGknULc3xzI2bnELfO/gYSxQGAVP0Qg9B+2e/ncQvN3bZofzN/SBSRykWmbbvcH nRPOXkG0NUrZSpKz/t1ozmsxgcya4XhkuifN15hQgtaW+FwevgzzLIc2jcdVK8Ud4IKCGf9s xneUfpETQB9D4XCTHmonm26mf/etrKUZ5DryXo5NUsKSfsgqbu0N+3ETcDD0LCRVQmz6hhhA Bfq9LS+1PDfJeMRY3Ls51T18rRNW5fi0ct7w/p7fa/NQLJRN4yTYWUXP1EcaRfPq7PKt/x8u yWg/4KKA6VKqCZ7ev+PC4GFCir1CSWEqi0QdGd4JAypQdr6Q4u/1KCYPXDvi1PtPxh6JZRBn EE9lKsVGmr3p8KDRSFj0Ya3o/QsikOJO+xr6dY0D4aAA1e9IIMhfmmZg8NwoTYcymF0fFbBB cHcOVClgDLgsDjVSKuQU8TPy0+ZOAU/xpP9MCC3ajGyukNKSa0T5Kp+csSNRKQIUJHFgrvxt LwwEXLgN5APNVwdRU1TJMqOhfMetUuY2vE3s8caa+W7RiLQ0U3lsdmFpbiBCZXVjbGVyIChH TlUgU2F2YW5uYWggSGFja2VyKSA8YmV1Y0BnbnUub3JnPohGBBARAgAGBQJEr8JHAAoJELc1 pkngugTBNfEAoJz3grsJSVAO7WOI5MbzVHbofZdZAKCVVJTYAWD2GJxpqIEkYGndxrw48ohG BBARAgAGBQJGsG/lAAoJEG4hb+1kBp1cArUAn0cIWUZDJLE8UPnRoJ+DfyAwvATEAJ9WbGrG 3OAfUKPrhwY30WCsbD5zXYhGBBARAgAGBQJIeOcxAAoJEILc2yTsMDTxmqIAnipFjy5FQTMI JAJpDYqbeybsQsPuAJwNe642EI+QfwDgA2xgKTa2ujQ/94hGBBARAgAGBQJIfojFAAoJEEDs wVSousHqvEYAmgNd3jFy842x7P1i7MDD3IMyoXHlAJoCCHEFlvP6vAX2eqnGei+wcIE0kohG BBARAgAGBQJIfzGPAAoJEDhzTXeHkBRSJmYAniHbdYl59Cng9Fxcgzz0Ul81BtGyAJ9xNxmp mkP1VyYTSNyU4W6NlLDcKYhGBBARAgAGBQJK/AWEAAoJENG84OKPoRoV2lYAoJKm0euEUIoX KX4LEUaeRG1dxkYMAJ9GM30sros/W23tLfh9CLTTCs/N44hGBBARAgAGBQJLAZWbAAoJENsm MCSB3bBlIokAnizAar80hm8HS4+dVnOXG8vWXvCnAJwOb2aQbg2AWso4qvgaEF7ATyWgRIhG BBARAgAGBQJLAqaUAAoJEBgFUbrZWjw1kS0AmgOB/HnEk5SGR7rfjWDQkfFwIRahAKC0EIUN eX2nMgN8r1xhoCfta0gj44hGBBARAgAGBQJLDD5HAAoJEHfdleLqUuz03SQAn2zYRp0z4T4E 2Xobn4G00VV3k2ZwAJ0cmTMXK3ixcsN1dY4ay8k4usg63IhGBBARAgAGBQJLDbmlAAoJEI53 TMap06Pgl98An1dEWJ6hUjZ3sa9RKVnXDT9Lmi/7AJ0drQdJenj9cKacpl+UOHUYKBK334hG BBARAgAGBQJLEptvAAoJEF3iSZZbA1iipFIAn02MoKqh/uLOwhNGh5/ax+TmGpTIAKCkwRNL 45jtSMdNDLat251At79unohGBBARAgAGBQJLHGSHAAoJEMcaTGXwWbHRpJcAoIHz25k1+1dV /K0SxLTKAjXieBQTAJsFKupOVnMyCIyvSz6bxdFQEAo4u4hGBBARAgAGBQJLWxoiAAoJEPHA XLppa7gZTPcAn38RyW7psIDmaeMc+l8Tx5a6FVrqAKCs2kUjk9pt9dkRPJQm91B6yVKi8YhG BBARAgAGBQJLW0yRAAoJEEMWk6iqIQUSCq0AnAr+ec/5+BmqLqi3dLx99jixC1/uAJsG0Du8 VRrXPGO5fX/U+a9TRKCqdIhGBBARAgAGBQJLXB6xAAoJENXKmwTyxCO8bwcAn1R5jkfyMLGk sHh6kZEz0OGhuomlAJ0bpgu9p5WeMRHOeBBux67hiUWYJ4hGBBARAgAGBQJLYVsEAAoJEDMl X+ieeD4FA2EAnR/j4qNNy98784IUlCGrtKIeZaMDAKCyniJGCrs45PAfrg18IBr9n2N2rohG BBARAgAGBQJLe98NAAoJEHIYvL3gmppne98An21V3C5Yppu8LrI2OpKrsfWRl0RvAKDDHoTK rRTHp8WcRgkFRj28qLtrc4hGBBARAgAGBQJMOg4OAAoJECi19N2Uj2RsRpQAoISUGEETg6i7 nRfGNaxIylzkF16rAJ44gH+i5ZX/02jO0IpxI2abOJ+YnohGBBARAgAGBQJMPYVfAAoJEF7C p3827MUjnyAAn09ywIFjGIxMQfdHJA0IqeJ7f5ZDAKCLrcdDVsmebBMtrE8Q4wEBehOg7IhG BBARAgAGBQJQRcX5AAoJEL9gcItIQmx+icgAn13nVaGwaSIexQ9uex5hSFX5dnujAJ9sIzYP 4sRdjcWstoFE1tAQHSqo/ohGBBARCAAGBQJLcCrPAAoJEId04Gl2AzxBAGUAn3b2/8aQsOex Nxft+fb3qEjmYgW8AKCgSnauYDzvntAnveB3PMKh4YjT3YhGBBARCAAGBQJMckCWAAoJECSg FBisFbUM+PoAn1Y9GZAscnnpjD+mZd/E6xLkhq9IAJ9WUwbib8iYCGrDPLb/RAlWDAOIGIhG BBARCgAGBQJNfeBOAAoJELHM2XKQJnCGingAnjCUoL2Ay2qkJkBsRaar/gY9xCStAKCiyB+7 YZ6IiUSmPyuh5pq+RDFrP4hGBBIRAgAGBQJHll/TAAoJEC6Xg96mpi9YuMsAoM3yWmbOhEmO 9m7ohzk5NblhRf8AAKCzN4gN3x4ZbdrrDFVd8fipr+gHtIhGBBIRAgAGBQJIexSDAAoJEL8z mr4mxdKGQMAAmgLdJr8yaqYe91S5hXGnpZ+uuHfSAJ9q4yuajbAGqMbr0tlyt5WbeUG0+4hW BBARCwAGBQJLEptvAAoJEPKthaweQrNn9KUA4OYcx4H/havqQJe+Te+bj1z8iesk4DXDv211 OhsA4JQ03P+YuOZuwItvqstH/8qT7ktpsLMneVWgRkGIWQQTEQIAGQUCP8+PlAQLBwMCAxUC AwMWAgECHgECF4AACgkQcllesYFwS5MceACdEaZ+pEbF3mMUc6dgJNDiqxyKEqIAmQGvnJ8S 958ys/l0PmpiSR6rFPfwiF4EEREIAAYFAkw2Ck4ACgkQ99XJv3ZcYePYswD/bZKtHKvxjkVL PHzeeCNQKH2amI+fAe7wC+7CzyNnx4IA/jcZoHg8vI1q7GwYrB/tM/qFQJoe0JPu53yuJC6G Sa3kiF4EEhEKAAYFAkw1l10ACgkQNak7dOguQgmvogEAozyunYR5egoxs/taTMPQUrsq2I5p GO/R9flVEzDqbbUA/1bKaxMgiU79loDei9Z1TQRsv/mzNRezLp+btar1KweEiF4EExECAB4F AkG+C1ICGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQcllesYFwS5NfaQCeOR8gEi7cvAQh 1q3fBszYb1CqR7AAoMrsqhRj+MUsEBb0VyspjA6EShlQiGYEExECAB4FAkG+C1ICGwMGCwkI BwMCAxUCAwMWAgECHgECF4AAEgkQcllesYFwS5MHZUdQRwABAV9pAJ45HyASLty8BCHWrd8G zNhvUKpHsACgyuyqFGP4xSwQFvRXKymMDoRKGVCInAQQAQIABgUCSH3vOAAKCRD1TYragIIf 6gxaBACKWCpCIyNKyfS9Hr4hmwIV8fXGQmkjjVp8S8YMUVjAjhsog892EIbGATa2Bpy5eOfR UOzxbGIV8lFNlf9VDuCOP71nVWfQdQWUjJJQrchd+wLNReq77saM+OPJAxE8a8UprWbrJ9Ve uf0d2E4f4bZaHfsDwNBfvLL12Cu0J1t3Uoi8BBABAgAGBQJLBPEHAAoJEO2iHpS1ZXFvXocE /jOUSO+pcVQypdR/1JRzYmVjgkzhJRHWrVZKxVTJ2z/N9pBCHC3Veo8UrLD/Lqz0ByJCY6On qqLXeVU3iZjTAi0x7HpVexSU2B7QYRDYzhrUqNVq3yPhKstd5x54wU1naQkRFtrdufrsORV+ wHsktHXAeqW11a9ky/NtSBoZlLpozEYAkBf1E79zJEF7W+xbuSHFiSpQHRTtYs6to34LRG6J ARwEEAEIAAYFAktwKrcACgkQlnkJIV5zyd+dTgf9HKjVrt8GITzF0ozs3OyRratVkTvhtAKW 0XhyiqTFtf+1P4hlsHcaqCSH9kTb9DvW4bbNoskyhXiGrWRXnY0cjPDzWbsIhaopyGDpbUyC Fw7Pbp5YPDpXx6ixuHWpHqu/U4AeKZxwnzNLBJficwJDyShPocEvYOMuWkdt01IPrW0Xwgxa wylOpNltBD+rC1SZTiEb/alJ4C94PgdUG80Qx6jNwb8bs745WM5vFCp1YUAXWNNL1KJXX1gJ 4yFY3zpxvFW4UnHikzgV7/rckAfqlaN7PICO4220pmRfqlOMb6OwlQt+frFAALU0Zr9NNz2i JZUqvEEQrGpbMQhluPnBpIkCHAQQAQIABgUCS4ARiAAKCRB2tTSy6ZAH4FrZD/9eZUh7H/mO NRLTR6onORScgaeB1ThINaRnoLDrJSo0jv62k87ss6o12VjBvFgEpSRhR70YfVkrKsAawKns FYTSJpJQAtwb/gruYCQr5pB8ec8y4L30bthbF7sNdnAq3R59lsGYIHWJqEq8lZvApn2E/HG6 Be/nT0rURislBpdbE7YZn/Qf/+gTYjG1jHWoL6PCKw/Up3HkcVGIvAByu/WOWGaMI7KtI5+3 Isxj5wOsx6tCQg6sqFj0rarpLX8872QEy7CKSZc6T38sasFTgoy8YmcsLUzLf4/ExhDEikHj ICrKDdm0WokMQLZd9260G0iB5iZm/X2Ici1Rp5PHw1qitvfd0a7OgYz3VlkYB9k+cQ9fQr7T +QgWYRoD9VDKSmNg6kmhZrh/TGOPkIRwe0VHSjxohYnl8Ju2t++UnouX+y1S0A3nyjfUqyG9 hl1LndvJgNNWydIbwW3zmTtvQnXKwFd0zjIBPQD0O9ePf6S/ZfJMnSDJmBLD3s2BEY0tERhX PiWg8PqdgEWaf5iOPrKIjrHsKrhMz4SFPq9YSavJMHVI6UGOED1PV6JOk2Q1Tabp8+NBdRN5 u/sZ0Wdyw2y7YmZ+TxN69tmtTKVuaCsIhC/o9+hRt37FcCztTYC0Vuik10tvfVFSl2xwRm7H OXE9jPMJkvMqil7JlfPxF64ZGokCHAQQAQIABgUCTDZNuQAKCRB/2fzLAAvu7q1BD/9D9Dlj 8McS3ETw6tEHiz79tk7+LewyEoHhR1kEYnAY1i9p9QVNFnQM4AR8UOBi/5jhT7gigZtlKSxe G+/bgenRGeZjoUw8B3NMMze69A1NZggqLdihC/Z582kqYdqJZY1RFquhmnH55TeX24W2z1AI /kR/rC0tBJzjefxvQrPyE0MFCyUh5JNzLIFXOfWUUG4rTWDfiB39ie/m0I2rVfsr4w1strq9 mjOzZdG5W0d1GIgrmES7slSBGKrbdHklmolwhY8hkDHlS56Vv/JdV3vKNW1dy4lLdLiQ5t2g PLVdfEm6TIcvtzdcNOH7U5YtAsDigNGbw3pFHBNlj1EGw9N5x/lxH0WfI4pb/KJBHShKbdJz gVHkuB4A4GxsxFSM7XkTf+ipO/mzFyDxQ2wggeQe5HmTI6n5zGh5M8n6YenSZNT3yZ0Q1LIG 9gNg1StzomyIkw/E/2Ao6JsnkRGQzq12zSPlPi6YkDcgBCdXsynmyVjdEKn9BxZrICEvNDU1 uhMje/hVQn1/3cCfUGsLfXH8iCdSnmFpgax8MVuMij2GB7uWk+7FLKw0oU6A2u4qG1JKk+cJ OPhoywiiDjGDohTKdtuTmKZWBpXR84z4itA4LjlMMSd01WWKFZgXiQFob2SkxK+roBtDgznR xeI4xJUFE7UQTgYpUV1C38eBMwWBrIkCHAQQAQIABgUCTz/wvgAKCRBH0jpuVhZKws8OD/9m QgLWcuaw8hN5qDBA/imoN5pMe2BKdBIu6JOksU7eyBqs9uIZNr3ZLmhOKeWQ0QRkE0yfC6WM TbtAmuUsiZ1JE52uKIRG78HMenScUFhML0NOMfgjsnfvrEfZvtTAoLzlJ3Jk3wbkpAXTvjXj uTu1IJwKc7dWwghBwPpl++iIrnYOqDAzJP/peZw10iZyU9eVjnw6C4Z+Y0gc/13/SUhQtDXp VCqlGFB02Kdiko8r4l5iR6UyWuFEpyzFjOVtl3/17BPspu4njvgHTK+qGfZaM1L158y/jwX5 QpAp6NexC2Md34I8PE1FdIooX/gRF4ezj+27h4Zpuadwn0c5niCxruPZBTeYBS6y/j2KSqcY qGh43lAa8hnf36yLcDSz1RA/iSVTPP9RGVERCZoBBXmgf7I/h8fAP1gsadDclF/CYwhJAGet 6ZrQuqDKLeyXNhaKzQfyuMuCoNG/trRHtnjdyVE6EdUgBS11ECkNbiGxG8CLGgV/3Pj7qqFC AFnyrrfM7RiFmxHyvIgZ3kYuWdYWMTHRRQSGovkrHRSkEOPvYOZ/DMEURDX5E0q0kcFy/1QI wnxnIMuhcLJtHEBQxap8KCcMudmAa8cPS/2O6ErW1QC4GZxFPxgRYdiq381EMQExLyQaQqrN omxkFF3AUyjAN8uUlK9o6wO72k8THV2534kCHAQQAQIABgUCTz/6mgAKCRDE3LJa1xpZcrTX D/9pXo3SYsMy3hp7jeCJejmOnwtAt5PzSQqMlwnp+PGz8mr2CEBEHiX/kpcrrAvKoSFvtOTZ evPH8NtrYVP9FUbOvlUcblPgwQcT2N9tp7D/snhxWtHlmaHvRTwYM1aMV/93n6+Y00YSysVH Ph24Mr3gpwh0O9hMqr5MGdd496tFi6z6xlPC8fPg7RMoztbXi+T0KaAAkuWqzoJ+sbMjuuU1 Eq7oXbhyTDU5qAv1QJ2eVECnHnOg9A3NchNIXrYnSRFb8pseWQtxEX5RdVvjHs8/tYzyEieK 8kIiDwCa/iglgqJ6+oLm3FSwdLoQJ397rhQlgPTPAc2DsfkWEfygR+qRd+TZg5pp3mkdHNyD U7Ks2cQjkxk9BApde/Swzlo7T6dlBHNBulPMKmzvUI6OiXXJxz0CN0DjQGW9xQPiKIf7n6y6 Qs8HewCPB+LkZOKfTHssTMjXKzqhuS2X66z6LFFPO8M5rwYJ3c477vCUpZitWS+Ic5G23C7i f3gt2NeaW1E/aIdeyNJd5u/af+NXmZ+iLy5hn1CwUo/eiSDlZBQnyxb0C0tp4UE2rt3fnj4j 2e1J35wd417iVXO2/g+5Ep7LN56OfmAaoHNge+z6oqUSXkpKduuYioELXIPZkNEVfotoOkek 3qRViStrXyJfdFNBO4RQ8+dXYHuuXpUE/WZ1CIkCHAQQAQIABgUCT0AiOQAKCRDE3LJa1xpZ cjoWD/0Q6HFDqE9ExA4cXfbLRIgnsXXzO9vluWnZdjk7pc51stzRHx3rjhNcupRTMKp+qTTN tPpuUR+VDuT2geaLsmACtsDokL05E6GNIKi6XktM64ZcNHdJyeqZP6+VFON4qDy9CXBQCsEy ar9WqtJ0CsW/omKVyQKaHhcI5Dbsb+LrxET5vxbyB4uqSeTYI6VtjudZQzXeHHxo4I0SQbxo mF9XWvwKnqQ1uk8P3UDE/hNC3JmKolu6O3xdDZHhz3pALmr3bOe7oqQnoF4gRny+s1VaZPIt 8CC6m8iP8uaF3WzIMMy+zC9HceLdpLBnnIepnghmp1I6ui7v5RfTtuQk//ifqbMIMq6/P3/E ZmdubunXZ1RA9C7ZPHsHVTdNH8dHqY6jMVquBRaUdGL4AWB3WXW++MdQWny9TykxxPaZdvZf ichQK0eUEbksXn3fefBcLUQ5iKXAXmxW9w26UEAWrM59hjoMvCZbSMquSQhRrZhhrKrJco6E pR1A2lAo/Ii94wadK54VT8fR/kajP1HrGe9uvC+9UFLWTmMggi7ymSkwZP5gcFaSttkTCBNd Ud4K4VJuhL07zBfnTmQnUcDQ/dtV/iq8AYepIkV0w+oi9pNqKj74LuQJBgAGZUKaRUImIUw/ RzQqYB8FKkukbojRdm61HD2hQxv2CsO9kxa47Gr4dokCHAQQAQgABgUCS1si3QAKCRDrNhca b/lDX9LRD/9MV/RMc9P7NFhTjCtAJ3K4q8RpWh4JmSmPUVl9B9kqlkpq/kZlE9uhcCcsRG50 9fpYSJCruxgdVJT2+ugJga8mWh0vF8cornhsku/zZfPHrKxvGzYeVaXnKroA7b3W7vTphuaq 5ZK4nYiT8e105fzYZKtOlNn7r7oh+wCUMpCc7r0FYJ4yo+KZXtxMMGb6nX5GBm2Lm4FxU2Iv 94y6MZULOEH/fV60+Fw2UxVm4Mi8nMT7rE/kwKowMgkPIOf9WPmGAuNa2y43CIw7fkARZOcZ ksT4KkXSRGZC9SoE0X9mnY5xubtvzTjIypjXhzvyW/Jpa0yg8DWGwUy7tovl9udhubGl3NJL MMLhS5k2BhFL0EDKZK6TeePLsmkMAfT6oTMKus8e2qISkM9oxa8eQ6tDSQ9bRRz/rX7v7drO 3rOe7n4Kje//TsCzGTcUn314+OtTGtjrZhYFXHFi04dHWDrXMXtt8cgPq9+UJnHn779C8nch E1p7c04sylpGt/3ROuBROUJVcCohweLAlbcQdyadSuW9ZzsUBsaXGwn5U5XE0x22GvB/6H9Y PodQ/XIwKilQZF34aAdS5HTsxNuxQdMoJrCrG2ZO8qLwkZ77UibAi5mvyqZMmvZ8nzgcbBdI mBbzOCY0kBx+7ZLnuq0eaQdfavSLdiUr04YWV6uFVS20OYkCHAQQAQgABgUCTHJApwAKCRCh sJtCMzlh6IYVD/9v0ITzZWpoBVp9cwrVQx2y9GIfx9AjL4N1R2bEmQU4084n3+bgUNyBuPw5 J0eA5UmaHvkfO0Dc52+QzApAgJyWTs7xA8zmV+o/Xs3o+lkBMqoDPIq/OGaNPvY5YaZJyHKx gulKRaiYAJxbBVKcjrp+nYcSZx6g48GJbo6bFINKSa2+mExKYvWv4lTw2Biy7GvvRIWNbIzu 5HvhgIuhk0sZp4nz80n6XSlRdt7rmb2foD+hEI83o1RMc4KiZg/PAttoldKzJQN53/kgrPzz l8gCooz6kTtgxaOMgCHtaDfAZ79lFrFIfid/DGQqKCB6erb947arpQQRLZDMDIY/bPdRstYy p2VDx7AFg7n/8WCmaY/EzC0PWlvcvPYMycsPUD2iW/voB+bCZIiRkJbQUUrWFHTnmUOhb3eB 8++YP9D282vLkiyNlueRm76kATH4NkehQvi1Rkaswnv4C5uu6w9+3FqoGSv5gwCy1Pjv3W3E s7ASUXG2YsNueF0okuSZqcJN/jhRDUniG6OApD5NvORELZ2JY9zzrx9EDx3SJhw99CcAk4Md srazqghvbtsyivLt8r6yE8SBHP/NDTUUnUWZDKLwhC0MIaepQOCp6pvXyxhx9v23yjexMKR7 vWBcit6xYsTQfqnJ2zH4d4ttejQQJEgurSsDCQSsGXpwPd/j0YkCHAQQAQoABgUCS1sk2QAK CRCnPgBVVY+43em9EADe0wwCT7ijubSNPfZy9Ow0IiWGOu56Q0fGUJMXdMtSuG8APw3CcOzX 94NF2FvXOUtSgI+O8BQfyVGdIG8v0AmLzMqVjCh8A+xKMaKIBkYOwfwy6ZTR376ZR8+Dvxac 2os/aUVrhgebl/xq0636APbCiJ1k6bXnvZmEPkMWWHP6R8/b7Y7K5HYP1IzrBN8v7AcxlWc/ /tRDTTxrFSayFUaAEy1JlcAc/mz+F/Bklyo0zdPTZpo2M04iTkCgFbGYElnXUeicYkp+KAvV TL8qsK/os9R0mCw/rKdcd8g5wTvIc3h84fQxT35jOuyg9c4yHguMEPcyGIhCwmYrD9T5Ul8M x6vK9aTt0pgs9mHoUyRiXaUZ5nD+O8SDNlgj6EUdCj1BVD2NHhL3VKHp7IBKK8k9OqBt8HLY bNgcfDIenb3bmJrAmbDh0SAosOhGaosXuxKqApsmnDSaYQ0Zk3xUhfZmzuW2aGCHnJfshJfE 9STiltXbTSue6gOWU43J7uMkw0edmYCc5AlOIWrjguqDwb6h13kVs1pFu6Otnka7Ex6AXQ79 tLFlSJH1C6Swh/KFJzjXwjS9Gd0i9FTThs3BdefuhaHUyi63qJd6Jg+cH09wD44RdI1eaRf7 jthDJssEZ8UDzDfFzSK0RR6zYPbkjmMobVcw4CjhtsDEJawbNSRG8rkBDQQ/z4+YEAQA1veo wn8VlygD/Xb1ddalKtNksWxBtfuNJRyZbXxdqBbzMW73zxG3Go+UoFSbVm5LSBAS9hvi3PSS 6n54h+EcEtXsraz1E5T2qy9QYmGMv+w3vQJLmLNlcQlUAYcNObj/KMF5AbkZj6fiTy9iSZE0 E6hF3HRjUIJebWiLRKTidUsAAwYD/iU9lhojjE6AlbTb7cW1PbfMlgh4DMba/6wz3K0G6hyP cKZzBQnkqGpJL09ckD6u4YX7R7h5b7VISRMZ6yD4RBARhhxD/Hg9Oape5lMifQgUDHx3r9zQ Tz/IE0cUFeBo6BYT/eTX/HKs0DSM9v9yOoqidgOSMBmzaJkerfZJ2fAziEYEGBECAAYFAj/P j5gACgkQcllesYFwS5NICgCg1iFCFRGslmJB6rCuzrgyKrPw19MAn0aFmup3oqpwQcQmQh0L xIVSisxMiE4EGBECAAYFAj/Pj5gAEgkQcllesYFwS5MHZUdQRwABAUgKAKDWIUIVEayWYkHq sK7OuDIqs/DX0wCfRoWa6neiqnBBxCZCHQvEhVKKzEw= =B+6x -----END PGP PUBLIC KEY BLOCK----- freedink-108.4+dfsg/configure.ac0000644000175000017500000002164312421727303014315 0ustar meme# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # Copyright (C) 2007, 2008, 2009 Sylvain Beucler # This file is part of GNU FreeDink # GNU FreeDink 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 3 of the License, or # (at your option) any later version. # GNU FreeDink 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, see # . AC_PREREQ(2.61) AC_INIT([GNU FreeDink],[108.4],[bug-freedink@gnu.org]) AC_CONFIG_AUX_DIR(autotools) # For future version of aclocal: AC_CONFIG_MACRO_DIR(autotools/macros) AM_INIT_AUTOMAKE([gnits dist-bzip2 dist-zip]) AC_CONFIG_HEADERS(config.h) # Define $host $host_os + distributes config.guess and config.sub AC_CANONICAL_HOST # Checks for programs. AC_PROG_CC AC_PROG_LN_S # Force binary relocatability by default enable_relocatable=1 # We use std=c99 which enables some macros, supports '//' comments, # and does not warn about mixed declarations and code. Let's do tests # (namely Gnulib tests) with it too. CFLAGS="$CFLAGS -Wall -std=c99" # Gnulib - configuration in gnulib/m4/gnulib-cache.m4 gl_EARLY AM_CONDITIONAL(PSP, test "$host" == "mipsallegrexel-psp-elf") PKG_CHECK_MODULES([CHECK], [check >= 0.9.4]) # Check if we can fork&exec (for fallback xmessage errors) AC_CHECK_FUNCS(execlp) # Check if we've got malloc stats AC_CHECK_TYPES([struct mallinfo], [], [], [[#include ]]) # gettext dnl Using [external] because bundling intl/ is deprecated as of 0.18: AM_GNU_GETTEXT([external]) dnl Not a dependency: only a declaration used by autopoint: AM_GNU_GETTEXT_VERSION([0.18.1]) dnl Not using ngettext in FreeDink or gnulib as of 2010-11: dnl AM_GNU_GETTEXT_NEED(need-ngettext) AC_ARG_VAR([WINDRES], [Resource compiler for woe executables]) AC_CHECK_TOOL(WINDRES, windres) AM_CONDITIONAL(HAVE_WINDRES, test "$WINDRES" != "") AC_ARG_ENABLE([embedded-resources], AS_HELP_STRING([--disable-embedded-resources], [don't embed base fonts in the executable - disable this for distros that strip executables and break resources (default is enabled)]), [], [enable_embedded_resources=yes]) if test x"$enable_embedded_resources" = x"yes"; then AC_CHECK_PROG(ZIP, zip, zip) fi AM_CONDITIONAL(HAVE_ZIP, test "$ZIP" != "") AC_ARG_VAR([HELP2MAN], [Manpage generator from '--help' output]) AC_PATH_PROG(HELP2MAN, help2man) if test -z "$HELP2MAN"; then AC_MSG_WARN([You may need to install help2man (if you're a developer)]) # Set HELP2MAN so 'make' errors will be understandable HELP2MAN="help2man" LACK_HELP2MAN=1 fi AC_ARG_VAR([UPX], [Produce self-decompressing executables (if --enable-upx)]) AC_ARG_ENABLE([upx], AS_HELP_STRING([--enable-upx], [compress executables (default is disabled)]), [], [enable_upx=no]) if test x"$enable_upx" = x"yes"; then AC_PATH_PROG(UPX, upx) fi AM_CONDITIONAL(HAVE_UPX, test "$UPX" != "") # SDL and core libs PKG_CHECK_MODULES([SDL], [sdl >= 1.2 SDL_image SDL_mixer SDL_ttf >= 2.0.9 SDL_gfx], [CFLAGS="$CFLAGS $SDL_CFLAGS"; LIBS="$SDL_LIBS $LIBS"], AC_MSG_WARN($SDL_PKG_ERRORS); LACK_SDL=1) case "${host}" in # (cf. (autoconf.info)Using System Type) (2002) *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows* \ | mipsallegrexel-psp-elf) # Can't search fonts using fontconfig under ms woe # Nor under a PSP use_fontconfig="no" ;; *) use_fontconfig="yes" ;; esac if test x"$use_fontconfig" = x"yes"; then PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.3], AC_DEFINE([HAVE_FONTCONFIG], [], [fontconfig library (-lfontconfig)]), AC_MSG_WARN($FONTCONFIG_PKG_ERRORS); LACK_FONTCONFIG=1) CFLAGS="$CFLAGS $FONTCONFIG_CFLAGS" LIBS="$FONTCONFIG_LIBS $LIBS" fi if test x"$enable_embedded_resources" = x"yes"; then # libzip - cross-compiles well PKG_CHECK_MODULES([LIBZIP], [libzip >= 0.8], AC_DEFINE([HAVE_LIBZIP], [], [libzip library (-lzip)]), AC_MSG_WARN($LIBZIP_PKG_ERRORS [(non-fatal if there's zziplib)]); LACK_LIBZIP=1) CFLAGS="$CFLAGS $LIBZIP_CFLAGS" LIBS="$LIBZIP_LIBS $LIBS" # ZZipLib - doesn't cross-compile well and unstable under woe, but # functional and initially more widespread under GNU/Linux #AC_CHECK_LIB(zzip,zzip_open_ext_io,,AC_MSG_WARN([You need to install zzip]);LACK_LIBZZIP=1) PKG_CHECK_MODULES([ZZIPLIB], [zziplib >= 0.12.83], AC_DEFINE([HAVE_ZZIPLIB], [], [zziplib library (-lzzip)]), AC_MSG_WARN($ZZIPLIB_PKG_ERRORS [(non-fatal if there's libzip)]); LACK_ZZIPLIB=1) CFLAGS="$CFLAGS $ZZIPLIB_CFLAGS" LIBS="$ZZIPLIB_LIBS $LIBS" else LACK_LIBZIP=1 LACK_ZZIPLIB=1 fi AM_CONDITIONAL(HAVE_LIBZIP, test "$LACK_LIBZIP" != "1") AM_CONDITIONAL(HAVE_ZZIPLIB, test "$LACK_ZZIPLIB" != "1") # Dynamic and static builds AC_ARG_ENABLE([static], AS_HELP_STRING([--enable-static],[embed SDL and dependencies in the executable (default is disabled)]), [], [enable_static=no]) if test x"$enable_static" = x"yes"; then case "${host}" in # (cf. (autoconf.info)Using System Type) (2002) *-*-mingw32* | *-*-cygwin* | *-*-windows*) # LIBS is handled by pkg-config and Libs.private/Requires.private # We still need to force choosing 'libxxx.a' over 'libxxx.dll.a': LDFLAGS="$LDFLAGS -static" ;; mipsallegrexel-psp-elf) # (Only static builds are possible for this architecture AFAIK) # Light version, if dependencies are compiled minimaly #LIBS="$LIBS -lfreetype -lz" # Full version, if planning to support more formats LIBS="-lvorbisidec -lfreetype -lpng -ljpeg -lz $LIBS" #LIBS="$LIBS -lfreetype -lpng -ltiff -ljpeg -lz -lvorbisfile -lvorbis -logg" esac fi # Lengthy Gnulib checks gl_INIT # BinReloc, if not cross-compiling (tests do not check for cross-compilation) if test "$cross_compiling" = "no"; then AP_BINRELOC fi # Somewhat optional. Defines matching contants in config.h # (e.g. HAVE_SDL_FRAMERATE_H). Using a temporary CPPFLAGS to include # Gnulib's src and build directories ($top_srcdir and $top_builddir # not present here for some reason). Also sdl-config lacks a # --cppflags switch so we use SDL_CFLAGS. # http://lists.gnu.org/archive/html/bug-gnulib/2007-10/msg00157.html # http://lists.gnu.org/archive/html/bug-gnulib/2007-12/msg00149.html # https://bugs.freedesktop.org/show_bug.cgi?id=47996 old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SDL_CFLAGS -I${srcdir}/gnulib/lib -I./gnulib/lib" AC_CHECK_HEADERS(SDL.h SDL_rotozoom.h SDL_framerate.h SDL_image.h, [], AC_MSG_WARN([Could not find necessary SDL libs headers]); LACK_HEADERS=1) CPPFLAGS="$old_CPPFLAGS" echo echo "Errors and warnings recap:" error=0 warning=0 if test "$LACK_SDL" = 1; then echo "* You need to install the SDL libraries:" echo "$SDL_PKG_ERRORS" error=1 fi if test "$USE_NLS" = no; then echo "* You need to install the gettext library and enable NLS" error=1 fi if test "$use_fontconfig" = "yes" -a "$LACK_FONTCONFIG" = 1; then echo "* You need to install the fontconfig library" error=1 fi if test "$error" = 0 -a "$LACK_HEADERS" = 1; then echo "* Warning: You lack some library headers (.h) - see warnings above." #error=1 warning=1 fi if test x"$enable_embedded_resources" = x"yes"; then if test "$LACK_LIBZIP" = 1 -a "$LACK_ZZIPLIB" = 1; then echo "* You need to install libzip or ZZipLib (or --disable-embedded-resources)." error=1 fi if test -z "$ZIP"; then echo "* The 'zip' utility cannot be found. Please install it (or --disable-embedded-resources)." error=1 fi fi if test "$error" = 0 -a "$LACK_HELP2MAN" = 1; then echo -n "* Warning: The 'help2man' utility cannot be found. You won't be able to rebuild manpages" echo " (if you modify the source code)" warning=1 fi if test "$enable_upx" = "yes" -a -z "$UPX"; then echo "* UPX is explicitely activated (--enable-upx) but cannot be found" error=1 fi if test "$error" = 1; then echo echo "There are errors - stopping. Please check the reports above." echo "If dependencies (such as SDL_gfx) are missing," echo "please check BUILD for distro package names." exit 1 elif test "$warning" = 1; then echo echo "There were warnings - let's continue for now," echo "but please check make sure nothing is missing." else echo "* No errors" fi echo AC_CONFIG_FILES([Makefile gnulib/lib/Makefile gnulib/po/Makefile.in nsis/Makefile po/Makefile.in share/Makefile share/freedink/Makefile src/Makefile src/woeres.rc]) AC_OUTPUT echo echo "Options summary:" echo "* --enable-upx=$enable_upx" echo "* --enable-static=$enable_static" echo "* --enable-embedded-resources=$enable_embedded_resources" echo echo "Now you can type 'make' to compile $PACKAGE_STRING" freedink-108.4+dfsg/aclocal.m40000644000175000017500000012711512421727612013673 0ustar meme# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # 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 of the License, 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 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([gnulib/m4/00gnulib.m4]) m4_include([gnulib/m4/absolute-header.m4]) m4_include([gnulib/m4/alloca.m4]) m4_include([gnulib/m4/canonicalize.m4]) m4_include([gnulib/m4/chdir-long.m4]) m4_include([gnulib/m4/close.m4]) m4_include([gnulib/m4/closedir.m4]) m4_include([gnulib/m4/d-ino.m4]) m4_include([gnulib/m4/dirent_h.m4]) m4_include([gnulib/m4/dirfd.m4]) m4_include([gnulib/m4/dirname.m4]) m4_include([gnulib/m4/double-slash-root.m4]) m4_include([gnulib/m4/dup.m4]) m4_include([gnulib/m4/dup2.m4]) m4_include([gnulib/m4/eealloc.m4]) m4_include([gnulib/m4/environ.m4]) m4_include([gnulib/m4/errno_h.m4]) m4_include([gnulib/m4/error.m4]) m4_include([gnulib/m4/exponentd.m4]) m4_include([gnulib/m4/extensions.m4]) m4_include([gnulib/m4/extern-inline.m4]) m4_include([gnulib/m4/fchdir.m4]) m4_include([gnulib/m4/fcntl-o.m4]) m4_include([gnulib/m4/fcntl.m4]) m4_include([gnulib/m4/fcntl_h.m4]) m4_include([gnulib/m4/fdopendir.m4]) m4_include([gnulib/m4/filenamecat.m4]) m4_include([gnulib/m4/float_h.m4]) m4_include([gnulib/m4/fstat.m4]) m4_include([gnulib/m4/fstatat.m4]) m4_include([gnulib/m4/getcwd-abort-bug.m4]) m4_include([gnulib/m4/getcwd-path-max.m4]) m4_include([gnulib/m4/getcwd.m4]) m4_include([gnulib/m4/getdtablesize.m4]) m4_include([gnulib/m4/getopt.m4]) m4_include([gnulib/m4/gettext.m4]) m4_include([gnulib/m4/gettimeofday.m4]) m4_include([gnulib/m4/gnulib-common.m4]) m4_include([gnulib/m4/gnulib-comp.m4]) m4_include([gnulib/m4/iconv.m4]) m4_include([gnulib/m4/include_next.m4]) m4_include([gnulib/m4/intlmacosx.m4]) m4_include([gnulib/m4/intmax_t.m4]) m4_include([gnulib/m4/inttypes_h.m4]) m4_include([gnulib/m4/largefile.m4]) m4_include([gnulib/m4/lib-ld.m4]) m4_include([gnulib/m4/lib-link.m4]) m4_include([gnulib/m4/lib-prefix.m4]) m4_include([gnulib/m4/longlong.m4]) m4_include([gnulib/m4/lstat.m4]) m4_include([gnulib/m4/malloc.m4]) m4_include([gnulib/m4/malloca.m4]) m4_include([gnulib/m4/memchr.m4]) m4_include([gnulib/m4/mempcpy.m4]) m4_include([gnulib/m4/memrchr.m4]) m4_include([gnulib/m4/mmap-anon.m4]) m4_include([gnulib/m4/mode_t.m4]) m4_include([gnulib/m4/msvc-inval.m4]) m4_include([gnulib/m4/msvc-nothrow.m4]) m4_include([gnulib/m4/multiarch.m4]) m4_include([gnulib/m4/nls.m4]) m4_include([gnulib/m4/nocrash.m4]) m4_include([gnulib/m4/off_t.m4]) m4_include([gnulib/m4/open.m4]) m4_include([gnulib/m4/openat.m4]) m4_include([gnulib/m4/opendir.m4]) m4_include([gnulib/m4/pathmax.m4]) m4_include([gnulib/m4/po.m4]) m4_include([gnulib/m4/printf.m4]) m4_include([gnulib/m4/progtest.m4]) m4_include([gnulib/m4/readdir.m4]) m4_include([gnulib/m4/readlink.m4]) m4_include([gnulib/m4/realloc.m4]) m4_include([gnulib/m4/relocatable-lib.m4]) m4_include([gnulib/m4/relocatable.m4]) m4_include([gnulib/m4/rewinddir.m4]) m4_include([gnulib/m4/same.m4]) m4_include([gnulib/m4/save-cwd.m4]) m4_include([gnulib/m4/setenv.m4]) m4_include([gnulib/m4/size_max.m4]) m4_include([gnulib/m4/ssize_t.m4]) m4_include([gnulib/m4/stat.m4]) m4_include([gnulib/m4/stdbool.m4]) m4_include([gnulib/m4/stddef_h.m4]) m4_include([gnulib/m4/stdint.m4]) m4_include([gnulib/m4/stdint_h.m4]) m4_include([gnulib/m4/stdio_h.m4]) m4_include([gnulib/m4/stdlib_h.m4]) m4_include([gnulib/m4/strcase.m4]) m4_include([gnulib/m4/strdup.m4]) m4_include([gnulib/m4/strerror.m4]) m4_include([gnulib/m4/string_h.m4]) m4_include([gnulib/m4/strings_h.m4]) m4_include([gnulib/m4/strndup.m4]) m4_include([gnulib/m4/strnlen.m4]) m4_include([gnulib/m4/sys_socket_h.m4]) m4_include([gnulib/m4/sys_stat_h.m4]) m4_include([gnulib/m4/sys_time_h.m4]) m4_include([gnulib/m4/sys_types_h.m4]) m4_include([gnulib/m4/time_h.m4]) m4_include([gnulib/m4/unistd-safer.m4]) m4_include([gnulib/m4/unistd_h.m4]) m4_include([gnulib/m4/vasnprintf.m4]) m4_include([gnulib/m4/vasprintf.m4]) m4_include([gnulib/m4/warn-on-use.m4]) m4_include([gnulib/m4/wchar_h.m4]) m4_include([gnulib/m4/wchar_t.m4]) m4_include([gnulib/m4/wint_t.m4]) m4_include([gnulib/m4/xalloc.m4]) m4_include([gnulib/m4/xgetcwd.m4]) m4_include([gnulib/m4/xsize.m4]) m4_include([gnulib/m4/xstrndup.m4]) freedink-108.4+dfsg/Makefile.am0000644000175000017500000000151412420231175014052 0ustar memeAUTOMAKE_OPTIONS = gnits # Gnulib: ACLOCAL_AMFLAGS = -I gnulib/m4 SUBDIRS = gnulib/lib gnulib/po nsis po src share # Copy those directly and recursively: # Build system EXTRA_DIST = acsite.m4 bootstrap gnulib/m4/gnulib-cache.m4 # Documentation EXTRA_DIST += doc EXTRA_DIST += BUILD TRANSLATIONS.txt TROUBLESHOOTING # Packaging EXTRA_DIST += debian freedink.spec psp # Other programs of interest EXTRA_DIST += test contrib # Developer tools EXTRA_DIST += valgrind dist-hook: find $(distdir) -name '*~' | xargs -r rm -f # Remove .gitignore files; e.g. they prevent 'git-buildpackage' # from importing ignored files from release tarballs find $(distdir) -name '.gitignore' | xargs -r rm -f # At the end of each line (doubled $), add a \r, so we get \r\n cd $(distdir) && sed 's/$$/\r/' README > README.txt make -C $(distdir)/test/sdl clean freedink-108.4+dfsg/src/0000755000175000017500000000000012421730246012610 5ustar memefreedink-108.4+dfsg/src/io_util.h0000644000175000017500000000315312330466347014436 0ustar meme/** * Filesystem helpers * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _IO_UTIL_H #define _IO_UTIL_H #include #include "SDL.h" #ifdef __cplusplus extern "C" { #endif #define BOOL_1BYTE char /* Boolean value on 1 byte exactly, used to replace the C++ bool type during the C++=>C conversion. Do not change to int, else player_info (among others) will have a different size and savegame format will change! */ extern void ciconvert (char *filename); extern SDL_RWops *find_resource_as_rwops(const char *filename); extern /*bool*/int exist(char *name); extern int is_directory(char *name); extern char* pdirname(char *filename); extern void add_text(char *tex ,char *filename); extern int read_lsb_int(FILE *f); extern void write_lsb_int(int n, FILE *f); extern short read_lsb_short(FILE *f); extern void write_lsb_short(short n, FILE *f); #ifdef __cplusplus } #endif #endif freedink-108.4+dfsg/src/dinkc_sp_custom.c0000644000175000017500000000660612420231175016144 0ustar meme/** * Hash table to be used by DinkC's 'sp_custom' function * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "log.h" #include "dinkc_sp_custom.h" # include struct str_int { char key[200]; // same size as slist[0][] int val; }; /* Auxiliary functions for hash */ static size_t dinkc_sp_custom_hasher(const void *x, size_t tablesize) { return hash_string(((struct str_int*)x)->key, tablesize); // We could also call 'hash_pjw' from module 'hash-pjw' } static bool dinkc_sp_custom_comparator(const void* a, const void* b) { return !strcmp(((struct str_int*)a)->key, ((struct str_int*)b)->key); } /** * Return a new hash table */ dinkc_sp_custom dinkc_sp_custom_new() { Hash_tuning* default_tuner = NULL; int start_size = 10; return hash_initialize(start_size, default_tuner, dinkc_sp_custom_hasher, dinkc_sp_custom_comparator, free); } /** * Free all memory */ void dinkc_sp_custom_free(dinkc_sp_custom hash) { hash_free(hash); } void dinkc_sp_custom_clear(dinkc_sp_custom hash) { hash_clear(hash); } /** * Create a new int value for key 'key', or replace existing value if * 'key' is already mapped. */ void dinkc_sp_custom_set(dinkc_sp_custom hash, char key[200], int val) { struct str_int search; strcpy(search.key, key); void* slot = hash_lookup(hash, &search); if (slot != NULL) { ((struct str_int*)slot)->val = val; } else { struct str_int* newslot = malloc(sizeof(struct str_int)); strcpy(newslot->key, key); ((struct str_int*)newslot)->val = val; if (hash_insert(hash, newslot) == NULL) { log_fatal("sp_custom: Not enough memory to add value '%s'", key); exit(EXIT_FAILURE); } } } /** * Get the int value associated with 'key'. Returns -1 if not found * (DinkC limitation: no way to return NULL or similar). */ int dinkc_sp_custom_get(dinkc_sp_custom hash, char key[200]) { struct str_int search; strcpy(search.key, key); void* slot = hash_lookup(hash, &search); if (slot != NULL) return ((struct str_int*)slot)->val; else return -1; } #ifdef TEST int main(void) { dinkc_sp_custom myhash = dinkc_sp_custom_new(); dinkc_sp_custom_set(myhash, "foo", -1); dinkc_sp_custom_set(myhash, "foo", 3); dinkc_sp_custom_set(myhash, "foo", -1); dinkc_sp_custom_set(myhash, "foo", 4); dinkc_sp_custom_set(myhash, "bar", 34); printf("foo: %d\n", dinkc_sp_custom_get(myhash, "foo")); printf("bar: %d\n", dinkc_sp_custom_get(myhash, "bar")); dinkc_sp_custom_clear(myhash); printf("foo (after clear): %d\n", dinkc_sp_custom_get(myhash, "foo")); dinkc_sp_custom_free(myhash); return 0; } #endif freedink-108.4+dfsg/src/fastfile.h0000644000175000017500000000265112330466347014571 0ustar meme/** * Free fastfile.cpp replacement prototypes * Copyright (C) 2003 Shawn Bett * Copyright (C) 2007, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _FASTFILE_H #define _FASTFILE_H #ifdef __cplusplus extern "C" { #endif typedef void *HFASTFILE; extern int FastFileInit(char *filename, int max_handles); extern void FastFileFini(void); extern HFASTFILE FastFileOpen(char *name); extern int FastFileClose(void *pfe); extern SDL_RWops* FastFileLock(void *pfe); extern int FastFileLen(void *i); #if 0 extern int FastFileUnlock(void *pfe, int off, int len); extern int FastFileRead (void *pfh, void *ptr, int size); extern int FastFileSeek (void *pfe, int off, int how); extern long FastFileTell (void *pfe); #endif #ifdef __cplusplus } #endif #endif freedink-108.4+dfsg/src/str_util.h0000644000175000017500000000274012341634247014636 0ustar meme/** * Header for strings functions * Copyright (C) 2005, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _STRING_UTIL_H #define _STRING_UTIL_H #ifdef __cplusplus extern "C" { #endif extern void strtoupper(char *s); extern void strcpy_nooverlap(char *dst, char* src); extern int asprintf_append(char **strp, const char* fmt, ...); extern void reverse(char *st); extern void strchar(char *string, char ch); extern char* separate_string (char* str, int num, char sep); extern char* get_word(char* line, int word); extern /*bool*/int compare(char *orig, char *comp); extern void replace(const char* find, const char* repl, char** line_p); extern void replace_norealloc(const char* find, const char* repl, char* line); extern char* latin1_to_utf8(char* source); #ifdef __cplusplus } #endif #endif freedink-108.4+dfsg/src/meminfo.c0000644000175000017500000000210512330533643014405 0ustar meme/** * Display malloc stats * Copyright (C) 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #ifdef HAVE_MALLINFO #include #include "log.h" #endif void meminfo_log_mallinfo() { #ifdef HAVE_MALLINFO struct mallinfo mi; mi = mallinfo(); log_debug("arena: %d", mi.arena); log_debug("uordblks: %d", mi.uordblks); log_debug("fordblks: %d", mi.fordblks); #endif } freedink-108.4+dfsg/src/gfx_fade.h0000644000175000017500000000165512330466347014542 0ustar meme/** * Fade down / fade up, preserving white pixels * Copyright (C) 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _GFX_FADE_H #define _GFX_FADE_H extern void gfx_fade_init(void); extern void gfx_fade_quit(void); extern void gfx_fade_apply(int brightness); #endif freedink-108.4+dfsg/src/init.h0000644000175000017500000000177312420231175013730 0ustar meme/** * System initialization, common to FreeDink and FreeDinkEdit * Copyright (C) 2007, 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _INIT_H #define _INIT_H extern int init(int argc, char *argv[], char* splash_bmp); extern void init_set_error_msg(char *fmt, ...); extern void log_path(/*bool*/int playing); extern void finiObjects(); #endif freedink-108.4+dfsg/src/dinkini.h0000644000175000017500000000263212330466347014420 0ustar meme/** * Dink.ini - loading graphics * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _DINKINI_H #define _DINKINI_H #include "rect.h" enum idata_type { IDATA_EMPTY=0, IDATA_SPRITE_INFO, IDATA_FRAME_SPECIAL, IDATA_FRAME_DELAY, IDATA_FRAME_FRAME }; /* Graphics load flags */ #define DINKINI_BLACK 0x00000001 #define DINKINI_LEFTALIGN 0x00000002 #define DINKINI_NOTANIM 0x00000004 #define DINKINI_COMPAT_DIRFF 0x00000008 extern void dinkini_init(void); extern void dinkini_quit(void); extern void make_idata(enum idata_type type, int myseq, int myframe, int xoffset, int yoffset, rect crect); extern void program_idata(void); extern void load_batch(void); #endif freedink-108.4+dfsg/src/check_freedink.c0000644000175000017500000001767112420231175015710 0ustar meme/** * FreeDink test suite * Copyright (C) 2005, 2014 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ /** * Currently the testsuite is grossly in the same directory as the * code. The reason is that there's no existing test suite, and that * we need to write tests with minimal changes to the code to assess * how the code _currently_ works. In a second step we'll modularize * FreeDink more so that tests can target independent units of code - * and check if we broke anything in the process with the test suite * :) */ #ifdef HAVE_CONFIG_H #include #endif #include /* EXIT_SUCCESS, EXIT_FAILURE */ #include /* strcasecmp */ #include /* mkdir */ #include #include /* rmdir */ #include #include "str_util.h" #include "dinkc_bindings.h" #include "dinkc.h" #include #include int get_parms(char proc_name[20], int script, char *str_params, int* spec); START_TEST(test_strutil_strtoupper) { char str[] = "toto"; strtoupper(str); ck_assert_str_eq(str, "TOTO"); } END_TEST START_TEST(test_strutil_reverse) { char str[] = "toto"; reverse(str); ck_assert_str_eq(str, "otot"); } END_TEST #define TESTDIR "check_freedink TestDir/" void test_ioutil_setup() { mkdir(TESTDIR, 0777); mkdir(TESTDIR "SubDir", 0777); } void test_ioutil_teardown() { rmdir(TESTDIR "SubDir"); rmdir(TESTDIR); } int test_ioutil_ciconvert_ext(const char* wrong_case, const char* good_case) { /* Create file with proper case */ { FILE *f = NULL; if ((f = fopen(good_case, "w")) == NULL) return 0; fclose(f); } /* Attempt to open it using wrong case */ int success = 0; { FILE *f = NULL; char *fixed_case = strdup(wrong_case); ciconvert(fixed_case); if ((f = fopen(fixed_case, "r")) != NULL) success = 1; if (f != NULL) fclose(f); unlink(good_case); free(fixed_case); } return success; } START_TEST(test_ioutil_ciconvert) { ck_assert( test_ioutil_ciconvert_ext(TESTDIR "toto", TESTDIR "toto")); ck_assert( test_ioutil_ciconvert_ext(TESTDIR "ToTo", TESTDIR "toto")); ck_assert( test_ioutil_ciconvert_ext(TESTDIR "ToTo", TESTDIR "TOTO")); ck_assert( test_ioutil_ciconvert_ext(TESTDIR "ToTo", TESTDIR "tOtO")); ck_assert(!test_ioutil_ciconvert_ext(TESTDIR "ToTo", TESTDIR "t0t0")); /* - with multiple slashes: .//file */ ck_assert( test_ioutil_ciconvert_ext(TESTDIR "/ToTo", TESTDIR "toto")); /* - absolute path */ char* dir = get_current_dir_name(); char* good_case = calloc(1, strlen(dir) + 1 + strlen(TESTDIR) + 4 + 1); char* wrong_case = calloc(1, strlen(dir) + 1 + strlen(TESTDIR) + 4 + 1); strcat(good_case, dir); strcat(good_case, "/"); strcat(good_case, TESTDIR); strcat(wrong_case, good_case); strcat(good_case, "toto"); strcat(wrong_case, "ToTo"); ck_assert( test_ioutil_ciconvert_ext(wrong_case, good_case)); free(good_case); free(wrong_case); /* - access to subsubdirectories using '/' */ ck_assert( test_ioutil_ciconvert_ext(TESTDIR "SubdIr/toto", TESTDIR "SubDir/toto")); /* - access to subsubdirectories using '\' */ ck_assert( test_ioutil_ciconvert_ext(TESTDIR "SubdIr\\toto", TESTDIR "SubDir/toto")); /* - files containing '\' ... works on GNU/Linux but not on Windows, not portable, not supported */ /* ck_assert(?test_ioutil_ciconvert_ext(TESTDIR "to\\to", TESTDIR "to\\to")); */ /* - with a file and a directory with the same name, in the same directory: currently we don't support that, as it didn't work on original Dink / woe anyway, and it's not portable */ /* ck_assert(?test_ioutil_ciconvert_ext(TESTDIR "subdir", TESTDIR "subdir")); */ } END_TEST void test_dinkc_setup() { dinkc_bindings_init(); rinfo[0] = XZALLOC(struct refinfo); rinfo[0]->name = ""; } void test_dinkc_teardown() { free(rinfo[0]); dinkc_bindings_quit(); } START_TEST(test_dinkc_getparms_bounds) { // memory bounds { char* str_params = strdup("(\""); int spec[] = { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert_int_eq(get_parms("ignored", 0, str_params, spec), 0); free(str_params); } } END_TEST START_TEST(test_dinkc_getparms_int) { // Basic int test { char str_params[] = "(21,22050, 0,0,0);"; int spec[] = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; ck_assert_int_eq(get_parms("ignored", 0, str_params, spec), 1); } } END_TEST START_TEST(test_dinkc_getparms_emptyint) { // [empty] is considered a valid int { char str_params[] = "(,)"; int spec[] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(get_parms("ignored", 0, str_params, spec)); } // e.g. it's OK to have empty arguments list when a single int is expected { char str_params[] = "()"; int spec[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(get_parms("ignored", 0, str_params, spec)); } // this doesn't apply to strings { char str_params[] = "()"; int spec[] = { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(!get_parms("ignored", 0, str_params, spec)); } // nor does this make parameters optional { char str_params[] = "(1)"; int spec[] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(!get_parms("ignored", 0, str_params, spec)); } // Good test { char str_params[] = "(1,1)"; int spec[] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(get_parms("ignored", 0, str_params, spec)); } } END_TEST START_TEST(test_dinkc_getparms_parens) { // Opening paren is mandatory { char str_params[] = "sp_dir[1,2)"; int spec[] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(!get_parms("ignored", 0, str_params, spec)); } // Closing paren is mandatory { char str_params[] = "(1,1"; int spec[] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(!get_parms("ignored", 0, str_params, spec)); } { char str_params[] = "(1,1,)"; int spec[] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(!get_parms("ignored", 0, str_params, spec)); } { char str_params[] = "(1,1;"; int spec[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(!get_parms("ignored", 0, str_params, spec)); } // Good test { char str_params[] = "(1,\"a\")"; int spec[] = { 1, 2, 0, 0, 0, 0, 0, 0, 0, 0 }; ck_assert(get_parms("ignored", 0, str_params, spec)); } } END_TEST Suite* freedink_suite() { Suite *s = suite_create("FreeDink"); TCase *tc_strutil = tcase_create("String utilities"); tcase_add_test(tc_strutil, test_strutil_strtoupper); tcase_add_test(tc_strutil, test_strutil_reverse); suite_add_tcase(s, tc_strutil); TCase *tc_ioutil = tcase_create("I/O utilities"); tcase_add_unchecked_fixture(tc_ioutil, test_ioutil_setup, test_ioutil_teardown); tcase_add_test(tc_ioutil, test_ioutil_ciconvert); suite_add_tcase(s, tc_ioutil); TCase *tc_dinkc = tcase_create("DinkC"); tcase_add_checked_fixture(tc_dinkc, test_dinkc_setup, test_dinkc_teardown); tcase_add_test(tc_dinkc, test_dinkc_getparms_bounds); tcase_add_test(tc_dinkc, test_dinkc_getparms_int); tcase_add_test(tc_dinkc, test_dinkc_getparms_emptyint); tcase_add_test(tc_dinkc, test_dinkc_getparms_parens); suite_add_tcase(s, tc_dinkc); return s; } int main() { int number_failed; Suite *s = freedink_suite(); SRunner *sr = srunner_create(s); srunner_run_all(sr, CK_ENV); number_failed = srunner_ntests_failed(sr); srunner_free(sr); return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; } freedink-108.4+dfsg/src/gfx_palette.c0000644000175000017500000001231512420231175015254 0ustar meme/** * Graphics utilities: palettes... * Copyright (C) 2003 Shawn Betts * Copyright (C) 2003, 2004, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "gfx_palette.h" #include #include "SDL.h" #include "SDL_image.h" #include "gfx.h" #include "io_util.h" #include "paths.h" #include "log.h" /* Copy of the physical screen palette - SDL provides a getter for the logical palette, but not for the hardware palette */ static SDL_Color phys_palette[256]; /* Palette change: with SDL, SDL_SetColors (aka SDL_SetPalette(SDL_PHYSPAL)) apparently triggers a Flip, which displays weird colors on the screen for a brief but displeasing moment. Besides, SDL_Flip() does not refresh the hardware palette, so update the physical palette needs to be done manually - but only when the surface is already in its final form. The palette may need to be changed before the screen content is ready, so we'll make the engine know when he needs to refresh the physical palette: */ static int trigger_palette_change = 0; /** * Get local copy of physical palette */ void gfx_palette_get_phys(SDL_Color* palette) { memcpy(palette, phys_palette, sizeof(phys_palette)); } /** * Set physical palette */ void gfx_palette_set_phys(SDL_Color* new_palette) { /* Now this one is tricky: DX/Woe has a "feature" where palette indexes 0 and 255 are fixed to black and white, respectively. This is the opposite of the default Dink palette - which is why fill_screen(0) is black and not white as in the Dink palette. This also makes "Lyna's Story"'s palette change a bit ugly, because pure black and white colors are not reversed when you enter "negative" color mode. This does not affect other indexes. Technically this happens when you get a palette from GetEntries(), and when you CreatePalette() without specifying DDPCAPS_ALLOW256 (so respectively, in change_screen_palette() and load_palette_from_*()). But well, reproducing the bug is important for backward compatibility. */ memcpy(phys_palette, new_palette, sizeof(phys_palette)); phys_palette[0].r = 0; phys_palette[0].g = 0; phys_palette[0].b = 0; phys_palette[255].r = 255; phys_palette[255].g = 255; phys_palette[255].b = 255; /* Applying the logical palette to the physical screen may trigger a Flip, so don't do it right now */ trigger_palette_change = 1; } /** * Apply the recently-updated copy of the physical palette to the * physical screen. This may trigger a Flip (so don't do that until * Back is ready). */ void gfx_palette_apply_phys() { if (trigger_palette_change == 1) gfx_palette_restore_phys(); trigger_palette_change = 0; } /** * Set the physical screen palette unconditionaly (e.g.: because it * was changed, or lost) */ void gfx_palette_restore_phys() { SDL_SetPalette(GFX_lpDDSBack, SDL_PHYSPAL, phys_palette, 0, 256); } /* Generate a default/fallback 216 colors palette */ void gfx_palette_reset() { SDL_Color palette[256]; int i = 0; int r, g, b; /* Set a 3,3,2 color cube */ for (r = 0; r < 256; r += 0x33) { for (g = 0; g < 256; g += 0x33) { for (b = 0; b < 256; b += 0x33) { palette[i].r = r; palette[i].g = g; palette[i].b = b; i++; } } } /* Set the rest of the colors to black */ for (; i < 256; i++) palette[i].r = palette[i].g = palette[i].b = 0; gfx_palette_set_phys(palette); } /* Get a colors palette from the specified image */ int gfx_palette_set_from_surface(SDL_Surface *bmp) { SDL_Color palette[256]; int i; if (bmp == NULL || bmp->format->palette == NULL) return -1; for (i = 0; i < bmp->format->palette->ncolors; i++) { palette[i].r = bmp->format->palette->colors[i].r; palette[i].g = bmp->format->palette->colors[i].g; palette[i].b = bmp->format->palette->colors[i].b; } gfx_palette_set_phys(palette); return 0; } /* Get a colors palette from the specified image */ int gfx_palette_set_from_bmp(char *filename) { SDL_Surface *bmp; int success = -1; char *fullpath = NULL; fullpath = paths_dmodfile(filename); bmp = IMG_Load(fullpath); free(fullpath); if (bmp == NULL) { fullpath = paths_fallbackfile(filename); bmp = IMG_Load(fullpath); free(fullpath); if (bmp == NULL) { log_error("load_palette_from_bmp: couldn't open '%s': %s", filename, SDL_GetError()); return -1; } } success = gfx_palette_set_from_surface(bmp); SDL_FreeSurface(bmp); return success; } freedink-108.4+dfsg/src/log.c0000644000175000017500000000553312420231175013537 0ustar meme/** * Different ways to give information to the user * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "io_util.h" #include "paths.h" #include "log.h" #include #include #include #include char last_debug[200]; int debug_mode = 0; static enum log_priority cur_priority = LOG_PRIORITY_ERROR; static enum log_priority orig_priority = LOG_PRIORITY_ERROR; FILE* out = NULL; char* priority_names[LOG_PRIORITY_OFF] = { "", /* ALL */ "[trace] ", "[debug] ", "[info ] ", "[warn ] ", "[ERROR] ", "[FATAL] ", }; void log_debug_on() { debug_mode = 1; orig_priority = cur_priority; log_set_priority(LOG_PRIORITY_DEBUG); out = paths_dmodfile_fopen("DEBUG.TXT", "ab"); /* out might be NULL, e.g. permissions problem */ if (out != NULL) { /* setlinebuf(stdout); */ /* This one is equivalent and works with mingw: */ setvbuf(stdout, NULL, _IOLBF, 0); } } void log_debug_off() { strcpy(last_debug, ""); cur_priority = orig_priority; if (out != NULL) fclose(out); out = NULL; debug_mode = 0; } void log_set_priority(enum log_priority priority) { if (cur_priority >= LOG_PRIORITY_ALL && cur_priority <= LOG_PRIORITY_OFF) cur_priority = priority; } void log_output(enum log_priority priority, char *fmt, ...) { if (priority < cur_priority || priority <= LOG_PRIORITY_ALL || priority >= LOG_PRIORITY_OFF) return; char* buf = NULL; // format message va_list ap; va_start(ap, fmt); int res = vasprintf(&buf, fmt, ap); va_end(ap); if (res < 0) return; // displayed on screen if user switches to debug mode if (debug_mode) { strcpy(last_debug, priority_names[priority]); strncat(last_debug, buf, sizeof(last_debug) - strlen(priority_names[priority]) - 1); } // write to DEBUG.TXT if (out != NULL) { fputs(priority_names[priority], out); fputs(buf, out); fputc('\n', out); } // write to standard output fputs(priority_names[priority], stdout); fputs(buf, stdout); putchar('\n'); free(buf); } freedink-108.4+dfsg/src/dink.60000644000175000017500000000002412330466347013627 0ustar meme.so man6/freedink.6 freedink-108.4+dfsg/src/gfx_fonts.c0000644000175000017500000004714512420231175014760 0ustar meme/** * Fonts * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ #define WIN32_LEAN_AND_MEAN #define _WIN32_IE 0x0401 #include #include #endif #include #include #include #include "SDL.h" #include "SDL_ttf.h" #include "dinkvar.h" #include "gfx.h" #include "io_util.h" #include "paths.h" #include "gfx_fonts.h" #include "gfx_palette.h" #include "vgasys_fon.h" #include "init.h" #include "log.h" /* Default size was 18 in the original game, but it refers to a different part of the font glyph (see doc/fonts.txt for details). 16 matches that size with SDL_ttf (possibly only for LiberationSans). */ #define FONT_SIZE 16 /* Default fonts: dialog and system */ static TTF_Font *dialog_font = NULL; static TTF_Font *system_font = NULL; /* Current font parameters */ static SDL_Color text_color; static TTF_Font *load_default_font(); static void setup_font(TTF_Font *font); // D-Mod-defined font colors struct font_color { int red; int green; int blue; }; static struct font_color font_colors[16]; #ifdef HAVE_FONTCONFIG #include /* Get filename for canonical font name 'fontname'. Return NULL if the font cannot be found (for correctness, no alternate font will be provided). */ char* get_fontconfig_path(char* fontname) { char* filename = NULL; FcPattern* p = NULL; FcChar8* strval = NULL; FcObjectSet *attr = NULL; if (!FcInit()) { log_error("get_fontconfig_path: cannot initialize fontconfig"); return NULL; } p = FcNameParse((FcChar8*)fontname); if (p == NULL) { log_error("get_fontconfig_path: invalid font pattern: %s", fontname); return NULL; } /* Grab filename attribute */ attr = FcObjectSetBuild (FC_FILE, (char *) 0); FcFontSet *fs = FcFontList (0, p, attr); if (fs->nfont == 0) { log_error("get_fontconfig_path: no matching font for %s", fontname); return NULL; } if (FcPatternGetString(fs->fonts[0], FC_FILE, 0, &strval) == FcResultTypeMismatch || strval == NULL) { log_error("get_fontconfig_path: cannot find font filename for %s", fontname); return NULL; } filename = strdup((char*)strval); FcFontSetDestroy(fs); FcObjectSetDestroy(attr); FcPatternDestroy(p); FcFini(); return filename; } #endif /** * Init font subsystem and one built-in font, so we can display error * messages in emergency (init error) situations */ int gfx_fonts_init_failsafe() { if (!TTF_WasInit() && TTF_Init() == -1) return -1; /* Load system font from compiled data */ if (system_font == NULL) { system_font = TTF_OpenFontRW(SDL_RWFromConstMem(vgasys_fon, sizeof(vgasys_fon)), 1, FONT_SIZE); if (system_font == NULL) return -1; setup_font(system_font); } return 0; } /** * Init font subsystem and load the default fonts */ int gfx_fonts_init() { if (TTF_Init() == -1) { init_set_error_msg(TTF_GetError()); return -1; } /* Load system font from compiled data */ system_font = TTF_OpenFontRW(SDL_RWFromConstMem(vgasys_fon, sizeof(vgasys_fon)), 1, FONT_SIZE); if (system_font == NULL) { init_set_error_msg("Failed to load builtin 'vgasys.fon' font."); return -1; } setup_font(system_font); /* Load dialog font from built-in resources */ dialog_font = load_default_font(); if (dialog_font == NULL) return -1; /* error message set by load_default_font */ setup_font(dialog_font); gfx_fonts_init_colors(); return 0; } /** * Quit the font subsystem (and free loaded fonts from memory) */ void gfx_fonts_quit(void) { if (dialog_font != NULL) { TTF_CloseFont(dialog_font); dialog_font = NULL; } if (system_font != NULL) { // Uncomment when FreeType 2.5.3 is widespread // https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=747002 //TTF_CloseFont(system_font); system_font = NULL; } TTF_Quit(); } /** * Default font from resources and pkgdatadir */ static TTF_Font *load_default_font() { TTF_Font *font_object = NULL; SDL_RWops* rwops = NULL; /* Try from resources */ if (rwops == NULL) { rwops = find_resource_as_rwops("LiberationSans-Regular.ttf"); } #ifdef HAVE_FONTCONFIG if (rwops == NULL) { char *path = get_fontconfig_path("Liberation Sans:style=Regular"); rwops = SDL_RWFromFile(path, "rb"); free(path); } #endif if (rwops == NULL) { init_set_error_msg("Could not open font 'LiberationSans-Regular.ttf'. I tried:\n" "- loading from '%s'\n" "- loading from '%s'\n" "- loading from '%s'\n" "- loading from executable's resources\n" #ifdef HAVE_FONTCONFIG "- querying fontconfig" #endif , paths_getpkgdatadir(), paths_getdefaultpkgdatadir(), paths_getexedir()); return NULL; } font_object = TTF_OpenFontRW(rwops, 1, FONT_SIZE); if (font_object == NULL) { init_set_error_msg("Could not open font 'LiberationSans-Regular.ttf': %s", TTF_GetError()); return NULL; } return font_object; } /** * Change the current dialog font (DinkC initfont() command) */ int initfont(char* fontname) { TTF_Font *new_font = NULL; char* ext = ".ttf"; char* filename = malloc(strlen(fontname) + strlen(ext) + 1); strcpy(filename, fontname); strcat(filename, ext); if (new_font == NULL) { char *path = NULL; #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ /* Look in system fonts dir */ path = malloc(MAX_PATH + 1 + strlen(filename) + 1); /* C:\WINNT\Fonts */ SHGetSpecialFolderPath(NULL, path, CSIDL_FONTS, 0); strcat(path, "\\"); strcat(path, filename); #else # ifdef HAVE_FONTCONFIG path = get_fontconfig_path(fontname); # else path = NULL; # endif #endif if (path == NULL) { log_error("initfont: cannot find '%s'", fontname); } else { new_font = TTF_OpenFont(path, FONT_SIZE); if (new_font == NULL) log_error("TTF_OpenFont: %s", TTF_GetError()); free(path); } } if (new_font == NULL) return -1; /* new_font could be loaded - we can free the previous one */ TTF_CloseFont(dialog_font); dialog_font = new_font; setup_font(dialog_font); return 0; } /** * Change a font color (DinkC set_font_color() command) */ void set_font_color(int no, int red, int green, int blue) { if (no >= 1 && no <= 15 && red >= 0 && red <= 255 && green >= 0 && green <= 255 && blue >= 0 && blue <= 255) { font_colors[no].red = red; font_colors[no].green = green; font_colors[no].blue = blue; } } /** * Apply default style to the font * Plus some informative output */ static void setup_font(TTF_Font *font) { char *familyname = TTF_FontFaceFamilyName(font); if(familyname) log_info("The family name of the face in the font is: %s", familyname); char *stylename = TTF_FontFaceStyleName(font); if(stylename) log_info("The name of the face in the font is: %s", stylename); log_info("The font max height is: %d", TTF_FontHeight(font)); log_info("The font ascent is: %d", TTF_FontAscent(font)); log_info("The font descent is: %d", TTF_FontDescent(font)); log_info("The font line skip is: %d", TTF_FontLineSkip(font)); if(TTF_FontFaceIsFixedWidth(font)) log_info("The font is fixed width."); else log_info("The font is not fixed width."); TTF_SetFontStyle(font, TTF_STYLE_BOLD); } void FONTS_SetTextColor(Uint8 r, Uint8 g, Uint8 b) { text_color.r = r; text_color.g = g; text_color.b = b; } void FONTS_SetTextColorIndex(int no) { text_color.r = font_colors[no].red; text_color.g = font_colors[no].green; text_color.b = font_colors[no].blue; } static void print_text (TTF_Font * font, char *str, int x, int y, int w, SDL_Color /*&*/color, /*bool*/int hcenter) { int new_x, text_w, text_h; SDL_Surface *tmp; SDL_Rect dst; if (strlen (str) == 0) return; /* Msg (("printing \"%s\"", str)); */ /* Rationale: text color is not affected by palette shifts (yellow stays yellow even if we're using the negative palette from Lyna's story) _but_ text color is the closest one in the final palette color (so when after a fade_down(), the available colors are only black and white, yellow becomes white, as yellow is just not available, and white is closest than black). */ /* So we get the color index from cur_screen_palette (final color even after palette effects), and use the color value from GFX_real_pal (reference palette used for all graphics before palette effects). */ /* Previously this was implemented using BlitSurface palette conversion (commit 2007-11-01) but this was terribly slow (full palette conversion done 5 times per text (for the border effect) and per frame). */ if (!truecolor) { SDL_PixelFormat fmt; SDL_Palette pal; pal.ncolors = 256; SDL_Color tmppal[256]; gfx_palette_get_phys(tmppal); pal.colors = tmppal; fmt.palette = &pal; Uint32 phys_index = SDL_MapRGB(&fmt, color.r, color.g, color.b); SDL_GetRGB(phys_index, GFX_lpDDSBack->format, &(color.r), &(color.g), &(color.b)); } /* Transparent, low quality - closest to the original engine. */ /* Besides, we do need a monochrome render, since we're doing nasty tricks to set the color appropriately */ tmp = TTF_RenderUTF8_Solid(font, str, color); /* Bigger, with a box background */ // SDL_Color background = {0, 0, 0}; // tmp = TTF_RenderText_Shaded(font, str, color, background); /* High quality, 32bit+alpha, but I can't get the transparency OK. Directly applying it on lpDDSBack messed with the colors of the graphics behind the text, and trying to pre-convert it by blitting it on a transparent surface missed some of the text borders in the final result (i.e. multiple calls to print_text with a small postponement to make the borders). */ // tmp = TTF_RenderText_Blended(font, str, color); // { // // SDL_Surface *conv = SDL_DisplayFormat(tmp); // SDL_Surface *conv = SDL_CreateRGBSurface(SDL_SWSURFACE, tmp->w, tmp->h, 8, // 0, 0, 0, 0); // SDL_SetPalette(conv, SDL_LOGPAL, GFX_real_pal, 0, 256); // SDL_SetColorKey(conv, SDL_SRCCOLORKEY, 0); // SDL_FillRect(conv, NULL, 0); // SDL_BlitSurface(tmp, NULL, conv, NULL); // SDL_FreeSurface(tmp); // tmp = conv; // } if (tmp == NULL) { log_error("Error rendering text: %s; font is %p", TTF_GetError(), font); return; } TTF_SizeUTF8 (font, str, &text_w, &text_h); new_x = x; if (hcenter) { new_x += w / 2; new_x -= text_w / 2; } dst.x = new_x; dst.y = y; SDL_Rect src; src.x = src.y = 0; src.w = w; // truncate text if outside the box src.h = tmp->h; SDL_BlitSurface(tmp, &src, GFX_lpDDSBack, &dst); SDL_FreeSurface (tmp); } /** * Get the size in pixel of 'len' chars starting at 'str' */ static int font_len (TTF_Font *font, char *str, int len) { int text_w; char *tmp; /* Get the specified string portion and terminate it by \0 */ tmp = (char *) malloc ((len + 1) * sizeof (char)); strncpy (tmp, str, len); tmp[len] = 0; TTF_SizeUTF8 (font, tmp, &text_w, NULL); free (tmp); return text_w; } /** * Add newlines in the text so that it fit in 'box' * (a.k.a. word-wrapping) */ static int process_text_for_wrapping (TTF_Font *font, char *str, int max_len) { //printf("process_text_for_wrapping: %s on %dx%d\n", str, box->right - box->left, box->bottom - box->top); int i, start, line, last_fit; start = 0; i = 0; last_fit = -1; line = 0; while (str[i] != '\0') { int len; /* Skip forward to the end of the word */ while (str[i] != '\0' && str[i] != ' ' && str[i] != '\n') i++; /* If the length of the text from start to i is bigger than the box, then draw the text up to the last fitting portion - unless that was the beginning of the string. */ len = font_len (font, &str[start], i - start); if (len > max_len) { /* String is bigger than the textbox */ if (last_fit == -1) { /* Current word is too long by itself already, let's keep it on a single line */ if (str[i] != '\0') str[i] = '\n'; /* continue on a new line */ line++; start = i + 1; if (str[i] != '\0') i++; } else { /* All those words is bigger than the textbox, linebreak at previous space */ str[last_fit] = '\n'; /* continue on a new line */ line++; start = last_fit + 1; i = last_fit + 1; } last_fit = -1; } else if (str[i] == '\0') { line++; } else if (str[i] == '\n') { line++; i++; start = i; last_fit = -1; } else { last_fit = i; i++; } } return line; } /** * Print text 'str' in 'box', adding newlines if necessary * (word-wrapping). Return the text height in pixels. * * calc_only: don't actually draw text on screen, but still compute * the text height */ int print_text_wrap (char *str, rect* box, /*bool*/int hcenter, int calc_only, FONT_TYPE font_type) { int x, y, res_height; char *tmp, *pline, *pc; int this_is_last_line = 0; // SDL_Color color = {0, 0, 0}; SDL_Color color = text_color; TTF_Font *font; int lineskip = 0; if (font_type == FONT_DIALOG) font = dialog_font; else if (font_type == FONT_SYSTEM) font = system_font; else { log_error("Error: unknown font type %d", font_type); exit(1); } /* Workaround: with vgasys.fon, lineskip is always 1. We'll use it's height instead. */ lineskip = TTF_FontLineSkip(font); if (lineskip == 1) lineskip = TTF_FontHeight(font); tmp = strdup(str); process_text_for_wrapping(font, tmp, box->right - box->left); x = box->left; y = box->top; res_height = 0; pline = pc = tmp; this_is_last_line = 0; while (!this_is_last_line) { while (*pc != '\n' && *pc != '\0') pc++; if (*pc == '\0') this_is_last_line = 1; else /* Terminate the current line to feed it to print_text */ *pc= '\0'; if (!calc_only) print_text(font, pline, x, y + res_height, (box->right - box->left), color, hcenter); res_height += lineskip; /* advance to next line*/ pc++; pline = pc; } free(tmp); return res_height; } /** * Display text for debug mode (with a white background) */ void print_text_wrap_debug(char *text, int x, int y) { char *tmp, *pline, *pc; int this_is_last_line = 0; int res_height = 0; SDL_Color bgcolor = {255, 255, 255}; int max_len = 640; /* Workaround: with vgasys.fon, lineskip is always 1. We'll use it's height instead. */ int lineskip = TTF_FontHeight(system_font); int textlen = strlen(text); tmp = malloc(strlen(text) + 1); /* drop '\r' */ pc = tmp; int i; for (i = 0; i < textlen; i++) if (text[i] == '\r' && text[i+1] == '\n') continue; else *(pc++) = text[i]; *pc = '\0'; process_text_for_wrapping(system_font, tmp, max_len); pline = pc = tmp; this_is_last_line = 0; while (!this_is_last_line) { while (*pc != '\n' && *pc != '\0') pc++; if (*pc == '\0') this_is_last_line = 1; else /* Terminate the current line to feed it to print_text */ *pc= '\0'; SDL_Rect dst = {x, y + res_height, -1, -1}; SDL_Surface *rendered_text = TTF_RenderUTF8_Shaded(system_font, pline, text_color, bgcolor); SDL_BlitSurface(rendered_text, NULL, GFX_lpDDSBack, &dst); SDL_FreeSurface(rendered_text); res_height += lineskip; /* advance to next line*/ pc++; pline = pc; } free(tmp); } /* Say, SaySmall: only used by freedinkedit.c */ /** * SaySmall: print text in a 40x40 small square; without font border * (sprite info boxes when typing 'I', plus something in tile * hardness) */ void SaySmall(char thing[500], int px, int py, int r, int g, int b) { rect rcRect; /* HDC hdc; */ /* if (lpDDSBack->GetDC(&hdc) == DD_OK) */ /* { */ /* SetBkMode(hdc, TRANSPARENT); */ rect_set(&rcRect,px,py,px+40,py+40); /* SetTextColor(hdc,RGB(r,g,b)); */ /* DrawText(hdc,thing,lstrlen(thing),&rcRect,DT_WORDBREAK); */ // FONTS FONTS_SetTextColor(r, g, b); print_text_wrap(thing, &rcRect, 0, 0, FONT_SYSTEM); /* lpDDSBack->ReleaseDC(hdc); */ /* } */ } /** * Say: print text until it reaches the border of the screen, with a * font border (input dialog boxes) */ void Say(char thing[500], int px, int py) { rect rcRect; /* HDC hdc; */ /* if (lpDDSBack->GetDC(&hdc) == DD_OK) */ /* { */ /* SetBkMode(hdc, TRANSPARENT); */ rect_set(&rcRect,px,py,620,480); /* SelectObject (hdc, hfont_small); */ /* SetTextColor(hdc,RGB(8,14,21)); */ /* DrawText(hdc,thing,lstrlen(thing),&rcRect,DT_WORDBREAK); */ // FONTS FONTS_SetTextColor(8, 14, 21); print_text_wrap(thing, &rcRect, 0, 0, FONT_DIALOG); rect_offset(&rcRect,-2,-2); /* DrawText(hdc,thing,lstrlen(thing),&rcRect,DT_WORDBREAK); */ // FONTS print_text_wrap(thing, &rcRect, 0, 0, FONT_DIALOG); rect_offset(&rcRect,1,1); /* SetTextColor(hdc,RGB(255,255,0)); */ /* DrawText(hdc,thing,lstrlen(thing),&rcRect,DT_WORDBREAK); */ // FONTS FONTS_SetTextColor(255, 255, 0); print_text_wrap(thing, &rcRect, 0, 0, FONT_DIALOG); /* lpDDSBack->ReleaseDC(hdc); */ /* } */ } void gfx_fonts_init_colors() { //Light Magenta font_colors[1].red = 255; font_colors[1].green = 198; font_colors[1].blue = 255; //Dark Green font_colors[2].red = 131; font_colors[2].green = 181; font_colors[2].blue = 74; //Bold Cyan font_colors[3].red = 99; font_colors[3].green = 242; font_colors[3].blue = 247; //Orange font_colors[4].red = 255; font_colors[4].green = 156; font_colors[4].blue = 74; //Magenta font_colors[5].red = 222; font_colors[5].green = 173; font_colors[5].blue = 255; //Brown Orange font_colors[6].red = 244; font_colors[6].green = 188; font_colors[6].blue = 73; //Light Gray font_colors[7].red = 173; font_colors[7].green = 173; font_colors[7].blue = 173; //Dark Gray font_colors[8].red = 85; font_colors[8].green = 85; font_colors[8].blue = 85; //Sky Blue font_colors[9].red = 148; font_colors[9].green = 198; font_colors[9].blue = 255; //Bright Green font_colors[10].red = 0; font_colors[10].green = 255; font_colors[10].blue = 0; //Yellow font_colors[11].red = 255; font_colors[11].green = 255; font_colors[11].blue = 2; //Yellow font_colors[12].red = 255; font_colors[12].green = 255; font_colors[12].blue = 2; //Hot Pink font_colors[13].red = 255; font_colors[13].green = 132; font_colors[13].blue = 132; //Yellow font_colors[14].red = 255; font_colors[14].green = 255; font_colors[14].blue = 2; //White font_colors[15].red = 255; font_colors[15].green = 255; font_colors[15].blue = 255; } freedink-108.4+dfsg/src/input.c0000644000175000017500000001625312420231175014116 0ustar meme/** * Keyboard and joystick * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include "SDL.h" #include "game_engine.h" #include "log.h" #include "input.h" /* Input state */ struct seth_joy sjoy; /* maps joystick buttons to action IDs (attack/attack/map/...). */ /* 10 buttons (indices), 6 different actions + 4 static buttons (values) */ static enum buttons_actions buttons_map[NB_BUTTONS]; /* TODO: maybe it's not necessary to SDL_PumpEvents every time, since it's usually done before this function is called */ int GetKeyboard(int key) { // returns 0 if the key has been depressed, else returns 1 and sets key to code recd. int keystate_size; Uint8* keystate; //SDL_PumpEvents(); #if SDL_VERSION_ATLEAST(1, 3, 0) keystate = SDL_GetKeyboardState(&keystate_size); SDLKey scancode = SDL_GetScancodeFromKey(key); return keystate[scancode]; #else keystate = SDL_GetKeyState(&keystate_size); return keystate[key]; #endif } void input_init(void) { /* Enable Unicode to be able to grab what letter the user actually typed, taking the keyboard layout/language into account. Used for the console (game) and the input dialogs (editor). */ SDL_EnableUNICODE(1); /* Clear keyboard/joystick buffer */ memset(&sjoy,0,sizeof(sjoy)); { int k = 0; for (k = 0; k < 256; k++) GetKeyboard(k); int a = ACTION_FIRST; for (a = ACTION_FIRST; a < ACTION_LAST; a++) sjoy.joybitold[a] = 0; } sjoy.rightold = 0; sjoy.leftold = 0; sjoy.upold = 0; sjoy.downold = 0; /* Define default button->action mapping */ input_set_default_buttons(); /* JOY */ /* Joystick initialization never makes Dink fail for now. */ /* Note: joystick is originaly only used by the game, not the editor. */ if (joystick == 1) { if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1) { log_error("Error initializing joystick, skipping: %s", SDL_GetError()); joystick = 0; } else { /* first tests if a joystick driver is present */ /* if TRUE it makes certain that a joystick is plugged in */ if (SDL_NumJoysticks() > 0) { int i; log_info("%i joysticks were found.", SDL_NumJoysticks()); log_info("The names of the joysticks are:"); for (i=0; i < SDL_NumJoysticks(); i++) log_info(" %s", SDL_JoystickName(i)); log_info("Picking the first one..."); jinfo = SDL_JoystickOpen(0); /* Don't activate joystick events, Dink polls joystick manually. Plus events would pile up in the queue. */ SDL_JoystickEventState(SDL_IGNORE); if (jinfo) { log_info("Name: %s", SDL_JoystickName(0)); log_info("Number of axes: %d", SDL_JoystickNumAxes(jinfo)); log_info("Number of buttons: %d", SDL_JoystickNumButtons(jinfo)); log_info("Number of balls: %d", SDL_JoystickNumBalls(jinfo)); log_info("Number of hats: %d", SDL_JoystickNumHats(jinfo)); /* Flush stacked joystick events */ { SDL_Event event; while (SDL_PollEvent(&event)); } joystick = 1; } else { log_error("Couldn't open Joystick #0"); joystick = 0; } } } } } void input_quit(void) { if (joystick == 1) { if (jinfo != NULL) { SDL_JoystickClose(jinfo); jinfo = NULL; } SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } } void input_set_default_buttons(void) { /* Set default button->action mapping */ int i = 0; for (i = 0; i < NB_BUTTONS; i++) input_set_button_action(i, ACTION_NOOP); input_set_button_action( 1-1, ACTION_ATTACK); input_set_button_action( 2-1, ACTION_TALK); input_set_button_action( 3-1, ACTION_MAGIC); input_set_button_action( 4-1, ACTION_INVENTORY); input_set_button_action( 5-1, ACTION_MENU); input_set_button_action( 6-1, ACTION_MAP); input_set_button_action( 7-1, ACTION_BUTTON7); input_set_button_action( 8-1, ACTION_BUTTON8); input_set_button_action( 9-1, ACTION_BUTTON9); input_set_button_action(10-1, ACTION_BUTTON10); #ifdef _PSP /* Alternate mapping, more consistent with other apps on PSP; in addition, the buttons numbering/placement is different than on PC, so it needs to be redefined anyway. */ /* Here are names for the button indices returned by SDL, 12 buttons in [0,11]; home/hold/note/screen/vol+/vol- can't be used */ enum buttons_psp { BUTTON_TRIANGLE=0, BUTTON_CIRCLE, BUTTON_CROSS, BUTTON_SQUARE, BUTTON_LTRIGGER, BUTTON_RTRIGGER, BUTTON_DOWN, BUTTON_LEFT, BUTTON_UP, BUTTON_RIGHT, BUTTON_SELECT, BUTTON_START, BUTTON_HOME, BUTTON_HOLD }; input_set_button_action(BUTTON_TRIANGLE, ACTION_INVENTORY); input_set_button_action(BUTTON_CIRCLE, ACTION_MAGIC); input_set_button_action(BUTTON_CROSS, ACTION_ATTACK); input_set_button_action(BUTTON_SQUARE, ACTION_TALK); input_set_button_action(BUTTON_LTRIGGER, ACTION_MENU); input_set_button_action(BUTTON_RTRIGGER, ACTION_MAP); // TODO: make these also work like d/l/u/r: input_set_button_action(BUTTON_DOWN, ACTION_DOWN); input_set_button_action(BUTTON_LEFT, ACTION_LEFT); input_set_button_action(BUTTON_UP, ACTION_UP); input_set_button_action(BUTTON_RIGHT, ACTION_RIGHT); /* TODO: we could also map: - debug (Alt+D), - pause/resume midi (Alt+N/B) - fast-quit (Alt+Q) - fast-quit is somewhat already available through the classic Home key, although handled differently. */ /* Let's also try to get a free key to possibly implement a zooming/switch-view function for small screens, as well as a virtual keyboard feature (like ScummVM)... */ /* Maybe also map inventory to start instead of Triangle. */ input_set_button_action(BUTTON_START, ACTION_INVENTORY); #endif } enum buttons_actions input_get_button_action(int button_index) { if (button_index >= 0 && button_index < NB_BUTTONS) { return buttons_map[button_index]; } return -1; /* error */ } /** * Set what action will be triggered when button 'button_index' is * pressed. Action '0' currently means 'do nothing'. */ void input_set_button_action(int button_index, enum buttons_actions action_index) { if (button_index >= 0 && button_index < NB_BUTTONS) { if (action_index >= ACTION_FIRST && action_index < ACTION_LAST) buttons_map[button_index] = action_index; else log_error("Attempted to set invalid action %d", action_index); } else { log_error("Attempted to set invalid button %d (internal index %d)", button_index+1, button_index); } } freedink-108.4+dfsg/src/gfx_tiles.c0000644000175000017500000001401212420231175014732 0ustar meme/** * Draw background from tiles * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "game_engine.h" #include "screen.h" #include "dinkvar.h" #include "gfx.h" #include "gfx_tiles.h" #include "io_util.h" #include "paths.h" #include "sfx.h" #include "log.h" #include "meminfo.h" /* Tiles */ /* Game pieces */ /* +1 to avoid the -1 in array indexes.. */ SDL_Surface* gfx_tiles[GFX_TILES_NB_SETS+1]; /* Animated tiles current status */ static int water_timer = 0; static int fire_flip = 0; /* Local functions */ // Load the tiles from the BMPs void tiles_load_default() { char crap[30]; char crap1[10]; int h; log_info("loading tilescreens..."); for (h = 1; h <= GFX_TILES_NB_SETS; h++) { if (h < 10) strcpy(crap1,"0"); else strcpy(crap1, ""); sprintf(crap, "tiles/Ts%s%d.BMP", crap1, h); tiles_load_slot(crap, h); if (gfx_tiles[h] == NULL) exit(0); } log_info("Done with tilescreens..."); } void tiles_load_slot(char* relpath, int slot) { FILE* in = paths_dmodfile_fopen(relpath, "rb"); if (in == NULL) in = paths_fallbackfile_fopen(relpath, "rb"); if (gfx_tiles[slot] != NULL) { SDL_FreeSurface(gfx_tiles[slot]); gfx_tiles[slot] = NULL; } gfx_tiles[slot] = load_bmp_from_fp(in); /* Note: attempting SDL_RLEACCEL showed no improvement for the memory usage, including when using a transparent color and blitting the surface once. It did show a decrease of 400kB (out of 6000kB) when using transparent color 255, but in this case the color is not supposed to be transparent. */ if (gfx_tiles[slot] == NULL) { fprintf(stderr, "Couldn't find tilescreen %s: %s\n", relpath, SDL_GetError()); } } /** * Free memory used by tiles */ void tiles_unload_all(void) { int h = 0; for (h=1; h <= GFX_TILES_NB_SETS; h++) { if (gfx_tiles[h] != NULL) SDL_FreeSurface(gfx_tiles[h]); gfx_tiles[h] = NULL; } } /** * Draw tile number 'dsttile_square_id0x' (in [0, 96-1]) in the * current screen */ void gfx_tiles_draw(int srctileset_idx0, int srctile_square_idx0, int dsttile_square_idx0) { SDL_Rect src; int srctile_square_x = srctile_square_idx0 % GFX_TILES_SCREEN_W; int srctile_square_y = srctile_square_idx0 / GFX_TILES_SCREEN_W; src.x = srctile_square_x * GFX_TILES_SQUARE_SIZE; src.y = srctile_square_y * GFX_TILES_SQUARE_SIZE; src.w = GFX_TILES_SQUARE_SIZE; src.h = GFX_TILES_SQUARE_SIZE; int dsttile_x = dsttile_square_idx0 % GFX_TILES_SCREEN_W; int dsttile_y = dsttile_square_idx0 / GFX_TILES_SCREEN_W; SDL_Rect dst; dst.x = GFX_PLAY_LEFT + dsttile_x * GFX_TILES_SQUARE_SIZE; dst.y = GFX_PLAY_TOP + dsttile_y * GFX_TILES_SQUARE_SIZE; SDL_BlitSurface(gfx_tiles[srctileset_idx0 + 1], &src, GFX_lpDDSTwo, &dst); } /** * Draw all background tiles in the current screen */ void gfx_tiles_draw_screen() { int x = 0; for (; x < GFX_TILES_PER_SCREEN; x++) { int srctileset_idx0 = pam.t[x].square_full_idx0 / 128; int srctile_square_idx0 = pam.t[x].square_full_idx0 % 128; gfx_tiles_draw(srctileset_idx0, srctile_square_idx0, x); } } /* Draw the background from tiles */ void draw_map_game(void) { *pvision = 0; while (kill_last_sprite()); kill_repeat_sounds(); kill_all_scripts(); gfx_tiles_draw_screen(); if (strlen(pam.script) > 1) { int ms = load_script(pam.script,0, /*true*/1); if (ms > 0) { locate(ms, "main"); no_running_main = /*true*/1; run_script(ms); no_running_main = /*false*/0; } } // lets add the sprites hardness to the real hardness, adding it's // own uniqueness to our collective. place_sprites_game(); thisTickCount = game_GetTicks(); // Run active sprites' scripts init_scripts(); // Display some memory stats after loading a screen meminfo_log_mallinfo(); gfx_log_meminfo(); sfx_log_meminfo(); } /* It's used at: freedink.cpp:restoreAll(), DinkC's draw_background(), stop_entire_game(). What's the difference with draw_map_game()?? */ void draw_map_game_background(void) { gfx_tiles_draw_screen(); place_sprites_game_background(); } /* Game-specific: animate background (water, fire, ...) */ void process_animated_tiles(void) { int flip; // Water: if (water_timer < thisTickCount) { water_timer = thisTickCount + (rand() % 2000); flip = rand() % 2; int x = 0; for (; x < 96; x++) { int screen_square_full_idx0 = pam.t[x].square_full_idx0; int start_full_idx0 = (8-1) * 128; // 8th tileset -> 896 if (screen_square_full_idx0 >= start_full_idx0 && screen_square_full_idx0 < (start_full_idx0 + 128)) gfx_tiles_draw((8-1) + flip, screen_square_full_idx0 % 128, x); } } // Fire: { fire_flip--; if (fire_flip < 0) fire_flip = 4; int x = 0; for (; x < 96; x++) { int screen_square_full_idx0 = pam.t[x].square_full_idx0; int start_full_idx0 = (19-1) * 128; // 19th tileset -> 2304 if (screen_square_full_idx0 >= start_full_idx0 && screen_square_full_idx0 < (start_full_idx0 + 128)) gfx_tiles_draw((19-1) + fire_flip, screen_square_full_idx0 % 128, x); } } } freedink-108.4+dfsg/src/gfx_tiles.h0000644000175000017500000000343712420231175014750 0ustar meme/** * Draw background from tiles * Copyright (C) 2007, 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _GFX_TILES_H #define _GFX_TILES_H /* #include */ #include "SDL.h" #define GFX_TILES_NB_SETS 41 /* 96 = 12 * 8 tile squares; 1 tile square = 50x50 pixels */ #define GFX_TILES_SCREEN_W 12 #define GFX_TILES_SCREEN_H 8 #define GFX_TILES_PER_SCREEN (GFX_TILES_SCREEN_W * GFX_TILES_SCREEN_H) #define GFX_TILES_SQUARE_SIZE 50 #define GFX_TILES_NB_SQUARES (128*(GFX_TILES_NB_SETS-1)+GFX_TILES_SCREEN_W*GFX_TILES_SCREEN_H) extern SDL_Surface *gfx_tiles[GFX_TILES_NB_SETS + 1]; /* Background square in a screen */ struct tile { short square_full_idx0; /* tile index */ short althard; /* alternate hardness index, 0 = default tile hardness */ }; extern void tiles_load_default(void); extern void tiles_load_slot(char* relpath, int slot); extern void tiles_unload_all(void); extern void draw_map_game(void); extern void draw_map_game_background(void); extern void process_animated_tiles(void); extern void gfx_tiles_draw_screen(); extern void gfx_tiles_draw(int srctileset_idx0, int srctile_square_idx0, int dsttile_square_idx0); #endif freedink-108.4+dfsg/src/update_frame.c0000644000175000017500000005136312420231175015414 0ustar meme/** * FreeDink (not FreeDinkEdit) screen update * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2006 Dan Walma * Copyright (C) 2005, 2007, 2008, 2009, 2010, 2011, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include /* #include */ /* #include */ #include "SDL.h" #include "SDL_framerate.h" #include "dinkvar.h" #include "game_engine.h" #include "screen.h" #include "freedink.h" #include "gfx.h" /* For printing strings in debug mode */ #include "gfx_fonts.h" #include "gfx_sprites.h" #include "gfx_tiles.h" #include "bgm.h" #include "log.h" #include "rect.h" #include "dinkc_console.h" #include "input.h" #include "sfx.h" #include "update_frame.h" enum speed_type { v107, v108 }; static Uint32 fps_lasttick = 0; static int frames = 0; static int fps = 0; static int drawthistime = /*true*/1; static /*bool*/int turn_on_plane = /*FALSE*/0; static /*bool*/int plane_process = /*TRUE*/1; void updateFrame( void ) { /* Refresh frame counter twice per second */ if ((SDL_GetTicks() - fps_lasttick) > 500) { fps = frames * (1000/500); frames = 0; fps_lasttick = SDL_GetTicks(); } frames++; /* RECT box_crap,box_real; */ SDL_Rect GFX_box_crap; /* DDBLTFX ddbltfx; */ char msg[100]; /* HDC hdc; */ /* HRESULT ddrval; */ int move_result ; /* Probably a debug variable, only set in a "if (5 > 9)" block. I don't know what this allows to debug though; this involves copying the screen to lpDDSTrick2 */ /*bool*/int get_frame = /*false*/0; int max_s; int rank[MAX_SPRITES_AT_ONCE]; abort_this_flip = /*false*/0; if (5 > 9) { trigger_start: trig_man = /*false*/0; get_frame = /*true*/1; } check_joystick(); if (GetKeyboard('m') && (GetKeyboard(SDLK_LALT) || GetKeyboard(SDLK_RALT))) { //shutdown music StopMidi(); return; } if (GetKeyboard('d') && (GetKeyboard(SDLK_LALT) || GetKeyboard(SDLK_RALT))) { if (debug_mode) { log_debug_off(); } else { log_debug_on(); } } if (GetKeyboard('q') && (GetKeyboard(SDLK_LALT) || GetKeyboard(SDLK_RALT))) { //shutdown game // PostMessage(hWndMain, WM_CLOSE, 0, 0); SDL_Event ev; ev.type = SDL_QUIT; SDL_PushEvent(&ev); return; } if (mode == 1) Scrawl_OnMouseInput(); else { if (keep_mouse) { if ((talk.active) || (spr[1].brain == 13)) Scrawl_OnMouseInput(); } } /* demon: */ /* while(GetTickCount() < (lastTickCount+ 20)) { //wait } */ lastTickCount = thisTickCount; thisTickCount = game_GetTicks(); { //Use to test at 30 fps //Sleep(66); //redink1 - 'lock the framerate to 83 FPS'... Seth told me to. /* Beuc: that doesn't work. Waiting for 1ms is not guaranteed to work accurately, most often computer will wait for delays such as 10ms or 15ms. My tests give framerates of respectively 50 and 60 FPS. */ /* Woe: */ /* while (thisTickCount - lastTickCount < 12) */ /* { */ /* Sleep (1); */ /* thisTickCount = GetTickCount (); */ /* } */ /* SDL */ /* while (thisTickCount - lastTickCount < 12) */ /* { */ /* SDL_Delay (1); */ /* thisTickCount = SDL_GetTicks (); */ /* } */ /* SDL_gfx has a more clever algorithm, which accurately sets the framerate to a fixed value. */ SDL_framerateDelay(&framerate_manager); thisTickCount = game_GetTicks(); fps_final = thisTickCount - lastTickCount; //redink1 changed to 12-12 from 10-15... maybe work better on faster computers? if (fps_final < 12) fps_final = 12; if (fps_final > 68) fps_final = 68; base_timing = fps_final / 3; if (base_timing < 4) base_timing = 4; int junk3; //redink1 added these changes to set Dink's speed correctly, even on fast machines. //junk3 = (fps_average / dinkspeed) - (fps_average / 8); if (dinkspeed <= 0) junk3 = 0; else if (dinkspeed == 1) junk3 = 12; else if (dinkspeed == 2) junk3 = 6; else if (dinkspeed == 3) junk3 = 3; else junk3 = 1; //redink1... weird bug, only do this for normal mode, as it breaks mouse support //if (mode == 2) { junk3 *= (base_timing / 4); } spr[1].speed = junk3; } if (showb.active) { process_show_bmp(); if (!abort_this_flip) flip_it(); return; } mbase_count++; if (thisTickCount > mold+100) { mold = thisTickCount; if (bow.active) bow.hitme = /*true*/1; if (*pupdate_status == 1) update_status_all(); update_sound(); process_animated_tiles(); } //figure out frame rate drawthistime = /*true*/1; if (show_inventory) { process_item(); return; } if (total_trigger) { if (transition()) goto flip; else return; } /* Fade to black, etc. */ if (process_upcycle) up_cycle(); if (process_warp > 0) process_warp_man(); if (process_downcycle) CyclePalette(); if (plane_process) { max_s = last_sprite_created; screen_rank_game_sprites(rank); } else { //not processing planes max_s = MAX_SPRITES_AT_ONCE; } //Blit from Two, which holds the base scene. SDL_BlitSurface(GFX_lpDDSTwo, NULL, GFX_lpDDSBack, NULL); if (stop_entire_game == 1) { if (talk.active) process_talk(); else { stop_entire_game = 0; draw_map_game_background(); draw_status_all(); } goto flip; } int j = 0; for (; j <= max_s; j++) { //h = 1; int h = 0; if (plane_process) h = rank[j]; else h = j; //Msg( "Ok, rank %d is %d", j,h); if (h > 0) if (spr[h].active && spr[h].disabled == 0) { //check_sprite_status_full(h); spr[h].moveman = 0; //init thing that keeps track of moving path spr[h].lpx[0] = spr[h].x; spr[h].lpy[0] = spr[h].y; //last known legal cords spr[h].skiptimer++; //inc delay, used by "skip" by all sprites /* box_crap = k[getpic(h)].box; */ if (spr[h].kill > 0) { if (spr[h].kill_timer == 0) spr[h].kill_timer = thisTickCount; if (spr[h].kill_timer + spr[h].kill < thisTickCount) { spr[h].active = /*false*/0; // Msg("Killing sprite %d.", h); get_last_sprite(); if (spr[h].callback > 0) { // Msg("Callback running script %d.", spr[h].script); run_script(spr[h].callback); } } } if (spr[h].timer > 0) { if (thisTickCount > spr[h].wait) { spr[h].wait = thisTickCount + spr[h].timer; }else { goto animate; } } //brains - predefined bahavior patterns available to any sprite if (spr[h].notouch) if (thisTickCount > spr[h].notouch_timer) spr[h].notouch = /*false*/0; if (get_frame == /*false*/0) { if ( (spr[h].brain == 1)/* || (spr[h].brain == 9) || (spr[h].brain == 3) */ ) { run_through_touch_damage_list(h); } if (spr[h].brain == 1) { if (process_warp == 0) human_brain(h); } if (spr[h].brain == 2) bounce_brain(h); if (spr[h].brain == 0) no_brain(h); if (spr[h].brain == 3) duck_brain(h); if (spr[h].brain == 4) pig_brain(h); if (spr[h].brain == 5) one_time_brain(h); if (spr[h].brain == 6) repeat_brain(h); if (spr[h].brain == 7) one_time_brain_for_real(h); if (spr[h].brain == 8) text_brain(h); if (spr[h].brain == 9) pill_brain(h); if (spr[h].brain == 10) dragon_brain(h); if (spr[h].brain == 11) missile_brain(h, /*true*/1); if (spr[h].brain == 12) scale_brain(h); if (spr[h].brain == 13) mouse_brain(h); if (spr[h].brain == 14) button_brain(h); if (spr[h].brain == 15) shadow_brain(h); if (spr[h].brain == 16) people_brain(h); if (spr[h].brain == 17) missile_brain_expire(h); } else { goto past; } if (g_b_kill_app) return; animate: move_result = check_if_move_is_legal(h); if (flub_mode != -500) { log_debug("move result is %d", flub_mode); move_result = flub_mode; flub_mode = -500; } if (spr[h].brain == 1) if (move_result > 100) { if (pam.sprite[move_result-100].is_warp == 1) special_block(move_result - 100); } if (spr[h].reverse) { //reverse instructions if (spr[h].seq > 0) { if (spr[h].frame < 1) { // new anim spr[h].pseq = spr[h].seq; spr[h].pframe = seq[spr[h].seq].len; spr[h].frame = seq[spr[h].seq].len; if (spr[h].frame_delay != 0) spr[h].delay = (thisTickCount+ spr[h].frame_delay); else spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[seq[spr[h].seq].len]); } else { // not new anim //is it time? if (thisTickCount > spr[h].delay) { spr[h].frame--; if (spr[h].frame_delay != 0) spr[h].delay = (thisTickCount + spr[h].frame_delay); else spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[spr[h].frame]); spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame; if (seq[spr[h].seq].frame[spr[h].frame] < 2) { spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame+1; spr[h].frame = 0; spr[h].seq_orig = spr[h].seq; spr[h].seq = 0; spr[h].nocontrol = /*false*/0; if (h == 1) if (in_this_base(spr[h].seq_orig, dink_base_push)) { play.push_active = /*false*/0; if (play.push_dir == 2) if (sjoy.down) play.push_active = /*true*/1; if (play.push_dir == 4) if (sjoy.left) play.push_active = /*true*/1; if (play.push_dir == 6) if (sjoy.right) play.push_active = /*true*/1; if (play.push_dir == 8) if (sjoy.up) play.push_active = /*true*/1; goto past; } } if (spr[h].seq > 0) if (seq[spr[h].seq].special[spr[h].frame] == 1) { //this sprite can damage others right now! //lets run through the list and tag sprites who were hit with their damage run_through_tag_list(h, spr[h].strength); } } } } } else { if (spr[h].seq > 0) if (spr[h].picfreeze == 0) { if (spr[h].frame < 1) { // new anim spr[h].pseq = spr[h].seq; spr[h].pframe = 1; spr[h].frame = 1; if (spr[h].frame_delay != 0) spr[h].delay = thisTickCount + spr[h].frame_delay; else spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[1]); } else { // not new anim //is it time? if (thisTickCount > spr[h].delay) { spr[h].frame++; if (spr[h].frame_delay != 0) spr[h].delay = thisTickCount + spr[h].frame_delay; else spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[spr[h].frame]); spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame; if (seq[spr[h].seq].frame[spr[h].frame] == -1) { spr[h].frame = 1; spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame; if (spr[h].frame_delay != 0) spr[h].delay = thisTickCount + spr[h].frame_delay; else spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[spr[h].frame]); } if (seq[spr[h].seq].frame[spr[h].frame] < 1) { spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame-1; spr[h].frame = 0; spr[h].seq_orig = spr[h].seq; spr[h].seq = 0; spr[h].nocontrol = /*false*/0; if (h == 1) if (in_this_base(spr[h].seq_orig, dink_base_push)) { play.push_active = /*false*/0; if (play.push_dir == 2) if (sjoy.down) play.push_active = /*true*/1; if (play.push_dir == 4) if (sjoy.left) play.push_active = /*true*/1; if (play.push_dir == 6) if (sjoy.right) play.push_active = /*true*/1; if (play.push_dir == 8) if (sjoy.up) play.push_active = /*true*/1; goto past; } } if (spr[h].seq > 0) if (seq[spr[h].seq].special[spr[h].frame] == 1) { //this sprite can damage others right now! //lets run through the list and tag sprites who were hit with their damage run_through_tag_list(h, spr[h].strength); } } } } } if (spr[h].active) if (spr[h].brain == 1) { did_player_cross_screen(/*true*/1, h); } past: check_seq_status(spr[h].seq); // TODO: this seems to be copy // protection. What does it do if we // remove the draw_sprite_game line? // if (mcc == sound_support) draw_sprite_game(GFX_lpDDSBack, h); //draw a dot to show where the computer is guessing the start of the shadow is /* Note: show_dot is never set to true; that's a manual debugging tool; maybe we could introduce a command line option, or activate it along with -debug */ /* TODO: test me! */ if (show_dot) { /* ddbltfx.dwSize = sizeof(ddbltfx); */ if (drawthistime) { int oo; /* ddbltfx.dwFillColor = 1; */ /* box_crap = k[getpic(h)].hardbox; */ //box_crap.bottom = spr[h].y + k[spr[h].pic].hardbox.bottom; //box_crap.left = spr[h].x + k[spr[h].pic].hardbox.left; //box_crap.right = spr[h].x + k[spr[h].pic].hardbox.right; //OffsetRect(&box_crap, spr[h].x, spr[h].y); // ddrval = lpDDSBack->Blt(&box_crap ,NULL, &box_real, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); //to show center pixel /* ddbltfx.dwFillColor = 100; */ /* box_crap.top = spr[h].y; */ /* box_crap.bottom = spr[h].y+1; */ /* box_crap.left = spr[h].x ; */ /* box_crap.right = spr[h].x + 1; */ // GFX GFX_box_crap.x = spr[h].x; GFX_box_crap.y = spr[h].y; GFX_box_crap.w = 1; GFX_box_crap.h = 1; /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, &box_real, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ // GFX SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[100].r, GFX_real_pal[100].g, GFX_real_pal[100].b)); for (oo=0; oo < spr[h].moveman+1; oo++) { /* ddbltfx.dwFillColor = 50; */ /* box_crap.top = spr[h].lpy[oo]; */ /* box_crap.bottom = box_crap.top+1; */ /* box_crap.left = spr[h].lpx[oo]; */ /* box_crap.right = box_crap.left+1; */ // GFX GFX_box_crap.x = spr[h].lpx[oo]; GFX_box_crap.y = spr[h].lpy[oo]; GFX_box_crap.w = 1; GFX_box_crap.h = 1; /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL|DDBLT_WAIT, &ddbltfx); */ // GFX SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[50].r, GFX_real_pal[50].g, GFX_real_pal[50].b)); } /* ddbltfx.dwFillColor = 1; */ /* box_crap.top = spr[h].lpy[0]; */ /* box_crap.bottom = box_crap.top+1; */ /* box_crap.left = spr[h].lpx[0]; */ /* box_crap.right = box_crap.left+1; */ // GFX GFX_box_crap.x = spr[h].lpx[0]; GFX_box_crap.y = spr[h].lpy[0]; GFX_box_crap.w = 1; GFX_box_crap.h = 1; /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL|DDBLT_WAIT, &ddbltfx); */ // GFX SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[1].r, GFX_real_pal[1].g, GFX_real_pal[1].b)); } } } } /* for 0->max_s */ if (mode == 0) { memset(&spr[1], 0, sizeof(spr[1])); spr[1].speed = 3; /* init_mouse(hWndMain); */ /* g_pMouse->Acquire(); */ spr[1].timer = 0; spr[1].brain = 1; spr[1].hard = 1; spr[1].pseq = 2; spr[1].pframe = 1; spr[1].seq = 2; spr[1].dir = 2; spr[1].damage = 0; spr[1].strength = 10; spr[1].defense = 0; spr[1].skip = 0; rect_set(&spr[1].alt,0,0,0,0); spr[1].base_idle = 10; spr[1].base_walk = -1; spr[1].size = 100; spr[1].base_hit = 100; spr[1].active = /*TRUE*/1; int crap2 = add_sprite(0,450,8,0,0); spr[crap2].hard = 1; spr[crap2].noclip = 1; strcpy(spr[crap2].text, dversion_string); spr[crap2].damage = -1; spr[crap2].owner = 1000; int scr = load_script("START",1000, /*true*/1); if (locate(scr, "MAIN") == /*false*/0) { log_error("Can't locate MAIN in script START!"); } run_script(scr); mode = 1; } if (mode == 2) { // if ( (keypressed()) | (jinfo.dwButtons) | (sjoy.right) | (sjoy.left) // | (sjoy.up) | (sjoy.down)) { mode = 3; load_map(map.loc[*pmap]); draw_map_game(); flife = *plife; if (keep_mouse == 0) { /* if (g_pMouse) */ /* { */ /* g_pMouse->Release(); */ /* g_pMouse = NULL; */ /* } */ /* if (g_hevtMouse) */ /* { */ /* CloseHandle(g_hevtMouse); */ /* g_hevtMouse = NULL; */ /* } */ /* if (g_pdi) */ /* { */ /* g_pdi->Release(); */ /* g_pdi = NULL; */ /* } */ } // draw_status_all(); } } if (spr[1].active && spr[1].brain == 1) did_player_cross_screen(/*false*/0, 1); if (trig_man) { goto trigger_start; } if (get_frame) { /* RECT rcRect1; */ total_trigger = /*true*/1; get_frame = /*false*/0; /* rcRect1.left = playl; */ /* rcRect1.top = 0; */ /* rcRect1.right = 620; */ /* rcRect1.bottom = 400; */ //return; /* ddrval = lpDDSTrick2->BltFast( 0, 0, lpDDSBack, */ /* &rcRect1, DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT); */ /* if (ddrval != DD_OK) dderror(ddrval); */ // GFX { SDL_Rect src, dst; src.x = playl; src.y = 0; src.w = 620 - playl; src.h = 400; dst.x = dst.y = 0; SDL_BlitSurface(GFX_lpDDSBack, &src, GFX_lpDDSTrick2, &dst); } return; } if (screenlock == 1) { //Msg("Drawing screenlock."); drawscreenlock(); } if (debug_mode) { FONTS_SetTextColor(200, 200, 200); if (mode == 0) strcpy(msg,""); if (mode == 1) { int x; sprintf(msg,"X is %d y is %d FPS: %d", spr[1].x, spr[1].y, fps); //let's add the key info to it. for (x = 0; x < 256; x++) if (GetKeyboard(x)) sprintf(msg + strlen(msg), " (Key %i)", x); } if (mode == 3) { sprintf(msg, "Sprites: %d FPS: %d Show_dot: %d Plane_process: %d" " Moveman X%d X%d: %d Y%d Y%d Map %d", last_sprite_created, fps/*_show*/, show_dot, plane_process, spr[1].lpx[0], spr[1].lpy[0], spr[1].moveman, spr[1].lpx[1], spr[1].lpy[1], *pmap); } print_text_wrap_debug(msg, 0, 0); if (strlen(last_debug) > 0) { //let's also draw this... strcpy(msg, last_debug); print_text_wrap_debug(msg, 0, 20); } } /* Console */ if (console_active == 1) { char* line = dinkc_console_get_cur_line(); FONTS_SetTextColor(0, 0, 0); print_text_wrap_debug(line, 20, 380); char retval[20+1]; sprintf(retval, "%d", dinkc_console_get_last_retval()); FONTS_SetTextColor(255, 0, 0); print_text_wrap_debug(retval, 20, 360); } int j2 = 0; for (; j2 <= max_s; j2++) { int h = 0; if (plane_process) h = rank[j2]; else h = j2; if (h > 0 && spr[h].active && spr[h].brain == 8) text_draw(h); } if (talk.active) process_talk(); process_callbacks(); flip: if (g_b_kill_app) return; if (!abort_this_flip) flip_it(); if (turn_on_plane) plane_process = /*TRUE*/1; } /* updateFrame */ freedink-108.4+dfsg/src/SDL_rwops_zzip.h0000644000175000017500000000312012420231175015701 0ustar meme/** * zziplib data source for SDL_RWops * Copyright (C) 2001 Guido Draheim * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ /* * You should be able to drop it in the place of a SDL_RWFromFile. Then * go to X/share/myapp and do `cd graphics && zip -9r ../graphics.zip .` * and rename the graphics/ subfolder - and still all your files * are found: a filepath like X/shared/graphics/game/greetings.bmp * will open X/shared/graphics.zip and return the zipped file * game/greetings.bmp in the zip-archive (for reading that is). * */ #ifndef _SDL_RWops_ZZIP_h #define _SDL_RWops_ZZIP_h #include #ifndef ZZIP_NO_DECLSPEC #define ZZIP_DECLSPEC #else /* use DECLSPEC from SDL/begin_code.h */ #define ZZIP_DECLSPEC DECLSPEC #endif #ifdef __cplusplus extern "C" { #endif extern ZZIP_DECLSPEC SDL_RWops *SDL_RWFromZZIP(const char* file, const char* mode); #ifdef __cplusplus } /* extern C */ #endif #endif freedink-108.4+dfsg/src/paths.c0000644000175000017500000003136112420231175014073 0ustar meme/** * Compute and store the search paths * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include "io_util.h" #include "paths.h" #include "msgbox.h" #include "log.h" #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ #define WIN32_LEAN_AND_MEAN #define _WIN32_IE 0x0401 #include #include #endif #include "relocatable.h" #include "progname.h" #include "binreloc.h" #include /* strdup */ #include "canonicalize.h" /* canonicalize_file_name */ /* basename */ #include #include "dirname.h" /* mkdir */ #include #include #include "str_util.h" /* asprintf_append */ static char* defaultpkgdatadir = NULL; static char* pkgdatadir = NULL; static char* exedir = NULL; static char* fallbackdir = NULL; static char* dmoddir = NULL; static char* dmodname = NULL; static char* userappdir = NULL; static char* exefile = NULL; void paths_init(char *argv0, char *refdir_opt, char *dmoddir_opt) { char *datadir = NULL; char *refdir = NULL; /* relocatable_prog */ set_program_name(argv0); /** default pkgdatadir (e.g. "/usr/share/freedink") **/ { defaultpkgdatadir = br_build_path(DEFAULT_DATA_DIR, PACKAGE); } /** datadir (e.g. "/usr/share") **/ { const char *datadir_relocatable; char *datadir_binreloc, *default_data_dir; /* First, ask relocable-prog */ /* Put in a variable to avoid "comparison with string literal" */ default_data_dir = DEFAULT_DATA_DIR; datadir_relocatable = relocate(default_data_dir); /* Then ask binreloc - it handles ../share even if CWD != "bin" (e.g. "src"). However it's not as precise and portable ($PATH lookup, etc.). */ BrInitError error; if (br_init(&error) == 0 && error != BR_INIT_ERROR_DISABLED) { log_warn("BinReloc failed to initialize (error code %d)", error); datadir_binreloc = strdup(datadir_relocatable); } else { datadir_binreloc = br_find_data_dir(datadir_relocatable); } /* Free relocable-prog's path, if necessary */ if (datadir_relocatable != default_data_dir) free((char *)datadir_relocatable); /* BinReloc always return a newly allocated string, with either the built directory, or a copy of its argument */ datadir = datadir_binreloc; } /** pkgdatadir (e.g. ".local/share/freedink") **/ { pkgdatadir = br_build_path(datadir, PACKAGE); } /** exedir (e.g. "C:/Program Files/Dink Smallwood") **/ { char* fullprogname = get_full_program_name(); if (fullprogname != NULL) exefile = strdup(fullprogname); else exefile = strdup(argv0); log_info("Hi, I'm '%s'", exefile); /* gnulib's dir_name always returns a newly xalloc'd string */ exedir = dir_name(exefile); } /** refdir (e.g. "/usr/share/dink") **/ { /** => refdir **/ char* match = NULL; int nb_dirs = 8; char** lookup = malloc(sizeof(char*) * nb_dirs); int i = 0; if (refdir_opt == NULL) lookup[0] = NULL; else lookup[0] = refdir_opt; lookup[1] = "."; lookup[2] = exedir; char *default3 = NULL, *default4 = NULL, *default5 = NULL, *default6 = NULL, *default7 = NULL; /* FHS mentions optional 'share/games' which some Debian packagers seem to be found of */ /* Packagers: don't alter these paths. FreeDink must run in a _consistent_ way across platforms. If you need an alternate path, consider using ./configure --prefix=..., or contact bug-freedink@gnu.org to discuss it. */ default3 = br_build_path(datadir, "dink"); default4 = "/usr/local/share/games/dink"; default5 = "/usr/local/share/dink"; default6 = "/usr/share/games/dink"; default7 = "/usr/share/dink"; lookup[3] = default3; lookup[4] = default4; lookup[5] = default5; lookup[6] = default6; lookup[7] = default7; for (; i < nb_dirs; i++) { char *dir_graphics_ci = NULL, *dir_tiles_ci = NULL; if (lookup[i] == NULL) continue; dir_graphics_ci = br_build_path(lookup[i], "dink/graphics"); dir_tiles_ci = br_build_path(lookup[i], "dink/tiles"); ciconvert(dir_graphics_ci); ciconvert(dir_tiles_ci); if (is_directory(dir_graphics_ci) && is_directory(dir_tiles_ci)) { match = lookup[i]; } if (match == NULL && i == 0) { msgbox_init_error("Invalid --refdir option: %s and/or %s are not accessible.", dir_graphics_ci, dir_tiles_ci); exit(1); } free(dir_graphics_ci); free(dir_tiles_ci); if (match != NULL) break; } refdir = match; if (refdir != NULL) { refdir = strdup(refdir); } else { char *msg = NULL; asprintf_append(&msg, "Error: cannot find reference directory (--refdir). I looked in:\n"); // lookup[0] already treated above asprintf_append(&msg, "- %s [current dir]\n", lookup[1]); asprintf_append(&msg, "- %s [exedir]\n", lookup[2]); asprintf_append(&msg, "- %s [detected prefix]\n", lookup[3]); asprintf_append(&msg, "- %s [/usr/local/share/games prefix]\n", lookup[4]); asprintf_append(&msg, "- %s [/usr/local/share prefix]\n", lookup[5]); asprintf_append(&msg, "- %s [/usr/share/games prefix]\n", lookup[6]); asprintf_append(&msg, "- %s [/usr/share prefix]\n", lookup[7]); asprintf_append(&msg, "The reference directory contains among others the " "'dink/graphics/' and 'dink/tiles/' directories (as well as " "D-Mods)."); msgbox_init_error(msg); free(msg); exit(1); } free(default3); // br_build_path() free(lookup); } /** fallbackdir (e.g. "/usr/share/dink/dink") **/ /* (directory used when a file cannot be found in a D-Mod) */ { fallbackdir = br_strcat(refdir, "/dink"); } /** dmoddir (e.g. "/usr/share/dink/island") **/ { if (dmoddir_opt != NULL && is_directory(dmoddir_opt)) { /* Use path given on the command line, either a full path or a path relative to the current directory. */ /* Note: don't search for "dink" in the default dir if no '-game' option was given */ dmoddir = strdup(dmoddir_opt); } else { /* Use path given on the command line, relative to $refdir */ char *subdir = dmoddir_opt; if (subdir == NULL) subdir = "dink"; dmoddir = malloc(strlen(refdir) + 1 + strlen(subdir) + 1); strcpy(dmoddir, refdir); strcat(dmoddir, "/"); strcat(dmoddir, subdir); if (!is_directory(dmoddir)) { char *msg = NULL; asprintf_append(&msg, "Error: D-Mod directory '%s' doesn't exist. I looked in:\n", subdir); if (dmoddir_opt != NULL) asprintf_append(&msg, "- ./%s\n", dmoddir_opt); asprintf_append(&msg, "- %s (refdir is '%s')", dmoddir, refdir); msgbox_init_error(msg); free(msg); exit(1); } } /* Strip slashes */ while (strlen(dmoddir) > 0 && dmoddir[strlen(dmoddir) - 1] == '/') dmoddir[strlen(dmoddir) - 1] = '\0'; } /** dmodname (e.g. "island") **/ /* Used to save games in ~/.dink//... */ { dmodname = base_name(dmoddir); if (strcmp(dmodname, ".") == 0) { free(dmodname); char *canonical_dmoddir = canonicalize_file_name(dmoddir); dmodname = base_name(canonical_dmoddir); free(canonical_dmoddir); } } /** userappdir (e.g. "~/.dink") **/ { #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ userappdir = malloc(MAX_PATH); /* C:\Documents and Settings\name\Application Data */ SHGetSpecialFolderPath(NULL, userappdir, CSIDL_APPDATA, 1); #else char* envhome = getenv("HOME"); if (envhome != NULL) userappdir = strdup(getenv("HOME")); #endif if (userappdir != NULL) { userappdir = realloc(userappdir, strlen(userappdir) + 1 + 1 + strlen(PACKAGE) + 1); strcat(userappdir, "/"); #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ #else strcat(userappdir, "."); #endif strcat(userappdir, "dink"); } else { // No detected home directory - saving in the reference // directory userappdir = strdup(refdir); } } log_info("exedir = %s", exedir); log_info("datadir = %s", datadir); log_info("pkgdatadir = %s", pkgdatadir); log_info("defaultpkgdatadir = %s", defaultpkgdatadir); log_info("refdir = %s", refdir); log_info("dmoddir = %s", dmoddir); log_info("dmodname = %s", dmodname); log_info("userappdir = %s", userappdir); free(datadir); free(refdir); } const char *paths_getdefaultpkgdatadir(void) { return defaultpkgdatadir; } const char *paths_getpkgdatadir(void) { return pkgdatadir; } const char *paths_getdmoddir(void) { return dmoddir; } const char *paths_getdmodname(void) { return dmodname; } const char *paths_getfallbackdir(void) { return fallbackdir; } const char *paths_getexedir(void) { return exedir; } const char *paths_getexefile(void) { return exefile; } char* paths_dmodfile(char *file) { char *fullpath = br_build_path(dmoddir, file); ciconvert(fullpath); return fullpath; } FILE* paths_dmodfile_fopen(char *file, char *mode) { char *fullpath = paths_dmodfile(file); FILE *result = fopen(fullpath, mode); free(fullpath); return result; } char* paths_fallbackfile(char *file) { char *fullpath = br_build_path(fallbackdir, file); ciconvert(fullpath); return fullpath; } FILE* paths_fallbackfile_fopen(char *file, char *mode) { char *fullpath = paths_fallbackfile(file); FILE *result = fopen(fullpath, mode); free(fullpath); return result; } char* paths_defaultpkgdatafile(char *file) { char *fullpath = br_build_path(defaultpkgdatadir, file); ciconvert(fullpath); return fullpath; } FILE* paths_defaultpkgdatafile_fopen(char *file, char *mode) { char *fullpath = paths_defaultpkgdatafile(file); FILE *result = fopen(fullpath, mode); free(fullpath); return result; } char* paths_pkgdatafile(char *file) { char *fullpath = br_build_path(pkgdatadir, file); ciconvert(fullpath); return fullpath; } FILE* paths_pkgdatafile_fopen(char *file, char *mode) { char *fullpath = paths_pkgdatafile(file); FILE *result = fopen(fullpath, mode); free(fullpath); return result; } char* paths_exedirfile(char *file) { char *fullpath = br_build_path(exedir, file); ciconvert(fullpath); return fullpath; } FILE* paths_exedirfile_fopen(char *file, char *mode) { char *fullpath = paths_exedirfile(file); FILE *result = fopen(fullpath, mode); free(fullpath); return result; } FILE *paths_savegame_fopen(int num, char *mode) { char *fullpath_in_dmoddir = NULL; char *fullpath_in_userappdir = NULL; FILE *fp = NULL; /* 20 decimal digits max for 64bit integer - should be enough :) */ char file[4 + 20 + 4 + 1]; sprintf(file, "save%d.dat", num); /** fullpath_in_userappdir **/ char *savedir = strdup(userappdir); savedir = realloc(savedir, strlen(userappdir) + 1 + strlen(dmodname) + 1); strcat(savedir, "/"); strcat(savedir, dmodname); /* Create directories if needed */ if (strchr(mode, 'w') != NULL || strchr(mode, 'a') != NULL) /* Note: 0777 & umask => 0755 in common case */ if ((!is_directory(userappdir) && (mkdir(userappdir, 0777) < 0)) || (!is_directory(savedir) && (mkdir(savedir, 0777) < 0))) { free(savedir); return NULL; } fullpath_in_userappdir = br_build_path(savedir, file); ciconvert(fullpath_in_userappdir); free(savedir); /** fullpath_in_dmoddir **/ fullpath_in_dmoddir = paths_dmodfile(file); ciconvert(fullpath_in_dmoddir); /* Try ~/.dink (if present) when reading - but don't try that first when writing */ if (strchr(mode, 'r') != NULL) fp = fopen(fullpath_in_userappdir, mode); /* Try in the D-Mod dir */ if (fp == NULL) fp = fopen(fullpath_in_dmoddir, mode); /* Then try in ~/.dink */ if (fp == NULL) fp = fopen(fullpath_in_userappdir, mode); free(fullpath_in_dmoddir); free(fullpath_in_userappdir); return fp; } void paths_quit(void) { free(defaultpkgdatadir); free(pkgdatadir); free(exedir); free(fallbackdir); free(dmoddir); free(dmodname); free(userappdir); free(exefile); defaultpkgdatadir = NULL; pkgdatadir = NULL; exedir = NULL; fallbackdir = NULL; dmoddir = NULL; dmodname = NULL; userappdir = NULL; exefile = NULL; } freedink-108.4+dfsg/src/input.h0000644000175000017500000000712212420231175014116 0ustar meme/** * Keyboard and joystick * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2007, 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _INPUT_H #define _INPUT_H #ifdef __cplusplus extern "C" { #endif #define NB_BUTTONS 12 /* Actions that can be dynamically mapped on joystick buttons (and statically mapped to keyboard keys). The indices are important: they are used in the savegame format and in DinkC's wait_for_button() - note that indices 12/14/16/18 are reserved for down/left/right/up in that function. */ enum buttons_actions { ACTION_FIRST = 0, // min constant for loops, like SDLKey ACTION_NOOP = 0, ACTION_ATTACK = 1, ACTION_TALK, ACTION_MAGIC, ACTION_INVENTORY, ACTION_MENU, ACTION_MAP, // These execute the 'buttonX.c' DinkC script: ACTION_BUTTON7, ACTION_BUTTON8, ACTION_BUTTON9, ACTION_BUTTON10, // To map buttons to arrow keys // Using the same keys than in wait_for_button() ACTION_DOWN = 12, ACTION_LEFT = 14, ACTION_RIGHT = 16, ACTION_UP = 18, // max+1 constant for loops ACTION_LAST }; struct seth_joy { int joybit[ACTION_LAST]; // is this action currently pressed? int button[ACTION_LAST]; // was this action just pressed (not maintained pressed)? int joybitold[ACTION_LAST]; // copy of previous joybit state // (used to compute .button and to release an arrow with the bow) // Note: also used by Dinkedit, but with fewer different actions /* Only used in the editor (for now): */ /* State of the keyboard, SDL-supported keys */ #if SDL_VERSION_ATLEAST(1, 3, 0) /* SDL 1.3 TODO */ #else int keystate[SDLK_LAST]; /* current GetAsyncKeyState value, in cache */ int keyjustpressed[SDLK_LAST]; /* true if key was just pressed, false if kept pressed or released */ #endif /* Idem, but with unicode characters - layout-independant */ char charstate[65536]; char charjustpressed[65536]; char key2char[65536]; /* to retrieve matching unicode on SDL_KEYUP, if possible */ Uint16 last_unicode; /* last character typed by the user, used for text input */ Uint16 last_nokey_unicode; /* char with no key match, so no KEYUP support - reset it next time */ int right,left,up,down; // is this arrow currently pressed? int rightd,leftd,upd,downd; // was this arrow just pressed (not maintained pressed)? int rightold,leftold,upold,downold; // copy of previous state (used to compute *d) }; extern struct seth_joy sjoy; extern int GetKeyboard(int key); extern void input_init(void); extern void input_quit(void); extern void input_set_default_buttons(void); extern enum buttons_actions input_get_button_action(int button_index); extern void input_set_button_action(int button_index, enum buttons_actions action_index); #ifdef __cplusplus } #endif #endif freedink-108.4+dfsg/src/vgasys_fon.h0000644000175000017500000000013112330466347015141 0ustar meme#ifndef VGASYS_FON_H #define VGASYS_FON_H extern unsigned char vgasys_fon[6512]; #endif freedink-108.4+dfsg/src/SDL_rwops_libzip.c0000644000175000017500000000735212420231175016204 0ustar meme/** * libzip data source for SDL_RWops * Copyright (C) 2001 Guido Draheim * Copyright (C) 2007, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ /* * (this example uses errno which might not be multithreaded everywhere) */ #ifdef HAVE_CONFIG_H #include #endif #include "SDL_rwops_libzip.h" #include #include /* strchr */ #include #include "log.h" #if 0 static int rwops_libzip_seek(SDL_RWops *context, int offset, int whence) { printf("rwops_libzip_seek(context=%p, offset=%d, whence=", context, offset); switch(whence) { case SEEK_SET: printf("SEEK_SET"); break; case SEEK_CUR: printf("SEEK_CUR"); break; case SEEK_END: printf("SEEK_END"); break; } printf(");\n"); return 0; /* ignored */ } static int rwops_libzip_read(SDL_RWops *context, void *ptr, int size, int maxnum) { printf("rwops_libzip_read(context=%p, ptr=%p, size=%d, maxnum=%d);\n", context, ptr, size, maxnum); return zip_fread(context->hidden.unknown.data1, ptr, size*maxnum) / size; } static int rwops_libzip_write(SDL_RWops *context, const void *ptr, int size, int num) { return -1; /* not supported */ } static int rwops_libzip_close(SDL_RWops *context) { printf("rwops_libzip_close(context=%p);\n", context); if (context == NULL) return 0; /* may be SDL_RWclose is called by atexit */ zip_fclose(context->hidden.unknown.data1); /* SDL_FreeRW (context); */ /* TODO: zip_close(zarchive); */ return 0; } #endif SDL_RWops *SDL_RWFromZIP(const char* archivename, const char* filename) { SDL_RWops* rwops; struct zip* zarchive; struct zip_file* zfile; int errorp = 0; zarchive = zip_open(archivename, ZIP_CHECKCONS, &errorp); if (errorp != 0) { char *errorbuf = NULL; int len = 1; errorbuf = malloc(len); len = zip_error_to_str(errorbuf, len, errorp, errno); errorbuf = realloc(errorbuf, len + 1); len = zip_error_to_str(errorbuf, len, errorp, errno); log_warn("zip_open: %s", errorbuf); free(errorbuf); return NULL; } zfile = zip_fopen(zarchive, filename, 0); if (zfile == NULL) { log_error("zip_open: %s", zip_strerror(zarchive)); zip_close(zarchive); return NULL; } /* libzip does not support seek()ing in file, so we can't use it - TTF_OpenFontRW needs it to read data at the end of files. */ #if 0 rwops = SDL_AllocRW(); if (rwops == NULL) { errno=ENOMEM; zip_close(zarchive); return NULL; } rwops->hidden.unknown.data1 = zfile; rwops->read = rwops_libzip_read; rwops->write = rwops_libzip_write; rwops->seek = rwops_libzip_seek; rwops->close = rwops_libzip_close; return rwops; #endif struct zip_stat zfilestat; if (zip_stat(zarchive, filename, 0, &zfilestat) < 0) { log_warn("zip_open: %s", zip_strerror(zarchive)); zip_close(zarchive); return NULL; } char *content = malloc(zfilestat.size); zip_fread(zfile, content, zfilestat.size); rwops = SDL_RWFromMem(content, zfilestat.size); zip_fclose(zfile); zip_close(zarchive); return rwops; } freedink-108.4+dfsg/src/dinkc.h0000644000175000017500000000653012420231175014051 0ustar meme/** * DinkC script engine * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _DINKC_H #define _DINKC_H #include #include "io_util.h" #define MAX_SCRIPTS 200 #define MAX_VARS 250 /* Part of the savegame data dump, before of size change! */ struct varman { int var; char name[20]; int scope; /* script number holding the local variable */ BOOL_1BYTE active; }; /* Named index for varman.scope */ #define DINKC_GLOBAL_SCOPE 0 // global functions (v1.08) struct global_function { char file[10]; char func[20]; }; struct refinfo { char* name; long location; long current; // current offset int cur_line; // current line int cur_col; // current column (position within ligne) int debug_line; // last parsed line (whereas cur_line == next-to-be-read) int level; long end; // size of the text, == strlen(rbuf[i]) int sprite; //if more than 0, it was spawned and is owned by a sprite, if 1000 doesn't die /*bool*/int skipnext; int onlevel; int proc_return; /* v1.08 arguments for user-defined functions */ int arg1; int arg2; int arg3; int arg4; int arg5; int arg6; int arg7; int arg8; int arg9; }; extern struct refinfo *rinfo[]; extern void dinkc_init(); extern void dinkc_quit(); extern int load_script(char filename[15], int sprite, /*bool*/int set_sprite); extern int dinkc_execute_one_liner(char* line); extern void strip_beginning_spaces(char *str); extern /*bool*/int locate(int script, char* proc_lookup); extern /*bool*/int locate_goto(char* expr, int script); extern long decipher(char* variable, int script); extern void decipher_string(char** line_p, int script); extern int add_callback(char name[20], int n1, int n2, int script); extern void kill_callback(int cb); extern void kill_callbacks_owned_by_script(int script); extern void kill_script(int k); extern void kill_all_scripts_for_real(void); extern char* read_next_line(int script); extern void process_callbacks(void); extern int var_exists(char name[20], int scope); extern void make_int(char name[80], int value, int scope, int script); extern void var_equals(char name[20], char newname[20], char math, int script, char rest[200]); extern int var_figure(char h[200], int script); extern void kill_scripts_owned_by(int sprite); extern void kill_returning_stuff(int script); extern void run_script(int script); extern void attach(void); extern void int_prepare(char line[100], int script); extern void make_function(char file[10], char func[20]); /* Used by gfx_tiles.c only */ extern void kill_all_scripts(void); extern void init_scripts(void); extern int returnint; extern int bKeepReturnInt; /* v1.08 */ extern char returnstring[]; extern unsigned short decipher_savegame; #endif freedink-108.4+dfsg/src/msgbox.c0000644000175000017500000001253612420231175014256 0ustar meme/** * Emergency message boxes * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ #define WIN32_LEAN_AND_MEAN /* MessageBox */ #include #else # ifdef HAVE_EXECLP /* fork, waitpid, execlp */ #include #include #include # endif #endif #include "SDL.h" #include "SDL_image.h" #include "gfx.h" #include "gfx_fonts.h" #include "game_engine.h" /** * Display a message on the current SDL screen */ void msgbox_sdl(char* msg) { SDL_FillRect(GFX_lpDDSBack, NULL, SDL_MapRGB(GFX_lpDDSBack->format, 100, 100, 100)); { int margin_h = 50; int margin_v = 20; rect dst = {margin_h, margin_v, 640-margin_h, margin_v+20}; /* top line */ FONTS_SetTextColor(255, 255, 255); /* white */ print_text_wrap("FreeDink failed to start!", &dst, 1, 0, FONT_SYSTEM); } { int margin_h = 50; int margin_v = 100; SDL_Rect dst2 = {margin_h-1, margin_v-1, 640-(margin_h*2)+2, 480-(margin_v*2)+2}; SDL_FillRect(GFX_lpDDSBack, &dst2, SDL_MapRGB(GFX_lpDDSBack->format, 200, 200, 200)); SDL_Rect dst3 = {margin_h, margin_v, 640-(margin_h*2), 480-(margin_v*2)}; SDL_FillRect(GFX_lpDDSBack, &dst3, SDL_MapRGB(GFX_lpDDSBack->format, 255, 255, 255)); /* Display error message */ int border = 5; rect dst = {margin_h+border, margin_v+border, 640-margin_h-border, 480-margin_v-border}; /* centered with margin */ FONTS_SetTextColor(0, 0, 0); /* black */ if (msg != NULL) print_text_wrap(msg, &dst, 0, 0, FONT_SYSTEM); } { int margin_h = 50; int margin_v = 20; rect dst = {margin_h, 480-margin_v-20, 640-margin_h, 480-margin_v}; /* bottom line */ FONTS_SetTextColor(255, 255, 255); /* white */ print_text_wrap("Press ESC to exit", &dst, 1, 0, FONT_SYSTEM); } SDL_Flip(GFX_lpDDSBack); /* Wait for user to press a key */ if (SDL_WasInit(SDL_INIT_JOYSTICK) == 0 && SDL_InitSubSystem(SDL_INIT_JOYSTICK) != -1 && SDL_NumJoysticks() > 0) jinfo = SDL_JoystickOpen(0); if (jinfo != NULL) SDL_JoystickEventState(SDL_ENABLE); SDL_Event e; while (SDL_WaitEvent(&e)) { if (e.type == SDL_KEYDOWN || e.type == SDL_KEYUP) { if (e.key.keysym.sym == SDLK_ESCAPE || e.key.keysym.sym == SDLK_SPACE || e.key.keysym.sym == SDLK_RETURN || e.key.keysym.sym == 'q') break; } else if (e.type == SDL_QUIT) { break; } else if (e.type == SDL_JOYBUTTONDOWN || e.type == SDL_JOYBUTTONUP) { break; } } } /** * Emergency message box for when SDL is not even starting */ void msgbox_os(char *msg) { #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ /* WIN32 API */ MessageBox(NULL, msg, PACKAGE_NAME, MB_OK); #else # ifdef HAVE_EXECLP /* 'xmessage' basic (and ugly) X utility */ pid_t pid = 0; if ((pid = fork()) < 0) perror("fork"); else if (pid == 0) { /* child */ /* Don't display xmessage errors, this would be misleading */ fclose(stdout); fclose(stderr); if (execlp("xmessage", "xmessage", "-center", "-buttons", "OK:0", msg, NULL) < 0) perror("execlp"); exit(EXIT_FAILURE); } else { /* father */ pid_t child_pid = pid; int status = 0; waitpid(child_pid, &status, 0); } # else /* Add more OS-specific fallbacks here. */ # endif #endif } void msgbox(char* msg) { /* Try initializing graphics if not already */ int graphics_on = 0; switch (gfx_get_init_state()) { /* No screen */ case GFX_NOT_INITIALIZED: case GFX_INITIALIZING_VIDEO: graphics_on = !(gfx_init_failsafe() < 0); break; /* Screen initialized, no fonts */ case GFX_INITIALIZING_FONTS: graphics_on = !(gfx_fonts_init_failsafe() < 0); break; /* Screen and fonts initialized */ case GFX_INITIALIZED: graphics_on = 1; break; /* Unknown state, internal error */ default: graphics_on = 0; break; } /* Display a SDL message box if possible, otherwise fall back to a system message box */ if (graphics_on) msgbox_sdl(msg); else msgbox_os(msg); } /** * Display an error for the user's immediate attention, during * initialization (so we can use the SDL window if needed) */ void msgbox_init_error(char* fmt, ...) { va_list ap; char *buf = NULL; va_start(ap, fmt); if (fmt == NULL) fmt = "Unknown error!\n" "This means there's an internal error in FreeDink.\n" "Please report this bug to " PACKAGE_BUGREPORT " ."; vasprintf(&buf, fmt, ap); va_end(ap); fprintf(stderr, "%s\n", buf); msgbox(buf); free(buf); } freedink-108.4+dfsg/src/sfx.c0000644000175000017500000006502012420231175013553 0ustar meme/** * Sound effects (not music) management * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2003 Shawn Betts * Copyright (C) 2005, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include /* memset, memcpy */ #include #include "SDL.h" #include "SDL_mixer.h" #include "game_engine.h" #include "io_util.h" #include "paths.h" #include "log.h" #include "math.h" #include "sfx.h" #include "log.h" /* Channel metadata */ #define NUM_CHANNELS 20 struct { /*bool*/int repeat; int owner; int survive; int cur_sound; /* Sound currently played in that channel */ int looping; int finished; } channelinfo[NUM_CHANNELS]; /* Sound metadata */ #define MAX_SOUNDS 100 static struct { SDL_AudioSpec orig_spec; Uint32 orig_len; int pos_lastframe; /* index for the last frame */ int pos_end; /* upper bound (pre-calculated for efficiency&simplicity) */ SDL_AudioCVT cvt; Uint32 cvt_buf_len; } registered_sounds[MAX_SOUNDS]; /* Hardware soundcard information */ static int hw_freq, hw_channels; static Uint16 hw_format; /* Fake buffer */ static Uint8* fake_buf = NULL; static Uint32 fake_buf_len = 0; static int SetVolume(int channel, int dx_volume); static int SetPan(int channel, int dx_panning); static void CleanupChannel(int channel); static void FreeRegisteredSound(int index); /** * Display a SDL audio-format in human-readable form **/ static const char *format2string(Uint16 format) { char *format_str = "Unknown"; switch (format) { case AUDIO_U8: format_str = "U8"; break; case AUDIO_S8: format_str = "S8"; break; case AUDIO_U16LSB: format_str = "U16LSB"; break; case AUDIO_S16LSB: format_str = "S16LSB"; break; case AUDIO_U16MSB: format_str = "U16MSB"; break; case AUDIO_S16MSB: format_str = "S16MSB"; break; } return format_str; } /** * Frequency shift with linear interpolation * * Techniques from Allegro's mixer.c * * We'll assume 8bit is unsigned and 16bit is signed for simplicity * (common case) * * We'll also assume that the converted buffer is in the system's * endianness (there's no reason it shouldn't be) - still the code * portably handles LSB and MSB endianness alike. */ struct callback_data { int pos; /* which sample (not frame) we're playing now, in 1/256th */ int shift; /* position advance for 1 frame, in 1/256th */ int sound; /* sound index */ int channel; /* channel index */ }; static void callback_samplerate_cleanup(int chan, void *udata) { free(udata); } static void callback_samplerate(int chan, void *stream, int len, void *udata) { struct callback_data* data = (struct callback_data*)udata; if (channelinfo[data->channel].finished == 1) return; /* printf("%d - %d/%d\n", len, data->pos>>8, registered_sounds[data->sound].pos_end>>8); */ int pos_end = registered_sounds[data->sound].pos_end; int pos_lastframe = registered_sounds[data->sound].pos_lastframe; switch (registered_sounds[data->sound].cvt.dst_format) { case AUDIO_U8: if (hw_channels == 1) { /* Unsigned 8bit mono */ Uint8 *buf = (Uint8*) registered_sounds[data->sound].cvt.buf; Uint8 *pstream = (Uint8*)stream; short silence = 128; int bytesPerFrame = 1; int i; for (i = 0; i < len; i += bytesPerFrame) { int cur_index = data->pos >> 8; Uint8 *pbuf = &buf[cur_index]; /* This frame (left and right channels)... */ Uint8 v1 = *(pbuf++); /* and the next frame */ Uint8 v2; if (data->pos < pos_lastframe) v2 = *(pbuf++); else v2 = silence; /* Compute interpolation based on progress (subpos) between v1 and v2 (measured between 0 and (1<<8)-1) */ int subpos = data->pos & ((1<<8) - 1); /* or: data->pos % 256 */ Uint8 v = (v1 * ((1<<8) - subpos) + v2 * subpos) >> 8; *(pstream++) = v; data->pos += data->shift; if (data->pos >= pos_end) { if (!channelinfo[data->channel].looping) { channelinfo[data->channel].finished = 1; break; } data->pos = 0; } } } else if (hw_channels == 2) { /* Unsigned 8bit stereo */ Uint8 *buf = (Uint8*) registered_sounds[data->sound].cvt.buf; Uint8 *pstream = (Uint8*)stream; short silence = 128; int bytesPerFrame = 2; int i; for (i = 0; i < len; i += bytesPerFrame) { int cur_index = data->pos >> 8 << 1; /* x2 because stereo */ Uint8 *pbuf = &buf[cur_index]; /* This frame (left and right channels)... */ Uint8 v1l = *(pbuf++); Uint8 v1r = *(pbuf++); /* and the next frame */ Uint8 v2l, v2r; if (data->pos < pos_lastframe) { v2l = *(pbuf++); v2r = *(pbuf++); } else { v2l = v2r = silence; } /* Compute interpolation based on progress (subpos) between v1 and v2 (measured between 0 and (1<<8)-1) */ int subpos = data->pos & ((1<<8) - 1); /* or: data->pos % 256 */ Uint8 vl = (v1l * ((1<<8) - subpos) + v2l * subpos) >> 8; Uint8 vr = (v1r * ((1<<8) - subpos) + v2r * subpos) >> 8; *(pstream++) = vl; *(pstream++) = vr; data->pos += data->shift; if (data->pos >= pos_end) { if (!channelinfo[data->channel].looping) { channelinfo[data->channel].finished = 1; break; } data->pos = 0; } } } break; case AUDIO_S16SYS: if (hw_channels == 1) { /* Signed 16bit mono */ Sint16 *buf = (Sint16*) registered_sounds[data->sound].cvt.buf; Sint16 *pstream = (Sint16*)stream; short silence = 0; int bytesPerFrame = 2; int i; for (i = 0; i < len; i += bytesPerFrame) { int cur_index = data->pos >> 8; Sint16 *pbuf = &buf[cur_index]; /* This frame (left and right channels)... */ Sint16 v1 = *(pbuf++); /* and the next frame */ Sint16 v2; if (data->pos < pos_lastframe) v2 = *(pbuf++); else v2 = silence; /* Compute interpolation based on progress (subpos) between v1 and v2 (measured between 0 and (1<<8)-1) */ int subpos = data->pos & ((1<<8) - 1); /* or: data->pos % 256 */ Sint16 v = (v1 * ((1<<8) - subpos) + v2 * subpos) >> 8; *(pstream++) = v; data->pos += data->shift; if (data->pos >= pos_end) { if (!channelinfo[data->channel].looping) { channelinfo[data->channel].finished = 1; break; } data->pos = 0; } } } else if (hw_channels == 2) { /* Signed 16bit stereo */ Sint16 *buf = (Sint16*) registered_sounds[data->sound].cvt.buf; Sint16 *pstream = (Sint16*)stream; short silence = 0; int bytesPerFrame = 4; int i; for (i = 0; i < len; i += bytesPerFrame) { int cur_index = (data->pos >> 8) << 1; /* x2 because stereo */ Sint16 *pbuf = &buf[cur_index]; /* This frame (left and right channels)... */ Sint16 v1l = *(pbuf++); Sint16 v1r = *(pbuf++); /* and the next frame */ Sint16 v2l, v2r; if (data->pos < pos_lastframe) { v2l = *(pbuf++); v2r = *(pbuf++); } else { v2l = v2r = silence; } /* Compute interpolation based on progress (subpos) between v1 and v2 (measured between 0 and (1<<8)-1) */ int subpos = data->pos & ((1<<8) - 1); /* or: data->pos % 256 */ Sint16 vl = (v1l * ((1<<8) - subpos) + v2l * subpos) >> 8; Sint16 vr = (v1r * ((1<<8) - subpos) + v2r * subpos) >> 8; *(pstream++) = vl; *(pstream++) = vr; data->pos += data->shift; if (data->pos >= pos_end) { if (!channelinfo[data->channel].looping) { channelinfo[data->channel].finished = 1; break; } data->pos = 0; } } } break; } } /** * Close channels that stopped playing */ void sfx_cleanup_finished_channels() { int i = 0; for (i = 0; i < NUM_CHANNELS; i++) { if (channelinfo[i].finished == 1) Mix_HaltChannel(i); } } /** * Load sounds from the standard paths. Sound is converted to the * current hardware (soundcard) format so that sound rate can be * altered with minimal overhead when playing the sound. */ int CreateBufferFromWaveFile(char* filename, int index) { /* Open the wave file */ char path[150]; FILE* in = NULL; sprintf(path, "sound/%s", filename); in = paths_dmodfile_fopen(path, "rb"); if (in == NULL) in = paths_fallbackfile_fopen(path, "rb"); if (in == NULL) { log_debug("CreateBufferFromWaveFile: %s", strerror(errno)); return 0; } SDL_RWops* rwops = SDL_RWFromFP(in, /*autoclose=*/1); return CreateBufferFromWaveFile_RW(rwops, 1, index); } int CreateBufferFromWaveFile_RW(SDL_RWops* rwops, int rwfreesrc, int index) { SDL_AudioSpec wav_spec; Uint8 *wav_buf; Uint32 wav_len; // Safety check if (index >= MAX_SOUNDS) { log_error("SCRIPTING ERROR: sound index %d is too big.", index); return 0; } // Free previous sound if necessary FreeRegisteredSound(index); if (SDL_LoadWAV_RW(rwops, rwfreesrc, &wav_spec, &wav_buf, &wav_len) == NULL) { log_error("Could not open sound file: %s", SDL_GetError()); return 0; } log_info("frequency=%dHz\tformat=%s\tchannels=%d\tlength=%d bytes", wav_spec.freq, format2string(wav_spec.format), wav_spec.channels, wav_len); /* Converting some WAV data to hardware format - except for sample rate, which we will do better after that. */ /* TODO: testing with a sine.wav, I saw that stereo->mono (2->1 channels) conversion works quite bad - maybe we should it ourselves too. AFAICS this case is not handled by SDL_audiocvt.c. */ SDL_AudioCVT cvt; int ret; /* Build AudioCVT */ ret = SDL_BuildAudioCVT(&cvt, wav_spec.format, wav_spec.channels, wav_spec.freq, hw_format, hw_channels, wav_spec.freq); /* Check that the convert was built */ if (ret == -1) { log_error("Couldn't build converter: %s", SDL_GetError()); SDL_FreeWAV(wav_buf); } /* Setup for conversion */ Uint32 cvt_buf_len = wav_len*cvt.len_mult; cvt.buf = (Uint8 *)malloc(cvt_buf_len); cvt.len = wav_len; memcpy(cvt.buf, wav_buf, wav_len); /* We can delete to original WAV data now */ SDL_FreeWAV(wav_buf); /* And now we're ready to convert */ ret = SDL_ConvertAudio(&cvt); if (ret == -1) { log_error("Couldn't convert audiox: %s", SDL_GetError()); SDL_FreeWAV(wav_buf); } /* Work-around: if no conversion is needed, format is not specified: */ if (cvt.needed == 0) cvt.dst_format = wav_spec.format; /* Converted audio is now in cvt.buf */ /*printf("CVT\t\tinfo: frequency=?Hz\tformat=%s\tchannels=??\tlength=%d bytes\n", format2string(cvt.dst_format), cvt.len_cvt);*/ /* Precompute the sound bounds */ /* Last byte in hw_format is the number of bits per sample: */ int wav_bytesPerSample = (wav_spec.format & 0xFF) / 8; int pos_end = ((wav_len / wav_bytesPerSample) / wav_spec.channels) << 8; /* number of frames */ int pos_lastframe = (((wav_len / wav_bytesPerSample) / wav_spec.channels) - 1) << 8; registered_sounds[index].orig_spec = wav_spec; registered_sounds[index].orig_len = wav_len; registered_sounds[index].cvt = cvt; registered_sounds[index].cvt_buf_len = cvt_buf_len; registered_sounds[index].pos_end = pos_end; registered_sounds[index].pos_lastframe = pos_lastframe; return 1; } /** * Return the channel that plays the specified sound, or -1 if not * found */ int get_channel(int sound) { int i; /* Check all channels to see if it is playing the sound */ for (i = 0; i < NUM_CHANNELS; i++) { if (channelinfo[i].cur_sound == sound) return i; } return -1; } /** * Is the specified sound currently playing? * * Only used in pig_brain(), could be removed maybe. */ int playing(int sound) { if (sound >= MAX_SOUNDS) { log_error("Attempting to get the status of sound %d (> MAX_SOUNDS=%d)", sound, MAX_SOUNDS); return 0; } return (get_channel(sound) != -1); } /** * Kill repeating sounds except the ones that survive */ void kill_repeat_sounds(void) { int i; if (!sound_on) return; log_info("Killing repeating sound"); for (i = 0; i < NUM_CHANNELS; i++) { // Msg("Bank #%d: repeat=%d, owner=%d, survive=%d", i, // soundinfo[i].repeat, soundinfo[i].owner, soundinfo[i].survive); if (channelinfo[i].repeat && (channelinfo[i].owner == 0) && (channelinfo[i].survive == 0)) { Mix_HaltChannel(i); log_info("Killed repeating sound %d", i); channelinfo[i].repeat = 0; } } } /** * Kill all repeating sounds, even the ones that survive (used from * DinkC's restart_game() and load_game()) */ void kill_repeat_sounds_all(void) { int i; if (!sound_on) return; for (i = 0; i < NUM_CHANNELS; i++) { if (channelinfo[i].repeat && (channelinfo[i].owner == 0)) { Mix_HaltChannel(i); channelinfo[i].repeat = 0; } } } /** * Kill one sound */ void kill_this_sound(int channel) { Mix_HaltChannel(channel); } /** * Called by update_frame() * * If sound is active, refreshed pan&vol for 3D effect. * * If repeating and sprite.sound==0 and sprite.owner!=0 -> stop sound * If sprite.active==0 and sprite.owner!=0 -> stop sound */ void update_sound(void) { int i; if (!sound_on) return; for (i = 0; i < NUM_CHANNELS; i++) { if (channelinfo[i].repeat && (channelinfo[i].owner != 0)) { if ((spr[channelinfo[i].owner].sound == 0) || (spr[channelinfo[i].owner].active == /*false*/0) ) { Mix_HaltChannel(i); channelinfo[i].owner = 0; channelinfo[i].repeat = 0; } else { SetPan(i, get_pan(channelinfo[i].owner)); SetVolume(i, get_vol(channelinfo[i].owner)); } } if (Mix_Playing(i)) { if (channelinfo[i].owner != 0) { if (spr[channelinfo[i].owner].active == /*false*/0) { Mix_HaltChannel(i); } else { SetPan(i, get_pan(channelinfo[i].owner)); SetVolume(i, get_vol(channelinfo[i].owner)); } } } } } static int SoundPlayEffectChannel(int sound, int min, int plus, int sound3d, /*bool*/int repeat, int explicit_channel); /** * Just play a sound, do not try to update sprites info or apply * effects */ void EditorSoundPlayEffect(int sound) { /* Don't print warning if the sound isn't present - as sounds are played continuously when arrow keys are pressed */ if (registered_sounds[sound].cvt.buf != NULL) SoundPlayEffectChannel(sound, registered_sounds[sound].orig_spec.freq, 0, 0, 0, 0); } /** * Play a sound previously loaded to memory (in registered_sounds) * - sound: sound index * - min: frequency (Hz) * - plus: max random frequency, to add to min * - sound3d: if != 0, sprite number whose location will be used for * pseudo-3d effects (volume, panning) * - repeat: is sound looping? **/ int SoundPlayEffect(int sound, int min, int plus, int sound3d, /*bool*/int repeat) { return SoundPlayEffectChannel(sound, min, plus, sound3d, repeat, -1); } /** * SoundPlayEffect_Channel_ allows to specify an explicit audio * channel, which in turns allows the editor to only use one channel * for everything (when you move the mouse with the keyboard, you'll * hear a series of close 'ticks', but they won't overlap each * others). The rest of the time, the game will just pass '-1' for the * channel, so the first available channel (among NUM_CHANNELS useable * simultaneously) will be selected. */ static int SoundPlayEffectChannel(int sound, int min, int plus, int sound3d, /*bool*/int repeat, int explicit_channel) { int channel; // Safety check if (registered_sounds[sound].cvt.buf == NULL) { log_warn("Attempting to play empty sound %d.", sound); return 0; } /* Sample rate / frequency */ { /** Shift: hw_adjust = wave_freq / hw_freq; sample_rate_adjust = play_freq / wave_freq shift = hw_adjust * sample_rate_adjust = wave_freq/hw_freq * play_freq/wave_freq <<8 because we're using 1/256th units (poor man's double) */ int play_freq; if (plus == 0) play_freq = min; else play_freq = (rand () % plus) + min; /* Compute how much we should advance in the original sound when we play one frame with hw_freq */ int shift = ((int)round((double)play_freq / hw_freq * (1<<8))); /* printf("shift=%d (%d*64)\n", shift, shift>>8); */ /* Fake buffer: we give an empty buffer to SDL_mixer. We won't actually play from that buffer though, as the audio buffer will be generated in callback_samplerate(). That function will also take care of updating the channelinfo when it's finished (and should be cleaned from a non-callback function). */ Mix_Chunk *chunk = Mix_QuickLoad_RAW(fake_buf, fake_buf_len); channel = Mix_PlayChannel(explicit_channel, chunk, -1); if (channel < 0) { log_error("Mix_PlayChannel: Error playing sound %d - %s", sound, Mix_GetError()); return 0; } Mix_Pause(channel); channelinfo[channel].finished = 0; channelinfo[channel].looping = repeat; struct callback_data *data = calloc(1, sizeof(struct callback_data)); data->pos = 0; data->shift = shift; data->sound = sound; data->channel = channel; Mix_RegisterEffect(channel, callback_samplerate, callback_samplerate_cleanup, data); Mix_ChannelFinished(CleanupChannel); Mix_Resume(channel); } if (sound3d > 0) { SetPan(channel, get_pan(sound3d)); SetVolume(channel, get_vol(sound3d)); } channelinfo[channel].owner = sound3d; channelinfo[channel].repeat = repeat; channelinfo[channel].survive = 0; channelinfo[channel].cur_sound = sound; /* Return a non-zero channel */ return channel+1; } /** * SoundStopEffect * * Stops the sound effect specified. * Returns TRUE if succeeded. */ int SoundStopEffect(int sound) { int channel; if (sound >= MAX_SOUNDS) { log_error("Attempting to get stop sound %d (> MAX_SOUNDS=%d)", sound, MAX_SOUNDS); return 0; } channel = get_channel(sound); if (channel < 0) return 0; else return Mix_HaltChannel(channel); /* always returns 0 */ } /** * InitSound * * Sets up the DirectSound object and loads all sounds into secondary * DirectSound buffers. Returns -1 on error, or 0 if successful */ int InitSound() { log_info("initting sound"); if (SDL_Init(SDL_INIT_AUDIO) == -1) { log_error("SDL_Init(SDL_INIT_AUDIO): %s", SDL_GetError()); return -1; } /* Work-around to disable fluidsynth and fallback to TiMidity++: */ /* TODO: allow user to set it at run-time */ /* SDL_putenv("SDL_SOUNDFONTS="); */ /* SDL_putenv("SDL_FORCE_SOUNDFONTS=1"); */ /* MIX_DEFAULT_FREQUENCY is ~22kHz are considered a good default, 44kHz is considered too CPU-intensive on older computers */ /* MIX_DEFAULT_FORMAT is 16bit adapted to current architecture (little/big endian) */ /* MIX_DEFAULT_CHANNELS is 2 => stereo, allowing panning effects */ /* 1024 (chunk on which effects are applied) seems a good default, 4096 is considered too big for SFX */ int buf_samples = 1024; if (Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, buf_samples) == -1) { log_error("Mix_OpenAudio: %s", Mix_GetError()); return -1; } /* Allocate channels (not mono/stereo, but the simultaneous sounds to be mixed, possibly with effects) */ Mix_AllocateChannels(NUM_CHANNELS); /* Done with initialization */ /* Avoid calling SDL_PauseAudio when using SDL_Mixer */ /* SDL_PauseAudio(0); */ /* Dump audio info */ { char namebuf[128] = ""; SDL_AudioDriverName(namebuf, 128); log_info("Audio driver: %s", namebuf); int numtimesopened; numtimesopened = Mix_QuerySpec(&hw_freq, &hw_format, &hw_channels); if (!numtimesopened) log_error("Mix_QuerySpec: %s", Mix_GetError()); else log_info("Audio hardware info: frequency=%dHz\tformat=%s\tchannels=%d\topened=%d times", hw_freq, format2string(hw_format), hw_channels, numtimesopened); } /* Test SDL_mixer capabilities */ { int i, total; total = Mix_GetNumChunkDecoders(); for (i = 0; i < total; i++) log_info("Audio chunk decoder: %s", Mix_GetChunkDecoder(i)); total = Mix_GetNumMusicDecoders(); int ogg_available = 0; for (i = 0; i < total; i++) { if (strcmp(Mix_GetMusicDecoder(i), "OGG") == 0) ogg_available = 1; if (strcmp(Mix_GetMusicDecoder(i), "MP3") == 0) log_info("Audio music decoder: MP3 (MP3 is patented, prefer Ogg Vorbis!)"); else log_info("Audio music decoder: %s", Mix_GetMusicDecoder(i)); } if (!ogg_available) log_error("Audio music decoder: no Ogg support"); int available; /* Don't mess with loading/unloading too much */ /* available = Mix_Init(MIX_INIT_MOD); // libmikmod log_info("Audio dynload: MOD %s", available ? "ok" : Mix_GetError()); available = Mix_Init(MIX_INIT_MODPLUG); // libmodplug log_info("Audio dynload: MODPLUG %s", available ? "ok" : Mix_GetError()); available = Mix_Init(MIX_INIT_FLUIDSYNTH); log_info("Audio dynload: FLUIDSYNTH %s", available ? "ok" : Mix_GetError()); available = Mix_Init(MIX_INIT_FLAC); log_info("Audio dynload: FLAC %s", available ? "ok" : Mix_GetError()); available = Mix_Init(MIX_INIT_MP3); log_info("Audio dynload: MP3 %s", available ? "ok" : Mix_GetError()); Mix_Quit(); */ available = Mix_Init(MIX_INIT_OGG); log_info("Audio dynload: OGG: %s", available ? "ok" : Mix_GetError()); if (!available) log_error("Audio dynload: no Ogg support"); // TODO: test MOD support (btw does mikmod and modplug conflict?) } /* Allocate fake buffer - use the same size as the audio buffer */ fake_buf_len = buf_samples; fake_buf_len *= hw_channels; if (hw_format != AUDIO_U8 && hw_format != AUDIO_S8) /* 2 bytes per frame */ fake_buf_len *= 2; fake_buf = calloc(1, fake_buf_len); /* No sound playing yet - initialize the lookup table: */ memset(channelinfo, 0, sizeof(channelinfo)); int i; for (i = 0; i < NUM_CHANNELS; i++) { channelinfo[i].cur_sound = -1; channelinfo[i].finished = 0; channelinfo[i].looping = 0; } /* No sound loaded yet - initialise the registered sounds: */ memset(registered_sounds, 0, sizeof(registered_sounds)); /* Make sure they won't be used: */ for (i = 0; i < MAX_SOUNDS; i++) registered_sounds[i].cvt.buf = NULL; return 0; } /** * Undoes everything that was done in a InitSound call */ void QuitSound(void) { if (SDL_WasInit(SDL_INIT_AUDIO) == 0) return; /* Stops all SFX channels */ Mix_HaltChannel(-1); /** * Frees up resources associated with a sound effect */ int idxKill = 0; for (; idxKill < MAX_SOUNDS; idxKill++) FreeRegisteredSound(idxKill); free(fake_buf); Mix_CloseAudio(); SDL_QuitSubSystem(SDL_INIT_AUDIO); } /** * Print SFX memory usage */ void sfx_log_meminfo() { int sum = 0; int i = 0; sum = 0; for (i = 0; i < MAX_SOUNDS; i++) { if (registered_sounds[i].cvt.buf != NULL) sum += registered_sounds[i].cvt_buf_len; } log_debug("Sounds = %8d", sum); } /** * Free memory used by sound #'sound' */ static void FreeRegisteredSound(int sound) { if (registered_sounds[sound].cvt.buf != NULL) /* cvt.buf was malloc'd by us before. It's used both as source and destination by 'SDL_ConvertAudio', so it's not realloc'd in the process, and we use 'free' (and not a SDL-specific func): */ free(registered_sounds[sound].cvt.buf); memset(®istered_sounds[sound], 0, sizeof (registered_sounds[sound])); /* Make sure it won't be reused: */ registered_sounds[sound].cvt.buf = NULL; } /** * Free chunk once it's played (through Mix_ChannelFinished() * callback) */ static void CleanupChannel(int channel) { /* SDL_mixer won't try to free the actual audio buffer (fake_buf) if the Chunk was loaded via Mix_QuickLoad_RAW() - which is a good thing since fake_buf is shared by all Chunks. We still need to free the Chunk when it's done playing. */ Mix_Chunk *chunk = Mix_GetChunk(channel); if (chunk == NULL) { log_fatal("Internal error: cannot free channel %d's chunk (where did it disappear?)", channel); exit(1); } Mix_FreeChunk(chunk); channelinfo[channel].finished = 0; channelinfo[channel].looping = 0; channelinfo[channel].cur_sound = -1; /* Revert SetVolume and SetPan effects */ Mix_UnregisterAllEffects(channel); Mix_Volume(channel, MIX_MAX_VOLUME); } /** * Set volume; dx_volume is [-10000;10000] in hundredth of dB */ static int SetVolume(int channel, int dx_volume) { // SFX /* See doc/sound.txt for details */ return Mix_Volume(channel, MIX_MAX_VOLUME * pow(10, ((double)dx_volume / 100) / 20)); } /** * Set left/right balance; dx_panning is [-10000;10000] in hundredth * of dB, -ive is right channel attenuation, +ive is left channel * attenuation */ static int SetPan(int channel, int dx_panning) { // SFX /* See doc/sound.txt for details */ if (dx_panning > 0) return Mix_SetPanning(channel, 255 * pow(10, ((double)-dx_panning / 100) / 20), 255); else return Mix_SetPanning(channel, 255, 255 * pow(10, ((double)dx_panning / 100) / 20)); } /** DinkC procedures **/ /* BIG FAT WARNING: in DinkC, soundbank is channel+1 (a.k.a. non-zero), and 0 means failure. */ int playsound(int sound, int min, int plus, int sound3d, int repeat) { int channel = SoundPlayEffect(sound, min, plus, sound3d, repeat); int soundbank = channel + 1; return soundbank; } void sound_set_kill(int soundbank) { int channel = soundbank - 1; Mix_HaltChannel(channel); } void sound_set_survive(int soundbank, int survive) { int channel = soundbank - 1; channelinfo[channel].survive = survive; } void sound_set_vol(int soundbank, int volume) { int channel = soundbank - 1; SetVolume(channel, volume); } freedink-108.4+dfsg/src/str_util.c0000644000175000017500000002043312420231175014617 0ustar meme/** * Various string functions mainly used for controlling text output * Copyright (C) 2003 Shawn Betts * Copyright (C) 2004, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include /* strcasecmp */ #include /* free */ #include /* va_start */ #include /* vasprintf */ #include #include "str_util.h" #include "log.h" /** * Upcase the string */ void strtoupper (char *s) { for (; *s; s++) *s = toupper (*s); } /** * Copy string w/o memory overlap */ void strcpy_nooverlap(char *dst, char* src) { char *tmp = strdup(src); strcpy(dst, tmp); free(tmp); } /** * Utility - same as asprint, but appends to the specified buffer * * If strp points to a NULL pointer, it allocates a new buffer that * you'll have to free. */ int asprintf_append(char **strp, const char* fmt, ...) { va_list ap; if (*strp == NULL) { *strp = (char*)malloc(1); *strp[0] = '\0'; } char *tmp = NULL; va_start(ap, fmt); int result = vasprintf(&tmp, fmt, ap); va_end(ap); *strp = realloc(*strp, strlen(*strp) + strlen(tmp) + 1); strcat(*strp, tmp); free(tmp); return result; } void reverse(char *st) { int i,ii; char don[255]; don[0] = 0; ii = strlen(st); for (i=ii; i > -1; i--) { strchar(don, st[i]); } strcpy(st, don); } /** * This acts in the same way as strcat except it combines a string and * a single character, updating the null at the end. */ void strchar(char *string, char ch) { int last = strlen(string); string[last] = ch; string[last+1] = '\0'; } /** * Split 'str' in words separated by _one_ 'sep', and copy the #'num' * one to 'return1'. The function does not alter 'str'. Return empty * string if not found. Several 'sep' enclose empty words * (e.g. separators are not collapsed, unlike 'get_word(...)'). */ char* separate_string (char* line, int num, char sep) { int l; int k; int line_len = strlen(line); l = 1; int start = 0; int end = 0; for (k = 0; k < line_len; k++) { if (line[k] == sep) { if (l == num) break; l++; start = end = (k + 1); } else /* (str[k] != sep) */ { end++; } } if (l >= num) { int size = end - start; char* result = xmalloc(size + 1); strncpy(result, line + start, size); result[size] = '\0'; replace_norealloc("\r", "", result); //Take the /r off it. replace_norealloc("\n", "", result); //Take the /n off it. return result; } else /* less than 'num' tokens */ { return strdup(""); } } /** * Return the word number 'word' present in 'line'. If not present, * returns an empty string. Words are separated by one _or more_ * spaces and count from 1 (i.e. not 0). */ char* get_word(char* line, int word) { int cur_word = 1; /* find word */ char* pc = line; while (*pc != '\0') { if (cur_word == word) break; if (*pc == ' ') { cur_word++; while(*pc == ' ' && *pc != '\0') pc++; } else { while(*pc != ' ' && *pc != '\0') pc++; } } /* find end-of-word */ char* start = pc; while(*pc != '\0' && *pc != ' ') pc++; /* copy word - either we're on the right word and will copy it, either we're at the end of string and will copy an empty word */ int len = pc - start; char* result = xmalloc(len + 1); memcpy(result, start, len); result[len] = '\0'; return result; } /** * Return whether 'orig' and 'comp' are the same string * (case-insensitive comparison). */ /*bool*/int compare(char *orig, char *comp) { return (strcasecmp(orig, comp) == 0); } /** * Move chars between 'start' and the end of 'line' to the left, with * a postponement of 'shift' chars. Copy the trailing '\0'. */ static void shift_left(char* line, int start, int shift) { /* Beware of the direction so as not to overwrite */ int i = start; int max = strlen(line); for (; i <= max; i++) line[i-shift] = line[i]; } /** * Move chars between 'start' and the end of 'line' to the right, with * a postponement of 'shift' chars. Copy the trailing '\0'. */ static void shift_right(char* line, int start, int shift) { /* Beware of the direction so as not to overwrite */ int i = strlen(line); for (; i >= start; i--) line[i+shift] = line[i]; } /** * Replace word 'find' by word 'repl' in 'line', as many times as * possible. * * Note: * * - '*line_p' is xrealloc'd only if strlen(repl) > strlen(find), to make the calling code easier. */ void replace(const char* find, const char* repl, char** line_p) { int len_find = strlen(find); int len_repl = strlen(repl); char* line = *line_p; int len_line = strlen(line); int u = -1; int checker = 0; for (u = 0; u < len_line; u++) { if (toupper(line[u]) == toupper(find[checker])) { checker++; if (checker == len_find) { int pos_repl = u + 1 - len_find; int len_newline = len_line + len_repl - len_find; /* Only change line_p if there's need to */ if (len_newline > len_line) { line = xrealloc(line, len_newline + 1); *line_p = line; } /* Move what's after the replacement, if necessary */ if (len_repl < len_find) shift_left (line, pos_repl + len_find, len_find - len_repl); else if (len_repl > len_find) shift_right(line, pos_repl + len_find, len_repl - len_find); /* Actually replace */ strncpy(line + pos_repl, repl, len_repl); /* Prepare for next loop */ checker = 0; len_line += len_repl - len_find; u += len_repl - len_find; } } else { checker = 0; } } } /** * Alias to 'replace' that emphasize that '&line' won't be modified * (i.e. realloc'd). Only valid if the replacement is shorter or as * long as the search term. */ void replace_norealloc(const char* find, const char* repl, char* line) { if (strlen(repl) > strlen(find)) { log_fatal("Internal error: invalid string substitution"); exit(EXIT_FAILURE); } replace(find, repl, &line); } /** * Convert Latin-1-encoded 'source' to UTF-8-encoded. Result will * always be NULL-terminated. */ char* latin1_to_utf8(char* source) { int cur_alloc_size = 512; const int step = 256; unsigned char* dest = xmalloc(cur_alloc_size); unsigned char* pcs = (unsigned char*) source; unsigned char* pcd = (unsigned char*) dest; unsigned char* pcd_limit = pcd + cur_alloc_size; while(*pcs != '\0') { if (pcd == pcd_limit) { cur_alloc_size += step; dest = xrealloc(dest, cur_alloc_size); pcd = dest + cur_alloc_size - step; pcd_limit = pcd + step; } if (*pcs < 128) { *pcd = *pcs; pcs++; pcd++; } else { *pcd = 0xc2 + ((*pcs - 128) / 64); pcd++; *pcd = 0x80 + ((*pcs - 128) % 64); pcd++; pcs++; } } *pcd = '\0'; return (char*)dest; } /* Here's a small Python script to explain the above formula: */ // # Static charset conversion table from Latin-1 to UTF-8: // print 'unsigned char conv[][2] = {\n', ',\n'.join( // ['\/*%d:\*/ {%s}' % ( // c, // ', '.join( // [hex(ord(i)) for i in chr(c).decode('ISO-8859-1').encode('utf-8')] // ) // ) for c in range(128,256)] // ), '};' // // # Test computed (!= static) table: // for c in range(128,256): // method1 = [ord(i) for i in chr(c).decode('ISO-8859-1').encode('utf-8')] // method2 = [0xc2 + ((c - 128) / 64), 0x80 + ((c - 128) % 64)] // #print method1, method2 // if method1[0] != method2[0] or method1[1] != method2[1]: // print "Mismatch at %c" freedink-108.4+dfsg/src/i18n.c0000644000175000017500000000503112354354426013541 0ustar meme/** * Translate game texts * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include "gettext.h" #include #include #include "paths.h" #include "str_util.h" /** * Copy a translation for 'latin1_source' in 'utf8_dest' or, if there * isn't, convert 'latin1_source' to UTF-8. 'utf8_dest' will always be * NULL-terminated, and won't be longer than max_size bytes (including * trailing '\0'). * * The reason the text is always converted to UTF-8 is because Dink * (freeware version) was used in European countries where some * non-ASCII characters were used (e.g. 0xB4 or "single acute accent" * which is present in Finnish keyboards and used instead of the more * common single quote "'" - check the Milderrr! series for instance). */ char* i18n_translate(char* scriptname, unsigned int line, char* latin1_source) { /* Don't translate the empty string, which has a special meaning for gettext */ if (strlen(latin1_source) == 0) return strdup(""); const char* translation = ""; /* Try with a context */ char* context = alloca(strlen(scriptname) + 1 + strlen("4294967295") + 1); sprintf(context, "%s:%d", scriptname, line); char *pc = context; while (*pc) { *pc = tolower(*pc); pc++; } translation = dpgettext_expr(paths_getdmodname(), context, latin1_source); if (translation != latin1_source) { /* Copy the translation */ return strdup(translation); } /* Try without context */ translation = dgettext(paths_getdmodname(), latin1_source); if (translation != latin1_source) { /* Copy the translation */ return strdup(translation); } /* No translation available */ /* Let's manually convert from Latin-1 to UTF-8, so that 'TTF_RenderUTF8_Solid' can parse it correctly. */ return latin1_to_utf8(latin1_source); } freedink-108.4+dfsg/src/gfx_sprites.h0000644000175000017500000000654412330466347015336 0ustar meme/** * Graphics - sprites management * Copyright (C) 2007, 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _GFX_SPRITES_H #define _GFX_SPRITES_H #include "SDL.h" #include "rect.h" #ifdef __cplusplus extern "C" { #endif /* Max number of sprites, minus 1 (GFX_k is indexed from 1) */ #define MAX_SPRITES 4000 #define MAX_FRAMES_PER_SEQUENCE 50 /* Max number of frames the engine was ever abused to load in one sequence (with a buffer overflow on other 'seq' fields). According to a study of existing D-Mods in 2009, the highest frame number is 69 (in "The Green Voice in my Head Part I v3.0"). The engine would accept up to 1000 frames but it would probably mess the memory too much. */ #define MAX_FRAMES_PER_ABUSED_SEQUENCE 69 #define MAX_SEQUENCES 1000 /* Max # of sprite animations */ /* Store sprites info */ struct pic_info { /* LPDIRECTDRAWSURFACE k; // Sprites */ rect box; // Dimensions (0,0,width,height) rect hardbox; // Square where Dink can't block if sprite is hard int yoffset; // Center of the picture int xoffset; }; struct GFX_pic_info { SDL_Surface *k; // Sprites /* TODO: move pic_info to GFX_pic_info; if possible, replace 'box' with k->h and k->w in the code */ }; /* Sequence description */ struct sequence { char* ini; // matching dink.ini (or init()) line char is_active; // does it contain something short len; // number of initial frames in this sequence // - inaccurate if the sequence is modified by 'set_frame_frame' /* frame: index in GFX_k for the each frame, indexed from 1, ended by '0'. If -1, loop from beginning. Now this one is tricky: the original engine's load_sprite() can load non-animated sequences of more than MAX_FRAMES_PER_SEQUENCE (up to 1000) at the expense of a non-critical buffer overflow in 'delay' and 'special'. */ short frame[MAX_FRAMES_PER_ABUSED_SEQUENCE+1+1]; short delay[MAX_FRAMES_PER_ABUSED_SEQUENCE+1]; // frame duration, indexed from 1 unsigned char special[MAX_FRAMES_PER_ABUSED_SEQUENCE+1]; // does this frame 'hit' enemies, indexed from 1 }; extern struct pic_info k[MAX_SPRITES]; extern struct GFX_pic_info GFX_k[MAX_SPRITES]; extern struct sequence seq[MAX_SEQUENCES]; extern void sprites_unload(void); extern void load_sprite_pak(char seq_path_prefix[100], int seq_no, int speed, int xoffset, int yoffset, rect hardbox, int flags, int samedir); extern void load_sprites(char seq_path_prefix[100], int seq_no, int speed, int xoffset, int yoffset, rect hardbox, int flags); extern void seq_set_ini(int seq_no, char *line); #ifdef __cplusplus } #endif #endif freedink-108.4+dfsg/src/msgbox.h0000644000175000017500000000151512420231175014256 0ustar meme/** * Emergency message boxes * Copyright (C) 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _MSGBOX_H #define _MSGBOX_H void msgbox_init_error(char* msg, ...); #endif freedink-108.4+dfsg/src/rect.c0000644000175000017500000000321712330466347013723 0ustar meme/** * Rectangle structure to make hardness maths * Copyright (C) 2007, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "rect.h" /* For NULL: */ #include "stdlib.h" int rect_set(rect *rect, int left, int top, int right, int bottom) { if (rect == NULL) return 0; rect->left = left; rect->top = top; rect->right = right; rect->bottom = bottom; return 1; } int rect_offset(rect *rect, int tx, int ty) { if (rect == NULL) return 0; rect->left += tx; rect->top += ty; rect->right += tx; rect->bottom += ty; return 1; } int rect_copy(rect *dst, rect *src) { if (src == NULL || dst == NULL) return 0; dst->left = src->left; dst->top = src->top; dst->right = src->right; dst->bottom = src->bottom; return 1; } int rect_inflate(rect *rect, int dw, int dh) { if (rect == NULL) return 0; rect->left -= dw; rect->top -= dh; rect->right += dw; rect->bottom += dh; return 1; } freedink-108.4+dfsg/src/bgm.c0000644000175000017500000002043412420231175013520 0ustar meme/** * Background music (currently .midi's and audio CDs) * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif /* CD functions */ #include "SDL.h" /* MIDI functions */ #include "SDL_mixer.h" #include #include #include /* strcasecmp */ #include "game_engine.h" #include "bgm.h" #include "io_util.h" #include "str_util.h" #include "paths.h" #include "log.h" /* CD-ROM handle */ #if SDL_VERSION_ATLEAST(1, 3, 0) static void* cdrom = NULL; #define SDL_CDStatus(cdrom) -1 /* CD_ERROR */ #define SDL_CDStop(cdrom) 0 #define CD_INDRIVE(i) 0 #define SDL_CDPlayTracks(cdrom, start_track, start_frame, ntracks, nframes) -1 #define SDL_CDClose(cdrom) 0 #else static SDL_CD *cdrom = NULL; #endif /* Current background music (not cd) */ static Mix_Music *music_data = NULL; static char* last_midi = NULL; int last_cd_track = 0; static int loop_midi = 0; /* * Audio CD Functions */ /** * Return whether an audio track currently playing */ // TODO: test int cdplaying(void) { #if SDL_VERSION_ATLEAST(1, 3, 0) return 0; #else return (SDL_CDStatus(cdrom) == CD_PLAYING); #endif } int killcd() { last_cd_track = 0; return SDL_CDStop(cdrom); } /** * Play a CD track */ int PlayCD(int cd_track) { Mix_HaltMusic(); last_cd_track = cd_track; /* Play track #cd_track */ if (cdrom == NULL) return -1; if (CD_INDRIVE(SDL_CDStatus(cdrom))) return SDL_CDPlayTracks(cdrom, cd_track - 1, 0, 1, 0); else return -1; } /* * MIDI functions */ /** * Returns whether the background music is currently playing */ int something_playing(void) { return Mix_PlayingMusic(); } /** * Clean-up music when it's finished or manually halted */ static void callback_HookMusicFinished() { if (music_data != NULL) Mix_FreeMusic (music_data); } /** * Thing to play the midi */ int PlayMidi(char *midi_filename) { char relpath[256]; char *fullpath = NULL; /* no midi stuff right now */ if (sound_on == /*false*/0) return 1; /* Do nothing if the same midi is already playing */ /* TODO: Does not differentiate midi and ./midi, qsf\\midi and qsf/midi... Ok, midi is supposed to be just a number, but..*/ if (last_midi != NULL && compare(last_midi, midi_filename) && something_playing()) { log_info("I think %s is already playing, I should skip it...", midi_filename); return 0; } // Attempt to play .ogg in addition to .mid, if playing a ".*\.mid$" char* oggv_filename = NULL; int pos = strlen(midi_filename) - strlen(".mid"); if (strcasecmp(midi_filename + pos, ".mid") == 0) { oggv_filename = strdup(midi_filename); strcpy(oggv_filename + pos, ".ogg"); } /* Try to load the ogg vorbis or midi in the DMod or the main game */ int exists = 0; fullpath = malloc(1); if (!exists && oggv_filename != NULL) { free(fullpath); sprintf(relpath, "sound/%s", oggv_filename); fullpath = paths_dmodfile(relpath); exists = exist(fullpath); } if (!exists) { free(fullpath); sprintf(relpath, "sound/%s", midi_filename); fullpath = paths_dmodfile(relpath); exists = exist(fullpath); } if (!exists && oggv_filename != NULL) { free(fullpath); sprintf(relpath, "sound/%s", oggv_filename); fullpath = paths_fallbackfile(relpath); exists = exist(fullpath); } if (!exist(fullpath)) { free(fullpath); sprintf(relpath, "sound/%s", midi_filename); fullpath = paths_fallbackfile(relpath); exists = exist(fullpath); } free(oggv_filename); if (!exist(fullpath)) { free(fullpath); log_warn("Error playing midi %s, doesn't exist in any dir.", midi_filename); return 0; } /* Save the midi currently playing */ if (last_midi != NULL) free(last_midi); last_midi = strdup(midi_filename); /* Stop CD track */ log_info("Killing cd..."); killcd(); /* Stop whatever is playing before we play something else. */ Mix_HaltMusic (); /* Load the file */ if ((music_data = Mix_LoadMUS(fullpath)) == NULL) { log_warn("Unable to play '%s': %s", fullpath, Mix_GetError()); free(fullpath); return 0; } /* Play it */ Mix_HookMusicFinished(callback_HookMusicFinished); Mix_PlayMusic (music_data, (loop_midi == 1) ? -1 : 1); free(fullpath); return 1; } /** * Pause midi file if we're not already paused */ /* TODO: should be used when player hits 'n' or alt+'n' - but I never got it to work in the original game */ int PauseMidi() { Mix_PauseMusic(); return 1; } /** * Resumes playing of a midi file */ /* TODO: should be used when player hits 'b' or alt+'b' - but I never got it to work in the original game */ int ResumeMidi() { Mix_ResumeMusic(); return 1; } /** * Stops a midi file playing */ // TODO: rename *Midi to *BGM (BackGround Music) - we may support // background .ogg's in the future // DinkC binding: stopmidi() int StopMidi() { Mix_HaltMusic(); // return always 0 return 1; } /** * When entering a screen, play the appropriate MIDI */ void check_midi(void) { // TODO: use a better constant (like max_file_path) char midi_filename[20]; if ((!midi_active) || (map.music[*pmap] == 0)) return; /* There is music information associated with this screen */ if (map.music[*pmap] == -1) /* Kill cd music */ { log_info("Stopped cd"); killcd(); } else if (map.music[*pmap] > 1000) /* Try to play a CD track */ { int cd_track = map.music[*pmap] - 1000; if (cd_inserted) /* Play track */ { /* Do nothing if already playing the right track */ if (cd_track == last_cd_track && cdplaying()) return; if (PlayCD(cd_track) >= 0) return; /* Playing fine */ } /* If couldn't play the CD track, fallback to midi */ sprintf(midi_filename, "%d.mid", map.music[*pmap] - 1000); PlayMidi(midi_filename); } else { /* Just play the specified MIDI */ sprintf(midi_filename, "%d.mid", map.music[*pmap]); PlayMidi(midi_filename); } } /** * Initialize BackGround Music (currently, only CD-ROM is concerned, * MIDI init is done with SDL_INIT_AUDIO in sfx.c). */ void bgm_init(void) { #if SDL_VERSION_ATLEAST(1, 3, 0) log_info("No CDROM support (SDL 1.3 dropped it)"); #else if (SDL_Init(SDL_INIT_CDROM) == -1) { log_error("SDL_Init: %s", SDL_GetError()); return; } /* Check for CD drives */ if (!SDL_CDNumDrives()){ /* None found */ log_info("No CDROM devices available"); return; } /* Open the default drive */ cdrom = SDL_CDOpen(0); /* Did if open? Check if cdrom is NULL */ if (cdrom == NULL) { log_error("Couldn't open drive: %s", SDL_GetError()); return; } if (CD_INDRIVE(SDL_CDStatus(cdrom))) if (cdrom->numtracks == 19) /* only enable CD for the original game CD; and well, it makes sense not to try to play the CD anytime the user left a CD in the drive */ cd_inserted = 1; /* This newly opened CD-ROM becomes the default CD used when other CD functions are passed a NULL CD-ROM handle. */ #endif } void bgm_quit(void) { Mix_HaltMusic(); log_info("Shutting down CD stuff."); killcd(); if (last_midi != NULL) free(last_midi); last_midi = NULL; if (cdrom != NULL) SDL_CDClose(cdrom); cdrom = NULL; #if SDL_VERSION_ATLEAST(1, 3, 0) #else SDL_QuitSubSystem(SDL_INIT_CDROM); #endif } /** DinkC procedures **/ void loopmidi(int arg_loop_midi) { if (arg_loop_midi > 0) loop_midi = 1; else loop_midi = 0; } freedink-108.4+dfsg/src/freedink.c0000644000175000017500000031313212420231175014542 0ustar meme/** * FreeDink game-specific code * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "freedink.h" #include #include #include #include #include "gettext.h" #define _(String) gettext(String) #include "fastfile.h" #include "gfx.h" #include "gfx_fonts.h" #include "gfx_palette.h" #include "gfx_sprites.h" #include "gfx_tiles.h" #include "gfx_fade.h" #include "bgm.h" #include "sfx.h" #include "update_frame.h" #include "init.h" #include "io_util.h" #include "paths.h" #include "input.h" #include "log.h" #include "game_engine.h" #include "dinkvar.h" #include "dinkc_console.h" void move(int u, int amount, char kind, char kindy); void draw_box(rect box, int color); void run_through_tag_list_push(int h); int check_if_move_is_legal(int u); void change_dir_to_diag( int *dir); int hurt_thing(int h, int damage, int special); static int but_timer = 0; /* Blinking selector in the inventory screen */ static int item_timer; static int item_pic; /* Fadedown/fadeup counter */ static int process_count = 0; /* Fills 'struct seth_joy sjoy' with the current keyboard and/or joystick state */ void check_joystick(void) { /* Clean-up */ /* Actions */ { int a = ACTION_FIRST; for (a = ACTION_FIRST; a < ACTION_LAST; a++) sjoy.joybit[a] = 0; } /* Arrows */ sjoy.right = 0; sjoy.left = 0; sjoy.up = 0; sjoy.down = 0; /* Arrows triggered (not maintained pressed) */ sjoy.rightd = 0; sjoy.leftd = 0; sjoy.upd = 0; sjoy.downd = 0; if (joystick) { SDL_JoystickUpdate(); Sint16 x_pos = 0, y_pos = 0; /* SDL counts buttons from 0, not from 1 */ int i = 0; for (i = 0; i < NB_BUTTONS; i++) if (SDL_JoystickGetButton(jinfo, i)) sjoy.joybit[input_get_button_action(i)] = 1; x_pos = SDL_JoystickGetAxis(jinfo, 0); y_pos = SDL_JoystickGetAxis(jinfo, 1); /* Using thresold=10% (original game) is just enough to get rid of the noise. Let's use 30% instead, otherwise Dink will go diags too easily. */ { Sint16 threshold = 32767 * 30/100; if (x_pos < -threshold) sjoy.left = 1; if (x_pos > +threshold) sjoy.right = 1; if (y_pos < -threshold) sjoy.up = 1; if (y_pos > +threshold) sjoy.down = 1; } } /* Only accept keyboard input when console is not active. */ if (console_active == 0) { if (GetKeyboard(SDLK_LCTRL) || GetKeyboard(SDLK_RCTRL)) sjoy.joybit[ACTION_ATTACK] = 1; if (GetKeyboard(SDLK_SPACE)) sjoy.joybit[ACTION_TALK] = 1; if (GetKeyboard(SDLK_LSHIFT) || GetKeyboard(SDLK_RSHIFT)) sjoy.joybit[ACTION_MAGIC] = 1; if (GetKeyboard(SDLK_RETURN)) sjoy.joybit[ACTION_INVENTORY] = 1; if (GetKeyboard(SDLK_ESCAPE)) sjoy.joybit[ACTION_MENU] = 1; if (GetKeyboard('6')) sjoy.joybit[ACTION_MAP] = 1; if (GetKeyboard('m')) sjoy.joybit[ACTION_MAP] = 1; if (GetKeyboard('7')) sjoy.joybit[ACTION_BUTTON7] = 1; } { int a = ACTION_FIRST; for (a = ACTION_FIRST; a < ACTION_LAST; a++) { sjoy.button[a] = 0; if (sjoy.joybit[a] && sjoy.joybitold[a] == 0) /* Button was just pressed */ sjoy.button[a] = 1; sjoy.joybitold[a] = sjoy.joybit[a]; } } /* Only accept keyboard input when console is not active. */ if (console_active == 0) { if (GetKeyboard(SDLK_RIGHT) || sjoy.joybit[ACTION_RIGHT]) sjoy.right = 1; if (GetKeyboard(SDLK_LEFT) || sjoy.joybit[ACTION_LEFT]) sjoy.left = 1; if (GetKeyboard(SDLK_DOWN) || sjoy.joybit[ACTION_DOWN]) sjoy.down = 1; if (GetKeyboard(SDLK_UP) || sjoy.joybit[ACTION_UP]) sjoy.up = 1; } if (sjoy.right && sjoy.rightold == 0) sjoy.rightd = 1; sjoy.rightold = sjoy.right; if (sjoy.left && sjoy.leftold == 0) sjoy.leftd = 1; sjoy.leftold = sjoy.left; if (sjoy.up && sjoy.upold == 0) sjoy.upd = 1; sjoy.upold = sjoy.up; if (sjoy.down && sjoy.downold == 0) sjoy.downd = 1; sjoy.downold = sjoy.down; if (wait4b.active) { //check for dirs if (sjoy.rightd) wait4b.button = 16; if (sjoy.leftd) wait4b.button = 14; if (sjoy.upd) wait4b.button = 18; if (sjoy.downd) wait4b.button = 12; sjoy.rightd = 0; sjoy.downd = 0; sjoy.upd = 0; sjoy.leftd = 0; //check buttons { int a = ACTION_FIRST; for (a = ACTION_FIRST; a < ACTION_LAST; a++) { if (sjoy.button[a]) //button was pressed wait4b.button = a; sjoy.button[a] = /*false*/0; } } if (wait4b.button != 0) { *presult = wait4b.button; wait4b.active = /*false*/0; run_script(wait4b.script); } } } /* Get sprite #h, grab its text and display it */ void text_draw(int h) { char crap[200]; char *cr; rect rcRect; int color = 0; if (spr[h].damage == -1) { sprintf(crap, "%s", spr[h].text); cr = &crap[0]; color = 14; while( cr[0] == '`') { //color code at top if (cr[1] == '#') color = 13; if (cr[1] == '1') color = 1; if (cr[1] == '2') color = 2; if (cr[1] == '3') color = 3; if (cr[1] == '5') color = 5; if (cr[1] == '6') color = 6; if (cr[1] == '7') color = 7; if (cr[1] == '8') color = 8; if (cr[1] == '9') color = 9; if (cr[1] == '0') color = 10; if (cr[1] == '$') color = 14; if (cr[1] == '%') color = 15; if (dversion >= 108) { //support for additional colors if (cr[1] == '@') color = 12; if (cr[1] == '!') color = 11; } if (cr[1] == '4') color = 4; cr = &cr[2]; } //Msg("Final is %s.",cr); if (spr[h].owner == 1000) { rect_set(&rcRect,spr[h].x,spr[h].y,spr[h].x+620,spr[h].y+400); } else { rect_set(&rcRect,spr[h].x,spr[h].y,spr[h].x+150,spr[h].y+150); if (spr[h].x+150 > 620) rect_offset(&rcRect, ((spr[h].x+150)-620) - (((spr[h].x+150)-620) * 2), 0); } } else { sprintf(crap, "%d", spr[h].damage); cr = &crap[0]; if (spr[h].brain_parm == 5000) color = 14; if (spr[h].y < 0) spr[h].y = 0; rect_set(&rcRect,spr[h].x,spr[h].y,spr[h].x+50 ,spr[h].y+50); } /* During a fadedown/fadeup, use white text to mimic v1.07 */ if (truecolor_fade_brightness < 256) color = 15; /* SetTextColor(hdc,RGB(8,14,21)); */ // FONTS FONTS_SetTextColor(8, 14, 21); if (spr[h].owner == 1200) { printf("1200 says %s\n", cr); //this text has no sprite, and doesn't want to be centered. /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 0, 0, FONT_DIALOG); rect_offset(&rcRect,-2,0); /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 0, 0, FONT_DIALOG); rect_offset(&rcRect,1,1); /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 0, 0, FONT_DIALOG); rect_offset(&rcRect,0,-2); /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 0, 0, FONT_DIALOG); } else { /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 1, 0, FONT_DIALOG); rect_offset(&rcRect,-2,0); /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 1, 0, FONT_DIALOG); rect_offset(&rcRect,1,1); /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 1, 0, FONT_DIALOG); rect_offset(&rcRect,0,-2); /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 1, 0, FONT_DIALOG); } rect_offset(&rcRect,0,1); // FONTS: // support for custom colors if (color >= 1 && color <= 15) FONTS_SetTextColorIndex(color); else FONTS_SetTextColor(255, 255, 255); if (spr[h].owner == 1200) { /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 0, 0, FONT_DIALOG); } else { /* DrawText(hdc,cr,strlen(cr),&rcRect,DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(cr, &rcRect, 1, 0, FONT_DIALOG); } } void get_last_sprite(void) { int i; for (i = MAX_SPRITES_AT_ONCE - 1; i > 2; i--) { if (spr[i].active) { last_sprite_created = i; // Msg("last sprite created is %d.", i); return; } } } // ********* CHECK TO SEE IF THIS CORD IS ON A HARD SPOT ********* /*bool*/int not_in_this_base(int seq, int base) { int realbase = (seq / 10) * 10; if (realbase != base) { return(/*true*/1); } else { return(/*false*/0); } } /*bool*/int in_this_base(int seq, int base) { int realbase = (seq / 10) * 10; if (realbase == base) { // Msg("TRUE - Ok, realbase is %d, compared to the base, which is %d.", realbase, base); return(/*true*/1); } else { // Msg("FALSE - Ok, realbase is %d, compared to the base, which is %d.", realbase, base); return(/*false*/0); } } void automove (int j) { char kindx,kindy; int speedx = 0; int speedy = 0; if (spr[j].mx != 0) { if (spr[j].mx < 0) kindx = '-'; else kindx = '+'; if (kindx == '-') speedx = (spr[j].mx - (spr[j].mx * 2)); else speedx = spr[j].mx; } else kindx = '0'; if (spr[j].my != 0) { if (spr[j].my < 0) kindy = '-'; else kindy = '+'; if (kindy == '-') speedy = (spr[j].my - (spr[j].my * 2)); else speedy = spr[j].my; } else kindy = '0'; int speed = speedx; if (speedy > speedx) speed = speedy; if (speed > 0) move(j,speed,kindx,kindy); //move(j, 1, '+','+'); } int autoreverse(int j) { //Msg("reversing die %d",spr[j].dir); int r = ((rand() % 2)+1); if ( (spr[j].dir == 1) || (spr[j].dir == 2) ) { if (r == 1) return(8); if (r == 2) return(6); } if ( (spr[j].dir == 3) || (spr[j].dir == 6) ) { if (r == 1) return(2); if (r == 2) return(4); } if ( (spr[j].dir == 9) || (spr[j].dir == 8) ) { if (r == 1) return(2); if (r == 2) return(6); } if ( (spr[j].dir == 7) || (spr[j].dir == 4) ) { if (r == 1) return(8); if (r == 2) return(6); } return(0); } int autoreverse_diag(int j) { if (spr[j].dir == 0) spr[j].dir = 7; int r = ((rand() % 2)+1); if ( (spr[j].dir == 1) || (spr[j].dir == 3) ) { if (r == 1) return(9); if (r == 2) return(7); } if ( (spr[j].dir == 3) || (spr[j].dir == 6) ) { if (r == 1) return(7); if (r == 2) return(1); } if ( (spr[j].dir == 9) || (spr[j].dir == 8) ) { if (r == 1) return(1); if (r == 2) return(7); } if ( (spr[j].dir == 7) || (spr[j].dir == 4) ) { if (r == 1) return(3); if (r == 2) return(9); } log_debug("Auto Reverse Diag was sent a dir %d sprite, base %d walk.",spr[j].dir, spr[j].base_walk); return(0); } void draw_damage(int h) { int crap2 = add_sprite(spr[h].x,spr[h].y,8,0,0); spr[crap2].y -= k[seq[spr[h].pseq].frame[spr[h].pframe]].yoffset; spr[crap2].x -= k[seq[spr[h].pseq].frame[spr[h].pframe]].xoffset; spr[crap2].y -= k[seq[spr[h].pseq].frame[spr[h].pframe]].box.bottom / 3; spr[crap2].x += k[seq[spr[h].pseq].frame[spr[h].pframe]].box.right / 5; spr[crap2].speed = 1; spr[crap2].hard = 1; spr[crap2].brain_parm = h; spr[crap2].my = -1; spr[crap2].kill = 1000; spr[crap2].dir = 8; spr[crap2].damage = spr[h].damage; } void add_kill_sprite(int h) { if ( (spr[h].dir > 9) || (spr[h].dir < 1) ) { log_error("Changing sprites dir from %d (!?) to 3.", spr[h].dir); spr[h].dir = 3; } int dir = spr[h].dir; int base = spr[h].base_die; //Msg("Base die is %d", base); if (base == -1) { if (seq[spr[h].base_walk+5].is_active) { add_exp(spr[h].exp, h); int crap2 = add_sprite(spr[h].x,spr[h].y,5,spr[h].base_walk +5,1); spr[crap2].speed = 0; spr[crap2].seq = spr[h].base_walk + 5; // set corpse size to the original sprite size spr[crap2].size = spr[h].size; return; } else { dir = 0; base = 164; } } if (!seq[base+dir].is_active) { if (dir == 1) dir = 9; else if (dir == 3) dir = 7; else if (dir == 7) dir = 3; else if (dir == 9) dir = 1; else if (dir == 4) dir = 6; else if (dir == 6) dir = 4; else if (dir == 8) dir = 2; else if (dir == 2) dir = 8; } if (!seq[base+dir].is_active) { log_error("Can't make a death sprite for dir %d!", base+dir); } int crap2 = add_sprite(spr[h].x,spr[h].y,5,base +dir,1); spr[crap2].speed = 0; spr[crap2].base_walk = 0; spr[crap2].seq = base + dir; if (base == 164) spr[crap2].brain = 7; spr[crap2].size = spr[h].size; add_exp(spr[h].exp, h); } void done_moving(int h) { spr[h].move_active = /*false*/0; spr[h].move_nohard = /*false*/0; if (spr[h].move_script > 0) { // Msg("mover running script %d..", spr[h].move_script); run_script(spr[h].move_script); } } int get_distance_and_dir_smooth(int h, int h1, int *dir) { unsigned int x_diff = abs(spr[h].x - spr[h1].x); unsigned int y_diff = abs(spr[h].y - spr[h1].y); if (spr[h].x < spr[h1].x) { if (spr[h].y < spr[h1].y) { // 6, 3, 2 if (y_diff * 4 < x_diff) *dir = 6; else if (x_diff * 4 < y_diff) *dir = 2; else *dir = 3; } else if (spr[h].y > spr[h1].y) { // 4, 9, 8 if (y_diff * 4 < x_diff) *dir = 6; else if (x_diff * 4 < y_diff) *dir = 8; else *dir = 9; } else { *dir = 6; } } else if (spr[h].x > spr[h1].x) { if (spr[h].y < spr[h1].y) { // 4, 1, 2 if (y_diff * 4 < x_diff) *dir = 4; else if (x_diff * 4 < y_diff) *dir = 2; else *dir = 1; } else if (spr[h].y > spr[h1].y) { // 4, 7, 8 if (y_diff * 4 < x_diff) *dir = 4; else if (x_diff * 4 < y_diff) *dir = 8; else *dir = 7; } else { *dir = 4; } } else { if (spr[h].y < spr[h1].y) *dir = 2; else if (spr[h].y > spr[h1].y) *dir = 8; } return (x_diff > y_diff) ? x_diff : y_diff; } int get_distance_and_dir_nosmooth(int h, int h1, int *dir) { int distancex = 5000; int distancey = 5000; /* Arbitrarily set to 6 to avoid uninitialized values; don't set to 5, because *dir is added to e.g. base_attack to get the right sequence - with 5, you get the dead/corpse sequence instead of an attack sequence.. */ int dirx = 6; int diry = 6; if ((spr[h].x > spr[h1].x) && ((spr[h].x - spr[h1].x) < distancex)) { distancex = spr[h].x - spr[h1].x; dirx = 4; } if ((spr[h].x < spr[h1].x) && ((spr[h1].x - spr[h].x) < distancex)) { distancex = spr[h1].x - spr[h].x; dirx = 6; } if ((spr[h].y > spr[h1].y) && ((spr[h].y - spr[h1].y) < distancey)) { distancey = spr[h].y - spr[h1].y; diry = 8; } if ((spr[h].y < spr[h1].y) && ((spr[h1].y - spr[h].y) < distancey)) { distancey = spr[h1].y - spr[h].y; diry = 2; } if (distancex > distancey) { *dir = dirx; return distancex; } else { *dir = diry; return distancey; } } int get_distance_and_dir(int h, int h1, int *dir) { if (smooth_follow == 1) return get_distance_and_dir_smooth(h, h1, dir); else return get_distance_and_dir_nosmooth(h, h1, dir); } void process_follow(int h) { if (spr[h].follow > 299) { log_error("Sprite %d cannot 'follow' sprite %d??",h,spr[h].follow); return; } if (spr[spr[h].follow].active == /*false*/0) { log_debug("Killing follow"); spr[h].follow = 0; return; } int dir; int distance = get_distance_and_dir(h, spr[h].follow, &dir); if (distance < 40) return; changedir(dir,h,spr[h].base_walk); automove(h); } void process_target(int h) { if (spr[h].target > 299) { log_error("Sprite %d cannot 'target' sprite %d??",h,spr[h].follow); return; } if (spr[spr[h].target].active == /*false*/0) { log_debug("Killing target"); spr[h].target = 0; return; } int dir; int distance = get_distance_and_dir(h, spr[h].target, &dir); if (distance < spr[h].distance) return; changedir(dir,h,spr[h].base_walk); automove(h); } /*bool*/int check_for_kill_script(int i) { if (spr[i].script > 0) { //if ( (spr[i].brain == 0) | (spr[i].brain == 5) | (spr[i].brain == 6) | (spr[i].brain == 7)) if (locate(spr[i].script, "DIE")) run_script(spr[i].script); return(/*true*/1); } return(/*false*/0); } /*bool*/int check_for_duck_script(int i) { if (spr[i].script > 0) { //if ( (spr[i].brain == 0) | (spr[i].brain == 5) | (spr[i].brain == 6) | (spr[i].brain == 7)) if (locate(spr[i].script, "DUCKDIE")) run_script(spr[i].script); return(/*true*/1); } return(/*false*/0); } void process_move(int h) { // Msg("Proccesing sprite %d, dir %d (script is %d)", h, spr[h].dir, spr[h].move_script); if ((spr[h].move_dir == 4) | (spr[h].move_dir == 1) | (spr[h].move_dir == 7) ) { if (spr[h].x <= spr[h].move_num) { //done moving done_moving(h); return; } changedir(spr[h].move_dir,h,spr[h].base_walk); automove(h); } if ( (spr[h].move_dir == 6) | (spr[h].move_dir == 9) | (spr[h].move_dir == 3)) { if (spr[h].x >= spr[h].move_num) { //done moving done_moving(h); return; } changedir(spr[h].move_dir,h,spr[h].base_walk); automove(h); } if (spr[h].move_dir == 2) { if (spr[h].y >= spr[h].move_num) { //done moving done_moving(h); return; } changedir(spr[h].move_dir,h,spr[h].base_walk); automove(h); } if (spr[h].move_dir == 8) { if (spr[h].y <= spr[h].move_num) { //done moving done_moving(h); return; } changedir(spr[h].move_dir,h,spr[h].base_walk); automove(h); } } void duck_brain(int h) { int hold; if ( (spr[h].damage > 0) && (in_this_base(spr[h].pseq, 110) ) ) { check_for_duck_script(h); //hit a dead duck int crap2 = add_sprite(spr[h].x,spr[h].y,7,164,1); /* TODO: add_sprite might return 0, and the following would trash spr[0] - cf. bugs.debian.org/688934 */ spr[crap2].speed = 0; spr[crap2].base_walk = 0; spr[crap2].seq = 164; draw_damage(h); spr[h].damage = 0; add_exp(spr[h].exp, h); kill_sprite_all(h); return; } if ( (spr[h].damage > 0) && (in_this_base(spr[h].pseq, spr[h].base_walk) ) ) { //SoundPlayEffect( 1,3000, 800 ); draw_damage(h); add_exp(spr[h].exp, h); spr[h].damage = 0; //lets kill the duck here, ha. check_for_kill_script(h); spr[h].follow = 0; int crap = add_sprite(spr[h].x,spr[h].y,5,1,1); /* TODO: add_sprite might return 0, and the following would trash spr[0] - cf. bugs.debian.org/688934 */ spr[crap].speed = 0; spr[crap].base_walk = 0; spr[crap].size = spr[h].size; spr[crap].speed = ((rand() % 3)+1); spr[h].base_walk = 110; spr[h].speed = 1; spr[h].timer = 0; spr[h].wait = 0; spr[h].frame = 0; if (spr[h].dir == 0) spr[h].dir = 1; if (spr[h].dir == 4) spr[h].dir = 7; if (spr[h].dir == 6) spr[h].dir = 3; changedir(spr[h].dir,h,spr[h].base_walk); spr[crap].dir = spr[h].dir; spr[crap].base_walk = 120; changedir(spr[crap].dir,crap,spr[crap].base_walk); automove(h); return; } if (spr[h].move_active) { process_move(h); return; } if (spr[h].freeze) { return; } if (spr[h].follow > 0) { process_follow(h); return; } if (spr[h].base_walk == 110) { if ( (rand() % 100)+1 == 1) random_blood(spr[h].x, spr[h].y-18, h); goto walk; } if (spr[h].seq == 0 ) { if (((rand() % 12)+1) == 1 ) { hold = ((rand() % 9)+1); if ((hold != 2) && (hold != 8) && (hold != 5)) { //Msg("random dir change started.. %d", hold); changedir(hold,h,spr[h].base_walk); } else { int junk = spr[h].size; if (junk >= 100) junk = 18000 - (junk * 50); if (junk < 100) junk = 16000 + (junk * 100); SoundPlayEffect( 1,junk, 800,h ,0); spr[h].mx = 0; spr[h].my = 0; spr[h].wait = thisTickCount + (rand() % 300)+200; } return; } if ((spr[h].mx != 0) || (spr[h].my != 0)) { spr[h].seq = spr[h].seq_orig; } } walk: if (spr[h].y > playy) { changedir(9,h,spr[h].base_walk); } if (spr[h].x > playx-30) { changedir(7,h,spr[h].base_walk); } if (spr[h].y < 10) { changedir(1,h,spr[h].base_walk); } if (spr[h].x < 30) { changedir(3,h,spr[h].base_walk); } // Msg("Duck dir is %d, seq is %d.", spr[h].dir, spr[h].seq); automove(h); if (check_if_move_is_legal(h) != 0) { if (spr[h].dir != 0) changedir(autoreverse_diag(h),h,spr[h].base_walk); } } // end duck_brain void change_dir_to_diag( int *dir) { if (*dir == 8) *dir = 7; if (*dir == 4) *dir = 1; if (*dir == 2) *dir = 3; if (*dir == 6) *dir = 9; } void pill_brain(int h) { int hold; if (spr[h].damage > 0) { //got hit //SoundPlayEffect( 1,3000, 800 ); if (spr[h].hitpoints > 0) { draw_damage(h); if (spr[h].damage > spr[h].hitpoints) spr[h].damage = spr[h].hitpoints; spr[h].hitpoints -= spr[h].damage; if (spr[h].hitpoints < 1) { //they killed it check_for_kill_script(h); if (spr[h].brain == 9) { if (spr[h].dir == 0) spr[h].dir = 3; change_dir_to_diag(&spr[h].dir); add_kill_sprite(h); spr[h].active = /*false*/0; } return; } } spr[h].damage = 0; } if (spr[h].move_active) { process_move(h); return; } if (spr[h].freeze) return; if (spr[h].follow > 0) { process_follow(h); } if (spr[h].target != 0) { if (in_this_base(spr[h].seq, spr[h].base_attack)) { //still attacking return; } int dir; if (spr[h].distance == 0) spr[h].distance = 5; int distance = get_distance_and_dir(h, spr[h].target, &dir); if (distance < spr[h].distance) if (spr[h].attack_wait < thisTickCount) { // Msg("base attack is %d.",spr[h].base_attack); if (spr[h].base_attack != -1) { //Msg("attacking with %d..", spr[h].base_attack+dir); /* Enforce lateral (not diagonal) attack, even in smooth_follow mode */ int attackdir = 6; // arbitrary initialized default get_distance_and_dir_nosmooth(h, spr[h].target, &attackdir); spr[h].dir = attackdir; spr[h].seq = spr[h].base_attack+spr[h].dir; spr[h].frame = 0; if (spr[h].script != 0) { if (locate(spr[h].script, "ATTACK")) run_script(spr[h].script); else spr[h].move_wait = thisTickCount + ((rand() % 300)+10); } return; } } if (spr[h].move_wait < thisTickCount) { process_target(h); spr[h].move_wait = thisTickCount + 200; } else { /* automove(h); if (check_if_move_is_legal(h) != 0) { } */ goto walk_normal; } return; } walk_normal: if (spr[h].base_walk != -1) { if ( spr[h].seq == 0) goto recal; } if (( spr[h].seq == 0) && (spr[h].move_wait < thisTickCount)) { recal: if (((rand() % 12)+1) == 1 ) { hold = ((rand() % 9)+1); if ( (hold != 4) && (hold != 6) && (hold != 2) && (hold != 8) && (hold != 5)) { changedir(hold,h,spr[h].base_walk); spr[h].move_wait = thisTickCount +((rand() % 2000)+200); } } else { //keep going the same way if (in_this_base(spr[h].seq_orig, spr[h].base_attack)) goto recal; spr[h].seq = spr[h].seq_orig; if (spr[h].seq_orig == 0) goto recal; } } if (spr[h].y > (playy - 15)) { changedir(9,h,spr[h].base_walk); } if (spr[h].x > (playx - 15)) { changedir(1,h,spr[h].base_walk); } if (spr[h].y < 18) { changedir(1,h,spr[h].base_walk); } if (spr[h].x < 18) { changedir(3,h,spr[h].base_walk); } automove(h); if (check_if_move_is_legal(h) != 0) { spr[h].move_wait = thisTickCount + 400; changedir(autoreverse_diag(h),h,spr[h].base_walk); } // changedir(hold,h,spr[h].base_walk); } void find_action(int h) { spr[h].action = (rand() % 2)+1; if (spr[h].action == 1) { //sit and think spr[h].move_wait = thisTickCount +((rand() % 3000)+400); if (spr[h].base_walk != -1) { int dir = (rand() % 4)+1; spr[h].pframe = 1; if (dir == 1) spr[h].pseq = spr[h].base_walk+1; if (dir == 2) spr[h].pseq = spr[h].base_walk+3; if (dir == 3) spr[h].pseq = spr[h].base_walk+7; if (dir == 4) spr[h].pseq = spr[h].base_walk+9; } return; } if (spr[h].action == 2) { //move spr[h].move_wait = thisTickCount +((rand() % 3000)+500); int dir = (rand() % 4)+1; spr[h].pframe = 1; if (dir == 1) changedir(1,h,spr[h].base_walk); if (dir == 2) changedir(3,h,spr[h].base_walk); if (dir == 3) changedir(7,h,spr[h].base_walk); if (dir == 4) changedir(9,h,spr[h].base_walk); return; } log_error("Internal error: Brain 16, unknown action."); } void people_brain(int h) { if (spr[h].damage > 0) { //got hit //SoundPlayEffect( 1,3000, 800 ); if (spr[h].hitpoints > 0) { draw_damage(h); if (spr[h].damage > spr[h].hitpoints) spr[h].damage = spr[h].hitpoints; spr[h].hitpoints -= spr[h].damage; if (spr[h].hitpoints < 1) { //they killed it check_for_kill_script(h); if (spr[h].brain == 16) { if (spr[h].dir == 0) spr[h].dir = 3; spr[h].brain = 0; change_dir_to_diag(&spr[h].dir); add_kill_sprite(h); spr[h].active = /*false*/0; } return; } } spr[h].damage = 0; } if (spr[h].move_active) { process_move(h); return; } if (spr[h].freeze) return; if (spr[h].follow > 0) { process_follow(h); return; } if ((spr[h].move_wait < thisTickCount) && (spr[h].seq == 0)) { spr[h].action = 0; } if (spr[h].action == 0) find_action(h); if (spr[h].action != 2) { spr[h].seq = 0; return; } if (spr[h].seq_orig != 0) if (spr[h].seq == 0) spr[h].seq = spr[h].seq_orig; if (spr[h].y > playy) { if ( ((rand() % 2)+1) == 1) changedir(9,h,spr[h].base_walk); else changedir(7,h,spr[h].base_walk); } if (spr[h].x > playx) { if ( ((rand() % 2)+1) == 1) changedir(1,h,spr[h].base_walk); else changedir(7,h,spr[h].base_walk); } if (spr[h].y < 20) { if ( ((rand() % 2)+1) == 1) changedir(1,h,spr[h].base_walk); else changedir(3,h,spr[h].base_walk); } if (spr[h].x < 30) { if ( ((rand() % 2)+1) == 1) changedir(3,h,spr[h].base_walk); else changedir(9,h,spr[h].base_walk); } automove(h); if (check_if_move_is_legal(h) != 0) { if ((rand() % 3) == 2) { changedir(autoreverse_diag(h),h,spr[h].base_walk); } else { spr[h].move_wait = 0; spr[h].pframe = 1; spr[h].seq = 0; } } // changedir(hold,h,spr[h].base_walk); } void no_brain(int h) { if (spr[h].move_active) { process_move(h); return; } if (spr[h].freeze) return; if (spr[h].follow > 0) { process_follow(h); return; } } void shadow_brain(int h) { if (spr[spr[h].brain_parm].active == /*false*/0) { spr[h].active = /*false*/0; return; } spr[h].x = spr[spr[h].brain_parm].x; spr[h].y = spr[spr[h].brain_parm].y; spr[h].size = spr[spr[h].brain_parm].size; if (spr[h].seq == 0) if (spr[h].seq_orig != 0) spr[h].seq = spr[h].seq_orig; } void dragon_brain(int h) { int hold; if (spr[h].damage > 0) { //got hit //SoundPlayEffect( 1,3000, 800 ); if (spr[h].hitpoints > 0) { draw_damage(h); if (spr[h].damage > spr[h].hitpoints) spr[h].damage = spr[h].hitpoints; spr[h].hitpoints -= spr[h].damage; if (spr[h].hitpoints < 1) { //they killed it check_for_kill_script(h); if (spr[h].brain == 10) { add_kill_sprite(h); spr[h].active = /*false*/0; } return; } } spr[h].damage = 0; } if (spr[h].move_active) { process_move(h); return; } if (spr[h].freeze) return; if (spr[h].follow > 0) { process_follow(h); return; } if (spr[h].target != 0) if (spr[h].attack_wait < thisTickCount) { if (spr[h].script != 0) { if (locate(spr[h].script, "ATTACK")) run_script(spr[h].script); } } if (spr[h].seq == 0) { recal: if (((rand() % 12)+1) == 1 ) { hold = ((rand() % 9)+1); if ( (hold != 1) && (hold != 3) && (hold != 7) && (hold != 9) && (hold != 5)) { changedir(hold,h,spr[h].base_walk); } } else { //keep going the same way spr[h].seq = spr[h].seq_orig; if (spr[h].seq_orig == 0) goto recal; } } if (spr[h].y > playy) { changedir(8,h,spr[h].base_walk); } if (spr[h].x > GFX_RES_W) { changedir(4,h,spr[h].base_walk); } if (spr[h].y < 0) { changedir(2,h,spr[h].base_walk); } if (spr[h].x < 0) { changedir(6,h,spr[h].base_walk); } automove(h); if (check_if_move_is_legal(h) != 0) { int mydir = autoreverse(h); // Msg("Real dir now is %d, autoresver changed to %d.",spr[h].dir, mydir); changedir(mydir,h,spr[h].base_walk); log_debug("real dir changed to %d", spr[h].dir); } } void pig_brain(int h) { int hold; if (spr[h].move_active) { process_move(h); return; } if ( (spr[h].damage > 0) ) { //SoundPlayEffect( 1,3000, 800 ); draw_damage(h); spr[h].hitpoints -= spr[h].damage; spr[h].damage = 0; if (spr[h].hitpoints < 1) { add_exp(spr[h].exp, h); spr[h].damage = 0; //lets kill the duck here, ha. check_for_kill_script(h); spr[h].speed = 0; spr[h].base_walk = -1; spr[h].seq = 164; spr[h].brain = 7; } return; } if (spr[h].freeze) return; if (spr[h].seq == 0 ) { if (((rand() % 12)+1) == 1 ) { hold = ((rand() % 9)+1); if ( (hold != 4) && (hold != 6) && (hold != 2) && (hold != 8) && (hold != 5)) { changedir(hold,h,spr[h].base_walk); } else { int junk = spr[h].size; if (junk >= 100) junk = 18000 - (junk * 50); if (junk < 100) junk = 16000 + (junk * 100); hold = ((rand() % 4)+1); if (!playing(spr[h].last_sound)) spr[h].last_sound = 0; if (spr[h].last_sound == 0) { if (hold == 1) spr[h].last_sound = SoundPlayEffect( 2,junk, 800 ,h,0); if (hold == 2) spr[h].last_sound = SoundPlayEffect( 3,junk, 800,h ,0); if (hold == 3) spr[h].last_sound = SoundPlayEffect( 4,junk, 800 ,h,0); if (hold == 4) spr[h].last_sound = SoundPlayEffect( 5,junk, 800,h,0 ); } spr[h].mx = 0; spr[h].my = 0; spr[h].wait = thisTickCount + (rand() % 300)+200; } } else { if ((spr[h].mx != 0) || (spr[h].my != 0)) { spr[h].seq = spr[h].seq_orig; } } } if (spr[h].y > (playy-k[getpic(h)].box.bottom / 4)) { changedir(9,h,spr[h].base_walk); } if (spr[h].x > (GFX_RES_W -k[getpic(h)].box.right-10)) { changedir(1,h,spr[h].base_walk); } if (spr[h].y < 10) { changedir(1,h,spr[h].base_walk); } if (spr[h].x < 10) { changedir(3,h,spr[h].base_walk); } automove(h); if (check_if_move_is_legal(h) != 0) { changedir(autoreverse_diag(h),h,spr[h].base_walk); } } // end duck_brain /** * Check if the sprite can pass or should be blocked * * Returns 0 = can pass, <>0 = should be blocked */ int check_if_move_is_legal(int u) { if ((dversion >= 108) /* move_nohard is active for all movements, not just active moves */ || (/* dversion == 107 && */ spr[u].move_active)) if (spr[u].move_nohard == 1) return(0); if (u == 1 && in_this_base(spr[u].seq, dink_base_push)) return(0); int hardness = 0; if (spr[u].moveman > 0) { int i; for (i = 1; i <= spr[u].moveman; i++) { hardness = get_hard(spr[u].lpx[i]-20, spr[u].lpy[i]); if (hardness == 2 && spr[u].flying) { spr[u].moveman = 0; if (dversion >= 108) return 0; else return 2; } if (hardness > 0) { spr[u].x = spr[u].lpx[i-1]; spr[u].y = spr[u].lpy[i-1]; spr[u].moveman = 0; if (push_active) { if (u == 1 && hardness != 2 && play.push_active == /*false*/0) { if ((spr[u].dir == 2) | (spr[u].dir == 4) | (spr[u].dir == 6) | (spr[u].dir == 8)) { //he (dink) is definatly pushing on something play.push_active = /*true*/1; play.push_dir = spr[u].dir; play.push_timer = thisTickCount; } } else { if (play.push_dir != spr[1].dir) play.push_active = /*false*/0; } } return(hardness); } } } if (u == 1) play.push_active = /*false*/0; return(0); } void move(int u, int amount, char kind, char kindy) { int mx = 0; int my = 0; int i; /*bool*/int clearx; /*bool*/int cleary; clearx = /*false*/0; cleary = /*false*/0; for (i = 1; i <= amount; i++) { spr[u].moveman++; if (mx >= spr[u].mx) clearx = /*true*/1; if (my >= spr[u].my) clearx = /*true*/1; if ((clearx) && (cleary)) { mx = 0; my = 0; clearx = /*false*/0; cleary = /*false*/0; } if (kind == '+') { if (mx < spr[u].mx) spr[u].x++; mx++; } if (kind == '-') { if (mx < (spr[u].mx - (spr[u].mx * 2))) spr[u].x--; mx++; } if (kindy == '+') { if (my < spr[u].my) spr[u].y++; my++; } if (kindy == '-') { if (my < (spr[u].my - (spr[u].my * 2))) spr[u].y--; my++; } spr[u].lpx[spr[u].moveman] = spr[u].x; spr[u].lpy[spr[u].moveman] = spr[u].y; } } void bounce_brain(int h) { if (spr[h].y > (playy-k[getpic(h)].box.bottom)) { spr[h].my -= (spr[h].my * 2); } if (spr[h].x > (GFX_RES_W -k[getpic(h)].box.right)) { spr[h].mx -= (spr[h].mx * 2); } if (spr[h].y < 0) { spr[h].my -= (spr[h].my * 2); } if (spr[h].x < 0) { spr[h].mx -= (spr[h].mx * 2); } spr[h].x += spr[h].mx; spr[h].y += spr[h].my; } //end bounce brain void grab_trick(int trick) { /* Capture the current game zone from the backbuffer */ SDL_Rect src, dst; src.x = playl; src.y = 0; src.w = 620 - playl; src.h = 400; dst.x = dst.y = 0; SDL_BlitSurface(GFX_lpDDSBack, &src, GFX_lpDDSTrick, &dst); move_screen = trick; trig_man = /*true*/1; move_counter = 0; } void did_player_cross_screen(/*bool*/int real, int h) { if (walk_off_screen == 1) return; //DO MATH TO SEE IF THEY HAVE CROSSED THE SCREEN, IF SO LOAD NEW ONE if ((spr[h].x) < playl) { if ((*pmap-1) >= 1 && map.loc[*pmap-1] > 0 && screenlock == 0) { //move one map to the left if (real) return; update_screen_time(); grab_trick(4); *pmap -= 1; load_map(map.loc[*pmap]); if (map.indoor[*pmap] == 0) play.last_map = *pmap; draw_map_game(); // compatibility: update Dink position *after* screen change spr[h].x = 619; spr[h].y = spr[h].lpy[0]; } else { spr[h].x = playl; } } else if (spr[h].x > 619) { if ((*pmap+1) <= 24*32 && map.loc[*pmap+1] > 0 && screenlock == 0) { //move one map to the right if (real) return; update_screen_time(); grab_trick(6); *pmap += 1; load_map(map.loc[*pmap]); if (map.indoor[*pmap] == 0) play.last_map = *pmap; draw_map_game(); // compatibility: update Dink position *after* screen change spr[h].x = playl; spr[h].y = spr[h].lpy[0]; } else { spr[h].x = 619; } } else if (spr[h].y < 0) { if ((*pmap-32) >= 1 && map.loc[*pmap-32] > 0 && screenlock == 0) { //move one map up if (real) return; update_screen_time(); grab_trick(8); *pmap -= 32; load_map(map.loc[*pmap]); if (map.indoor[*pmap] == 0) play.last_map = *pmap; // compatibility: update Dink X position *before* screen change // (shouldn't matter when though, since it's an Y motion) spr[h].x = spr[h].lpx[0]; draw_map_game(); // compatibility: update Dink Y position *after* screen change spr[h].y = 399; } else { spr[h].y = 0; } } else if (spr[h].y > 399) { if ((*pmap+32) <= 24*32 && map.loc[*pmap+32] > 0 && screenlock == 0) { //move one map down if (real) return; update_screen_time(); grab_trick(2); *pmap += 32; load_map(map.loc[*pmap]); if (map.indoor[*pmap] == 0) play.last_map = *pmap; draw_map_game(); // compatibility: update Dink position *after* screen change spr[h].y = 0; spr[h].x = spr[h].lpx[0]; } else { spr[h].y = 399; } } } /*bool*/int run_through_tag_list_talk(int h) { rect box; int amount, amounty; int i; for (i = 1; i <= last_sprite_created; i++) { if (spr[i].active) if (i != h) if (spr[i].brain != 8) { rect_copy(&box, &k[getpic(i)].hardbox); rect_offset(&box, spr[i].x, spr[i].y); rect_inflate(&box, 10,10); amount = 50; amounty = 35; if (spr[h].dir == 6) { box.left -= amount; } if (spr[h].dir == 4) { box.right += amount; } if (spr[h].dir == 2) { box.top -= amounty; } if (spr[h].dir == 8) { box.bottom += amounty; } // draw_box(box, 33); if (inside_box(spr[h].x, spr[h].y, box)) { //Msg("Talking to sprite %d", i); if (spr[i].script > 0) { //if ( (spr[i].brain == 0) | (spr[i].brain == 5) | (spr[i].brain == 6) | (spr[i].brain == 7)) //Msg("trying to find TALK in script %d", spr[i].script); if (locate(spr[i].script, "TALK")) { kill_returning_stuff(spr[i].script); run_script(spr[i].script); return(/*true*/1); } } } } } return(/*false*/0); } void make_missile(int x1, int y1, int dir, int speed, int seq, int frame, int strength) { int crap = add_sprite(x1,y1,11,seq,frame); spr[crap].speed = speed; spr[crap].seq = seq; spr[crap].timer = 0; spr[crap].strength = strength; spr[crap].flying = /*true*/1; changedir(dir, crap, 430); } void missile_brain(int h, /*bool*/int repeat) { rect box; int j; automove(h); *pmissle_source = h; int hard = check_if_move_is_legal(h); if (repeat && spr[h].seq == 0) spr[h].seq = spr[h].seq_orig; spr[1].hitpoints = *plife; if (hard > 0 && hard != 2) { //lets check to see if they hit a sprites hardness if (hard > 100) { int ii; for (ii = 1; ii < last_sprite_created; ii++) { if (spr[ii].sp_index == hard-100) { if (spr[ii].script > 0) { *pmissile_target = 1; *penemy_sprite = 1; if (locate(spr[ii].script, "HIT")) { kill_returning_stuff(spr[ii].script); run_script(spr[ii].script); } } if (spr[h].script > 0) { *pmissile_target = ii; *penemy_sprite = 1; if (locate(spr[h].script, "DAMAGE")) { kill_returning_stuff(spr[h].script); run_script(spr[h].script); } } else { if (spr[h].attack_hit_sound == 0) SoundPlayEffect( 9,22050, 0 ,0,0); else SoundPlayEffect( spr[h].attack_hit_sound,spr[h].attack_hit_sound_speed, 0 ,0,0); spr[h].active = 0; } //run missile end return; } } } //run missile end if (spr[h].script > 0) { *pmissile_target = 0; if (locate(spr[h].script, "DAMAGE")) run_script(spr[h].script); } else { if (spr[h].attack_hit_sound == 0) SoundPlayEffect(9, 22050, 0, 0, 0); else SoundPlayEffect(spr[h].attack_hit_sound,spr[h].attack_hit_sound_speed, 0, 0, 0); spr[h].active = 0; return; } } if (spr[h].x > 1000) spr[h].active = /*false*/0; if (spr[h].y > 700) spr[h].active = /*false*/0; if (spr[h].y < -500) spr[h].active = /*false*/0; if (spr[h].x < -500) spr[h].active = /*false*/0; //did we hit anything that can die? for (j = 1; j <= last_sprite_created; j++) { if (spr[j].active && h != j && spr[j].nohit != 1 && spr[j].notouch == /*false*/0) if (spr[h].brain_parm != j && spr[h].brain_parm2!= j) //if (spr[j].brain != 15) if (spr[j].brain != 11) { rect_copy(&box, &k[getpic(j)].hardbox); rect_offset(&box, spr[j].x, spr[j].y); if (spr[h].range != 0) rect_inflate(&box, spr[h].range,spr[h].range); if (debug_mode) draw_box(box, 33); if (inside_box(spr[h].x, spr[h].y, box)) { spr[j].notouch = /*true*/1; spr[j].notouch_timer = thisTickCount+100; spr[j].target = 1; *penemy_sprite = 1; //change later to reflect REAL target if (spr[h].script > 0) { *pmissile_target = j; if (locate(spr[h].script, "DAMAGE")) run_script(spr[h].script); } else { if (spr[h].attack_hit_sound == 0) SoundPlayEffect(9, 22050, 0, 0, 0); else SoundPlayEffect(spr[h].attack_hit_sound,spr[h].attack_hit_sound_speed, 0, 0,0); } if (spr[j].hitpoints > 0 && spr[h].strength != 0) { int hit = 0; if (spr[h].strength == 1) hit = spr[h].strength - spr[j].defense; else hit = (spr[h].strength / 2) + ((rand() % (spr[h].strength / 2)) + 1) - spr[j].defense; if (hit < 0) hit = 0; spr[j].damage += hit; if (hit > 0) random_blood(spr[j].x, spr[j].y-40, j); spr[j].last_hit = 1; //Msg("Damage done is %d..", spr[j].damage); } if (spr[j].script > 0) { //CHANGED did = h *pmissile_target = 1; if (locate(spr[j].script, "HIT")) { kill_returning_stuff(spr[j].script); run_script(spr[j].script); } } } //run missile end } } } void missile_brain_expire(int h) { missile_brain(h, /*false*/0); if (spr[h].seq == 0) spr[h].active = 0; } void run_through_mouse_list(int h, /*bool*/int special) { rect box; int i; for (i = 1; i <= last_sprite_created; i++) { if (spr[i].active) if (i != h) if ((spr[i].touch_damage != 0) ) { if (spr[i].touch_damage != -1) if (spr[h].notouch) return; rect_copy(&box, &k[getpic(i)].hardbox); rect_offset(&box, spr[i].x, spr[i].y); if (inside_box(spr[h].x, spr[h].y, box)) { if ((spr[i].touch_damage == -1) && (spr[i].script != 0)) { log_info("running %d's script..", spr[i].script); if (locate(spr[i].script, "CLICK")) run_script(spr[i].script); } else { if (spr[i].touch_damage == -1) { log_error("Sprites touch damage is set to -1 but there is no script set!"); } else { //lets hurt the guy } } if (special) return; } } } if (special) SoundPlayEffect(19, 22050, 0, 0,0); } void mouse_brain(int h) { if (spr[h].move_active) { process_move(h); return; } int diag = 0; if (sjoy.right) diag++; if (sjoy.left) diag++; if (sjoy.down) diag++; if (sjoy.up) diag++; //*********************************PROCESS MOVEMENT if (diag == 1) { if (sjoy.right) { move(h,spr[h].speed,'+','0'); changedir(6,h,spr[h].base_walk); } if (sjoy.left) { move(h,spr[h].speed,'-','0'); changedir(4,h,spr[h].base_walk); } if (sjoy.down) { move(h,spr[h].speed,'0','+'); changedir(2,h,spr[h].base_walk); } if (sjoy.up) { move(h,spr[h].speed,'0','-'); changedir(8,h,spr[h].base_walk); } } // ***************** DIAGONAL!!!! if (diag > 1) { if ( (sjoy.up) && (sjoy.left) ) { changedir(7,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'-','-'); } if ( (sjoy.down) && (sjoy.left)) { changedir(1,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'-','+'); } if ( (sjoy.down) && (sjoy.right)) { changedir(3,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'+','+'); } if ( (sjoy.up) && (sjoy.right)) { changedir(9,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'+','-'); } } if ( (sjoy.button[ACTION_ATTACK] == /*TRUE*/1) | (mouse1) ) { log_info("running through mouse list.."); run_through_mouse_list(h, /*true*/1); sjoy.button[ACTION_ATTACK] = /*false*/0; mouse1 = /*false*/0; } } void process_bow( int h) { int timetowait = 100; if (bow.wait < thisTickCount) { if (sjoy.right) spr[h].dir = 6; if (sjoy.left) spr[h].dir = 4; if (sjoy.up) spr[h].dir = 8; if (sjoy.down) spr[h].dir = 2; } if (sjoy.right) if (sjoy.up) { spr[h].dir = 9; bow.wait = thisTickCount + timetowait; } if (sjoy.left) if (sjoy.up) { spr[h].dir = 7; bow.wait = thisTickCount + timetowait; } if (sjoy.right) if (sjoy.down) { spr[h].dir = 3; bow.wait = thisTickCount + timetowait; } if (sjoy.left) if (sjoy.down) { spr[h].dir = 1; bow.wait = thisTickCount + timetowait; } spr[h].pseq = 100+spr[h].dir; if (bow.pull_wait < thisTickCount) { bow.pull_wait = thisTickCount + 10; if (bow.hitme) bow.time += 7; // bowsound->SetFrequency(22050+(bow.time*10)); if (bow.time > 500) bow.time = 500; spr[h].pframe = (bow.time / 100)+1; } if (!sjoy.joybitold[ACTION_ATTACK]) { bow.active = /*false*/0; bow.last_power = bow.time; run_script(bow.script); // bowsound->Stop(); return; } } /** * Player */ void human_brain(int h) { int diag, x5; int crap; /*BOOL*/int bad; if (mode == 0) goto b1end; if (spr[h].move_active) { process_move(h); return; } if (spr[h].damage > 0) { draw_damage(h); *plife -= spr[h].damage; spr[h].damage = 0; if (*plife < 0) *plife = 0; int hurt = (rand() % 2)+1; if (hurt == 1) SoundPlayEffect(15, 25050, 2000, 0,0); if (hurt == 2) SoundPlayEffect(16, 25050, 2000, 0,0); //draw blood } if (play.push_active) { if (play.push_dir == 2 && !sjoy.down) { spr[h].nocontrol = /*false*/0; play.push_active = /*false*/0; } if (play.push_dir == 4 && !sjoy.left) { spr[h].nocontrol = /*false*/0; play.push_active = /*false*/0; } if (play.push_dir == 6 && !sjoy.right) { spr[h].nocontrol = /*false*/0; play.push_active = /*false*/0; } if (play.push_dir == 8 && !sjoy.up) { spr[h].nocontrol = /*false*/0; play.push_active = /*false*/0; } } if (spr[h].nocontrol) return; if (talk.active) goto freeze; if (spr[h].freeze) { //they are frozen if (sjoy.button[ACTION_TALK] == 1) { //they hit the talk button while frozen, lets hurry up the process int jj; for (jj = 1; jj <= last_sprite_created; jj++) { // Msg("Checking %d, brain %d, script %d, my freeze is %d",jj, spr[jj].brain, spr[jj].script, spr[h].freeze); if (spr[jj].brain == 8 && spr[jj].script == play.last_talk) { //this sprite owns its freeze spr[jj].kill_timer = 1; //force the message to be over } } } goto freeze; } //****************************** KEYS THAT CAN BE PRESSED AT ANY TIME ************** if (bow.active) { //bow is active!! process_bow(h); return; } if (play.push_active && thisTickCount > play.push_timer + 600) { spr[h].seq = dink_base_push + spr[h].dir; spr[h].frame = 1; spr[h].nocontrol = /*true*/1; //play.push_active = /*false*/0; run_through_tag_list_push(h); return; } if ((sjoy.button[ACTION_TALK] == 1)) { if (!run_through_tag_list_talk(h)) { int did_dnotalk = 0; if (dversion >= 108) { // addition of 'not talking to anything' script int sc = load_script ("dnotalk", 0, /*false*/0); if (sc != 0 && locate (sc, "MAIN")) { run_script (sc); did_dnotalk = 1; } } if (did_dnotalk == 0) { kill_text_owned_by(h); int randy = (rand() % 6)+1; if (randy == 1) say_text(_("`$I don't see anything here."), h, 0); if (randy == 2) say_text(_("`$Huh?"), h, 0); if (randy == 3) say_text(_("`$I'm fairly sure I can't talk to or use that."), h, 0); if (randy == 4) say_text(_("`$What?"), h, 0); if (randy == 5) say_text(_("`$I'm bored."), h, 0); if (randy == 6) say_text(_("`$Not much happening here."), h, 0); } } } if ((sjoy.button[ACTION_ATTACK] == 1) && (weapon_script != 0)) { if (spr[h].base_hit > 0) { if (locate(weapon_script, "USE")) run_script(weapon_script); goto b1end; } } //added AGAIN 10-19-99 //Let's check keys for getting hit if (thisTickCount > but_timer && console_active == 0) { for (x5=29; x5<256; x5++) { if (x5 == SDLK_SPACE) continue; if (x5 == '6') continue; if (x5 == '7') continue; if (x5 == SDLK_LEFT) continue; if (x5 == SDLK_UP) continue; if (x5 == SDLK_RIGHT) continue; if (x5 == SDLK_DOWN) continue; if (x5 == 'm') continue; /* Conflicts with remapped 'a'-'z' SDL keycodes: */ if (x5 >= 'A' && x5 <= 'Z') continue; char msg[30]; if (GetKeyboard(x5)) { int keycode = x5; /* Get the same keycodes than the original Dink engines for letters, that is, uppercase ascii rather than lowercase ascii */ if (x5 >= 'a' && x5 <= 'z') keycode = x5 - ('a' - 'A'); sprintf(msg, "key-%d", keycode); but_timer = thisTickCount+200; int mycrap = load_script(msg, 1, /*false*/0); if (locate(mycrap, "MAIN")) { run_script(mycrap); goto b1end; } } } } enum buttons_actions actions[5]; enum buttons_actions actions_script[5]; int nb_actions = 1; actions[0] = ACTION_MAP; actions_script[0] = 6; if (dversion >= 108) { nb_actions = 5; actions[1] = ACTION_BUTTON7; actions_script[1] = 7; actions[2] = ACTION_BUTTON8; actions_script[2] = 8; actions[3] = ACTION_BUTTON9; actions_script[3] = 9; actions[4] = ACTION_BUTTON10; actions_script[4] = 10; } int i = 0; for (i = 0; i < nb_actions; i++) { // button6.c, button7.c, ..., button10.c if (sjoy.button[actions[i]] == 1) { char script_filename[6+2+1]; // 'button' + '7'..'10' + '\0' (no '.c') sprintf(script_filename, "button%d", actions_script[i]); int mycrap = load_script(script_filename, 1, /*false*/0); if (locate(mycrap, "MAIN")) run_script(mycrap); goto b1end; } } if (magic_script != 0 && sjoy.joybit[ACTION_MAGIC]) goto shootm; if (sjoy.button[ACTION_MAGIC] == 1) { if (magic_script == 0) { if (dversion >= 108) { // addition of 'no magic' script int sc = load_script ("dnomagic", 0, /*false*/0); if (sc != 0 && locate (sc, "MAIN")) { run_script (sc); goto b1end; } } int randy = (rand() % 6)+1; kill_text_owned_by(h); if (randy == 1) say_text(_("`$I don't know any magic."), h, 0); if (randy == 2) say_text(_("`$I'm no wizard!"), h, 0); if (randy == 3) say_text(_("`$I need to learn magic before trying this."), h, 0); if (randy == 4) say_text(_("`$I'm gesturing wildly to no avail!"), h, 0); if (randy == 5) say_text(_("`$Nothing happened."), h, 0); if (randy == 6) say_text(_("`$Hocus pocus!"), h, 0); goto b1end; } //player pressed 1 //lets magiced something shootm: if (*pmagic_level >= *pmagic_cost) { if (locate(magic_script, "USE")) run_script(magic_script); goto b1end; } } if (sjoy.button[ACTION_INVENTORY]) { if (dversion >= 108) { // addition of 'enter key/inventory' script int sc = load_script ("button4", 0, /*false*/0); if (sc != 0 && locate (sc, "MAIN")) { run_script (sc); return; } } show_inventory = 1; SoundPlayEffect(18, 22050,0,0,0); return; } if (sjoy.button[ACTION_MENU] == 1) { if (!showb.active && !bow.active && !talk.active) { int sc = load_script("escape", 1000, /*false*/0); if (sc != 0 && locate(sc, "MAIN")) run_script(sc); return; } } if (console_active == 0) { if (GetKeyboard('b')) ResumeMidi(); if (GetKeyboard('n')) PauseMidi(); } if (spr[h].skip > 0 && spr[h].skip <= spr[h].skiptimer) { spr[h].skiptimer = 0; goto b1end; } diag = 0; if (sjoy.right) diag++; if (sjoy.left) diag++; if (sjoy.down) diag++; if (sjoy.up) diag++; //*********************************PROCESS MOVEMENT if (diag == 1) { if (sjoy.right) { move(h,spr[h].speed,'+','0'); changedir(6,h,spr[h].base_walk); } if (sjoy.left) { move(h,spr[h].speed,'-','0'); changedir(4,h,spr[h].base_walk); } if (sjoy.down) { move(h,spr[h].speed,'0','+'); changedir(2,h,spr[h].base_walk); } if (sjoy.up) { move(h,spr[h].speed,'0','-'); changedir(8,h,spr[h].base_walk); } } // ***************** DIAGONAL!!!! if (diag > 1 && diag < 3) { if (sjoy.up && sjoy.left) { changedir(7,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'-','-'); } if (sjoy.down && sjoy.left) { changedir(1,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'-','+'); } if (sjoy.down && sjoy.right) { changedir(3,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'+','+'); } if (sjoy.up && sjoy.right) { changedir(9,h,spr[h].base_walk); move(h,spr[h].speed - (spr[h].speed / 3),'+','-'); } } bad = 0; if (sjoy.right) bad = 1; if (sjoy.left) bad = 1; if (sjoy.up) bad = 1; if (sjoy.down) bad = 1; if (bad) { if (spr[h].idle) { spr[h].frame = 1; spr[h].idle = /*FALSE*/0; } goto badboy; } if (not_in_this_base(spr[h].seq, spr[h].base_idle)) //unccoment to allow walk anim to end before idle anim to start { freeze: if (spr[h].dir == 1) spr[h].dir = 2; if (spr[h].dir == 3) spr[h].dir = 2; if (spr[h].dir == 7) spr[h].dir = 8; if (spr[h].dir == 9) spr[h].dir = 8; if (spr[h].base_idle != 0) changedir(spr[h].dir,h,spr[h].base_idle); spr[h].idle = /*TRUE*/1; } badboy: b1end: if (spr[h].dir == 2 || spr[h].dir == 4 || spr[h].dir == 6 || spr[h].dir == 8) goto smoothend; crap = check_if_move_is_legal(h); if (crap != 0) { if (pam.sprite[crap-100].is_warp != 0) flub_mode = crap; //hit something, can we move around it? if (spr[h].seq == spr[h].base_walk + 4 || spr[h].seq == spr[h].base_walk + 6) { int hardm = get_hard_play(h, spr[h].x, spr[h].y-1); if (hardm == 0) spr[h].y -= 1; } if (spr[h].seq == spr[h].base_walk + 8 || spr[h].seq == spr[h].base_walk + 2) { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y); if (hardm == 0) spr[h].x -= 1; } if (spr[h].seq == spr[h].base_walk + 9) { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y); if (hardm == 0) { spr[h].x += 1; } else { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y+1); if (hardm == 0) { spr[h].x += 1; spr[h].y += 1; } else { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y+2); if (hardm == 0) { spr[h].x += 1; spr[h].y += 2; } else { int hardm = get_hard_play(h, spr[h].x, spr[h].y-1); if (hardm == 0) { spr[h].y -= 1; } else { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y-1); if (hardm == 0) { spr[h].x -= 1; spr[h].y -= 1; } } } } } } if (spr[h].seq == spr[h].base_walk + 7) { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y); if (hardm == 0) { spr[h].x -= 1; } else { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y+1); if (hardm == 0) { spr[h].x -= 1; spr[h].y += 1; } else { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y+2); if (hardm == 0) { spr[h].x -= 1; spr[h].y += 2; } else { int hardm = get_hard_play(h, spr[h].x, spr[h].y-1); if (hardm == 0) { spr[h].y -= 1; } else { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y-1); if (hardm == 0) { spr[h].x += 1; spr[h].y -= 1; } } } } } } if (spr[h].seq == spr[h].base_walk + 1) { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y); if (hardm == 0) { spr[h].x -= 1; } else { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y-1); if (hardm == 0) { spr[h].x -= 1; spr[h].y -= 1; } else { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y-2); if (hardm == 0) { spr[h].x -= 1; spr[h].y -= 2; } else { int hardm = get_hard_play(h, spr[h].x, spr[h].y+1); if (hardm == 0) { spr[h].y += 1; } else { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y+1); if (hardm == 0) { spr[h].x += 1; spr[h].y += 1; } } } } } } if (spr[h].seq == spr[h].base_walk + 3) { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y); if (hardm == 0) { spr[h].x += 1; } else { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y-1); if (hardm == 0) { spr[h].x += 1; spr[h].y -= 1; } else { int hardm = get_hard_play(h, spr[h].x+1, spr[h].y-2); if (hardm == 0) { spr[h].x += 1; spr[h].y -= 2; } else { int hardm = get_hard_play(h, spr[h].x, spr[h].y+1); if (hardm == 0) { spr[h].y += 1; } else { int hardm = get_hard_play(h, spr[h].x-1, spr[h].y+1); if (hardm == 0) { spr[h].x -= 1; spr[h].y += 1; } } } } } } } smoothend: ; } /*bool*/int transition() { SDL_Rect src, dst; //we need to do our fancy screen transition int dumb = fps_final * 2; if (0) //DEBUG { // Make the transition last ~5 seconds if (move_screen == 4 || move_screen == 6) dumb = 600 / (fps_final * 5); else if (move_screen == 8 || move_screen == 2) dumb = 400 / (fps_final * 5); } move_counter += dumb; if (move_screen == 4) { if (move_counter > 598) move_counter = 598; src.x = 0; src.y = 0; src.w = 600 - move_counter; src.h = 400; dst.x = 20 + move_counter; dst.y = 0; SDL_BlitSurface(GFX_lpDDSTrick, &src, GFX_lpDDSBack, &dst); src.x = 600 - move_counter; src.y = 0; src.w = move_counter; src.h = 400; dst.x = 20; dst.y = 0; SDL_BlitSurface(GFX_lpDDSTrick2, &src, GFX_lpDDSBack, &dst); if (move_counter >= 595) { total_trigger = /*false*/0; move_screen = 0; move_counter = 0; trig_man = 0; //draw_map(); return /*false*/0; } return /*true*/1; } if (move_screen == 6) { if (move_counter > 598) move_counter = 598; src.x = move_counter; src.y = 0; src.w = 600 - move_counter; src.h = 400; dst.x = 20; dst.y = 0; SDL_BlitSurface(GFX_lpDDSTrick, &src, GFX_lpDDSBack, &dst); src.x = 0; src.y = 0; src.w = move_counter; src.h = 400; dst.x = 620 - move_counter; dst.y = 0; SDL_BlitSurface(GFX_lpDDSTrick2, &src, GFX_lpDDSBack, &dst); if (move_counter >= 595) { total_trigger = /*false*/0; move_screen = 0; move_counter = 0; trig_man = 0; //draw_map(); return /*false*/0; } return /*true*/1; } if (move_screen == 8) { if (move_counter > 398) move_counter = 398; src.x = 0; src.y = 0; src.w = 600; src.h = 400 - move_counter; dst.x = 20; dst.y = move_counter; SDL_BlitSurface(GFX_lpDDSTrick, &src, GFX_lpDDSBack, &dst); src.x = 0; src.y = 400 - move_counter; src.w = 600; src.h = move_counter; dst.x = 20; dst.y = 0; SDL_BlitSurface(GFX_lpDDSTrick2, &src, GFX_lpDDSBack, &dst); if (move_counter >= 398) { total_trigger = /*false*/0; move_screen = 0; move_counter = 0; trig_man = 0; //draw_map(); return /*false*/0; } return /*true*/1; } if (move_screen == 2) { if (move_counter > 398) move_counter = 398; src.x = 0; src.y = move_counter; src.w = 600; src.h = 400 - move_counter; dst.x = 20; dst.y = 0; SDL_BlitSurface(GFX_lpDDSTrick, &src, GFX_lpDDSBack, &dst); src.x = 0; src.y = 0; src.w = 600; src.h = move_counter; dst.x = 20; dst.y = 400 - move_counter; SDL_BlitSurface(GFX_lpDDSTrick2, &src, GFX_lpDDSBack, &dst); if (move_counter >= 398) { total_trigger = /*false*/0; move_screen = 0; move_counter = 0; trig_man = 0; //draw_map(); return /*false*/0; } return /*true*/1; } return /*false*/0; } /** * Trigger a warp (teleport) * block: the warp editor sprite */ int special_block(int block) { if (pam.sprite[block].is_warp == 1) { //they touched a warp if (pam.sprite[block].sound == 0) SoundPlayEffect(7, 12000, 0, 0, 0); else SoundPlayEffect(pam.sprite[block].sound, 22050, 0, 0, 0); if (pam.sprite[block].parm_seq != 0) { // we'll also play an animation here int sprite = find_sprite(block); if (sprite > 0) { spr[sprite].seq = pam.sprite[block].parm_seq; process_warp = block; } return 1; } process_warp = block; return 1; // redraw screen with fade } return 0; } /* fade_down() - fade to black */ void CyclePalette() { if (!truecolor) { SDL_Color palette[256]; int kk; gfx_palette_get_phys(palette); for (kk = 1; kk < 256; kk++) /* skipping index 0 because it's already (and always) black ;) */ { if (dversion >= 108) { /* Use time-based rather than absolute increments; avoids incomplete fades on slow computers */ /* dt / 2 == dt * 256 / 512 == complete fade in 512ms */ int lValue = (thisTickCount - lastTickCount) / 2; if (palette[kk].b != 0) { if (palette[kk].b > lValue) palette[kk].b -= lValue; else palette[kk].b = 0; } if (palette[kk].g != 0) { if (palette[kk].g > lValue) palette[kk].g -= lValue; else palette[kk].g = 0; } if (palette[kk].r != 0) { if (palette[kk].r > lValue) palette[kk].r -= lValue; else palette[kk].r = 0; } } else { if (palette[kk].b != 0) { if (palette[kk].b > 10) palette[kk].b -= 10; else palette[kk].b--; } if (palette[kk].g != 0) { if (palette[kk].g > 10) palette[kk].g -= 10; else palette[kk].g--; } if (palette[kk].r != 0) { if (palette[kk].r > 10) palette[kk].r -= 10; else palette[kk].r--; } } } gfx_palette_set_phys(palette); } else { /* truecolor */ if (truecolor_fade_lasttick == -1) { truecolor_fade_lasttick = game_GetTicks(); //truecolor_fade_brightness -= 256*.3; } else { int delta = game_GetTicks() - truecolor_fade_lasttick; /* Complete fade in 400ms */ truecolor_fade_lasttick = game_GetTicks(); truecolor_fade_brightness -= delta * 256 / 400.0; } if (truecolor_fade_brightness <= 0) truecolor_fade_brightness = 0; } if (process_downcycle) { if (thisTickCount > cycle_clock) { process_downcycle = /*false*/0; truecolor_fade_lasttick = -1; if (cycle_script != 0) { int junk = cycle_script; cycle_script = 0; run_script(junk); } } } } /* fade_up() */ void up_cycle(void) { int donethistime = 1; if (!truecolor) { SDL_Color palette[256]; int kk; gfx_palette_get_phys(palette); for (kk = 1; kk < 256; kk++) { int tmp = -1; tmp = palette[kk].b; // 'int' to avoid 'char' overflow if (tmp != GFX_real_pal[kk].b) { donethistime = 0; if (tmp > 246) tmp++; else tmp += 10; } if (tmp > GFX_real_pal[kk].b) tmp = GFX_real_pal[kk].b; palette[kk].b = tmp; tmp = palette[kk].g; // 'int' to avoid 'char' overflow if (tmp != GFX_real_pal[kk].g) { donethistime = 0; if (tmp > 246) tmp++; else tmp += 10; } if (tmp > GFX_real_pal[kk].g) tmp = GFX_real_pal[kk].g; palette[kk].g = tmp; tmp = palette[kk].r; // 'int' to avoid 'char' overflow if (tmp != GFX_real_pal[kk].r) { donethistime = 0; if (tmp > 246) tmp++; else tmp += 10; } if (tmp > GFX_real_pal[kk].r) tmp = GFX_real_pal[kk].r; palette[kk].r = tmp; } gfx_palette_set_phys(palette); } else { /* truecolor */ donethistime = 0; if (truecolor_fade_lasttick == -1) { truecolor_fade_lasttick = game_GetTicks(); //truecolor_fade_brightness += 256*.3; } else { int delta = game_GetTicks() - truecolor_fade_lasttick; /* Complete fade in 400ms */ truecolor_fade_lasttick = game_GetTicks(); truecolor_fade_brightness += delta * 256 / 400.0; } if (truecolor_fade_brightness >= 256) { truecolor_fade_brightness = 256; donethistime = 1; } } if (process_upcycle) if (donethistime == 1) { process_upcycle = 0; truecolor_fade_lasttick = -1; if (cycle_script != 0) { int junk = cycle_script; cycle_script = 0; run_script(junk); } } } void draw_box(rect box, int color) { /* DDBLTFX ddbltfx; */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* ddbltfx.dwFillColor = color; */ /* ddrval = lpDDSBack->Blt(&box ,NULL, NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst; dst.x = box.left; dst.y = box.top; dst.w = box.right - box.left; dst.h = box.bottom - box.top; SDL_FillRect(GFX_lpDDSBack, &dst, color); } } /** * Check which sprites are affected by an attack from 'h', the * attacker. */ void run_through_tag_list(int h, int strength) { rect box; int amount, amounty; int i; for (i = 1; i <= last_sprite_created; i++) { if (spr[i].active) if (i != h) if (! ( (spr[i].nohit == 1) && (spr[i].script == 0)) ) { rect_copy(&box, &k[getpic(i)].hardbox); rect_offset(&box, spr[i].x, spr[i].y); //InflateRect(&box, 10,10); box.right += 5; box.left -= 5; box.top -= 5; box.bottom += 10; if (spr[h].range == 0) amount = 28; else amount = spr[h].range; if (spr[h].range == 0) amounty = 36; else amounty = (spr[h].range + (spr[h].range / 6)); int range_amount = spr[h].range / 8; if (spr[h].dir == 6) { box.top -= 10; box.bottom += 10; if (spr[h].range != 0) box.top -= range_amount; if (spr[h].range != 0) box.bottom += range_amount; box.left -= amount; } if (spr[h].dir == 4) { box.right += amount; box.top -= 10; box.bottom += 10; if (spr[h].range != 0) box.top -= range_amount; if (spr[h].range != 0) box.bottom += range_amount; } if (spr[h].dir == 2) { box.right += 10; box.left -= 10; box.top -= amounty; if (spr[h].range != 0) box.right += range_amount; if (spr[h].range != 0) box.left -= range_amount; } if (spr[h].dir == 8) { box.right += 10; box.left -= 10; box.bottom += amounty; if (spr[h].range != 0) box.right += range_amount; if (spr[h].range != 0) box.right -= range_amount; } if (debug_mode) draw_box(box, 33); if (inside_box(spr[h].x, spr[h].y, box)) { // addition for fixing missle_source problems if (dversion >= 108) *pmissle_source = h; if (spr[i].nohit == 1) { if (spr[i].script > 0) { //if ( (spr[i].brain == 0) | (spr[i].brain == 5) | (spr[i].brain == 6) | (spr[i].brain == 7)) *penemy_sprite = h; if ( (spr[i].base_attack != -1) || (spr[i].touch_damage > 0)) spr[i].target = h; if (locate(spr[i].script, "HIT")) { kill_returning_stuff(spr[i].script); run_script(spr[i].script); } } } else { //hit this personb/thing if (spr[h].attack_hit_sound == 0) { SoundPlayEffect( 9,22050, 0 ,0,0); } else { SoundPlayEffect( spr[h].attack_hit_sound,spr[h].attack_hit_sound_speed, 0 ,0,0); } if ( (spr[i].base_attack != -1) || (spr[i].touch_damage > 0)) spr[i].target = h; if (spr[h].strength == 0) { } else { if ( (spr[i].hitpoints > 0) || (i == 1) ) { spr[i].last_hit = h; if ( hurt_thing(i, (spr[h].strength / 2) + ((rand() % ((spr[h].strength+1) / 2))+1), 0) > 0) random_blood(spr[i].x, spr[i].y-40, i); } } if (spr[i].script > 0) { //if ( (spr[i].brain == 0) | (spr[i].brain == 5) | (spr[i].brain == 6) | (spr[i].brain == 7)) spr[i].last_hit = h; *penemy_sprite = h; if ( (spr[i].base_attack != -1) || (spr[i].touch_damage > 0)) spr[i].target = h; if (locate(spr[i].script, "HIT")) { kill_returning_stuff(spr[i].script); run_script(spr[i].script); } } } } } } } void run_through_tag_list_push(int h) { rect box; int i; for (i = 1; i <= last_sprite_created; i++) { if (spr[i].active) if (i != h) if ((spr[i].script != 0) ) { rect_copy(&box, &k[getpic(i)].hardbox); rect_offset(&box, spr[i].x, spr[i].y); //InflateRect(&box, 10,10); box.right += 2; box.left -= 2; box.top -= 2; box.bottom += 2; //draw_box(box, 33); if (inside_box(spr[h].x, spr[h].y, box)) { if (locate(spr[i].script, "PUSH")) run_script(spr[i].script); } } } } void run_through_touch_damage_list(int h) { rect box; int i; for (i = 1; i <= last_sprite_created; i++) { if (spr[i].active) if (i != h) if ((spr[i].touch_damage != 0) ) { if (spr[i].touch_damage != -1) if (spr[h].notouch) return; rect_copy(&box, &k[getpic(i)].hardbox); rect_offset(&box, spr[i].x, spr[i].y); //InflateRect(&box, 10,10); box.right += 2; box.left -= 2; box.top -= 2; box.bottom += 2; if (debug_mode) draw_box(box, 33); if (inside_box(spr[h].x, spr[h].y, box)) { if ((spr[i].touch_damage == -1) && (spr[i].script != 0)) { if (locate(spr[i].script, "TOUCH")) run_script(spr[i].script); } else { if (spr[i].touch_damage == -1) { log_error("Sprites touch damage is set to -1 but there is no script set!"); } else { //lets hurt the guy spr[h].notouch = /*true*/1; spr[h].notouch_timer = thisTickCount+400; spr[h].last_hit = i; if (spr[i].script != 0) if (locate(spr[i].script, "TOUCH")) run_script(spr[i].script); if (hurt_thing(h, spr[i].touch_damage, 0) > 0) random_blood(spr[h].x, spr[h].y-40, h); } } } } } } void process_warp_man(void) { int sprite = find_sprite(process_warp); /* warp sprite doesn't exist (e.g. merged background sprite), or warp anim is finished */ /* Cf. http://www.dinknetwork.com/forum.cgi?MID=168476 */ if (sprite == 0 || spr[sprite].seq == 0) { process_count++; CyclePalette(); /* Wait 5 CyclePalette before blanking the screen and warp. Truecolor more: the fade algorithm is a bit different and requires a few more cycles to get the same effect; unlike v1.08, we don't wait for a full fadedown, which is long and can be not very smooth on old computers. */ if ((!truecolor && process_count > 5) || (truecolor && truecolor_fade_brightness <= 180)) { SDL_FillRect(GFX_lpDDSBack, NULL, SDL_MapRGB(GFX_lpDDSBack->format, 0, 0, 0)); flip_it(); process_count = 0; int block = process_warp; update_screen_time(); spr[1].x = pam.sprite[block].warp_x; spr[1].y = pam.sprite[block].warp_y; *pmap = pam.sprite[block].warp_map; // update map indicator if (map.indoor[pam.sprite[block].warp_map] == 0) play.last_map = pam.sprite[block].warp_map; load_map(map.loc[pam.sprite[block].warp_map]); draw_map_game(); process_upcycle = 1; process_warp = 0; } } else /* warp anim didn't finish yet */ { process_count = 0; } } void one_time_brain(int h) { //goes once then draws last frame to background if (spr[h].move_active) { process_move(h); return; } if (spr[h].follow > 0) { process_follow(h); } if (spr[h].seq == 0) { draw_sprite_game(GFX_lpDDSTwo, h); spr[h].active = /*false*/0; return; } changedir(spr[h].dir,h,-1); automove(h); } void one_time_brain_for_real(int h) { if (spr[h].move_active) { process_move(h); } if (spr[h].follow > 0) { process_follow(h); } if (spr[h].seq == 0) { spr[h].active = /*false*/0; return; } if (spr[h].dir > 0) { changedir(spr[h].dir,h,-1); automove(h); } } void scale_brain(int h) { if (spr[h].size == spr[h].brain_parm) { spr[h].active = /*false*/0; return; } int num = 5 * (base_timing / 4); if (spr[h].size > spr[h].brain_parm) { if (spr[h].size - num < spr[h].brain_parm) num = spr[h].size - spr[h].brain_parm; spr[h].size -= num; } if (spr[h].size < spr[h].brain_parm) { if (spr[h].size + num > spr[h].brain_parm) num = spr[h].brain_parm - spr[h].size; spr[h].size += num; } if (spr[h].move_active) { process_move(h); return; } if (spr[h].dir > 0) { changedir(spr[h].dir,h,-1); automove(h); } } void repeat_brain(int h) { if (spr[h].move_active) { process_move(h); // return; } if (spr[h].seq_orig == 0) if (spr[h].sp_index != 0) { spr[h].seq_orig = pam.sprite[spr[h].sp_index].seq; spr[h].frame = pam.sprite[spr[h].sp_index].frame; spr[h].wait = 0; //pam.sprite[spr[h].sp_index].frame; } if (spr[h].seq == 0) spr[h].seq = spr[h].seq_orig; } void text_brain(int h) { if ( (spr[h].damage == -1) && (spr[h].owner != 1000)) { if (spr[spr[h].owner].active == /*false*/0) { //msg("Killing text brain %d, because owner %d is dead.",h, spr[h].owner); spr[h].active = /*false*/0; return; } //give this text the cords from it's owner sprite spr[h].x = spr[spr[h].owner].x - spr[h].strength; spr[h].y = spr[spr[h].owner].y - spr[h].defense; if (spr[h].x < 1) spr[h].x = 1; if (spr[h].y < 1) spr[h].y = 1; } else { //Msg("automoving %d.. ", h); if (spr[h].move_active) { process_move(h); return; } automove(h); } } void process_talk() { int px = 48, py = 44; int sx = 184; int sy = 94, sy_hold, sy_ho; /* int spacing = 12; */ int curxl = 126; int curxr = 462; int curyr = 200; int curyl = 200; int y_last = 0, y_hold = 0, y_ho; /* HDC hdc; */ rect rcRect; int i; int x_depth = 335; if (talk.newy != -5000) sy = talk.newy; sy_hold = sy; sy_ho = sy; check_seq_status(30); int fake_page; /* again: */ /* ddrval = lpDDSBack->BltFast( px, py, k[seq[30].frame[2]].k, */ /* &k[seq[30].frame[2]].box , DDBLTFAST_SRCCOLORKEY ); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again; */ // GFX { SDL_Rect dst; dst.x = px; dst.y = py; SDL_BlitSurface(GFX_k[seq[30].frame[2]].k, NULL, GFX_lpDDSBack, &dst); } /* again2: */ /* ddrval = lpDDSBack->BltFast( px+169, py+42, k[seq[30].frame[3]].k, */ /* &k[seq[30].frame[3]].box , DDBLTFAST_SRCCOLORKEY ); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again2; */ // GFX { SDL_Rect dst; dst.x = px + 169; dst.y = py + 42; SDL_BlitSurface(GFX_k[seq[30].frame[3]].k, NULL, GFX_lpDDSBack, &dst); } /* again3: */ /* ddrval = lpDDSBack->BltFast( px+169+180, py+1, k[seq[30].frame[4]].k, */ /* &k[seq[30].frame[4]].box , DDBLTFAST_SRCCOLORKEY ); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again3; */ // GFX { SDL_Rect dst; dst.x = px+169+180; dst.y = py+1; if (SDL_BlitSurface(GFX_k[seq[30].frame[4]].k, NULL, GFX_lpDDSBack, &dst) < 0) log_error("Could not draw sprite %d: %s", seq[30].frame[4], SDL_GetError()); } int talk_hold = talk.cur; if (sjoy.rightd) talk.cur++; if (sjoy.downd) talk.cur++; if (sjoy.upd) talk.cur--; if (sjoy.leftd) talk.cur--; if (play.mouse > 20) { talk.cur++; play.mouse = 0; } if (play.mouse < -20) { talk.cur--; play.mouse = 0; } if (talk_hold != talk.cur) { if (talk.cur >= talk.cur_view) if (talk.cur <= talk.cur_view_end) SoundPlayEffect(11, 22050,0,0,0); } /* if (lpDDSBack->GetDC(&hdc) == DD_OK) */ /* { */ /* SelectObject (hdc, hfont_small); */ // FONTS //FONTS_SetFont(FONTS_hfont_small); /* SetBkMode(hdc, TRANSPARENT); */ /* Print dialog title, if any */ if (strlen(talk.buffer) > 0) { rect_set(&rcRect, sx, 94, 463, 400); /* if using an explicit "set_y" after "choice_start()": */ if (talk.newy != -5000) rcRect.bottom = talk.newy + 15; /* SetTextColor(hdc,RGB(8,14,21)); */ // FONTS FONTS_SetTextColor(8, 14, 21); /* DrawText(hdc,talk.buffer,strlen(talk.buffer),&rcRect,DT_VCENTER | DT_CENTER | DT_WORDBREAK); */ // FONTS //printf("(%dx%d)x(%dx%d)\n", rcRect.left, rcRect.top, rcRect.right, rcRect.bottom); print_text_wrap(talk.buffer, &rcRect, 1, 0, FONT_DIALOG); /* Same of in text_draw, except for #1 and default */ // FONTS: // support for custom colors if (talk.color >= 1 && talk.color <= 15) FONTS_SetTextColorIndex(talk.color); else { if (dversion >= 108) FONTS_SetTextColor(255, 255, 255); else FONTS_SetTextColor(255, 255, 2); } rect_offset(&rcRect, 1, 1); /* DrawText(hdc,talk.buffer,strlen(talk.buffer),&rcRect,DT_VCENTER | DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(talk.buffer, &rcRect, 1, 0, FONT_DIALOG); /* SetTextColor(hdc,RGB(8,14,21)); */ // FONTS FONTS_SetTextColor(8, 14, 21); } //tabulate distance needed by text, LORDII experience helped here //recal: for (i = talk.cur_view; i < talk.last; i++) { rect_set(&rcRect,sx,y_hold,463,x_depth+100); /* y_hold = DrawText(hdc,talk.line[i],lstrlen(talk.line[i]),&rcRect,DT_CALCRECT | DT_CENTER | DT_WORDBREAK); */ // FONTS /* Don't print, only check the height in pixel: */ y_hold = print_text_wrap(talk.line[i], &rcRect, 1, 1, FONT_DIALOG); sy_hold += y_hold; //Msg("Sy_hold = %d (%d)", sy_hold,i); if (sy_hold > x_depth) { talk.cur_view_end = i-1; //Msg("Sy is over, sp cur_view is %d ", talk.cur_view_end); goto death; } } talk.cur_view_end = i; if (talk.cur_view == 1 && talk.cur_view_end == talk.last) { //Msg("Small enough to fit on one screen, lets center it!"); sy += ( (x_depth - sy_hold) / 2) - 20; } death: if (talk.cur > talk.last) { SoundPlayEffect(11, 22050,0,0,0); talk.cur = 1; } if (talk.cur < 1) { SoundPlayEffect(11, 22050,0,0,0); talk.cur = talk.last; } //if (talk.cur_view_end != talk.last) { //Msg("Talkcur is %d, talk cur view is %d", talk.cur, talk.cur_view); //total options too large for page, lets scroll if (talk.cur > talk.cur_view_end) { // Msg("advancing page: talkcur is %d, changing cur_view to same", talk.cur, talk.cur_view); talk.cur_view = talk.cur; talk.page ++; // Msg("Page advanced to %d. (cur_end is %d, cur is %d)", talk.page,talk.cur_view_end, talk.cur); goto fin; } if (talk.cur < talk.cur_view) { // Msg("Turning back the clock from page %d..", talk.page); talk.cur_view = 1; // talk.cur = 1; talk.page--; log_info("Page backed to %d.", talk.page); fake_page = 1; for (i = 1; i < talk.last; i++) { rect_set(&rcRect,sx,sy_ho,463,x_depth); /* y_ho = DrawText(hdc,talk.line[i],lstrlen(talk.line[i]),&rcRect,DT_CALCRECT | DT_CENTER | DT_WORDBREAK); */ // FONTS /* Don't print, only check the height in pixel: */ y_ho = print_text_wrap(talk.line[i], &rcRect, 1, 1, FONT_DIALOG); sy_ho += y_ho; //Msg("adding y_yo %d.. (on %d)", y_ho,i); if (sy_ho > x_depth) { /*if (fake_page == talk.page) { goto fin; } */ fake_page++; sy_ho = sy+ y_ho; //Msg("Does fake page (%d) match desired page (%d) %d", fake_page, talk.page, i); } if (fake_page == talk.page) { talk.cur_view = i; talk.cur_view_end = talk.cur; //Msg("Going to fin with end being %d, and.cur being %d. View is %d.", // talk.cur_view_end, talk.cur, talk.cur_view); goto fin; } // Msg("Second: Sy is over, sp cur_view is %d", talk.cur_view_end); } talk.cur_view_end = i; } } //Msg("talk last is %d. cur_view_end is %d, Cur is %d", talk.last, talk.cur_view_end, talk.cur); // talk.cur_view_end = talk.last; for ( i = talk.cur_view; i <= talk.cur_view_end; i++) { //lets figure out where to draw this line rect_set(&rcRect, sx, sy, 463, x_depth + 100); /* SetTextColor(hdc,RGB(8,14,21)); */ // FONTS FONTS_SetTextColor(8, 14, 21); /* DrawText(hdc,talk.line[i],lstrlen(talk.line[i]),&rcRect, DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(talk.line[i], &rcRect, 1, 0, FONT_DIALOG); rect_offset(&rcRect, -2, -2); /* DrawText(hdc,talk.line[i],lstrlen(talk.line[i]),&rcRect,DT_CENTER | DT_WORDBREAK); */ // FONTS print_text_wrap(talk.line[i], &rcRect, 1, 0, FONT_DIALOG); rect_offset(&rcRect, 1, 1); if (i == talk.cur) { curyl = sy-4; curyr = sy-4; /* SetTextColor(hdc,RGB(255,255,255)); */ // FONTS FONTS_SetTextColor(255, 255, 255); } else { /* SetTextColor(hdc,RGB(255,255,2)); */ // FONTS FONTS_SetTextColor(255, 255, 2); } /* y_last = DrawText(hdc,talk.line[i],lstrlen(talk.line[i]),&rcRect,DT_CENTER | DT_WORDBREAK); */ // FONTS y_last = print_text_wrap(talk.line[i], &rcRect, 1, 0, FONT_DIALOG); sy += y_last; } fin: // dum = GetTextFace(hdc,100,shit) ; /* lpDDSBack->ReleaseDC(hdc); */ if (talk.timer < thisTickCount) { talk.curf++; talk.timer = thisTickCount+100; } if (talk.curf == 0) talk.curf = 1; if (talk.curf > 7) talk.curf = 1; /* again4: */ /* ddrval = lpDDSBack->BltFast( curxl, curyl, k[seq[456].frame[talk.curf]].k, */ /* &k[seq[456].frame[talk.curf]].box , DDBLTFAST_SRCCOLORKEY ); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again4; */ // GFX { SDL_Rect dst; dst.x = curxl; dst.y = curyl; SDL_BlitSurface(GFX_k[seq[456].frame[talk.curf]].k, NULL, GFX_lpDDSBack, &dst); } /* again5: */ /* ddrval = lpDDSBack->BltFast( curxr, curyr, k[seq[457].frame[talk.curf]].k, */ /* &k[seq[456].frame[talk.curf]].box , DDBLTFAST_SRCCOLORKEY ); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again5; */ // GFX { SDL_Rect dst; dst.x = curxr; dst.y = curyr; SDL_BlitSurface(GFX_k[seq[457].frame[talk.curf]].k, NULL, GFX_lpDDSBack, &dst); } /* } */ if ((sjoy.button[ACTION_ATTACK]) | (mouse1)) { mouse1 = /*false*/0; talk.active = /*false*/0; *presult = talk.line_return[talk.cur]; SoundPlayEffect(17, 22050,0,0,0); if (talk.script != 0) { //we need to continue a script run_script(talk.script); } } } void UpdateCursorPosition(int dx, int dy) { /* * Pick up any leftover fuzz from last time. This is important * when scaling down mouse motions. Otherwise, the user can * drag to the right extremely slow for the length of the table * and not get anywhere. */ if (spr[1].active) if (spr[1].brain == 13) { spr[1].x += dx; spr[1].y += dy; /* Clip the cursor to our client area */ if (spr[1].x > 640) spr[1].x = 640; /* TODO: -1? */ if (spr[1].y > 480) spr[1].y = 480; /* TODO: -1? */ if (spr[1].x < 0) spr[1].x = 0; if (spr[1].y < 0) spr[1].y = 0; } /* Text choice selection (e.g. "Load game" in the title screen) */ if (mode == 1) { play.mouse += dy; //Msg("play mousey is now %d", play.mouse); } /* Try to get the mouse (and the focus) within the window, not 100% safe but good enough */ SDL_WarpMouse(320, 240); /* Ignore the mouse event generated by SDL_WarpMouse: */ SDL_PumpEvents(); SDL_GetRelativeMouseState(NULL, NULL); /* Alternatively, we can do this all the time, even when dx and dy are zero, and the mouse will always return to the application. We'd need to avoid that when the application is backgrounded though, otherwise FreeDink will keep warping the mouse. */ } void Scrawl_OnMouseInput(void) { SDL_Event event; int dx, dy; mouse1 = /*false*/0; SDL_PumpEvents(); SDL_GetRelativeMouseState(&dx, &dy); /* Only call if there's mouse activity (original game behavior). However, we don't process mouse moves through events, because we use SDL_WarpMouse and this generates spurious events, which we then need to filter out - better simply check if dx and dy are not zero. */ if (dx != 0 || dy != 0) UpdateCursorPosition(dx, dy); /* Process stacked clicks */ #if SDL_VERSION_ATLEAST(1, 3, 0) while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_MOUSEBUTTONDOWN, SDL_MOUSEBUTTONDOWN) > 0) #else while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN)) > 0) #endif { SDL_MouseButtonEvent *button_event = (SDL_MouseButtonEvent*)&event; if (button_event->button == SDL_BUTTON_LEFT) mouse1 = /*true*/1; } return; /* mouse1 = false; */ /* BOOL fDone = 0; */ /* while (!fDone) { */ /* DIDEVICEOBJECTDATA od; */ /* DWORD dwElements = 1; */ /* HRESULT hr = g_pMouse->GetDeviceData( */ /* sizeof(DIDEVICEOBJECTDATA), &od, */ /* &dwElements, 0); */ /* if (hr == DIERR_INPUTLOST) { */ /* /\* */ /* * We had acquisition, but lost it. Try to reacquire it. */ /* * */ /* * WARNING! DO NOT ATTEMPT TO REACQUIRE IF YOU GET */ /* * DIERR_NOTACQUIRED! Otherwise, you're extremely likely */ /* * to get caught in an infinite loop: The acquire will fail, */ /* * and you'll get another DIERR_NOTACQUIRED so you'll */ /* * try to aquire again, and that'll fail, etc. */ /* *\/ */ /* //PostMessage(hwnd, WM_SYNCACQUIRE, 0, 0L); */ /* // break; */ /* g_pMouse->Acquire(); */ /* } */ /* /\* Unable to read data or no data available *\/ */ /* if (FAILED(hr) || dwElements == 0) { */ /* // Msg("No mouse data there."); */ /* break; */ /* } */ /* /\* Look at the element to see what happened *\/ */ /* /\* Rewritten slightly differently to make it compile with recent versions of g++ *\/ */ /* /\* switch (od.dwOfs) { */ /* // DIMOFS_X: Mouse horizontal motion */ /* case DIMOFS_X: UpdateCursorPosition(od.dwData, 0); break; */ /* // DIMOFS_Y: Mouse vertical motion */ /* case DIMOFS_Y: UpdateCursorPosition(0, od.dwData); break; */ /* case DIDFT_BUTTON: if (od.dwData > 0) mouse1 = true; break; */ /* } */ /* *\/ */ /* if (od.dwOfs == DIMOFS_X) */ /* { */ /* /\* DIMOFS_X: Mouse horizontal motion *\/ */ /* UpdateCursorPosition(od.dwData, 0); */ /* } */ /* else if (od.dwOfs == DIMOFS_Y) */ /* { */ /* /\* DIMOFS_Y: Mouse vertical motion *\/ */ /* UpdateCursorPosition(0, od.dwData); */ /* } */ /* else if (od.dwOfs == DIDFT_BUTTON) */ /* { */ /* if (od.dwData > 0) mouse1 = true; */ /* } */ /* } */ } void button_brain(int h ) { rect box; if (spr[h].move_active) { process_move(h); return; } if (spr[h].script == 0) return; rect_copy(&box, &k[getpic(h)].hardbox); rect_offset(&box, spr[h].x, spr[h].y); if (spr[h].brain_parm == 0) { if (inside_box(spr[1].x, spr[1].y, box)) { spr[h].brain_parm = 1; if (locate(spr[h].script, "BUTTONON")) { run_script(spr[h].script); return; } } } else { if (!inside_box(spr[1].x, spr[1].y, box)) { spr[h].brain_parm = 0; if (locate(spr[h].script, "BUTTONOFF")) { run_script(spr[h].script); return; } } } } /** * Draw an item icon (or an item selection square) in the inventory * screen */ void draw_item(int item_idx0, enum item_type type, int mseq, int mframe) { int mx = 0; int my = 0; if (type == ITEM_REGULAR) { mx = 260; my = 83; mx += (item_idx0 % 4) * (18 + 65); my += (item_idx0 / 4) * (20 + 55); } else { mx = 45; my = 83; mx += (item_idx0 % 2) * (18 + 65); my += (item_idx0 / 2) * (20 + 55); } check_seq_status(mseq); if (GFX_k[seq[mseq].frame[mframe]].k == NULL) { if (type == ITEM_REGULAR) { log_debug("Whups, item %d seq %d frame %d not loaded, killed it", item_idx0, mseq, mframe); play.item[item_idx0].active = 0; } else { log_debug("Whups, magic %d seq %d frame %d not loaded, killed it", item_idx0, mseq, mframe); play.mitem[item_idx0].active = 0; } return; } SDL_Rect dst; dst.x = mx; dst.y = my; SDL_BlitSurface(GFX_k[seq[mseq].frame[mframe]].k, NULL, GFX_lpDDSBack, &dst); } /** * Inventory screen */ void process_item() { SDL_BlitSurface(GFX_lpDDSTwo, NULL, GFX_lpDDSBack, NULL); check_seq_status(423); //lets blit the main screen over it SDL_Rect dst = {20, 0}; SDL_BlitSurface(GFX_k[seq[423].frame[1]].k, NULL, GFX_lpDDSBack, &dst); //draw all currently owned items; magic { int i = 0; for (; i < NB_MITEMS; i++) if (play.mitem[i].active) draw_item(i, ITEM_MAGIC, play.mitem[i].seq, play.mitem[i].frame); } //draw selection box around armed magic if (*pcur_magic >= 1 && *pcur_magic <= NB_MITEMS && play.item[*pcur_magic - 1].active) draw_item(*pcur_magic - 1, ITEM_MAGIC, 423, 5); //draw all currently owned items; normal { int i = 0; for (; i < NB_ITEMS; i++) if (play.item[i].active) draw_item(i, ITEM_REGULAR, play.item[i].seq, play.item[i].frame); } //draw selection box around armed weapon if (*pcur_weapon >= 1 && *pcur_weapon <= NB_ITEMS && play.item[*pcur_weapon - 1].active) draw_item(*pcur_weapon - 1, ITEM_REGULAR, 423, 4); if (play.curitem < 0 || (!play.item_magic && play.curitem >= NB_ITEMS) || (play.item_magic && play.curitem >= NB_MITEMS)) play.curitem = 0; if (thisTickCount > item_timer) { //draw the selector around it, alternating from 2 to 3 if (item_pic == 2) item_pic = 3; else item_pic = 2; item_timer = thisTickCount + 400; } draw_item(play.curitem, play.item_magic, 423, item_pic); if (!play.item_magic) { int hor = play.curitem % 4; int vert = play.curitem / 4; //choosing weapon/item if (sjoy.button[ACTION_ATTACK]) { if (play.item[play.curitem].active) { //arm weapon SoundPlayEffect(18, 42050,0,0,0); if (*pcur_weapon != 0) { //disarm old weapon if (locate(weapon_script, "DISARM")) run_script(weapon_script); } //load weapons script *pcur_weapon = play.curitem + 1; weapon_script = load_script(play.item[*pcur_weapon - 1].name, 1000, /*false*/0); if (locate(weapon_script, "ARM")) run_script(weapon_script); if (locate(weapon_script, "ARMMOVIE")) run_script(weapon_script); draw_status_all(); } } else if (sjoy.rightd) { if (hor < 3) { play.curitem++; SoundPlayEffect(11, 22050,0,0,0); } } else if (sjoy.leftd) { if (hor > 0) { play.curitem--; SoundPlayEffect(11, 22050,0,0,0); } else { SoundPlayEffect(11, 22050,0,0,0); //switch to magic mode play.item_magic = 1; play.curitem = vert * 2 + 1; } } else if (sjoy.downd) { if (vert < 3) { play.curitem += 4; SoundPlayEffect(11, 22050,0,0,0); } } else if (sjoy.upd) { if (vert > 0) { play.curitem -= 4; SoundPlayEffect(11, 22050,0,0,0); } } } else { int hor = play.curitem % 2; int vert = play.curitem / 2; if (sjoy.button[ACTION_ATTACK]) { if (play.mitem[play.curitem].active) { //arm magic SoundPlayEffect(18, 42050,0,0,0); if (*pcur_magic != 0) { //disarm old weapon if (locate(magic_script, "DISARM")) run_script(magic_script); } //load magics script *pcur_magic = play.curitem + 1; magic_script = load_script(play.mitem[*pcur_magic - 1].name, 1000, /*false*/0); if (locate(magic_script, "ARM")) run_script(magic_script); if (locate(magic_script, "ARMMOVIE")) run_script(magic_script); draw_status_all(); } } else if (sjoy.rightd) { if (hor < 1) { play.curitem++; SoundPlayEffect(11, 22050,0,0,0); } else { play.item_magic = 0; play.curitem = vert * 4; SoundPlayEffect(11, 22050,0,0,0); } } else if (sjoy.leftd) { if (hor > 0) { play.curitem--; SoundPlayEffect(11, 22050,0,0,0); } } else if (sjoy.downd) { if (vert < 3) { play.curitem += 2; SoundPlayEffect(11, 22050,0,0,0); } } else if (sjoy.upd) { if (vert > 0) { play.curitem -= 2; SoundPlayEffect(11, 22050,0,0,0); } } } if (talk.active) process_talk(); //a special process callbacks for just stuff that was created in this mode? // process_callbacks_special(); flip_it(); if (sjoy.button[ACTION_INVENTORY]) { SoundPlayEffect(17, 22050,0,0,0); show_inventory = 0; } } void process_show_bmp( void ) { // We could disable this Blit (work is already done in show_bmp()) // but we want to display the shiny mark on the map below. Besides, // after show_bmp(), other parts of the code drew sprites on // lpDDSBack, so we need to regenerate it anyway. SDL_BlitSurface(GFX_lpDDSTrick, NULL, GFX_lpDDSBack, NULL); if (showb.showdot) { //let's display a nice dot to mark where they are on the map int x = play.last_map - 1; int mseq = 165; showb.picframe++; if (showb.picframe > seq[mseq].len) showb.picframe = 1; int mframe = showb.picframe; SDL_Rect dst; // convert map# to a (x,y) position on a FreeDinkedit minimap dst.x = (x % 32) * 20; dst.y = (x / 32) * 20; SDL_BlitSurface(GFX_k[seq[mseq].frame[mframe]].k, NULL, GFX_lpDDSBack, &dst); } if ((sjoy.button[ACTION_ATTACK]) || (sjoy.button[ACTION_TALK]) || (sjoy.button[ACTION_MAGIC]) || (sjoy.button[ACTION_INVENTORY]) || (sjoy.button[ACTION_MENU]) || (sjoy.button[ACTION_MAP])) { showb.active = /*false*/0; if (showb.script != 0) run_script(showb.script); showb.stime = thisTickCount+2000; but_timer = thisTickCount + 200; int sprite = say_text_xy("", 1, 440, 0); spr[sprite].noclip = 1; // Return to canonical game palette gfx_palette_set_phys(GFX_real_pal); // The main flip_it() will be called, skip it - lpDDSBack is // not matching the palette anymore, it needs to be redrawn // first. abort_this_flip = /*true*/1; } } void drawscreenlock( void ) { /* HRESULT ddrval; */ /* loop: */ //draw the screenlock icon /* ddrval = lpDDSBack->BltFast(0, 0, k[seq[423].frame[9]].k, */ /* &k[seq[423].frame[9]].box , DDBLTFAST_NOCOLORKEY ); */ /* if (ddrval == DDERR_WASSTILLDRAWING ) goto loop; */ //if (ddrval != DD_OK) dderror(ddrval); // GFX gfx_blit_nocolorkey(GFX_k[seq[423].frame[9]].k, NULL, GFX_lpDDSBack, NULL); /* loop2: */ //draw the screenlock icon /* ddrval = lpDDSBack->BltFast(620, 0, k[seq[423].frame[10]].k, */ /* &k[seq[423].frame[10]].box , DDBLTFAST_NOCOLORKEY ); */ /* if (ddrval == DDERR_WASSTILLDRAWING ) goto loop2; */ // if (ddrval != DD_OK) dderror(ddrval); // GFX { SDL_Rect dst = {620, 0}; gfx_blit_nocolorkey(GFX_k[seq[423].frame[10]].k, NULL, GFX_lpDDSBack, &dst); } } /** * doInit - do work required for every instance of the application: * create the window, initialize data */ static int doInit(int argc, char *argv[]) { /* New initialization */ if (init(argc, argv, "Tiles/Splash.bmp") < 0) return -1; /* Game-specific initialization */ //Activate dink, but don't really turn him on //spr[1].active = TRUE; spr[1].timer = 33; // ** SETUP ** last_sprite_created = 1; mode = 0; /* TODO: move load_info() to 'init' */ load_info(); //lets run our init script int script = load_script("main", 0, /*true*/1); locate(script, "main"); run_script(script); /* lets attach our vars to the scripts, they must be declared in the main.c DinkC script */ attach(); return 0; } /** * Initialization, message loop */ int main(int argc, char* argv[]) { /* Initialize/setup */ int init_ret = doInit(argc, argv); if (init_ret == 0) { /* Main loop */ /* Notify other apps that FreeDink is playing */ log_path(/*true*/1); /* Windows event loop */ int last_console_active = 0; while(!g_b_kill_app) { SDL_Event event; SDL_PumpEvents(); /* Check if we need to quit */ #if SDL_VERSION_ATLEAST(1, 3, 0) if (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_QUIT, SDL_QUIT) > 0) #else if (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_QUIT)) > 0) #endif break; /* Fullscreen <-> window */ if ((SDL_GetModState()&KMOD_ALT) && GetKeyboard(SDLK_RETURN)) { /* Note: as of 2008-08-07, only works under X11 */ int success = SDL_WM_ToggleFullScreen(GFX_lpDDSBack); if (!success) /* Try using a more portable way: */ gfx_toggle_fullscreen(); } /* High speed */ if (GetKeyboard(SDLK_TAB) == 1) { game_set_high_speed(); } else if (GetKeyboard(SDLK_TAB) == 0) { game_set_normal_speed(); } /* TODO: maybe check for application active/background state and pause the game accordingly - but this may be an annoying behavior. */ if (g_b_kill_app == /*false*/0) updateFrame(); /* Clean-up finished sounds: normally this is done by SDL_mixer but since we're using effects tricks to stream&resample sounds, we need to do this manually. */ sfx_cleanup_finished_channels(); if (console_active == 0 || last_console_active == 0) /* Get rid of keyboard events, otherwise they'll pile-up. Also purge them just when console is turned on. We poll the keyboard state directly in the rest of the game, so no keystroke will be lost. */ #if SDL_VERSION_ATLEAST(1, 3, 0) while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_KEYDOWN, SDL_KEYDOWN) > 0); #else while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_KEYDOWN)) > 0); #endif if (console_active == 1) { SDL_KeyboardEvent kev; #if SDL_VERSION_ATLEAST(1, 3, 0) if (SDL_PeepEvents((SDL_Event*)&kev, 1, SDL_GETEVENT, SDL_KEYDOWN, SDL_KEYDOWN) > 0) #else if (SDL_PeepEvents((SDL_Event*)&kev, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_KEYDOWN)) > 0) #endif dinkc_console_process_key(kev); } last_console_active = console_active; } } /* Uninitialize/clean-up */ finiObjects(); if (init_ret < 0) return EXIT_FAILURE; else return EXIT_SUCCESS; } freedink-108.4+dfsg/src/media/0000755000175000017500000000000012421730246013667 5ustar memefreedink-108.4+dfsg/src/media/freedink.ico0000644000175000017500000000137612330466347016170 0ustar meme ( @"""  """"" """" """""" " " " 3" C@" 4 C""!    "" @40""" " CC""""D40""""CC0"  UP D43  SP"""CD0SU"" D4CU45P""C4USDCUP" D0S4DD3UP" USDCUP U45PSU SPUP????freedink-108.4+dfsg/src/media/README0000644000175000017500000000017612330466347014562 0ustar memeOrigin and copyright of the media files: - system.sfg / vgasys.fon: check vgasys_fon.c - freedink.ico: check freedink_xpm.c freedink-108.4+dfsg/src/media/system.sfd0000644000175000017500000016312512330466347015730 0ustar memeSplineFontDB: 1.0 FontName: system FullName: System FamilyName: System Weight: Bold Copyright: Copyright (C) 2004 Huw D M Davies, Dmitry Timoshkov Comments: 2004-7-15: Created. Version: 001.000 ItalicAngle: 0 UnderlinePosition: -100 UnderlineWidth: 50 Ascent: 13 Descent: 3 NeedsXUIDChange: 1 FSType: 8 PfmFamily: 33 TTFWeight: 700 TTFWidth: 5 LineGap: 90 VLineGap: 0 Panose: 2 11 6 3 0 0 0 0 0 0 OS2TypoAscent: 0 OS2TypoAOffset: 1 OS2TypoDescent: 0 OS2TypoDOffset: 1 OS2TypoLinegap: 0 OS2WinAscent: 0 OS2WinAOffset: 1 OS2WinDescent: 0 OS2WinDOffset: 1 HheadAscent: 0 HheadAOffset: 1 HheadDescent: 0 HheadDOffset: 1 OS2Vendor: 'Wine' ScriptLang: 2 1 latn 1 dflt 1 DFLT 1 dflt LangName: 1033 "" "" "" "" "" "" "" "" "Created with FontForge 1.0 (http://fontforge.sourceforge.net)" "Huw D M Davies" "" "http://www.winehq.org" "" "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.+AAoA +AAoA-This library 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 Lesser General Public License for more details.+AAoA +AAoA-You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA+AAoA" "http://www.gnu.org/licenses/lgpl.html" Encoding: UnicodeBmp UnicodeInterp: none NameList: Adobe Glyph List DisplaySize: 16 AntiAlias: 0 FitToEm: 1 WinInfo: 960 20 13 OnlyBitmaps: 1 BeginChars: 65536 475 StartChar: space Encoding: 32 32 0 Width: 4 Flags: W EndChar StartChar: exclam Encoding: 33 33 1 Width: 4 Flags: W EndChar StartChar: quotedbl Encoding: 34 34 2 Width: 6 Flags: W EndChar StartChar: numbersign Encoding: 35 35 3 Width: 8 Flags: W EndChar StartChar: dollar Encoding: 36 36 4 Width: 8 Flags: W EndChar StartChar: percent Encoding: 37 37 5 Width: 11 Flags: W EndChar StartChar: ampersand Encoding: 38 38 6 Width: 9 Flags: W EndChar StartChar: quotesingle Encoding: 39 39 7 Width: 4 Flags: W EndChar StartChar: parenleft Encoding: 40 40 8 Width: 4 Flags: W EndChar StartChar: parenright Encoding: 41 41 9 Width: 4 Flags: W EndChar StartChar: asterisk Encoding: 42 42 10 Width: 6 Flags: W EndChar StartChar: plus Encoding: 43 43 11 Width: 8 Flags: W EndChar StartChar: comma Encoding: 44 44 12 Width: 4 Flags: W EndChar StartChar: hyphen Encoding: 45 45 13 Width: 4 Flags: W EndChar StartChar: period Encoding: 46 46 14 Width: 4 Flags: W EndChar StartChar: slash Encoding: 47 47 15 Width: 4 Flags: W EndChar StartChar: zero Encoding: 48 48 16 Width: 8 Flags: W EndChar StartChar: one Encoding: 49 49 17 Width: 8 Flags: W EndChar StartChar: two Encoding: 50 50 18 Width: 8 Flags: W EndChar StartChar: three Encoding: 51 51 19 Width: 8 Flags: W EndChar StartChar: four Encoding: 52 52 20 Width: 8 Flags: W EndChar StartChar: five Encoding: 53 53 21 Width: 8 Flags: W EndChar StartChar: six Encoding: 54 54 22 Width: 8 Flags: W EndChar StartChar: seven Encoding: 55 55 23 Width: 8 Flags: W EndChar StartChar: eight Encoding: 56 56 24 Width: 8 Flags: W EndChar StartChar: nine Encoding: 57 57 25 Width: 8 Flags: W EndChar StartChar: colon Encoding: 58 58 26 Width: 4 Flags: W EndChar StartChar: semicolon Encoding: 59 59 27 Width: 4 Flags: W EndChar StartChar: less Encoding: 60 60 28 Width: 8 Flags: W EndChar StartChar: equal Encoding: 61 61 29 Width: 8 Flags: W EndChar StartChar: greater Encoding: 62 62 30 Width: 8 Flags: W EndChar StartChar: question Encoding: 63 63 31 Width: 8 Flags: W EndChar StartChar: at Encoding: 64 64 32 Width: 14 Flags: W EndChar StartChar: A Encoding: 65 65 33 Width: 8 Flags: W EndChar StartChar: B Encoding: 66 66 34 Width: 10 Flags: W EndChar StartChar: C Encoding: 67 67 35 Width: 9 Flags: W EndChar StartChar: D Encoding: 68 68 36 Width: 10 Flags: W EndChar StartChar: E Encoding: 69 69 37 Width: 9 Flags: W EndChar StartChar: F Encoding: 70 70 38 Width: 8 Flags: W EndChar StartChar: G Encoding: 71 71 39 Width: 10 Flags: W EndChar StartChar: H Encoding: 72 72 40 Width: 10 Flags: W EndChar StartChar: I Encoding: 73 73 41 Width: 4 Flags: W EndChar StartChar: J Encoding: 74 74 42 Width: 7 Flags: W EndChar StartChar: K Encoding: 75 75 43 Width: 9 Flags: W EndChar StartChar: L Encoding: 76 76 44 Width: 8 Flags: W EndChar StartChar: M Encoding: 77 77 45 Width: 12 Flags: W EndChar StartChar: N Encoding: 78 78 46 Width: 10 Flags: W EndChar StartChar: O Encoding: 79 79 47 Width: 10 Flags: W EndChar StartChar: P Encoding: 80 80 48 Width: 9 Flags: W EndChar StartChar: Q Encoding: 81 81 49 Width: 10 Flags: W EndChar StartChar: R Encoding: 82 82 50 Width: 10 Flags: W EndChar StartChar: S Encoding: 83 83 51 Width: 9 Flags: W EndChar StartChar: T Encoding: 84 84 52 Width: 8 Flags: W EndChar StartChar: U Encoding: 85 85 53 Width: 10 Flags: W EndChar StartChar: V Encoding: 86 86 54 Width: 8 Flags: W EndChar StartChar: W Encoding: 87 87 55 Width: 14 Flags: W EndChar StartChar: X Encoding: 88 88 56 Width: 9 Flags: W EndChar StartChar: Y Encoding: 89 89 57 Width: 10 Flags: W EndChar StartChar: Z Encoding: 90 90 58 Width: 9 Flags: W EndChar StartChar: bracketleft Encoding: 91 91 59 Width: 4 Flags: W EndChar StartChar: backslash Encoding: 92 92 60 Width: 4 Flags: W EndChar StartChar: bracketright Encoding: 93 93 61 Width: 4 Flags: W EndChar StartChar: asciicircum Encoding: 94 94 62 Width: 5 Flags: W EndChar StartChar: underscore Encoding: 95 95 63 Width: 8 Flags: W EndChar StartChar: grave Encoding: 96 96 64 Width: 5 Flags: W EndChar StartChar: a Encoding: 97 97 65 Width: 8 Flags: W EndChar StartChar: b Encoding: 98 98 66 Width: 8 Flags: W EndChar StartChar: c Encoding: 99 99 67 Width: 7 Flags: W EndChar StartChar: d Encoding: 100 100 68 Width: 8 Flags: W EndChar StartChar: e Encoding: 101 101 69 Width: 8 Flags: W EndChar StartChar: f Encoding: 102 102 70 Width: 4 Flags: W EndChar StartChar: g Encoding: 103 103 71 Width: 8 Flags: W EndChar StartChar: h Encoding: 104 104 72 Width: 8 Flags: W EndChar StartChar: i Encoding: 105 105 73 Width: 4 Flags: W EndChar StartChar: j Encoding: 106 106 74 Width: 4 Flags: W EndChar StartChar: k Encoding: 107 107 75 Width: 7 Flags: W EndChar StartChar: l Encoding: 108 108 76 Width: 4 Flags: W EndChar StartChar: m Encoding: 109 109 77 Width: 12 Flags: W EndChar StartChar: n Encoding: 110 110 78 Width: 8 Flags: W EndChar StartChar: o Encoding: 111 111 79 Width: 8 Flags: W EndChar StartChar: p Encoding: 112 112 80 Width: 8 Flags: W EndChar StartChar: q Encoding: 113 113 81 Width: 8 Flags: W EndChar StartChar: r Encoding: 114 114 82 Width: 5 Flags: W EndChar StartChar: s Encoding: 115 115 83 Width: 8 Flags: W EndChar StartChar: t Encoding: 116 116 84 Width: 4 Flags: W EndChar StartChar: u Encoding: 117 117 85 Width: 8 Flags: W EndChar StartChar: v Encoding: 118 118 86 Width: 8 Flags: W EndChar StartChar: w Encoding: 119 119 87 Width: 10 Flags: W EndChar StartChar: x Encoding: 120 120 88 Width: 8 Flags: W EndChar StartChar: y Encoding: 121 121 89 Width: 8 Flags: W EndChar StartChar: z Encoding: 122 122 90 Width: 8 Flags: W EndChar StartChar: braceleft Encoding: 123 123 91 Width: 5 Flags: W EndChar StartChar: bar Encoding: 124 124 92 Width: 4 Flags: W EndChar StartChar: braceright Encoding: 125 125 93 Width: 5 Flags: W EndChar StartChar: asciitilde Encoding: 126 126 94 Width: 5 Flags: W EndChar StartChar: uni007F Encoding: 127 127 95 Width: 4 Flags: W EndChar StartChar: uni0081 Encoding: 129 129 96 Width: 4 Flags: W EndChar StartChar: uni0083 Encoding: 131 131 97 Width: 4 Flags: W EndChar StartChar: uni0088 Encoding: 136 136 98 Width: 4 Flags: W EndChar StartChar: uni0090 Encoding: 144 144 99 Width: 4 Flags: W EndChar StartChar: uni0098 Encoding: 152 152 100 Width: 4 Flags: W EndChar StartChar: nonbreakingspace Encoding: 160 160 101 Width: 9 Flags: W EndChar StartChar: exclamdown Encoding: 161 161 102 Width: 4 Flags: W EndChar StartChar: cent Encoding: 162 162 103 Width: 8 Flags: W EndChar StartChar: sterling Encoding: 163 163 104 Width: 8 Flags: W EndChar StartChar: currency Encoding: 164 164 105 Width: 8 Flags: W EndChar StartChar: yen Encoding: 165 165 106 Width: 8 Flags: W EndChar StartChar: brokenbar Encoding: 166 166 107 Width: 4 Flags: W EndChar StartChar: section Encoding: 167 167 108 Width: 8 Flags: W EndChar StartChar: dieresis Encoding: 168 168 109 Width: 5 Flags: W Ligature: 0 1 'liga' space uni0308 EndChar StartChar: copyright Encoding: 169 169 110 Width: 10 Flags: W EndChar StartChar: ordfeminine Encoding: 170 170 111 Width: 5 Flags: W EndChar StartChar: guillemotleft Encoding: 171 171 112 Width: 7 Flags: W EndChar StartChar: logicalnot Encoding: 172 172 113 Width: 8 Flags: W EndChar StartChar: softhyphen Encoding: 173 173 114 Width: 4 Flags: W EndChar StartChar: registered Encoding: 174 174 115 Width: 10 Flags: W EndChar StartChar: macron Encoding: 175 175 116 Width: 8 Flags: W Ligature: 0 1 'liga' space uni0304 EndChar StartChar: degree Encoding: 176 176 117 Width: 5 Flags: W EndChar StartChar: plusminus Encoding: 177 177 118 Width: 8 Flags: W EndChar StartChar: uni00B2 Encoding: 178 178 119 Width: 4 Flags: W EndChar StartChar: uni00B3 Encoding: 179 179 120 Width: 4 Flags: W EndChar StartChar: acute Encoding: 180 180 121 Width: 5 Flags: W Ligature: 0 1 'liga' space acutecomb EndChar StartChar: mu Encoding: 181 181 122 Width: 8 Flags: W EndChar StartChar: paragraph Encoding: 182 182 123 Width: 7 Flags: W EndChar StartChar: periodcentered Encoding: 183 183 124 Width: 4 Flags: W EndChar StartChar: cedilla Encoding: 184 184 125 Width: 5 Flags: W Ligature: 0 1 'liga' space uni0327 EndChar StartChar: uni00B9 Encoding: 185 185 126 Width: 4 Flags: W EndChar StartChar: ordmasculine Encoding: 186 186 127 Width: 5 Flags: W EndChar StartChar: guillemotright Encoding: 187 187 128 Width: 7 Flags: W EndChar StartChar: onequarter Encoding: 188 188 129 Width: 11 Flags: W Ligature: 0 1 'frac' one slash four Ligature: 0 1 'frac' one fraction four EndChar StartChar: onehalf Encoding: 189 189 130 Width: 11 Flags: W Ligature: 0 1 'frac' one slash two Ligature: 0 1 'frac' one fraction two EndChar StartChar: threequarters Encoding: 190 190 131 Width: 11 Flags: W Ligature: 0 1 'frac' three slash four Ligature: 0 1 'frac' three fraction four EndChar StartChar: questiondown Encoding: 191 191 132 Width: 8 Flags: W EndChar StartChar: Agrave Encoding: 192 192 133 Width: 8 Flags: W Ligature: 0 0 'liga' A gravecomb EndChar StartChar: Aacute Encoding: 193 193 134 Width: 8 Flags: W Ligature: 0 0 'liga' A acutecomb EndChar StartChar: Acircumflex Encoding: 194 194 135 Width: 8 Flags: W Ligature: 0 0 'liga' A uni0302 EndChar StartChar: Atilde Encoding: 195 195 136 Width: 8 Flags: W Ligature: 0 0 'liga' A tildecomb EndChar StartChar: Adieresis Encoding: 196 196 137 Width: 8 Flags: W Ligature: 0 0 'liga' A uni0308 EndChar StartChar: idieresis Encoding: 239 239 138 Width: 4 Flags: W Ligature: 0 0 'liga' i uni0308 EndChar StartChar: eth Encoding: 240 240 139 Width: 8 Flags: W EndChar StartChar: ntilde Encoding: 241 241 140 Width: 8 Flags: W Ligature: 0 0 'liga' n tildecomb EndChar StartChar: ograve Encoding: 242 242 141 Width: 8 Flags: W Ligature: 0 0 'liga' o gravecomb EndChar StartChar: oacute Encoding: 243 243 142 Width: 8 Flags: W Ligature: 0 0 'liga' o acutecomb EndChar StartChar: ocircumflex Encoding: 244 244 143 Width: 8 Flags: W Ligature: 0 0 'liga' o uni0302 EndChar StartChar: otilde Encoding: 245 245 144 Width: 8 Flags: W Ligature: 0 0 'liga' o tildecomb EndChar StartChar: odieresis Encoding: 246 246 145 Width: 8 Flags: W Ligature: 0 0 'liga' o uni0308 EndChar StartChar: divide Encoding: 247 247 146 Width: 6 Flags: W EndChar StartChar: oslash Encoding: 248 248 147 Width: 8 Flags: W EndChar StartChar: ugrave Encoding: 249 249 148 Width: 8 Flags: W Ligature: 0 0 'liga' u gravecomb EndChar StartChar: uacute Encoding: 250 250 149 Width: 8 Flags: W Ligature: 0 0 'liga' u acutecomb EndChar StartChar: ucircumflex Encoding: 251 251 150 Width: 8 Flags: W Ligature: 0 0 'liga' u uni0302 EndChar StartChar: udieresis Encoding: 252 252 151 Width: 8 Flags: W Ligature: 0 0 'liga' u uni0308 EndChar StartChar: yacute Encoding: 253 253 152 Width: 8 Flags: W Ligature: 0 0 'liga' y acutecomb EndChar StartChar: thorn Encoding: 254 254 153 Width: 8 Flags: W EndChar StartChar: ydieresis Encoding: 255 255 154 Width: 8 Flags: W Ligature: 0 0 'liga' y uni0308 EndChar StartChar: Abreve Encoding: 258 258 155 Width: 8 Flags: W EndChar StartChar: abreve Encoding: 259 259 156 Width: 8 Flags: W EndChar StartChar: Aogonek Encoding: 260 260 157 Width: 8 Flags: W EndChar StartChar: aogonek Encoding: 261 261 158 Width: 8 Flags: W EndChar StartChar: Cacute Encoding: 262 262 159 Width: 9 Flags: W EndChar StartChar: cacute Encoding: 263 263 160 Width: 7 Flags: W EndChar StartChar: Ccaron Encoding: 268 268 161 Width: 9 Flags: W EndChar StartChar: ccaron Encoding: 269 269 162 Width: 7 Flags: W EndChar StartChar: Dcaron Encoding: 270 270 163 Width: 10 Flags: W EndChar StartChar: dcaron Encoding: 271 271 164 Width: 11 Flags: W EndChar StartChar: Dcroat Encoding: 272 272 165 Width: 10 Flags: W EndChar StartChar: dcroat Encoding: 273 273 166 Width: 8 Flags: W EndChar StartChar: Eogonek Encoding: 280 280 167 Width: 9 Flags: W EndChar StartChar: eogonek Encoding: 281 281 168 Width: 8 Flags: W EndChar StartChar: Ecaron Encoding: 282 282 169 Width: 9 Flags: W EndChar StartChar: ecaron Encoding: 283 283 170 Width: 8 Flags: W EndChar StartChar: Lacute Encoding: 313 313 171 Width: 8 Flags: W EndChar StartChar: lacute Encoding: 314 314 172 Width: 4 Flags: W EndChar StartChar: Lcaron Encoding: 317 317 173 Width: 8 Flags: W EndChar StartChar: lcaron Encoding: 318 318 174 Width: 7 Flags: W EndChar StartChar: Lslash Encoding: 321 321 175 Width: 10 Flags: W EndChar StartChar: lslash Encoding: 322 322 176 Width: 7 Flags: W EndChar StartChar: Nacute Encoding: 323 323 177 Width: 10 Flags: W EndChar StartChar: nacute Encoding: 324 324 178 Width: 8 Flags: W EndChar StartChar: Ncaron Encoding: 327 327 179 Width: 10 Flags: W EndChar StartChar: ncaron Encoding: 328 328 180 Width: 8 Flags: W EndChar StartChar: Ohungarumlaut Encoding: 336 336 181 Width: 10 Flags: W EndChar StartChar: ohungarumlaut Encoding: 337 337 182 Width: 8 Flags: W EndChar StartChar: uni008D Encoding: 141 141 183 Width: 4 Flags: W EndChar StartChar: uni008F Encoding: 143 143 184 Width: 4 Flags: W EndChar StartChar: uni009D Encoding: 157 157 185 Width: 4 Flags: W EndChar StartChar: Aring Encoding: 197 197 186 Width: 8 Flags: W Ligature: 0 0 'liga' A uni030A EndChar StartChar: AE Encoding: 198 198 187 Width: 13 Flags: W EndChar StartChar: Ccedilla Encoding: 199 199 188 Width: 9 Flags: W Ligature: 0 0 'liga' C uni0327 EndChar StartChar: Egrave Encoding: 200 200 189 Width: 9 Flags: W Ligature: 0 0 'liga' E gravecomb EndChar StartChar: Eacute Encoding: 201 201 190 Width: 9 Flags: W Ligature: 0 0 'liga' E acutecomb EndChar StartChar: Ecircumflex Encoding: 202 202 191 Width: 9 Flags: W Ligature: 0 0 'liga' E uni0302 EndChar StartChar: Edieresis Encoding: 203 203 192 Width: 9 Flags: W Ligature: 0 0 'liga' E uni0308 EndChar StartChar: Igrave Encoding: 204 204 193 Width: 4 Flags: W Ligature: 0 0 'liga' I gravecomb EndChar StartChar: Iacute Encoding: 205 205 194 Width: 4 Flags: W Ligature: 0 0 'liga' I acutecomb EndChar StartChar: Icircumflex Encoding: 206 206 195 Width: 4 Flags: W Ligature: 0 0 'liga' I uni0302 EndChar StartChar: Idieresis Encoding: 207 207 196 Width: 4 Flags: W Ligature: 0 0 'liga' I uni0308 EndChar StartChar: Eth Encoding: 208 208 197 Width: 10 Flags: W EndChar StartChar: Ntilde Encoding: 209 209 198 Width: 10 Flags: W Ligature: 0 0 'liga' N tildecomb EndChar StartChar: Ograve Encoding: 210 210 199 Width: 10 Flags: W Ligature: 0 0 'liga' O gravecomb EndChar StartChar: Oacute Encoding: 211 211 200 Width: 10 Flags: W Ligature: 0 0 'liga' O acutecomb EndChar StartChar: Ocircumflex Encoding: 212 212 201 Width: 10 Flags: W Ligature: 0 0 'liga' O uni0302 EndChar StartChar: Otilde Encoding: 213 213 202 Width: 10 Flags: W Ligature: 0 0 'liga' O tildecomb EndChar StartChar: Odieresis Encoding: 214 214 203 Width: 10 Flags: W Ligature: 0 0 'liga' O uni0308 EndChar StartChar: multiply Encoding: 215 215 204 Width: 8 Flags: W EndChar StartChar: Oslash Encoding: 216 216 205 Width: 10 Flags: W EndChar StartChar: Ugrave Encoding: 217 217 206 Width: 10 Flags: W Ligature: 0 0 'liga' U gravecomb EndChar StartChar: Uacute Encoding: 218 218 207 Width: 10 Flags: W Ligature: 0 0 'liga' U acutecomb EndChar StartChar: Ucircumflex Encoding: 219 219 208 Width: 10 Flags: W Ligature: 0 0 'liga' U uni0302 EndChar StartChar: Udieresis Encoding: 220 220 209 Width: 10 Flags: W Ligature: 0 0 'liga' U uni0308 EndChar StartChar: Yacute Encoding: 221 221 210 Width: 10 Flags: W Ligature: 0 0 'liga' Y acutecomb EndChar StartChar: Thorn Encoding: 222 222 211 Width: 9 Flags: W EndChar StartChar: germandbls Encoding: 223 223 212 Width: 8 Flags: W EndChar StartChar: agrave Encoding: 224 224 213 Width: 8 Flags: W Ligature: 0 0 'liga' a gravecomb EndChar StartChar: aacute Encoding: 225 225 214 Width: 8 Flags: W Ligature: 0 0 'liga' a acutecomb EndChar StartChar: acircumflex Encoding: 226 226 215 Width: 8 Flags: W Ligature: 0 0 'liga' a uni0302 EndChar StartChar: atilde Encoding: 227 227 216 Width: 8 Flags: W Ligature: 0 0 'liga' a tildecomb EndChar StartChar: adieresis Encoding: 228 228 217 Width: 8 Flags: W Ligature: 0 0 'liga' a uni0308 EndChar StartChar: aring Encoding: 229 229 218 Width: 8 Flags: W Ligature: 0 0 'liga' a uni030A EndChar StartChar: ae Encoding: 230 230 219 Width: 12 Flags: W EndChar StartChar: ccedilla Encoding: 231 231 220 Width: 7 Flags: W Ligature: 0 0 'liga' c uni0327 EndChar StartChar: egrave Encoding: 232 232 221 Width: 8 Flags: W Ligature: 0 0 'liga' e gravecomb EndChar StartChar: eacute Encoding: 233 233 222 Width: 8 Flags: W Ligature: 0 0 'liga' e acutecomb EndChar StartChar: ecircumflex Encoding: 234 234 223 Width: 8 Flags: W Ligature: 0 0 'liga' e uni0302 EndChar StartChar: edieresis Encoding: 235 235 224 Width: 8 Flags: W Ligature: 0 0 'liga' e uni0308 EndChar StartChar: igrave Encoding: 236 236 225 Width: 4 Flags: W Ligature: 0 0 'liga' i gravecomb EndChar StartChar: iacute Encoding: 237 237 226 Width: 4 Flags: W Ligature: 0 0 'liga' i acutecomb EndChar StartChar: icircumflex Encoding: 238 238 227 Width: 4 Flags: W Ligature: 0 0 'liga' i uni0302 EndChar StartChar: OE Encoding: 338 338 228 Width: 4 Flags: W EndChar StartChar: oe Encoding: 339 339 229 Width: 4 Flags: W EndChar StartChar: Racute Encoding: 340 340 230 Width: 10 Flags: W EndChar StartChar: racute Encoding: 341 341 231 Width: 5 Flags: W EndChar StartChar: Rcaron Encoding: 344 344 232 Width: 10 Flags: W EndChar StartChar: rcaron Encoding: 345 345 233 Width: 6 Flags: W EndChar StartChar: Sacute Encoding: 346 346 234 Width: 9 Flags: W EndChar StartChar: sacute Encoding: 347 347 235 Width: 8 Flags: W EndChar StartChar: Scedilla Encoding: 350 350 236 Width: 9 Flags: W EndChar StartChar: scedilla Encoding: 351 351 237 Width: 8 Flags: W EndChar StartChar: Scaron Encoding: 352 352 238 Width: 9 Flags: W Ligature: 0 0 'liga' S uni030C EndChar StartChar: scaron Encoding: 353 353 239 Width: 8 Flags: W Ligature: 0 0 'liga' s uni030C EndChar StartChar: Tcommaaccent Encoding: 354 354 240 Width: 8 Flags: W EndChar StartChar: tcommaaccent Encoding: 355 355 241 Width: 4 Flags: W EndChar StartChar: Tcaron Encoding: 356 356 242 Width: 8 Flags: W EndChar StartChar: tcaron Encoding: 357 357 243 Width: 7 Flags: W EndChar StartChar: Uring Encoding: 366 366 244 Width: 10 Flags: W EndChar StartChar: uring Encoding: 367 367 245 Width: 8 Flags: W EndChar StartChar: Uhungarumlaut Encoding: 368 368 246 Width: 10 Flags: W EndChar StartChar: uhungarumlaut Encoding: 369 369 247 Width: 8 Flags: W EndChar StartChar: Ydieresis Encoding: 376 376 248 Width: 4 Flags: W Ligature: 0 0 'liga' Y uni0308 EndChar StartChar: Zacute Encoding: 377 377 249 Width: 9 Flags: W EndChar StartChar: zacute Encoding: 378 378 250 Width: 8 Flags: W EndChar StartChar: Zdotaccent Encoding: 379 379 251 Width: 9 Flags: W EndChar StartChar: zdotaccent Encoding: 380 380 252 Width: 8 Flags: W EndChar StartChar: Zcaron Encoding: 381 381 253 Width: 9 Flags: W Ligature: 0 0 'liga' Z uni030C EndChar StartChar: zcaron Encoding: 382 382 254 Width: 4 Flags: W Ligature: 0 0 'liga' z uni030C EndChar StartChar: florin Encoding: 402 402 255 Width: 4 Flags: W EndChar StartChar: circumflex Encoding: 710 710 256 Width: 4 Flags: W EndChar StartChar: caron Encoding: 711 711 257 Width: 7 Flags: W EndChar StartChar: breve Encoding: 728 728 258 Width: 9 Flags: W EndChar StartChar: dotaccent Encoding: 729 729 259 Width: 4 Flags: W EndChar StartChar: ogonek Encoding: 731 731 260 Width: 5 Flags: W EndChar StartChar: tilde Encoding: 732 732 261 Width: 4 Flags: W Ligature: 0 1 'liga' space tildecomb EndChar StartChar: hungarumlaut Encoding: 733 733 262 Width: 9 Flags: W EndChar StartChar: afii10017 Encoding: 1040 1040 263 Width: 8 Flags: W EndChar StartChar: afii10018 Encoding: 1041 1041 264 Width: 10 Flags: W EndChar StartChar: afii10019 Encoding: 1042 1042 265 Width: 10 Flags: W EndChar StartChar: afii10020 Encoding: 1043 1043 266 Width: 8 Flags: W EndChar StartChar: afii10021 Encoding: 1044 1044 267 Width: 12 Flags: W EndChar StartChar: afii10022 Encoding: 1045 1045 268 Width: 9 Flags: W EndChar StartChar: afii10024 Encoding: 1046 1046 269 Width: 14 Flags: W EndChar StartChar: afii10025 Encoding: 1047 1047 270 Width: 10 Flags: W EndChar StartChar: afii10026 Encoding: 1048 1048 271 Width: 10 Flags: W EndChar StartChar: afii10027 Encoding: 1049 1049 272 Width: 10 Flags: W EndChar StartChar: afii10028 Encoding: 1050 1050 273 Width: 9 Flags: W EndChar StartChar: afii10029 Encoding: 1051 1051 274 Width: 9 Flags: W EndChar StartChar: afii10030 Encoding: 1052 1052 275 Width: 12 Flags: W EndChar StartChar: afii10031 Encoding: 1053 1053 276 Width: 10 Flags: W EndChar StartChar: afii10032 Encoding: 1054 1054 277 Width: 10 Flags: W EndChar StartChar: afii10033 Encoding: 1055 1055 278 Width: 10 Flags: W EndChar StartChar: afii10034 Encoding: 1056 1056 279 Width: 9 Flags: W EndChar StartChar: afii10035 Encoding: 1057 1057 280 Width: 9 Flags: W EndChar StartChar: afii10036 Encoding: 1058 1058 281 Width: 8 Flags: W EndChar StartChar: afii10037 Encoding: 1059 1059 282 Width: 9 Flags: W EndChar StartChar: afii10038 Encoding: 1060 1060 283 Width: 14 Flags: W EndChar StartChar: afii10039 Encoding: 1061 1061 284 Width: 9 Flags: W EndChar StartChar: afii10040 Encoding: 1062 1062 285 Width: 10 VWidth: 13 Flags: W EndChar StartChar: afii10041 Encoding: 1063 1063 286 Width: 8 Flags: W EndChar StartChar: afii10042 Encoding: 1064 1064 287 Width: 12 Flags: W EndChar StartChar: afii10043 Encoding: 1065 1065 288 Width: 13 Flags: W EndChar StartChar: afii10044 Encoding: 1066 1066 289 Width: 10 Flags: W EndChar StartChar: afii10045 Encoding: 1067 1067 290 Width: 12 Flags: W EndChar StartChar: afii10046 Encoding: 1068 1068 291 Width: 9 Flags: W EndChar StartChar: afii10047 Encoding: 1069 1069 292 Width: 9 Flags: W EndChar StartChar: afii10048 Encoding: 1070 1070 293 Width: 12 Flags: W EndChar StartChar: afii10049 Encoding: 1071 1071 294 Width: 9 Flags: W EndChar StartChar: afii10065 Encoding: 1072 1072 295 Width: 8 Flags: W EndChar StartChar: afii10066 Encoding: 1073 1073 296 Width: 8 Flags: W EndChar StartChar: afii10067 Encoding: 1074 1074 297 Width: 8 Flags: W EndChar StartChar: afii10068 Encoding: 1075 1075 298 Width: 6 Flags: W EndChar StartChar: afii10069 Encoding: 1076 1076 299 Width: 10 Flags: W EndChar StartChar: afii10070 Encoding: 1077 1077 300 Width: 8 Flags: W EndChar StartChar: afii10072 Encoding: 1078 1078 301 Width: 10 Flags: W EndChar StartChar: afii10073 Encoding: 1079 1079 302 Width: 8 Flags: W EndChar StartChar: afii10074 Encoding: 1080 1080 303 Width: 8 Flags: W EndChar StartChar: afii10075 Encoding: 1081 1081 304 Width: 8 Flags: W EndChar StartChar: afii10076 Encoding: 1082 1082 305 Width: 7 Flags: W EndChar StartChar: afii10077 Encoding: 1083 1083 306 Width: 8 Flags: W EndChar StartChar: afii10078 Encoding: 1084 1084 307 Width: 9 Flags: W EndChar StartChar: afii10079 Encoding: 1085 1085 308 Width: 8 Flags: W EndChar StartChar: afii10080 Encoding: 1086 1086 309 Width: 8 Flags: W EndChar StartChar: afii10081 Encoding: 1087 1087 310 Width: 8 Flags: W EndChar StartChar: afii10082 Encoding: 1088 1088 311 Width: 8 Flags: W EndChar StartChar: afii10083 Encoding: 1089 1089 312 Width: 7 Flags: W EndChar StartChar: afii10084 Encoding: 1090 1090 313 Width: 6 Flags: W EndChar StartChar: afii10085 Encoding: 1091 1091 314 Width: 8 Flags: W EndChar StartChar: afii10086 Encoding: 1092 1092 315 Width: 12 Flags: W EndChar StartChar: afii10087 Encoding: 1093 1093 316 Width: 8 Flags: W EndChar StartChar: afii10088 Encoding: 1094 1094 317 Width: 8 Flags: W EndChar StartChar: afii10089 Encoding: 1095 1095 318 Width: 8 Flags: W EndChar StartChar: afii10090 Encoding: 1096 1096 319 Width: 12 Flags: W EndChar StartChar: afii10091 Encoding: 1097 1097 320 Width: 12 Flags: W EndChar StartChar: afii10092 Encoding: 1098 1098 321 Width: 8 Flags: W EndChar StartChar: afii10093 Encoding: 1099 1099 322 Width: 10 Flags: W EndChar StartChar: afii10094 Encoding: 1100 1100 323 Width: 7 Flags: W EndChar StartChar: afii10095 Encoding: 1101 1101 324 Width: 7 Flags: W EndChar StartChar: afii10096 Encoding: 1102 1102 325 Width: 11 Flags: W EndChar StartChar: afii10097 Encoding: 1103 1103 326 Width: 7 Flags: W EndChar StartChar: endash Encoding: 8211 8211 327 Width: 6 Flags: W EndChar StartChar: emdash Encoding: 8212 8212 328 Width: 9 Flags: W EndChar StartChar: quoteleft Encoding: 8216 8216 329 Width: 4 Flags: W EndChar StartChar: quoteright Encoding: 8217 8217 330 Width: 4 Flags: W EndChar StartChar: quotesinglbase Encoding: 8218 8218 331 Width: 5 Flags: W EndChar StartChar: quotedblleft Encoding: 8220 8220 332 Width: 7 Flags: W EndChar StartChar: quotedblright Encoding: 8221 8221 333 Width: 7 Flags: W EndChar StartChar: quotedblbase Encoding: 8222 8222 334 Width: 6 Flags: W EndChar StartChar: dagger Encoding: 8224 8224 335 Width: 10 Flags: W EndChar StartChar: daggerdbl Encoding: 8225 8225 336 Width: 10 Flags: W EndChar StartChar: bullet Encoding: 8226 8226 337 Width: 7 Flags: W EndChar StartChar: ellipsis Encoding: 8230 8230 338 Width: 8 Flags: W Ligature: 0 1 'liga' period period period EndChar StartChar: perthousand Encoding: 8240 8240 339 Width: 15 Flags: W EndChar StartChar: guilsinglleft Encoding: 8249 8249 340 Width: 8 Flags: W EndChar StartChar: guilsinglright Encoding: 8250 8250 341 Width: 7 Flags: W EndChar StartChar: Euro Encoding: 8364 8364 342 Width: 4 Flags: W EndChar StartChar: trademark Encoding: 8482 8482 343 Width: 9 Flags: W Ligature: 0 1 'liga' T M EndChar StartChar: afii61352 Encoding: 8470 8470 344 Width: 14 Flags: W TeX: 97 0 0 0 EndChar StartChar: afii10023 Encoding: 1025 1025 345 Width: 9 Flags: W TeX: 97 0 0 0 EndChar StartChar: afii10071 Encoding: 1105 1105 346 Width: 8 Flags: W TeX: 97 0 0 0 EndChar StartChar: uni20A9 Encoding: 8361 8361 347 Width: 9 Flags: W TeX: 117 0 0 0 EndChar StartChar: NameMe-138 Encoding: 138 138 348 Width: 4 Flags: W TeX: 78 0 0 0 EndChar StartChar: NameMe-140 Encoding: 140 140 349 Width: 4 Flags: W TeX: 78 0 0 0 EndChar StartChar: NameMe-142 Encoding: 142 142 350 Width: 4 Flags: W TeX: 78 0 0 0 EndChar StartChar: NameMe-154 Encoding: 154 154 351 Width: 4 Flags: W TeX: 78 0 0 0 EndChar StartChar: NameMe-156 Encoding: 156 156 352 Width: 4 Flags: W TeX: 78 0 0 0 EndChar StartChar: NameMe-158 Encoding: 158 158 353 Width: 4 Flags: W TeX: 78 0 0 0 EndChar StartChar: NameMe-159 Encoding: 159 159 354 Width: 4 Flags: W TeX: 78 0 0 0 EndChar StartChar: afii00208 Encoding: 8213 8213 355 Width: 8 Flags: W TeX: 97 0 0 0 EndChar StartChar: Alpha Encoding: 913 913 356 Width: 9 Flags: W TeX: 65 0 0 0 EndChar StartChar: Beta Encoding: 914 914 357 Width: 9 Flags: W TeX: 66 0 0 0 EndChar StartChar: Gamma Encoding: 915 915 358 Width: 8 Flags: W TeX: 71 0 0 0 EndChar StartChar: uni0394 Encoding: 916 916 359 Width: 9 Flags: W TeX: 117 0 0 0 EndChar StartChar: Epsilon Encoding: 917 917 360 Width: 8 Flags: W TeX: 69 0 0 0 EndChar StartChar: Zeta Encoding: 918 918 361 Width: 10 Flags: W TeX: 90 0 0 0 EndChar StartChar: Eta Encoding: 919 919 362 Width: 9 Flags: W TeX: 69 0 0 0 EndChar StartChar: Theta Encoding: 920 920 363 Width: 9 Flags: W TeX: 84 0 0 0 EndChar StartChar: Iota Encoding: 921 921 364 Width: 3 Flags: W TeX: 73 0 0 0 EndChar StartChar: Kappa Encoding: 922 922 365 Width: 8 Flags: W TeX: 75 0 0 0 EndChar StartChar: Lambda Encoding: 923 923 366 Width: 9 Flags: W TeX: 76 0 0 0 EndChar StartChar: Mu Encoding: 924 924 367 Width: 10 Flags: W TeX: 77 0 0 0 EndChar StartChar: Nu Encoding: 925 925 368 Width: 9 Flags: W TeX: 78 0 0 0 EndChar StartChar: Xi Encoding: 926 926 369 Width: 8 Flags: W TeX: 88 0 0 0 EndChar StartChar: Omicron Encoding: 927 927 370 Width: 9 Flags: W TeX: 79 0 0 0 EndChar StartChar: Pi Encoding: 928 928 371 Width: 9 Flags: W TeX: 80 0 0 0 EndChar StartChar: Rho Encoding: 929 929 372 Width: 9 Flags: W TeX: 82 0 0 0 EndChar StartChar: uni03A2 Encoding: 930 930 373 Width: 16 TeX: 117 0 0 0 EndChar StartChar: Sigma Encoding: 931 931 374 Width: 8 Flags: W TeX: 83 0 0 0 EndChar StartChar: Tau Encoding: 932 932 375 Width: 9 Flags: W TeX: 84 0 0 0 EndChar StartChar: Upsilon Encoding: 933 933 376 Width: 9 Flags: W TeX: 85 0 0 0 EndChar StartChar: Phi Encoding: 934 934 377 Width: 9 Flags: W TeX: 80 0 0 0 EndChar StartChar: Chi Encoding: 935 935 378 Width: 8 Flags: W TeX: 67 0 0 0 EndChar StartChar: Psi Encoding: 936 936 379 Width: 9 Flags: W TeX: 80 0 0 0 EndChar StartChar: uni03A9 Encoding: 937 937 380 Width: 10 Flags: W TeX: 117 0 0 0 EndChar StartChar: Iotadieresis Encoding: 938 938 381 Width: 7 Flags: W TeX: 73 0 0 0 EndChar StartChar: Upsilondieresis Encoding: 939 939 382 Width: 9 Flags: W TeX: 85 0 0 0 EndChar StartChar: alphatonos Encoding: 940 940 383 Width: 8 Flags: W TeX: 97 0 0 0 EndChar StartChar: epsilontonos Encoding: 941 941 384 Width: 7 Flags: W TeX: 101 0 0 0 EndChar StartChar: etatonos Encoding: 942 942 385 Width: 7 Flags: W TeX: 101 0 0 0 EndChar StartChar: iotatonos Encoding: 943 943 386 Width: 4 Flags: W TeX: 105 0 0 0 EndChar StartChar: upsilondieresistonos Encoding: 944 944 387 Width: 9 Flags: W TeX: 117 0 0 0 EndChar StartChar: alpha Encoding: 945 945 388 Width: 8 Flags: W TeX: 97 0 0 0 EndChar StartChar: beta Encoding: 946 946 389 Width: 7 Flags: W TeX: 98 0 0 0 EndChar StartChar: gamma Encoding: 947 947 390 Width: 7 Flags: W TeX: 103 0 0 0 EndChar StartChar: delta Encoding: 948 948 391 Width: 7 Flags: W TeX: 100 0 0 0 EndChar StartChar: epsilon Encoding: 949 949 392 Width: 7 Flags: W TeX: 101 0 0 0 EndChar StartChar: zeta Encoding: 950 950 393 Width: 6 Flags: W TeX: 122 0 0 0 EndChar StartChar: eta Encoding: 951 951 394 Width: 7 Flags: W TeX: 101 0 0 0 EndChar StartChar: theta Encoding: 952 952 395 Width: 7 Flags: W TeX: 116 0 0 0 EndChar StartChar: iota Encoding: 953 953 396 Width: 4 Flags: W TeX: 105 0 0 0 EndChar StartChar: kappa Encoding: 954 954 397 Width: 7 Flags: W TeX: 107 0 0 0 EndChar StartChar: lambda Encoding: 955 955 398 Width: 7 Flags: W TeX: 108 0 0 0 EndChar StartChar: uni03BC Encoding: 956 956 399 Width: 7 Flags: W TeX: 117 0 0 0 EndChar StartChar: nu Encoding: 957 957 400 Width: 7 Flags: W TeX: 110 0 0 0 EndChar StartChar: xi Encoding: 958 958 401 Width: 7 Flags: W TeX: 120 0 0 0 EndChar StartChar: omicron Encoding: 959 959 402 Width: 7 Flags: W TeX: 111 0 0 0 EndChar StartChar: pi Encoding: 960 960 403 Width: 7 Flags: W TeX: 112 0 0 0 EndChar StartChar: rho Encoding: 961 961 404 Width: 7 Flags: W TeX: 114 0 0 0 EndChar StartChar: sigma1 Encoding: 962 962 405 Width: 7 Flags: W TeX: 115 0 0 0 EndChar StartChar: sigma Encoding: 963 963 406 Width: 8 Flags: W TeX: 115 0 0 0 EndChar StartChar: tau Encoding: 964 964 407 Width: 7 Flags: W TeX: 116 0 0 0 EndChar StartChar: upsilon Encoding: 965 965 408 Width: 7 Flags: W TeX: 117 0 0 0 EndChar StartChar: phi Encoding: 966 966 409 Width: 9 Flags: W TeX: 112 0 0 0 EndChar StartChar: chi Encoding: 967 967 410 Width: 7 Flags: W TeX: 99 0 0 0 EndChar StartChar: psi Encoding: 968 968 411 Width: 9 Flags: W TeX: 112 0 0 0 EndChar StartChar: omega Encoding: 969 969 412 Width: 9 Flags: W TeX: 111 0 0 0 EndChar StartChar: iotadieresis Encoding: 970 970 413 Width: 6 Flags: W TeX: 105 0 0 0 EndChar StartChar: Alphatonos Encoding: 902 902 414 Width: 10 Flags: W TeX: 65 0 0 0 EndChar StartChar: dieresistonos Encoding: 901 901 415 Width: 8 Flags: W TeX: 100 0 0 0 EndChar StartChar: tonos Encoding: 900 900 416 Width: 5 Flags: W TeX: 116 0 0 0 EndChar StartChar: anoteleia Encoding: 903 903 417 Width: 16 TeX: 97 0 0 0 EndChar StartChar: Epsilontonos Encoding: 904 904 418 Width: 9 Flags: W TeX: 69 0 0 0 EndChar StartChar: Etatonos Encoding: 905 905 419 Width: 10 Flags: W TeX: 69 0 0 0 EndChar StartChar: Iotatonos Encoding: 906 906 420 Width: 5 Flags: W TeX: 73 0 0 0 EndChar StartChar: uni038B Encoding: 907 907 421 Width: 16 TeX: 117 0 0 0 EndChar StartChar: Omicrontonos Encoding: 908 908 422 Width: 10 Flags: W TeX: 79 0 0 0 EndChar StartChar: uni038D Encoding: 909 909 423 Width: 16 TeX: 117 0 0 0 EndChar StartChar: Upsilontonos Encoding: 910 910 424 Width: 10 Flags: W TeX: 85 0 0 0 EndChar StartChar: Omegatonos Encoding: 911 911 425 Width: 11 Flags: W TeX: 79 0 0 0 EndChar StartChar: iotadieresistonos Encoding: 912 912 426 Width: 8 Flags: W TeX: 105 0 0 0 EndChar StartChar: upsilondieresis Encoding: 971 971 427 Width: 7 Flags: W TeX: 117 0 0 0 EndChar StartChar: omicrontonos Encoding: 972 972 428 Width: 7 Flags: W TeX: 111 0 0 0 EndChar StartChar: upsilontonos Encoding: 973 973 429 Width: 7 Flags: W TeX: 117 0 0 0 EndChar StartChar: omegatonos Encoding: 974 974 430 Width: 9 Flags: W TeX: 111 0 0 0 EndChar StartChar: uni03CF Encoding: 975 975 431 Width: 16 TeX: 117 0 0 0 EndChar StartChar: uni03D0 Encoding: 976 976 432 Width: 16 TeX: 117 0 0 0 EndChar StartChar: dotlessi Encoding: 305 305 433 Width: 16 Flags: W TeX: 0 0 0 0 EndChar StartChar: Idotaccent Encoding: 304 304 434 Width: 16 Flags: W TeX: 0 0 0 0 EndChar StartChar: gbreve Encoding: 287 287 435 Width: 16 Flags: W TeX: 0 0 0 0 EndChar StartChar: Gbreve Encoding: 286 286 436 Width: 16 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii57636 Encoding: 8362 8362 437 Width: 16 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii57664 Encoding: 1488 1488 438 Width: 12 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57665 Encoding: 1489 1489 439 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57666 Encoding: 1490 1490 440 Width: 8 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57667 Encoding: 1491 1491 441 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57668 Encoding: 1492 1492 442 Width: 11 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57669 Encoding: 1493 1493 443 Width: 5 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii57670 Encoding: 1494 1494 444 Width: 7 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii57671 Encoding: 1495 1495 445 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57690 Encoding: 1514 1514 446 Width: 750 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57688 Encoding: 1512 1512 447 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57687 Encoding: 1511 1511 448 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57673 Encoding: 1497 1497 449 Width: 16 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii57672 Encoding: 1496 1496 450 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57674 Encoding: 1498 1498 451 Width: 13 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57675 Encoding: 1499 1499 452 Width: 13 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57676 Encoding: 1500 1500 453 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57677 Encoding: 1501 1501 454 Width: 625 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57678 Encoding: 1502 1502 455 Width: 13 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57679 Encoding: 1503 1503 456 Width: 5 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii57680 Encoding: 1504 1504 457 Width: 375 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii57681 Encoding: 1505 1505 458 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57682 Encoding: 1506 1506 459 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57683 Encoding: 1507 1507 460 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57684 Encoding: 1508 1508 461 Width: 13 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57685 Encoding: 1509 1509 462 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57686 Encoding: 1510 1510 463 Width: 10 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii57689 Encoding: 1513 1513 464 Width: 11 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii10055 Encoding: 1030 1030 465 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10056 Encoding: 1031 1031 466 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10103 Encoding: 1110 1110 467 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10104 Encoding: 1111 1111 468 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10101 Encoding: 1108 1108 469 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10053 Encoding: 1028 1028 470 Width: 16 Flags: W TeX: 0 0 0 0 EndChar StartChar: afii10110 Encoding: 1118 1118 471 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10062 Encoding: 1038 1038 472 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10050 Encoding: 1168 1168 473 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar StartChar: afii10098 Encoding: 1169 1169 474 Width: 16 Flags: HW TeX: 0 0 0 0 EndChar EndChars BitmapFont: 16 475 13 3 1 BDFChar: 0 32 4 14 14 0 0 z BDFChar: 1 33 4 1 2 0 9 ^qdb$^qd_c^q]pM BDFChar: 2 34 6 0 5 7 9 bfn92 BDFChar: 3 35 8 0 7 0 9 2E$%C2Jd4/Chs(O BDFChar: 4 36 8 1 6 -2 10 0JIaq^qb1'%*WrM0E;(Q BDFChar: 5 37 11 0 10 0 9 E+%>6fmn,D"oo&3)8J%9@pm-g BDFChar: 6 38 9 1 7 0 9 Gg+CUG];B^b^'6h BDFChar: 7 39 4 1 2 7 9 ^qd_c BDFChar: 8 40 4 1 3 -3 9 @)0Rn^qdb$^qdb$?iU0, BDFChar: 9 41 4 0 2 -3 9 ^gLPX?smAM?smAM^]4?7 BDFChar: 10 42 6 0 5 4 9 0JNDYGXqf7 BDFChar: 11 43 8 1 6 1 7 0JG3Y0JG0\ BDFChar: 12 44 4 0 2 -1 1 ?spbM BDFChar: 13 45 4 0 3 4 4 n,NFg BDFChar: 14 46 4 1 2 0 1 ^q]pM BDFChar: 15 47 4 0 3 -2 9 0JG17?smAM^qdb$ BDFChar: 16 48 8 1 6 0 9 Gg+CUbfn;Tb]j*f BDFChar: 17 49 8 1 4 0 9 0^pbM0JG170JEJ, BDFChar: 18 50 8 1 6 0 9 Gg+A?(bf@5_#+04 BDFChar: 19 51 8 1 6 0 9 Gg$R)GROuhb]j*f BDFChar: 20 52 8 1 7 0 9 *'A%Rbfn<1$k*+9 BDFChar: 21 53 8 1 6 0 9 r4p+`prj-Tb]j*f BDFChar: 22 54 8 1 6 0 9 Gg*t=prpt+b]j*f BDFChar: 23 55 8 1 6 0 9 r!XDZ0JHmB^q]pM BDFChar: 24 56 8 1 6 0 9 Gg+CUGg+CUb]j*f BDFChar: 25 57 8 1 6 0 9 Gg+CUb^9g-b]j*f BDFChar: 26 58 4 1 2 0 7 ^q]pM!!'gM BDFChar: 27 59 4 0 2 -1 7 ?sis7!!$D7^]4?7 BDFChar: 28 60 8 1 6 0 8 $lC[+^gJi5$ig8- BDFChar: 29 61 8 1 6 3 6 qu?`p BDFChar: 30 62 8 1 6 0 8 ^gJi5$lC[+^]4?7 BDFChar: 31 63 8 1 6 0 9 Gg+A?(bdWD0JEJ, BDFChar: 32 64 14 1 12 -1 10 ++Q&\?sq;7fs'/6fs'0!`o(5)0]4%' BDFChar: 33 65 8 0 7 0 9 (`5@tAnGY(_nuHS BDFChar: 34 66 10 1 8 0 9 rklXkrklXk_u9W9 BDFChar: 35 67 9 1 8 0 9 4D)LH^qdb'Aip%n BDFChar: 36 68 10 1 8 0 9 r5QXl_o'C0`r#f: BDFChar: 37 69 9 1 7 0 9 rkQ=br4p+`_#=<6 BDFChar: 38 70 8 1 7 0 9 rkQ=br4p+`^q]pM BDFChar: 39 71 10 1 8 0 9 4D)LH^sBp9B0?4p BDFChar: 40 72 10 1 8 0 9 _o'C0s22al_nuHS BDFChar: 41 73 4 1 2 0 9 ^qdb$^qdb$^q]pM BDFChar: 42 74 7 0 5 0 9 $k*OQ$k*Qgb]j*f BDFChar: 43 75 9 1 8 0 9 `m!*)i:,CC`kqcV BDFChar: 44 76 8 1 7 0 9 ^qdb$^qdb$_#=<6 BDFChar: 45 77 12 1 10 0 9 ^qdb$iP=Efo>'t5hSA!`beVH< BDFChar: 46 78 10 1 8 0 9 _rKeKgY:&pa27lW BDFChar: 47 79 10 1 8 0 9 4D)LK_o'C0Aip%n BDFChar: 48 80 9 1 8 0 9 rklXk_u@He^q]pM BDFChar: 49 81 10 1 8 0 9 4D)LK_o'C!4RbK&(gn1g BDFChar: 56 88 9 0 8 0 9 _19@P@fSCe)uprY2?74e_19@P BDFChar: 57 89 10 0 9 0 9 ^qdb$@=U-6*WQTK$ig\9$ig\9 BDFChar: 58 90 9 0 8 0 9 s*t-#!rrN*$ih+E0E>J\^]=Cb BDFChar: 59 91 4 1 3 -3 9 i5!.D^qdb$^qdb$huE`W BDFChar: 60 92 4 0 3 -2 9 ^qdb$?smAM0JG17 BDFChar: 61 93 4 0 2 -3 9 i*]r#?smAM?smAMhuE`W BDFChar: 62 94 5 0 4 7 9 +E5s5 BDFChar: 63 95 8 0 7 -3 -3 rr<$! BDFChar: 64 96 5 1 4 8 10 ^gJhr BDFChar: 65 97 8 1 6 0 6 Gg$SDbfkG7 BDFChar: 66 98 8 1 6 0 9 ^qdb\bfn;TbkM/< BDFChar: 67 99 7 1 6 0 6 Gg*t=^s%$' BDFChar: 68 100 8 1 6 0 9 $k*Plbfn;Tb^9Bj BDFChar: 69 101 8 1 6 0 6 Gg+D,^s%$' BDFChar: 70 102 4 0 3 0 9 0OS;X?smAM?sis7 BDFChar: 71 103 8 1 6 -3 6 I*BgYbfkGCb]j*f BDFChar: 72 104 8 1 6 0 9 ^qdb\bfn;Tbfg%e BDFChar: 73 105 4 1 2 0 9 ^q]rc^qdb$^q]pM BDFChar: 74 106 4 0 2 -3 9 ?sitB?smAM?smAM^]4?7 BDFChar: 75 107 7 1 6 0 9 ^qdb0f^RhgfZX/beVH1B7CT BDFChar: 88 120 8 0 7 0 6 _e)"J4D)J2 BDFChar: 89 121 8 0 7 -3 6 _o$(u4?OGt0OOk\ BDFChar: 90 122 8 1 6 0 6 r!XDr@)2[? BDFChar: 91 123 5 1 4 -3 9 0OS9r?spcX?smAM0E;(Q BDFChar: 92 124 4 1 2 -3 9 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 93 125 5 0 3 -3 9 ^gLPX?skZr?smAM^]4?7 BDFChar: 94 126 5 0 4 8 9 kdUTm BDFChar: 95 127 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 96 129 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 97 131 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 98 136 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 99 144 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 100 152 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 101 160 9 0 0 0 0 z BDFChar: 102 161 4 1 2 0 9 ^q]rc^qdb$^q]pM BDFChar: 103 162 8 1 6 -1 7 &:!!Wd,=88+92BA BDFChar: 104 163 8 1 6 0 9 Gg*s2@/+,;_#+04 BDFChar: 105 164 8 1 6 4 9 b]lZLGg$-f BDFChar: 106 165 8 0 7 0 9 _o$(urttbQ(`35Q BDFChar: 107 166 4 1 2 -3 9 ^qdb$^q]rc^qdb$^]4?7 BDFChar: 108 167 8 1 6 0 9 Gg(-r=D0fVb]j*f BDFChar: 109 168 5 0 4 8 9 f[p0( BDFChar: 110 169 10 0 9 0 9 56,,BbeVZBd(n#Dd_O)B@=UQB BDFChar: 111 170 5 1 3 3 9 ^`_R.huM[8 BDFChar: 112 171 7 0 6 1 5 2Jh#^2?3^W BDFChar: 113 172 8 1 6 3 5 r!Wu6 BDFChar: 114 173 4 0 3 4 4 n,NFg BDFChar: 115 174 10 0 9 0 9 56,,BhS@RThS@dZeA0MJ@=UQB BDFChar: 116 175 8 0 7 11 11 rr<$! BDFChar: 117 176 5 1 3 7 9 i1T!. BDFChar: 118 177 8 1 6 0 6 0JNDY0ED"N BDFChar: 119 178 4 0 3 5 9 @'D=mn,NFg BDFChar: 120 179 4 0 3 5 9 @'F%C?iU0, BDFChar: 121 180 5 1 4 8 10 E+$H] BDFChar: 122 181 8 1 7 -3 7 bfn;Tbfn<1^qd_c BDFChar: 123 182 7 1 5 -3 9 Gkh(/pimVm(`4),(]XO9 BDFChar: 124 183 4 1 2 4 5 ^q]pM BDFChar: 125 184 5 1 4 -3 -1 ?ngL= BDFChar: 126 185 4 0 2 5 9 @,PF#?iU0, BDFChar: 127 186 5 1 3 3 9 i1Qa9huM[8 BDFChar: 128 187 7 0 6 1 5 fPEH^fDkmO BDFChar: 129 188 11 0 10 0 9 0OSk80n;%[2?40$)8J#CA&,mq BDFChar: 130 189 11 0 10 0 9 0OSk80n;%[2?42:)Se&B@=Z82 BDFChar: 131 190 11 0 10 0 9 0OS"u0n0))uos= BDFChar: 168 281 8 1 6 -3 6 Gg+D,^s%$W?oS,d BDFChar: 169 282 9 1 7 0 12 CcDFo^qdb`^qdb$rVuou BDFChar: 170 283 8 1 6 0 10 fPhr5Gg+D,^s%$' BDFChar: 171 313 8 1 7 0 12 @))cX^qdb$^qdb$rVuou BDFChar: 172 314 4 0 3 0 12 E+$Ih?smAM?smAM?iU0, BDFChar: 173 317 8 1 7 0 9 bfn#H^qdb$_#=<6 BDFChar: 174 318 7 1 5 0 9 f\"9l^qdb$^q]pM BDFChar: 175 321 10 1 8 0 9 ?t=(uE+%V^@"/.V BDFChar: 176 322 7 1 5 0 9 ?smYmE+%V^?sis7 BDFChar: 177 323 10 1 8 0 12 $lAu^j5]acgX!p\_Z0Z: BDFChar: 178 324 8 1 6 0 10 3&"_?prpt+bfn92 BDFChar: 179 327 10 1 8 0 12 2B2_7j5]acgX!p\_Z0Z: BDFChar: 180 328 8 1 6 0 10 fPhr5prpt+bfn92 BDFChar: 181 336 10 1 8 0 12 2J`@UB#DO(_o'B(49,?] BDFChar: 182 337 8 1 7 0 10 2Jh"GGg+CUbfk;3 BDFChar: 183 141 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 184 143 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 185 157 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 186 197 8 0 7 0 12 (d&W8(`5AIAnHM0_Z0Z: BDFChar: 187 198 13 0 11 0 9 +7LkB)DW/ BDFChar: 206 217 10 1 8 0 12 3#E(A_o'C0_o'B(49,?] BDFChar: 207 218 10 1 8 0 12 *#LBI_o'C0_o'B(49,?] BDFChar: 208 219 10 1 8 0 12 (d)C1_o'C0_o'B(49,?] BDFChar: 209 220 10 1 8 0 12 AnD%\_o'C0_o'B(49,?] BDFChar: 210 221 10 0 9 0 12 #64r.$in)Y^qaB/1B8Hr$ig\9$ig\9$ig8- BDFChar: 211 222 9 1 7 0 9 ^qflf`l?$r^q]pM BDFChar: 212 223 8 1 6 0 9 Gg+CUfZ_R`bh)mq BDFChar: 213 224 8 1 6 0 10 E%i+/Gg$SDbfkG7 BDFChar: 214 225 8 1 6 0 10 3&"_?Gg$SDbfkG7 BDFChar: 215 226 8 1 6 0 10 0R1eAGg$SDbfkG7 BDFChar: 216 227 8 1 6 0 9 oXk0KbRAmCb^9Bj BDFChar: 217 228 8 1 6 0 9 bfg'3bRAmCb^9Bj BDFChar: 218 229 8 1 6 0 10 0R,8OGg$SDbfkG7 BDFChar: 219 230 12 1 10 0 6 It5bY%)@@CbQ,l&It.M! BDFChar: 220 231 7 1 6 -3 6 Gg*t=^s%$W(iTHT BDFChar: 221 232 8 1 6 0 10 E%i+/Gg+D,^s%$' BDFChar: 222 233 8 1 6 0 10 3&"_?Gg+D,^s%$' BDFChar: 223 234 8 1 6 0 10 0R1eAGg+D,^s%$' BDFChar: 224 235 8 1 6 0 9 bfg'3bfojtb]j*f BDFChar: 225 236 4 0 3 0 10 i*\5=?smAM?sm@B BDFChar: 226 237 4 0 3 0 10 E+$H]?smAM?sm@B BDFChar: 227 238 4 0 3 0 9 @.4/(?smAM?sis7 BDFChar: 228 338 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 229 339 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 230 340 10 1 8 0 12 $lB!D_o'C0rklXk_Z0Z: BDFChar: 231 341 5 1 4 0 10 E+$H]nDM*t^qd_c BDFChar: 232 344 10 1 8 0 12 CcDFo_o'C0rklXk_Z0Z: BDFChar: 233 345 6 1 5 0 10 fPhr5pu&s'^qd_c BDFChar: 234 346 9 1 7 0 12 $lAtl`l>f5*!XF&HiO-H BDFChar: 235 347 8 1 6 0 10 3&"_?Gg'PL(sI4) BDFChar: 236 350 9 1 7 -3 9 I)a1AE#])%`dBHWDu]k< BDFChar: 237 351 8 1 6 -3 6 Gg'PL(sI4Y(iTHT BDFChar: 238 352 9 1 7 0 12 CcDEB`l>f5*!XF&HiO-H BDFChar: 239 353 8 1 6 0 10 b]kfAGg'PL(sI4) BDFChar: 240 354 8 0 7 -3 9 rtlRi(`4),(`4(u2uipY BDFChar: 241 355 4 0 3 -3 8 ?srJ3?smAM0OQTm BDFChar: 242 356 8 0 7 0 12 Aip(n(`4),(`4),(]XO9 BDFChar: 243 357 7 0 5 0 9 $tO&@?smAM?n_Q\ BDFChar: 244 366 10 1 8 0 12 (d&YQ_o'C0_o'B(49,?] BDFChar: 245 367 8 1 6 0 10 0R,8Obfn;TbfkG7 BDFChar: 246 368 10 1 8 0 12 2J`B2_o'C0_o'B(49,?] BDFChar: 247 369 8 1 7 0 10 2Jh"Gbfn;TbfkG7 BDFChar: 248 376 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 249 377 9 0 8 0 12 "oo&3!!*%L!It7P"oo&3(]Z5i?i[tBs*t(L BDFChar: 250 378 8 1 6 0 10 *#L@0r!XDr@)2[? BDFChar: 251 379 9 0 8 0 12 $ig\9!!*%L!It7P"oo&3(]Z5i?i[tBs*t(L BDFChar: 252 380 8 1 6 0 9 0JEM)$lC[+_#+04 BDFChar: 253 381 9 0 8 0 12 2?4]s!!*%L!It7P"oo&3(]Z5i?i[tBs*t(L BDFChar: 254 382 8 1 6 0 10 b]kfAr!XDr@)2[? BDFChar: 255 402 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 256 710 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 257 711 7 1 5 7 9 fPhr5 BDFChar: 258 728 9 1 7 7 9 `dB`G BDFChar: 259 729 4 1 2 8 9 ^q]pM BDFChar: 260 731 5 0 3 -3 -1 @)-^] BDFChar: 261 732 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 262 733 9 1 8 8 10 1M4i2 BDFChar: 263 1040 8 0 7 0 9 (`5@tAnGY(_nuHS BDFChar: 264 1041 10 1 8 0 9 rkQ=brklXk_u9W9 BDFChar: 265 1042 10 1 8 0 9 rklXkrklXk_u9W9 BDFChar: 266 1043 8 1 7 0 9 rkQ=b^qdb$^q]pM BDFChar: 267 1044 12 1 10 -2 9 It1sX@=Vd:@=Vd:@=Vd:@=\Bn^qdb$ BDFChar: 268 1045 9 1 7 0 9 rkQ=br4p+`_#=<6 BDFChar: 269 1046 14 0 13 0 9 _[L#l1GBbU&&8^k)dkHU@i3)l BDFChar: 270 1047 10 1 8 0 9 I`$d?*WlLs_gVRc BDFChar: 271 1048 10 1 8 0 9 _oKgDgY;>[j21is BDFChar: 272 1049 10 1 8 0 12 ,Wlp]a2cN\g[jIc_Z0Z: BDFChar: 273 1050 9 1 8 0 9 `m!*)i:,CC`kqcV BDFChar: 274 1051 9 0 7 0 9 +$X7F@q0"YA&A9H BDFChar: 275 1052 12 1 10 0 9 ^qdb$iP=Efo>'t5hSA!`beVH< BDFChar: 276 1053 10 1 8 0 9 _o'C0s22al_nuHS BDFChar: 277 1054 10 1 8 0 9 4D)LK_o'C0Aip%n BDFChar: 278 1055 10 1 8 0 9 s22al_o'C0_nuHS BDFChar: 279 1056 9 1 8 0 9 rklXk_u@He^q]pM BDFChar: 280 1057 9 1 8 0 9 4D)LH^qdb'Aip%n BDFChar: 281 1058 8 0 7 0 9 rtlRi(`4),(`35Q BDFChar: 282 1059 9 1 7 0 9 `l@.WCcjfsfPgfj BDFChar: 283 1060 14 1 12 0 9 "oni-J)J=#`\>Cd`\;o#"oni- BDFChar: 284 1061 9 0 8 0 9 _19@P@fSCe)uprY2?74e_19@P BDFChar: 285 1062 10 1 8 -2 9 `l?$<`l?$<`r?,C BDFChar: 286 1063 8 0 6 0 9 `l?$<`dS*r"pP&- BDFChar: 287 1064 12 1 10 0 9 beVHpgEl)fO3?>beV8L BDFChar: 294 1071 9 1 7 0 9 I`BCI`dSseB#XfN BDFChar: 295 1072 8 1 6 0 6 Gg$SDbfkG7 BDFChar: 296 1073 8 1 6 0 8 (i[:+prpt+GQ7^D BDFChar: 297 1074 8 1 6 0 6 prptWbfoh^ BDFChar: 298 1075 6 1 5 0 6 pqX\\^qd_c BDFChar: 299 1076 10 1 8 -1 6 IV*2(AnM(\ BDFChar: 300 1077 8 1 6 0 6 Gg+D,^s%$' BDFChar: 301 1078 10 0 9 0 6 beS(G56)`)56,PNbeO2Y BDFChar: 302 1079 8 1 6 0 6 Gg$RU%*Wqr BDFChar: 303 1080 8 1 6 0 6 bfn;Th#(sg BDFChar: 304 1081 8 1 6 0 9 82(%fbfn;dr+l?5 BDFChar: 305 1082 7 1 6 0 6 bh2FCnCYqb BDFChar: 306 1083 8 1 6 0 6 4FCs]Ci%;q BDFChar: 307 1084 9 1 7 0 6 `l@H7rmo'h BDFChar: 308 1085 8 1 6 0 6 bfn6fmn,D"oo&3)k8h[B(j-4 BDFChar: 340 8249 8 1 5 1 7 (bf@5?n`Dt BDFChar: 341 8250 7 1 5 1 7 ^gJi50OVZr BDFChar: 342 8364 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 343 8482 9 0 8 7 9 m=7fZ8:U[? BDFChar: 344 8470 14 1 12 0 9 _f4X4j)FSigMkndcN(uc`rO!W BDFChar: 345 1025 9 1 7 0 12 bfg(d^qdb`^qdb$rVuou BDFChar: 346 1105 8 1 6 0 9 bfg'3bfojtb]j*f BDFChar: 347 8361 9 0 8 0 9 @fU9ECB/,Ms+"kbCB/haG5rfe BDFChar: 348 138 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 349 140 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 350 142 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 351 154 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 352 156 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 353 158 4 1 2 0 8 ^qdb$^qdb$^]4?7 BDFChar: 354 159 4 0 2 0 8 ?smAM?smAM?iU0, BDFChar: 355 8213 8 0 7 11 11 rr<$! BDFChar: 356 913 9 1 8 0 9 (`5@tAnGY(_nuHS BDFChar: 357 914 9 1 8 0 9 rklXkrklXk_u9W9 BDFChar: 358 915 8 1 7 0 9 rkQ=b^qdb$^q]pM BDFChar: 359 916 9 1 8 0 9 (`5@tAnGYm_uB]: BDFChar: 360 917 8 1 7 0 9 rkQ=br4p+`_#=<6 BDFChar: 361 918 10 1 9 0 9 s*t-#!rrN*$ih+E0E>J\^]=Cb BDFChar: 362 919 9 1 8 0 9 _o'C0s22al_nuHS BDFChar: 363 920 9 1 8 0 9 4D)LKs22alAip%n BDFChar: 364 921 3 1 2 0 9 ^qdb$^qdb$^q]pM BDFChar: 365 922 8 1 7 0 9 `m!*)i:,CC`l7uY BDFChar: 366 923 9 1 8 0 9 (`5@tAnGYm_nuHS BDFChar: 367 924 10 1 9 0 9 _19@Pj+-0?pON!gh14=3aahK` BDFChar: 368 925 9 1 8 0 9 _rKeKgY:&pa27lW BDFChar: 369 926 8 1 7 0 9 rr)ltI!bnorr)lt BDFChar: 370 927 9 1 8 0 9 4D)LK_o'C0Aip%n BDFChar: 371 928 9 1 8 0 9 s22al_o'C0_nuHS BDFChar: 372 929 9 1 8 0 9 rklXk_u@He^q]pM BDFChar: 373 930 16 0 0 0 0 z BDFChar: 374 931 8 1 7 0 9 rkMnq(`4r7_#=<6 BDFChar: 375 932 9 1 8 0 9 rtlRi(`4),(`35Q BDFChar: 376 933 9 1 8 0 9 _o'B(4;\nP(`35Q BDFChar: 377 934 9 1 8 0 9 (k15ogY:K;IM`%b BDFChar: 378 935 8 1 7 0 9 `l;h23&k_j`l7uY BDFChar: 379 936 9 1 8 0 9 gY:K;gO9tV(`35Q BDFChar: 380 937 10 1 9 0 9 4of'm_19@P_19@P@fSCe2?$k*+9 BDFChar: 395 952 7 1 6 0 9 Gg+CUr63C/b]j*f BDFChar: 396 953 4 1 2 0 6 ^qdb$^qd_c BDFChar: 397 954 7 1 6 0 6 bh2FCnCYqb BDFChar: 398 955 7 1 6 0 9 @,N^m3-]\lbfg%e BDFChar: 399 956 7 1 6 -3 6 bfn;Tbfp"#^q]pM BDFChar: 400 957 7 1 6 0 6 bfn;Tb]kfA BDFChar: 401 958 7 1 6 -3 9 r%MNo^i7*)^j$7rGQ7^D BDFChar: 402 959 7 1 6 0 6 Gg+CUbfk;3 BDFChar: 403 960 7 1 6 0 6 r63C/bfn92 BDFChar: 404 961 7 1 6 -3 6 Gg+CUbfojt^q]pM BDFChar: 405 962 7 1 6 0 6 Gg*sJ%*Wqr BDFChar: 406 963 8 1 7 0 6 Ia$$[bfk;3 BDFChar: 407 964 7 1 6 0 6 r%KfY0JG0\ BDFChar: 408 965 7 1 6 0 6 bfn;Tbfk;3 BDFChar: 409 966 9 1 8 -3 6 IbWW3gY7/o(`35Q BDFChar: 410 967 7 1 6 0 6 bfk;cGg+A3 BDFChar: 411 968 9 1 8 -3 6 gY:K;gY7/o(`35Q BDFChar: 412 969 9 1 8 0 6 B#EBXgY6^1B9321B9W>@=Vd: BDFChar: 415 901 8 0 7 8 9 gX?-& BDFChar: 416 900 5 1 4 8 10 E+$H] BDFChar: 417 903 16 0 0 0 0 z BDFChar: 418 904 9 0 8 0 9 ^OWNgYQ1m-56*A;0E(`4),(`35Q BDFChar: 427 971 7 1 6 0 9 bfg(2bfn;Tb]j*f BDFChar: 428 972 7 1 6 0 9 (bbr7bfn;Tb]j*f BDFChar: 429 973 7 1 6 0 9 (bbs6bfn;Tb]j*f BDFChar: 430 974 9 1 8 0 9 $lAtV_qWr#gL^Ec BDFChar: 431 975 16 0 0 0 0 z BDFChar: 432 976 16 0 0 0 0 z BDFChar: 433 305 4 1 2 0 6 ^qdb$^qd_c BDFChar: 434 304 4 1 2 0 12 ^q]rc^qdb$^qdb$^]4?7 BDFChar: 435 287 8 1 6 -3 9 b]j,8bfn;Tb^9iCGQ7^D BDFChar: 436 286 10 1 8 0 12 _gVSJB#DF"cbmY54TGH^ BDFChar: 437 8362 16 1 14 0 11 s,=b;bfn;Tbfn;Tbfn;Tbfn9>bRDhm BDFChar: 438 1488 12 1 11 0 9 ^qa?n0Yhsac%*h7_Z7N'^qd`n BDFChar: 439 1489 10 1 9 0 9 rW!-&"oni-"oni-"oni-"p"[R BDFChar: 440 1490 8 1 7 0 9 i%Qi%3,HgY`l7uY BDFChar: 441 1491 10 1 9 0 9 s*t:R"oni-"oni-"oni-"oni- BDFChar: 442 1492 10 1 9 0 9 s*t-#!It3$!J&":_19@P_19@P BDFChar: 443 1493 5 1 4 0 9 n1ZOM0JG170JEJ, BDFChar: 444 1494 7 1 6 0 9 r%KfY0JF=\(`35Q BDFChar: 445 1495 10 1 9 0 9 s+"O._19@P_19@P_19@P_19@P BDFChar: 446 1514 12 1 11 0 9 5N"5'0OQSB0OQSB0OQSB0OXBX BDFChar: 447 1512 10 1 9 0 9 s*t-#!It3$!It3$!It3$!It3$ BDFChar: 448 1511 10 1 9 -3 9 s*t-#!It3$!J&":_19E'_Z7[V^];.M^]4?7 BDFChar: 449 1497 5 1 4 6 9 n1ZOM BDFChar: 450 1496 10 1 9 0 9 a+2!V_19@P_19@P_19@P_1;Q9 BDFChar: 451 1498 10 1 9 -3 9 s*t-#!It3$!It3$!It3$!It3$!It3$!It.M BDFChar: 452 1499 10 1 9 0 9 s*t-#!It3$!It3$!It3$!J(3# BDFChar: 453 1500 10 1 9 0 12 ^];.M^]=Cb!It3$!It3$!rrE'!rrN*"onW' BDFChar: 454 1501 10 1 9 0 9 s+"O._19@P_19@P_19@P_1;Q9 BDFChar: 455 1502 10 1 9 0 9 s*uhS@=Z1E_19@P_19@P_1:En BDFChar: 456 1503 5 1 4 -3 9 n1ZOM0JG170JG170E;(Q BDFChar: 457 1504 6 1 5 0 9 GSh87(`4),)#+(2 BDFChar: 458 1505 10 1 9 0 9 s+%q9_19@P_19@P_19@P@fS[m BDFChar: 459 1506 10 1 9 0 9 !J&":_15sE0n:-l)1W0H#Cui) BDFChar: 460 1507 10 1 9 -3 9 s+"O.@=Vd:H%5pG!It3$!It3$!It3$!It.M BDFChar: 461 1508 10 1 9 0 9 s+"O.@=Vd:H%5pG!It3$!J(3# BDFChar: 462 1509 10 1 9 -3 9 _15sE0n:2C%KH_6!rrE'!rrE'!rrE'!rr<$ BDFChar: 463 1510 10 1 9 0 9 _Z7RS@fSCe)upBI"on`*!J(3# BDFChar: 464 1513 11 1 10 0 9 ^qe10beVHf<```````` 0`0 ~~`0  0`cc`8cc>aaaaaaaa3fff<<ggg<< ``c66ca3  0`p```````````p````0000``````````` p`0ff>```|fffff|fffff>fffff>f<```|ffffff```````````````````````flxpxlf``````````ffffff``````|fffffffffff>xp`````ff<mm?33f<cc`8cc> 0`0 ``````````````````6 0```````````````````0``l66l0x0x`````````JHf<ff>0ff>ff>z^ff>ffff><ff>?f?ff?```ffff<z^|ffffff8 nn~vv|8 ffffff>0ffffff>ffffffff> ff<<0````|fffff|```ffff<<0`Systemfreedink-108.4+dfsg/src/freedink.h0000644000175000017500000000471512420231175014553 0ustar meme/** * Header for FreeDink-specific code (not FreeDinkedit) * Copyright (C) 2005, 2007, 2008, 2009, 2010, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ /** * I made this header because I though update_frame had to be compiled * separately - actually it was also included in dink.cpp. Might still * come in handy. */ #ifndef _FREEDINK_H #define _FREEDINK_H #include "SDL.h" extern void CyclePalette(); extern void Scrawl_OnMouseInput(void); extern void button_brain(int h ); extern void bounce_brain(int h); extern int check_if_move_is_legal(int u); extern void check_joystick(void); extern void did_player_cross_screen(/*bool*/int real, int h); extern void dragon_brain(int h); extern void drawscreenlock( void ); extern void flip_it(void); extern void get_last_sprite(void); extern void human_brain(int h); extern /*bool*/int in_this_base(int seq, int base); extern int initFail(char mess[200]); extern void missile_brain( int h, /*bool*/int repeat); extern void missile_brain_expire(int h); extern void mouse_brain(int h); extern void process_item( void ); extern void process_show_bmp( void ); extern void process_talk(); extern void process_warp_man(void); extern void no_brain(int h); extern void one_time_brain(int h); extern void one_time_brain_for_real(int h); extern void people_brain(int h); extern void pig_brain(int h); extern void pill_brain(int h); extern void repeat_brain(int h); extern void run_through_tag_list(int h, int strength); extern /*bool*/int run_through_tag_list_talk(int h); extern void run_through_touch_damage_list(int h); extern void scale_brain(int h); extern void shadow_brain(int h); extern int special_block(int block); extern void text_brain(int h); /* extern void text_draw(int h, HDC hdc); */ extern void text_draw(int h); extern /*bool*/int transition(void); extern void up_cycle(void); #endif freedink-108.4+dfsg/src/bgm.h0000644000175000017500000000236212420231175013525 0ustar meme/** * DinkC script engine * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2007, 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _BGM_H #define _BGM_H extern int last_cd_track; extern int cdplaying(); extern int killcd(); extern int PlayCD(int cd_track); extern int something_playing(void); extern int PlayMidi(char *sFileName); extern int PauseMidi(); extern int ResumeMidi(); extern int StopMidi(); extern int ReplayMidi(); extern void check_midi(); extern void bgm_init(void); extern void bgm_quit(void); extern void loopmidi(int loop_midi); #endif freedink-108.4+dfsg/src/dinkc.c0000644000175000017500000010737612420231175014056 0ustar meme/** * DinkC script engine * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2006 Dan Walma * Copyright (C) 2005, 2007, 2008, 2009, 2011 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include /* compare */ #include #include "gettext.h" #define _(String) gettext (String) #include "dinkc.h" #include "dinkc_bindings.h" #include "game_engine.h" #include "input.h" #include "paths.h" #include "str_util.h" #include "log.h" int returnint = 0; int bKeepReturnInt = 0; char returnstring[200]; /* Used to tell decipher_string about the currently selected savegame in a choice menu; also abuse to tell which key is selected in joystick remapping */ unsigned short decipher_savegame = 0; #define MAX_CALLBACKS 100 struct call_back { int owner; /*bool*/int active; int type; char name[20]; int offset; long min, max; int lifespan; unsigned long timer; }; static struct call_back callback[MAX_CALLBACKS]; /* TODO: Used 1->100 in the game, should it be MAX_CALLBACKS+1 ? */ /* DinkC script buffer */ static char *rbuf[MAX_SCRIPTS]; //pointers to buffers we may need /* Number of reserved ASCII indexes in .d BPE compression format */ #define NB_PAIRS_MAX 128 struct refinfo *rinfo[MAX_SCRIPTS]; /** * Decompress a .d DinkC script; also clean newlines. Check * contrib/d2c.c for more explanation about the decompression process. */ static void decompress(FILE *in, int script) { int step = 512; int nb_read = 0; rbuf[script] = xmalloc(step); rbuf[script][0] = '\0'; unsigned char stack[NB_PAIRS_MAX+1], pairs[NB_PAIRS_MAX][2]; short c, top = -1; int nb_pairs = 0; /* Check for optional pair count and pair table */ if ((c = fgetc(in)) > 127) { /* Read pairs table */ nb_pairs = c - 128; int i, j; for (i = 0; i < nb_pairs; i++) { for (j = 0; j < 2; j++) { int c = fgetc(in); if (c == EOF) { log_error("decompress: invalid header: truncated pair table"); free(rbuf[script]); rbuf[script] = NULL; return; } if (c > i+128) { log_error("decompress: invalid header: reference to a pair that is not registered yet"); free(rbuf[script]); rbuf[script] = NULL; return; } pairs[i][j] = c; } } } else { /* Non-compressed file, put back the character we read */ ungetc(c, in); } for (;;) { /* Pop byte from stack or read byte from file */ if (top >= 0) c = stack[top--]; else if ((c = fgetc(in)) == EOF) break; /* Push pair on stack or output byte to file */ if (c > 127) { if ((c-128) >= nb_pairs) { log_error("decompress: invalid body: references non-existent pair"); break; } stack[++top] = pairs[c-128][1]; stack[++top] = pairs[c-128][0]; } else { rbuf[script][nb_read] = c; nb_read++; if ((nb_read % step) == 0) rbuf[script] = xrealloc(rbuf[script], nb_read + step); } } rinfo[script]->end = nb_read; rbuf[script][nb_read] = '\0'; /* safety */ rbuf[script] = xrealloc(rbuf[script], nb_read+1); } static void decompress_nocomp(FILE *in, int script) { int step = 512; int nb_read = 0; rbuf[script] = xmalloc(step); rbuf[script][0] = '\0'; int c; while ((c = getc(in)) != EOF) { rbuf[script][nb_read] = c; nb_read++; if ((nb_read % step) == 0) rbuf[script] = xrealloc(rbuf[script], nb_read + step); } rinfo[script]->end = nb_read; rbuf[script][nb_read] = '\0'; /* safety */ rbuf[script] = xrealloc(rbuf[script], nb_read+1); } /** * Only load game metadata (timetime). Used when displaying the list * of saved games (see decipher_string). */ static /*bool*/int load_game_small(int num, char line[196], int *mytime) { FILE *f = paths_savegame_fopen(num, "rb"); if (f == NULL) { log_info("Couldn't quickload save game %d", num); return /*false*/0; } else { //int version = read_lsb_int(f); fseek(f, 4, SEEK_CUR); fread(line, 196, 1, f); line[195] = '\0'; *mytime = read_lsb_int(f); fclose(f); return /*true*/1; } } /** * Load script from 'filename', save it in the first available script * slot, attach to game sprite #'sprite' if 'set_sprite' is 1. **/ int load_script(char filename[15], int sprite, /*bool*/int set_sprite) { char temp[100]; int script = 0; FILE *in = NULL; /*bool*/int comp = /*false*/0; log_info("LOADING %s", filename); sprintf(temp, "story/%s.d", filename); in = paths_dmodfile_fopen(temp, "rb"); if (in == NULL) { sprintf(temp, "story/%s.c", filename); in = paths_dmodfile_fopen(temp, "rb"); if (in == NULL) { sprintf(temp, "story/%s.d", filename); in = paths_fallbackfile_fopen(temp, "rb"); if (in == NULL) { sprintf(temp, "story/%s.c", filename); in = paths_fallbackfile_fopen(temp, "rb"); if (in == NULL) { log_warn("Script %s not found. (checked for .C and .D) (requested by %d?)", temp, sprite); return 0; } } } } strtoupper(temp); log_debug("Temp thingie is %c", temp[strlen(temp)-1]); if (temp[strlen(temp)-1] == 'D') comp = 1; else comp = 0; { int k = 1; for (; k < MAX_SCRIPTS; k++) if (rbuf[k] == NULL) break; script = k; } if (script == MAX_SCRIPTS) { log_error("Couldn't find unused buffer for script."); fclose(in); return 0; } log_info("Loading script %s.. (slot %d)", temp, script); rinfo[script] = XZALLOC(struct refinfo); if (rinfo[script] == NULL) { log_error("Couldn't allocate rscript %d.", script); return 0; } memset(rinfo[script], 0, sizeof(struct refinfo)); /* For clarity: */ rinfo[script]->current = 0; rinfo[script]->cur_line = 1; rinfo[script]->cur_col = 0; rinfo[script]->debug_line = 1; if (comp) { log_debug("Decompressing..."); decompress(in, script); } else { log_debug("Reading from disk..."); decompress_nocomp(in, script); } fclose(in); if (rbuf[script] == NULL) { log_error("Couldn't allocate rbuff %d.", script); free(rinfo[script]); rinfo[script] = NULL; return 0; } rinfo[script]->name = strdup(filename); rinfo[script]->sprite = sprite; if (set_sprite && sprite != 0 && sprite != 1000) spr[sprite].script = script; return script; } int dinkc_execute_one_liner(char* line) { /* Find available script slot */ int k = 1; for (k = 1; k < MAX_SCRIPTS; k++) if (rbuf[k] == NULL) break; if (k < MAX_SCRIPTS) { rinfo[k] = XZALLOC(struct refinfo); rinfo[k]->name = xmalloc(1); rinfo[k]->name[0] = '\0'; rinfo[k]->sprite = 1000; /* survice screen change */ rinfo[k]->level = 1; /* skip 'void main(void) {' parsing */ rbuf[k] = (char*) malloc(255); strcpy(rbuf[k], line); process_line(k, rbuf[k], 0); return returnint; } else return -1; } /** * Remove leading spaces by shifting 'str' to the left, as much as * there is leading spaces. */ void strip_beginning_spaces(char *str) { char *pc = str; int diff = 0; /* int i; */ /* Find first non-space character (pos) */ while (*pc == ' ') pc++; diff = pc - str; /* Shift string to the left from pos */ /* Don't use str(str, pc) to avoid memory overlap */ while (*pc != '\0') { *(pc - diff) = *pc; pc++; } *(pc - diff) = '\0'; } /** * Locate a procedure (such as "void hit()") */ /*bool*/int locate(int script, char* lookup_proc) { if (rinfo[script] == NULL) return 0; int save_current = rinfo[script]->current; int save_cur_line = rinfo[script]->cur_line; int save_cur_col = rinfo[script]->cur_col; int save_debug_line = rinfo[script]->debug_line; rinfo[script]->current = 0; rinfo[script]->cur_line = 1; rinfo[script]->cur_col = 0; rinfo[script]->debug_line = 1; char* line = NULL; char* word = NULL; while((line = read_next_line(script)) != NULL) { strip_beginning_spaces(line); int is_proc = 0; word = get_word(line, 1); if (compare(word, "VOID")) is_proc = 1; free(word); if (is_proc) { char* cur_proc = NULL; word = get_word(line, 2); cur_proc = separate_string(word, 1, '('); free(word); int is_right_proc = 0; if (compare(cur_proc, lookup_proc)) is_right_proc = 1; free(cur_proc); if (is_right_proc) { //clean up vars so it is ready to run if (rinfo[script]->sprite != 1000) { spr[rinfo[script]->sprite].move_active = 0; if (dversion >= 108) spr[rinfo[script]->sprite].move_nohard = 0; } rinfo[script]->skipnext = /*false*/0; rinfo[script]->onlevel = 0; rinfo[script]->level = 0; free(line); return 1; //this is desired proc } } free(line); } // Not found, restoring position rinfo[script]->current = save_current; rinfo[script]->cur_line = save_cur_line; rinfo[script]->cur_col = save_cur_col; rinfo[script]->debug_line = save_debug_line; return 0; } /** * Look for the 'label' label (e.g. 'loop:'), that is used by a "goto" * instruction. This sets the script->current field appropriately. **/ /*bool*/int locate_goto(char* expr, int script) { replace_norealloc(";", "", expr); char* label = xmalloc(strlen(expr) + 1 + 1); sprintf(label, "%s:", expr); char* line = NULL; rinfo[script]->current = 0; rinfo[script]->cur_line = 1; while ((line = read_next_line(script)) != NULL) { strip_beginning_spaces(line); int is_right_label = 0; char* word = get_word(line, 1); replace_norealloc("\n", "", word); if (compare(word, label)) is_right_label = 1; free(word); if (is_right_label) { log_debug("Found goto : Line is %s, word is %s.", line, label); rinfo[script]->skipnext = /*false*/0; rinfo[script]->onlevel = 0; rinfo[script]->level = 0; free(label); free(line); return 1; //this is desired label } free(line); } log_warn("%s: cannot goto %s", rinfo[script]->name, label); free(label); return 0; } /** * v1.07-style scope. This function is buggy: the first memory slot * has precedence (independently of local/global scope). * * Return -1 if not found, slot index >1 if found. Slot 0 isn't * currently used by the engine. */ int search_var_with_this_scope_107(char* variable, int var_scope) { int i; for (i = 1; i < MAX_VARS; i ++) if (play.var[i].active == 1 && ((play.var[i].scope == DINKC_GLOBAL_SCOPE) || (play.var[i].scope == var_scope)) && (compare(play.var[i].name, variable))) return i; return -1; /* not found */ } /** * v1.08-style scope: local variables are searched before global * variables. * * Return -1 if not found, slot index >1 if found. Slot 0 isn't * currently used by the engine. */ int search_var_with_this_scope_108(char* variable, int var_scope) { int search_scope[2]; search_scope[0] = var_scope; /* first local scope */ search_scope[1] = DINKC_GLOBAL_SCOPE; /* then global scope */ int i; for (i = 0; i < 2; i++) { //We'll start going through every var, starting at one int v; for (v = 1; v < MAX_VARS; v++) { //Okay... make sure the var is active, //The scope should match the script, //Then make sure the name is the same. if (play.var[v].active && play.var[v].scope == search_scope[i] && compare (play.var[v].name, variable)) return v; } } return -1; } /** * */ int search_var_with_this_scope(char* variable, int scope) { if (dversion >= 108) return search_var_with_this_scope_108(variable, scope); return search_var_with_this_scope_107(variable, scope); } /** * Expand 'variable' in the scope of 'script' and return the integer * value. Only used in function 'get_parms'. */ long decipher(char* variable, int script) { // Special vars: ¤t_sprite and ¤t_script if (compare(variable, "¤t_sprite")) return rinfo[script]->sprite; if (compare(variable, "¤t_script")) return script; //v1.08 special variables. if (dversion >= 108) { if (compare(variable, "&return")) return returnint; if (compare(variable, "&arg1")) return rinfo[script]->arg1; if (compare(variable, "&arg2")) return rinfo[script]->arg2; if (compare(variable, "&arg3")) return rinfo[script]->arg3; if (compare(variable, "&arg4")) return rinfo[script]->arg4; if (compare(variable, "&arg5")) return rinfo[script]->arg5; if (compare(variable, "&arg6")) return rinfo[script]->arg6; if (compare(variable, "&arg7")) return rinfo[script]->arg7; if (compare(variable, "&arg8")) return rinfo[script]->arg8; if (compare(variable, "&arg9")) return rinfo[script]->arg9; } // Check in local and global variables int i = search_var_with_this_scope(variable, script); if (i != -1) return play.var[i].var; else return 0; // compatibility } /** * Replace all variables in a string; try longest variables * first. Known bug: may replace shorter variables (e.g. &gold instead * of &golden). */ void var_replace_107(char** line_p, int scope) { char crap[20]; int i; for (i = 1; i < MAX_VARS; i ++) if ((play.var[i].active == 1) && ((play.var[i].scope == DINKC_GLOBAL_SCOPE) || (play.var[i].scope == scope))) { sprintf(crap, "%d", play.var[i].var); replace(play.var[i].name, crap, line_p); } } /** * Replace all variables in a string; try longest variables first. * * Possible improvements: * * - Copy play.var[] and sort it by variable length (and avoid the * recursion) * * - find vars in the string and replace them as-needed (requires * understanding what exactly is an end-of-variable delimiter, if * such a thing exists) */ void var_replace_108(int i, int script, char** line_p, char *prevar) { while (i < MAX_VARS) { //First, make sure the variable is active. //Then, make sure it is in scope, //Then, see if the variable name is in the line //Then, prevar is null, or if prevar isn't null, see if current variable starts with prevar if (play.var[i].active && i == search_var_with_this_scope_108(play.var[i].name, script) && strstr (*line_p, play.var[i].name) && (prevar == NULL || (prevar != NULL && strstr (play.var[i].name, prevar)))) { //Look for shorter variables var_replace_108(i + 1, script, line_p, play.var[i].name); //we didn't find any, so we replace! char crap[20]; sprintf(crap, "%d", play.var[i].var); replace(play.var[i].name, crap, line_p); } i++; } } /** * Replace all variables (&something) in 'line', with scope 'scope' */ void var_replace(char** line_p, int scope) { if (dversion >= 108) var_replace_108(1, scope, line_p, NULL); else var_replace_107(line_p, scope); } /** * Similar to decipher, plus: * - expand special choice variables &savegameinfo and &buttoninfo * - it can replace several variables in the same string * - with v1.07 it has a prefix bug (see var_replace_107) */ void decipher_string(char** line_p, int script) { char buffer[20 + 1]; /* Replace all valid variables in 'line' */ var_replace(line_p, script); if ((strchr(*line_p, '&') != NULL) && (script != 0)) { sprintf(buffer, "%d", rinfo[script]->sprite); replace("¤t_sprite", buffer, line_p); sprintf(buffer, "%d", script); replace("¤t_script", buffer, line_p); if (dversion >= 108) { //v1.08 special variables. sprintf(buffer, "%d", returnint); replace("&return", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg1); replace("&arg1", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg2); replace("&arg2", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg3); replace("&arg3", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg4); replace("&arg4", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg5); replace("&arg5", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg6); replace("&arg6", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg7); replace("&arg7", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg8); replace("&arg8", buffer, line_p); sprintf(buffer, "%d", rinfo[script]->arg9); replace("&arg9", buffer, line_p); } if (decipher_savegame != 0) { int button_action = input_get_button_action(decipher_savegame-1); if (button_action == ACTION_ATTACK) replace("&buttoninfo", _("Attack"), line_p); else if (button_action == ACTION_TALK) replace("&buttoninfo", _("Talk/Examine"), line_p); else if (button_action == ACTION_MAGIC) replace("&buttoninfo", _("Magic"), line_p); else if (button_action == ACTION_INVENTORY) replace("&buttoninfo", _("Item Screen"), line_p); else if (button_action == ACTION_MENU) replace("&buttoninfo", _("Main Menu"), line_p); else if (button_action == ACTION_MAP) replace("&buttoninfo", _("Map"), line_p); else if (button_action == ACTION_BUTTON7) replace("&buttoninfo", _("Unused"), line_p); else if (button_action == ACTION_BUTTON8) replace("&buttoninfo", _("Unused"), line_p); else if (button_action == ACTION_BUTTON9) replace("&buttoninfo", _("Unused"), line_p); else if (button_action == ACTION_BUTTON10) replace("&buttoninfo", _("Unused"), line_p); else if (button_action == ACTION_DOWN) replace("&buttoninfo", _("Down"), line_p); else if (button_action == ACTION_LEFT) replace("&buttoninfo", _("Left"), line_p); else if (button_action == ACTION_RIGHT) replace("&buttoninfo", _("Right"), line_p); else if (button_action == ACTION_UP) replace("&buttoninfo", _("Up"), line_p); else replace("&buttoninfo", _("Error: not mapped"), line_p); } } if ((decipher_savegame != 0) && compare(*line_p, "&savegameinfo")) { char gameinfo[196] = ""; int mytime = 0; free(*line_p); if (load_game_small(decipher_savegame, gameinfo, &mytime) == 1) asprintf(line_p, _("Slot %d - %d:%02d - %s"), decipher_savegame, mytime/60, mytime%60, gameinfo); else asprintf(line_p, _("Slot %d - Empty"), decipher_savegame); } } /** * * name: name of the procedure() to call * n1: wait at least n1 milliseconds before callback * n2: wait at most n1+n2 milliseconds before callback * script: number of the script currently running **/ int add_callback(char name[20], int n1, int n2, int script) { int k; for (k = 1; k < MAX_CALLBACKS; k++) { if (callback[k].active == /*false*/0) { memset(&callback[k], 0, sizeof(callback[k])); callback[k].active = /*true*/1; callback[k].min = n1; callback[k].max = n2; callback[k].owner = script; strcpy(callback[k].name, name); log_debug("Callback added to %d.", k); return(k); } } log_error("Couldn't add callback, all out of space"); return 0; } void kill_callback(int cb) { if (cb >= 0 && cb <= 99) callback[cb].active = /*false*/0; } void kill_callbacks_owned_by_script(int script) { int i = 1; for (; i < MAX_CALLBACKS; i++) { if (callback[i].owner == script) { log_debug("Kill_all_callbacks just killed %d for script %d", i, script); //killed callback callback[i].active = /*false*/0; } } } void kill_script(int k) { if (rinfo[k] != NULL) { int i; kill_callbacks_owned_by_script(k); // Now let's kill all local vars associated with this script for (i = 1; i < MAX_VARS; i++) { if (play.var[i].active && play.var[i].scope == k) play.var[i].active = /*false*/0; } log_debug("Killed script %s. (num %d)", rinfo[k]->name, k); if (rinfo[k]->name != NULL) free(rinfo[k]->name); if (rinfo[k] != NULL) free(rinfo[k]); rinfo[k] = NULL; if (rbuf[k] != NULL) free(rbuf[k]); rbuf[k] = NULL; } } /** * Kill all scripts except those attached to pseudo-sprite 1000, which * is meant to survive across screen changes * (kill_all_scripts_for_real(...) is more brutal) * * Used by gfx_tiles only */ void kill_all_scripts(void) { /* Kill scripts (except if attached to pseudo-sprite 1000) */ int k = 1; for (; k < MAX_SCRIPTS; k++) { if (rinfo[k] != NULL) if (rinfo[k]->sprite != 1000) kill_script(k); } /* Kill pending callbacks (except if attached to pseudo-sprite 1000) */ for (k = 1; k < MAX_CALLBACKS; k++) { if (callback[k].active && (!(rinfo[callback[k].owner] != NULL) && (rinfo[callback[k].owner]->sprite == 1000))) { log_debug("Killed callback %d. (was attached to script %d)", k, callback[k].owner); callback[k].active = 0; } } } /** * Kill all scripts including those attached to pseudo-sprite 1000 */ void kill_all_scripts_for_real(void) { int k = 1; for (k = 1; k < MAX_SCRIPTS; k++) { if (rinfo[k] != NULL) kill_script(k); } for (k = 1; k <= MAX_CALLBACKS; k++) { callback[k].active = 0; } } /** * Return the next single line from rbuf[script], starting at * rinfo[script]->current. Update line/column counters. */ char* read_next_line(int script) { if (rinfo[script] == NULL || rbuf == NULL) { log_error("Tried to read script %d, it doesn't exist.", script); return NULL; } if (rinfo[script]->current >= rinfo[script]->end) { //at end of buffer return NULL; } /* remember the beginning of the line to be parsed, we'll use it in the debugging messages */ rinfo[script]->debug_line = rinfo[script]->cur_line; int k = rinfo[script]->current; int start = k; for (; k < rinfo[script]->end; k++) { rinfo[script]->current++; rinfo[script]->cur_col++; if (rbuf[script][k] == '\n') { rinfo[script]->cur_line++; rinfo[script]->cur_col = 0; } if (rbuf[script][k] == '\n' || rbuf[script][k] == '\r') break; } if (k < rinfo[script]->end) { int len = rinfo[script]->current - start; char* buf = xmalloc(len + 1); char* pc = buf; int k = start; for (; k < rinfo[script]->current; k++, pc++) { *pc = rbuf[script][k]; /* Compatibility substitutions, important when parsing title_start/title_end, namely */ if (*pc == '\t') *pc = ' '; if (*pc == '\r') *pc = '\n'; } *pc = '\0'; /* for safety */ return buf; } else { //at end of buffer return NULL; } } /** * Run callbacks, order by index. Sets the activation delay if * necessary. Kill obsolete callbacks along the way. * * Callbacks are set by wait() and set_callback_random(). * * spawn()/external()/etc. use other mechanisms. say_stop*() also use * callbacks, but implemented differently (spr[x].callback, processed * in updateFrame()). **/ void process_callbacks(void) { int now = game_GetTicks(); int i, k; for (i = 1; i < MAX_SCRIPTS; i++) { if (rinfo[i] != NULL) { if (rinfo[i]->sprite > 0 && rinfo[i]->sprite != 1000 && spr[rinfo[i]->sprite].active == /*false*/0) { //kill this script, owner is dead log_debug("Killing script %s, owner sprite %d is dead.", rinfo[i]->name, rinfo[i]->sprite); kill_script(i); } } } for (k = 1; k < MAX_CALLBACKS; k++) { if (callback[k].active) { if (callback[k].owner > 0 && rinfo[callback[k].owner] == NULL) { //kill this process, it's owner sprite is 'effin dead. log_debug("Killed callback %s because script %d is dead.", k, callback[k].owner); callback[k].active = /*false*/0; } else { if (callback[k].timer == 0) { //set timer if (callback[k].max > 0) callback[k].timer = now + (rand() % callback[k].max) + callback[k].min; else callback[k].timer = now + callback[k].min; } else { if (callback[k].timer < now) { callback[k].timer = 0; if (compare(callback[k].name, "")) { //callback defined no proc name, so lets assume they want to start the script where it //left off //kill this callback callback[k].active = /*false*/0; run_script(callback[k].owner); log_debug("Called script %d from callback %d.", callback[k].owner, k); } else { log_debug("Called proc %s from callback %d.", callback[k].name, k); //callback defined a proc name if (locate(callback[k].owner,callback[k].name)) { //found proc, lets run it run_script(callback[k].owner); } } } } } } } } /** * Run main() for all active sprites on screen */ void init_scripts() { int k = 1; for (; k < MAX_SCRIPTS; k++) { if (rinfo[k] != NULL && rinfo[k]->sprite != 0 /* don't go out of bounds in spr[300], e.g. when sprite == 1000: */ && rinfo[k]->sprite < MAX_SPRITES_AT_ONCE && spr[rinfo[k]->sprite].active) { if (locate(k, "main")) { log_debug("Screendraw: running main of script %s..", rinfo[k]->name); run_script(k); } } } } void kill_scripts_owned_by(int sprite) { int i; for (i = 1; i < MAX_SCRIPTS; i++) { if (rinfo[i] != NULL) { if (rinfo[i]->sprite == sprite) { kill_script(i); } } } } void kill_returning_stuff(int script) { //Msg("Checking callbacks.."); //check callbacks int i; // callbacks from wait() and run_script_by_number() for (i = 1; i < MAX_CALLBACKS; i++) { if (callback[i].active && callback[i].owner == script) // if (compare(callback[i].name, "")) { log_debug("killed a returning callback, ha!"); callback[i].active = /*false*/0; } } // callbacks from say_*() for (i = 1; i <= last_sprite_created; i++) { if (spr[i].active && spr[i].brain == 8 && spr[i].callback == script) { log_debug("Killed sprites callback command"); spr[i].callback = 0; } } } void run_script(int script) { int result; char* line = NULL; /* keep 'return' value? */ if (dversion >= 108) { if (bKeepReturnInt == 1) { bKeepReturnInt = 0; } else { returnint = 0; } } else { returnint = 0; } returnstring[0] = 0; if (rinfo[script] != NULL) { log_debug("Script %s is entered at %d:%d (offset %d).", rinfo[script]->name, rinfo[script]->cur_line, rinfo[script]->cur_col, rinfo[script]->current); } else { log_error("Tried to run a script that doesn't exist in memory. Nice work."); } int doelse_once = 0; while ((line = read_next_line(script)) != NULL) { while (1) { strip_beginning_spaces(line); if (strcmp(line, "\n") == 0) break; int doelse = 0; if (doelse_once == 1) { doelse = 1; doelse_once = 0; } result = process_line(script, line, doelse); if (result == DCPS_DOELSE_ONCE) { doelse_once = 1; /* now process the rest of the line */ } if (result == DCPS_YIELD) { /* Quit script: */ log_debug("giving script the boot"); free(line); return; } if (result == DCPS_GOTO_NEXTLINE) break; /* else result == DCPS_CONTINUE */ } free(line); } if (rinfo[script] != NULL && rinfo[script]->proc_return != 0) { run_script(rinfo[script]->proc_return); kill_script(script); } } int var_exists(char name[20], int scope) { int i; for (i = 1; i < MAX_VARS; i++) { if (play.var[i].active) { if (compare(play.var[i].name, name)) { if (scope == play.var[i].scope) { //Msg("Found match for %s.", name); return(i); } } } } return(0); } /** * Make new global functions (v1.08) */ void make_function (char file[10], char func[20]) { //See if it already exists int exists = 0; int i; for (i = 0; strlen (play.func[i].func) > 0 && i < 100; i++) { if (compare (func, play.func[i].func)) { exists = 1; break; } } if (exists == 1) { strncpy (play.func[i].file, file, 10); } else { strncpy (play.func[0].file, file, 10); strncpy (play.func[0].func, func, 20); } } void make_int(char name[80], int value, int scope, int script) { int dupe; int i; if (strlen(name) > 19) { log_error("[DinkC] %s:%d: varname %s is too long", rinfo[script]->name, rinfo[script]->debug_line, name); return; } dupe = var_exists(name, scope); if (dupe > 0) { if (scope != DINKC_GLOBAL_SCOPE) { log_warn("[DinkC] %s:%d: Local var %s already used in this procedure", rinfo[script]->name, rinfo[script]->debug_line, name, rinfo[script]->name); play.var[dupe].var = value; } else { log_warn("[DinkC] %s:%d: var %s is already a global, not changing value", rinfo[script]->name, rinfo[script]->debug_line, name); } return; } //make new var for (i = 1; i < MAX_VARS; i++) { if (play.var[i].active == /*false*/0) { play.var[i].active = /*true*/1; play.var[i].scope = scope; strcpy(play.var[i].name, name); //g("var %s created, used slot %d ", name,i); play.var[i].var = value; return; } } log_error("[DinkC] %s:%d: out of var space, all %d used", rinfo[script]->name, rinfo[script]->debug_line, MAX_VARS); } /** * (re)Define variable * * name: variable name * newname: new value (unless that's a function call, cf. 'rest') * math: operator (one of '=', '+', '-', '*', '/') * script: in-memory script identifier * rest: text of the script after the operator (left-trimmed) */ void var_equals(char* name, char* newname, char math, int script, char rest[200]) { int newval = 0; struct varman *lhs_var = NULL; /** Ensure left-hand side is an existing variable **/ if (name[0] != '&') { log_error("[DinkC] %s:%d:[var_equals]: unknown var %s", rinfo[script]->name, rinfo[script]->debug_line, name); return; } /* Find the variable slot */ { int k = search_var_with_this_scope(name, script); if (k != -1) lhs_var = &(play.var[k]); if (lhs_var == NULL) /* not found */ { log_error("[DinkC] %s:%d:[var_equals]: unknown var %s", rinfo[script]->name, rinfo[script]->debug_line, name); return; } } /** Analyse right-hand side **/ /* check if right-hand side is a function */ if (strchr(rest, '(') != NULL) { process_line(script, rest, /*false*/0); newval = returnint; goto next2; } /* check if right-hand side is a variable to copy */ /* remove trailing ';' */ if (strchr(newname, ';') != NULL) replace_norealloc(";", "", newname); /* look for existing variable */ { int k2 = search_var_with_this_scope(newname, script); if (k2 != -1) { newval = play.var[k2].var; //found var goto next2; } } /* also check special variables */ if (compare(newname, "¤t_sprite")) { newval = rinfo[script]->sprite; goto next2; } if (compare(newname, "¤t_script")) { newval = script; goto next2; } if (dversion >= 108) { //v1.08 special variables. if (compare (newname, "&return")) { newval = returnint; goto next2; } if (compare (newname, "&arg1")) { newval = rinfo[script]->arg1; goto next2; } if (compare (newname, "&arg2")) { newval = rinfo[script]->arg2; goto next2; } if (compare (newname, "&arg3")) { newval = rinfo[script]->arg3; goto next2; } if (compare (newname, "&arg4")) { newval = rinfo[script]->arg4; goto next2; } if (compare (newname, "&arg5")) { newval = rinfo[script]->arg5; goto next2; } if (compare (newname, "&arg6")) { newval = rinfo[script]->arg6; goto next2; } if (compare (newname, "&arg7")) { newval = rinfo[script]->arg7; goto next2; } if (compare (newname, "&arg8")) { newval = rinfo[script]->arg8; goto next2; } if (compare (newname, "&arg9")) { newval = rinfo[script]->arg9; goto next2; } } /* otherwise, assume right-hand side is an integer */ newval = atol(newname); next2: /* Apply the right operation */ if (math == '=') lhs_var->var = newval; if (math == '+') lhs_var->var += newval; if (math == '-') lhs_var->var -= newval; if (math == '/') lhs_var->var = lhs_var->var / newval; if (math == '*') lhs_var->var = lhs_var->var * newval; } /** * Evaluate a value (variable, int, or maths), in the context of * 'script'. */ int var_figure(char* h, int script) { char* word = NULL; int ret = 0; int n1 = 0, n2 = 0; int is_one_word_equation = 0; word = get_word(h, 2); if (compare(word, "")) is_one_word_equation = 1; free(word); if (is_one_word_equation) { // variable -> integer if (h[0] == '&') decipher_string(&h, script); // integer ret = atol(h); return ret; } word = get_word(h, 1); decipher_string(&word, script); n1 = atol(word); free(word); word = get_word(h, 3); replace_norealloc(")", "", word); decipher_string(&word, script); n2 = atol(word); free(word); word = get_word(h, 2); log_debug("Compared %d to %d", n1, n2); if (compare(word, "==")) { if (n1 == n2) ret = 1; else ret = 0; free(word); return ret; } if (compare(word, ">")) { if (n1 > n2) ret = 1; else ret = 0; free(word); return ret; } if (compare(word, ">=")) { if (n1 >= n2) ret = 1; else ret = 0; free(word); return ret; } if (compare(word, "<")) { if (n1 < n2) ret = 1; else ret = 0; free(word); return ret; } if (compare(word, "<=")) { if (n1 <= n2) ret = 1; else ret = 0; free(word); return ret; } if (compare(word, "!=")) { if (n1 != n2) ret = 1; else ret = 0; free(word); return ret; } free(word); return ret; } /** * Check if 'line' is a valid variable declaration, and define the * variable it to 0 (via make_int(...)). 'line' is modified. */ void int_prepare(char* line, int script) { char* hold = strdup(line); char* name = NULL; char *temp = NULL; replace_norealloc("=", " ", line); temp = separate_string(line, 1, ';'); strcpy(line, temp); // safe as strlen(line) <= strlen(temp) free(temp); name = get_word(line, 2); if (name[0] != '&') { log_error("[DinkC] %s:%d: can't create var %s, should be &%s.", rinfo[script]->name, rinfo[script]->debug_line, name, name); } else { make_int(name, 0, script, script); strcpy(line, hold); } free(name); free(hold); } void dinkc_init() { dinkc_bindings_init(); } void dinkc_quit() { dinkc_bindings_quit(); } freedink-108.4+dfsg/src/Makefile.am0000644000175000017500000001154312420231175014644 0ustar meme# Done in configure.ac so that Gnulib better detect environment #AM_CFLAGS = -Wall -std=c99 # Cf. (autoconf.info)Installation Directory Variables: # Don't use DATADIR, it conflicts with something in MinGW AM_CPPFLAGS = -DDEFAULT_DATA_DIR=\"$(datadir)\" # Gnulib: # includes generated files from top_builddir (not only top_srcdir) AM_CPPFLAGS += -I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib LDADD = $(top_builddir)/gnulib/lib/libgnu.a # relocatable-prog AM_CPPFLAGS += -DINSTALLDIR=\"$(bindir)\" if RELOCATABLE_VIA_LD AM_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)` endif # gettext: AM_CPPFLAGS += -DLOCALEDIR=\"$(localedir)\" LDADD += @LIBINTL@ AM_CPPFLAGS += -I$(top_srcdir)/intl -I$(top_builddir)/intl LIBS += -lm COMMON_OBJS=bgm.c bgm.h dinkini.c dinkini.h dinkc.c dinkc.h \ dinkc_bindings.c dinkc_bindings.h dinkc_console.c \ dinkc_console.h dinkc_sp_custom.c dinkc_sp_custom.h dinkvar.c \ dinkvar.h fastfile.c fastfile.h game_engine.c game_engine.h \ str_util.c str_util.h io_util.c io_util.h sfx.c sfx.h gfx.c \ gfx.h gfx_fade.c gfx_fade.h gfx_tiles.c gfx_tiles.h \ gfx_palette.c gfx_palette.h gfx_fonts.c gfx_fonts.h init.c \ init.h rect.c rect.h input.c input.h binreloc.c binreloc.h \ freedink_xpm.c freedink_xpm.h paths.c paths.h log.c log.h \ gfx_sprites.c gfx_sprites.h vgasys_fon.c vgasys_fon.h msgbox.c \ msgbox.h i18n.c i18n.h meminfo.c meminfo.h screen.c screen.h if HAVE_ZZIPLIB COMMON_OBJS+=SDL_rwops_zzip.c SDL_rwops_zzip.h endif if HAVE_LIBZIP COMMON_OBJS+=SDL_rwops_libzip.c SDL_rwops_libzip.h endif bin_PROGRAMS = freedink freedinkedit freedink_SOURCES = $(COMMON_OBJS) freedink.c freedink.h update_frame.c \ update_frame.h freedinkedit_SOURCES = $(COMMON_OBJS) freedinkedit.c nodist_freedink_SOURCES = $(WOERES) nodist_freedinkedit_SOURCES = $(WOERES) EXTRA_DIST = media/freedink.ico media/system.sfd media/vgasys.fon \ media/README resdir=$(top_srcdir)/share/freedink install-exec-hook: if HAVE_UPX # UPX compression # Not using --best because it takes much more time and the result is # only a little bit smaller # Needs to be done before bundling resources -$(UPX) "$(DESTDIR)$(bindir)/freedink$(EXEEXT)" -$(UPX) "$(DESTDIR)$(bindir)/freedinkedit$(EXEEXT)" endif if HAVE_ZIP # Bundle resources zip -j res.zip $(resdir)/LiberationSans-Regular.ttf cat res.zip >> "$(DESTDIR)$(bindir)/freedink$(EXEEXT)" rm -f res.zip zip -A "$(DESTDIR)$(bindir)/freedink$(EXEEXT)" zip -j res.zip $(resdir)/LiberationSans-Regular.ttf \ $(resdir)/stop.wav $(resdir)/jump.wav cat res.zip >> "$(DESTDIR)$(bindir)/freedinkedit$(EXEEXT)" rm -f res.zip zip -A "$(DESTDIR)$(bindir)/freedinkedit$(EXEEXT)" endif # Add 'dink' and 'dinkedit' aliases, to please 3rd-party tools $(LN_S) -f "freedink$(EXEEXT)" "$(DESTDIR)$(bindir)/dink$(EXEEXT)" $(LN_S) -f "freedinkedit$(EXEEXT)" "$(DESTDIR)$(bindir)/dinkedit$(EXEEXT)" uninstall-hook: rm -f "$(DESTDIR)$(bindir)/dink$(EXEEXT)" rm -f "$(DESTDIR)$(bindir)/dinkedit$(EXEEXT)" # help2man-generated manpages # Inspiration from (automake-1.10.info.gz)distcleancheck dist_man_MANS = freedink.6 freedinkedit.6 dink.6 dinkedit.6 freedink.6: init.c $(top_srcdir)/configure.ac Makefile.am $(MAKE) $(AM_MAKEFLAGS) freedink$(EXEEXT) -$(HELP2MAN) -s6 -n "adventure and role-playing game (engine)" \ --no-info --output=freedink.6 ./freedink$(EXEEXT) freedinkedit.6: init.c $(top_srcdir)/configure.ac Makefile.am $(MAKE) $(AM_MAKEFLAGS) freedinkedit$(EXEEXT) -$(HELP2MAN) -s6 -n "adventure and role-playing game (editor)" \ --no-info --output=freedinkedit.6 ./freedinkedit$(EXEEXT) distclean-local: rm -f freedink.6 freedinkedit.6 # Woe icon and app infos # Also check http://fragglet.livejournal.com/4448.html .rc.o: $(WINDRES) -i $< -o $@ # How do we handle resources embedded in the executable binary? if HAVE_WINDRES WOERES=woeres.rc else WOERES= endif # Other projects that use Autotools and support MinGW # http://sourceforge.net/projects/chocolate-doom (Doom port) # http://savannah.nongnu.org/projects/akfavatar (text display) if PSP TARGET=freedink PSP_EBOOT_TITLE = "GNU FreeDink" all-local: # Based on pspdev/psp/sdk/lib/build.mak # Fixup is mandatory. Without it the homebrew will freeze, and # after 10-20s the PSP will shutdown abruptly. psp-fixup-imports $(TARGET) -o $(TARGET).elf mksfoex -d MEMSIZE=1 $(PSP_EBOOT_TITLE) PARAM.SFO psp-prxgen $(TARGET).elf $(TARGET).prx # also strips pack-pbp EBOOT.PBP PARAM.SFO $(top_srcdir)/psp/freedink.png \ NULL $(top_srcdir)/psp/icon1.png $(top_srcdir)/psp/splash.png \ NULL $(TARGET).prx NULL DEVICE=sdX1 install-psp: pmount /dev/$(DEVICE) mkdir -p /media/$(DEVICE)/PSP/GAME/$(TARGET) cp -a EBOOT.PBP $(top_srcdir)/share/freedink/LiberationSans-Regular.ttf \ /media/$(DEVICE)/PSP/GAME/$(TARGET) pumount /dev/$(DEVICE) endif TESTS = check_freedink check_PROGRAMS = check_freedink check_freedink_SOURCES = $(COMMON_OBJS) check_freedink.c check_freedink_LDADD = $(LDADD) @CHECK_LIBS@ freedink-108.4+dfsg/src/dinkvar.h0000644000175000017500000002041512420231175014415 0ustar meme/** * Header for code common to FreeDink and FreeDinkedit * Copyright (C) 2005, 2007, 2008, 2009, 2010, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _DINKVAR_H #define _DINKVAR_H /* for RECT ?? */ /* #include */ /* #include */ /* #include */ /* #include */ #include #include "SDL.h" #include "SDL_framerate.h" #include "game_engine.h" #include "rect.h" #include "dinkc.h" struct attackinfo_struct { int time; /*bool*/int active; int script; /*bool*/int hitme; int last_power; int wait; int pull_wait; }; struct sprite_placement { int x, y; int seq, frame, type; /* DinkC: editor_seq, editor_frame, editor_type */ int size; BOOL_1BYTE active; int rotation, special, brain; char script[13+1]; /* attached DinkC script */ int speed, base_walk, base_idle, base_attack, base_hit, timer, que; int hard; rect alt; /* trim left/top/right/bottom */ int is_warp; int warp_map; int warp_x; int warp_y; int parm_seq; int base_die, gold, hitpoints, strength, defense, exp, sound, vision, nohit, touch_damage; int buff[5]; }; /* one screen from map.dat */ struct small_map { struct tile t[12*8+1]; // 97 background tiles struct sprite_placement sprite[100+1]; char script[20+1]; /* script to run when entering the script */ }; #define TALK_TITLE_BUFSIZ 3000 #define TALK_LINE_BUFSIZ 101 struct talk_struct { char line[21][TALK_LINE_BUFSIZ]; /* dialog choices */ int line_return[21]; /* return this number if chosen */ char buffer[TALK_TITLE_BUFSIZ]; /* title */ int cur; int last; /*bool*/int active; int cur_view; int cur_view_end; int page; int script; int offset; int newy; int color; int curf; int timer; }; //sub struct for tile hardness struct block_y { unsigned char y[51]; }; struct ts_block { struct block_y x[51]; BOOL_1BYTE used; }; //struct for hardness info, INDEX controls which hardness each block has. 800 max //types available. #define HARDNESS_NB_TILES 800 struct hardness { struct ts_block htile[HARDNESS_NB_TILES]; /* default hardness for each background tile square, 12*8=96 tiles per screen but indexed % 128 in the code (so 128*(41-1)+12*8=5216 used indexes instead of 12*8*41=3936). */ short btile_default[GFX_TILES_NB_SQUARES]; }; extern int GetKeyboard(int key); extern int add_sprite(int x1, int y, int brain,int pseq, int pframe ); extern void check_seq_status(int h); /* extern void dderror(HRESULT hErr); */ //extern void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h); extern void draw_sprite_game(SDL_Surface *GFX_lpdest, int h); extern void draw_status_all(void); extern void drawallhard( void); extern void duck_brain(int h); extern /*BOOL*/int init_mouse(); extern int load_map_to(char* path, const int num, struct small_map* screen); extern int load_map(const int num); extern int load_script(char filename[15], int sprite, /*bool*/int set_sprite); extern /*bool*/int locate(int script, char proc[20]); extern void process_callbacks(void); extern void run_script (int script); extern void update_status_all(void); extern /*bool*/int abort_this_flip; extern int base_timing; extern struct attackinfo_struct bow; extern int dinkspeed; extern int flife; extern int flub_mode; extern int fps_final; extern int show_inventory; extern int stop_entire_game; extern int getpic(int h); /* show_bmp() currently ran */ struct show_bmp { /*bool*/int active; /*bool*/int showdot; int reserved; int script; int stime; int picframe; }; extern struct show_bmp showb; extern int keep_mouse; extern int last_sprite_created; extern int mbase_count; extern int mode; extern unsigned long mold; extern int *pupdate_status; extern struct small_map pam; extern int playl; extern int playx; extern int playy; extern int *pmap; extern int screenlock; extern int show_dot; extern struct talk_struct talk; extern Uint32 thisTickCount; extern Uint32 lastTickCount; extern FPSmanager framerate_manager; extern /*bool*/int total_trigger; extern /*bool*/int trig_man; /* extern HRESULT ddrval; */ /* extern LPDIRECTDRAWPALETTE lpDDPal; /\* The primary surface palette *\/ */ /* extern PALETTEENTRY pe[256]; */ /* Game state */ extern /*bool*/int add_time_to_saved_game(int num); extern void attach(void); extern /*bool*/int windowed; extern int fcur_weapon, fcur_magic; extern int push_active; extern int move_screen; extern int move_counter; extern int weapon_script; extern int magic_script; /* Player */ extern /*bool*/int inside_box(int x1, int y1, rect box); extern int walk_off_screen; /* Sprites - state */ extern void add_exp_force(int num, int source_sprite); extern void add_exp(int num, int killed_sprite); extern void changedir( int dir1, int k,int base); extern int get_pan(int h); extern int get_vol(int h); /* Sprites - action */ extern void kill_text_owned_by(int sprite); /* Sprites - global */ extern void kill_sprite_all (int sprite); extern int find_sprite(int editor_sprite); /* Scripts */ extern int say_text_xy(char text[200], int mx, int my, int script); extern void kill_all_scripts_for_real(void); extern void kill_returning_stuff(int script); extern int say_text(char text[200], int h, int script); /* Map */ extern unsigned char get_hard(int x1, int y1); extern unsigned char get_hard_play(int h, int x1, int y1); extern void load_hard(void); extern int load_info_to(char* path, struct map_info *mymap); extern void load_info(void); /* Dunno */ extern /*bool*/int mouse1; /* Screen */ extern void update_screen_time(void); /* OS */ extern int bActive; // is application active? extern char *command_line; // command line params, used by doInit //if true, will close app as soon as the message pump is empty extern int g_b_kill_app; /* Startup */ extern void pre_figure_out(char* line); extern void figure_out(char* line); /* Metadata */ extern int burn_revision; /* * Game & editor */ /*bool*/int get_box (int h, rect * box_crap, rect * box_real); extern /*bool*/int dinkedit; extern int draw_map_tiny; extern int cur_map; extern struct hardness hmap; /* * Editor */ extern void check_sprite_status(int h); extern void add_hardness(int sprite, int num); extern void fill_whole_hard(void); extern int add_sprite_dumb(int x1, int y, int brain,int pseq, int pframe,int size); extern /*bool*/int kill_last_sprite(void); extern void check_frame_status(int h, int frame); extern void flip_it_second(void); extern void save_map(const int num); extern void save_info(void); extern int realhard(int tile); extern void save_hard(void); extern /*bool*/int no_running_main; extern void fill_screen(int num); /* Used by dinkc_bindings.c only */ enum item_type { ITEM_REGULAR, ITEM_MAGIC }; extern void clear_talk(void); extern void add_item(char name[10], int mseq, int mframe, enum item_type type); extern void kill_item_script(char* name); extern void kill_mitem_script(char* name); extern void show_bmp(char name[80], int showdot, int script); extern void copy_bmp( char name[80]); extern void kill_cur_item( void ); extern void kill_cur_magic( void ); extern /*bool*/int text_owned_by(int sprite); extern void kill_all_vars(void); extern void update_play_changes( void ); extern void fill_hardxy(rect box); extern void save_game(int num); extern /*bool*/int load_game(int num); extern int does_sprite_have_text(int sprite); extern int change_sprite(int h, int val, int * change); extern int change_sprite_noreturn(int h, int val, int * change); extern int change_edit_char(int h, int val, unsigned char * change); extern int change_edit(int h, int val, unsigned short * change); extern int hurt_thing(int h, int damage, int special); extern void random_blood(int mx, int my, int h); extern void check_sprite_status_full(int sprite_no); #endif freedink-108.4+dfsg/src/binreloc.h0000644000175000017500000000564612420231175014565 0ustar meme/* * BinReloc - a library for creating relocatable executables * Written by: Hongli Lai * http://autopackage.org/ * * This source code is public domain. You can relicense this code * under whatever license you want. * * See http://autopackage.org/docs/binreloc/ for * more information and how to use this. */ #ifndef __BINRELOC_H__ #define __BINRELOC_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** These error codes can be returned by br_init(), br_init_lib(), gbr_init() or gbr_init_lib(). */ typedef enum { /** Cannot allocate memory. */ BR_INIT_ERROR_NOMEM, /** Unable to open /proc/self/maps; see errno for details. */ BR_INIT_ERROR_OPEN_MAPS, /** Unable to read from /proc/self/maps; see errno for details. */ BR_INIT_ERROR_READ_MAPS, /** The file format of /proc/self/maps is invalid; kernel bug? */ BR_INIT_ERROR_INVALID_MAPS, /** BinReloc is disabled (the ENABLE_BINRELOC macro is not defined). */ BR_INIT_ERROR_DISABLED } BrInitError; #ifndef BINRELOC_RUNNING_DOXYGEN /* Mangle symbol names to avoid symbol collisions with other ELF objects. */ #define br_init yFOX81087830209896_br_init #define br_init_lib yFOX81087830209896_br_init_lib #define br_find_exe yFOX81087830209896_br_find_exe #define br_find_exe_dir yFOX81087830209896_br_find_exe_dir #define br_find_prefix yFOX81087830209896_br_find_prefix #define br_find_bin_dir yFOX81087830209896_br_find_bin_dir #define br_find_sbin_dir yFOX81087830209896_br_find_sbin_dir #define br_find_data_dir yFOX81087830209896_br_find_data_dir #define br_find_locale_dir yFOX81087830209896_br_find_locale_dir #define br_find_lib_dir yFOX81087830209896_br_find_lib_dir #define br_find_libexec_dir yFOX81087830209896_br_find_libexec_dir #define br_find_etc_dir yFOX81087830209896_br_find_etc_dir #define br_strcat yFOX81087830209896_br_strcat #define br_build_path yFOX81087830209896_br_build_path #define br_dirname yFOX81087830209896_br_dirname #endif int br_init (BrInitError *error); int br_init_lib (BrInitError *error); char *br_find_exe (const char *default_exe); char *br_find_exe_dir (const char *default_dir); char *br_find_prefix (const char *default_prefix); char *br_find_bin_dir (const char *default_bin_dir); char *br_find_sbin_dir (const char *default_sbin_dir); char *br_find_data_dir (const char *default_data_dir); char *br_find_locale_dir (const char *default_locale_dir); char *br_find_lib_dir (const char *default_lib_dir); char *br_find_libexec_dir (const char *default_libexec_dir); char *br_find_etc_dir (const char *default_etc_dir); /* Utility functions */ char *br_strcat (const char *str1, const char *str2); char *br_build_path (const char *dir, const char *file); char *br_dirname (const char *path); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __BINRELOC_H__ */ freedink-108.4+dfsg/src/gfx_palette.h0000644000175000017500000000222212330466347015270 0ustar meme/** * Graphics utilities: palettes... * Copyright (C) 2007 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _GFX_UTILS_H #define _GFX_UTILS_H #include "SDL.h" extern void gfx_palette_reset(); extern int gfx_palette_set_from_surface (SDL_Surface *bmp); extern int gfx_palette_set_from_bmp (char *file); extern void gfx_palette_get_phys(SDL_Color *palette); extern void gfx_palette_set_phys(SDL_Color *new_palette); extern void gfx_palette_apply_phys(); extern void gfx_palette_restore_phys(); #endif freedink-108.4+dfsg/src/Makefile.in0000644000175000017500000017615612421727615014703 0ustar meme# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_ZZIPLIB_TRUE@am__append_1 = SDL_rwops_zzip.c SDL_rwops_zzip.h @HAVE_LIBZIP_TRUE@am__append_2 = SDL_rwops_libzip.c SDL_rwops_libzip.h bin_PROGRAMS = freedink$(EXEEXT) freedinkedit$(EXEEXT) TESTS = check_freedink$(EXEEXT) check_PROGRAMS = check_freedink$(EXEEXT) subdir = src DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/woeres.rc.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gnulib/m4/00gnulib.m4 \ $(top_srcdir)/gnulib/m4/absolute-header.m4 \ $(top_srcdir)/gnulib/m4/alloca.m4 \ $(top_srcdir)/gnulib/m4/canonicalize.m4 \ $(top_srcdir)/gnulib/m4/chdir-long.m4 \ $(top_srcdir)/gnulib/m4/close.m4 \ $(top_srcdir)/gnulib/m4/closedir.m4 \ $(top_srcdir)/gnulib/m4/d-ino.m4 \ $(top_srcdir)/gnulib/m4/dirent_h.m4 \ $(top_srcdir)/gnulib/m4/dirfd.m4 \ $(top_srcdir)/gnulib/m4/dirname.m4 \ $(top_srcdir)/gnulib/m4/double-slash-root.m4 \ $(top_srcdir)/gnulib/m4/dup.m4 $(top_srcdir)/gnulib/m4/dup2.m4 \ $(top_srcdir)/gnulib/m4/eealloc.m4 \ $(top_srcdir)/gnulib/m4/environ.m4 \ $(top_srcdir)/gnulib/m4/errno_h.m4 \ $(top_srcdir)/gnulib/m4/error.m4 \ $(top_srcdir)/gnulib/m4/exponentd.m4 \ $(top_srcdir)/gnulib/m4/extensions.m4 \ $(top_srcdir)/gnulib/m4/extern-inline.m4 \ $(top_srcdir)/gnulib/m4/fchdir.m4 \ $(top_srcdir)/gnulib/m4/fcntl-o.m4 \ $(top_srcdir)/gnulib/m4/fcntl.m4 \ $(top_srcdir)/gnulib/m4/fcntl_h.m4 \ $(top_srcdir)/gnulib/m4/fdopendir.m4 \ $(top_srcdir)/gnulib/m4/filenamecat.m4 \ $(top_srcdir)/gnulib/m4/float_h.m4 \ $(top_srcdir)/gnulib/m4/fstat.m4 \ $(top_srcdir)/gnulib/m4/fstatat.m4 \ $(top_srcdir)/gnulib/m4/getcwd-abort-bug.m4 \ $(top_srcdir)/gnulib/m4/getcwd-path-max.m4 \ $(top_srcdir)/gnulib/m4/getcwd.m4 \ $(top_srcdir)/gnulib/m4/getdtablesize.m4 \ $(top_srcdir)/gnulib/m4/getopt.m4 \ $(top_srcdir)/gnulib/m4/gettext.m4 \ $(top_srcdir)/gnulib/m4/gettimeofday.m4 \ $(top_srcdir)/gnulib/m4/gnulib-common.m4 \ $(top_srcdir)/gnulib/m4/gnulib-comp.m4 \ $(top_srcdir)/gnulib/m4/iconv.m4 \ $(top_srcdir)/gnulib/m4/include_next.m4 \ $(top_srcdir)/gnulib/m4/intlmacosx.m4 \ $(top_srcdir)/gnulib/m4/intmax_t.m4 \ $(top_srcdir)/gnulib/m4/inttypes_h.m4 \ $(top_srcdir)/gnulib/m4/largefile.m4 \ $(top_srcdir)/gnulib/m4/lib-ld.m4 \ $(top_srcdir)/gnulib/m4/lib-link.m4 \ $(top_srcdir)/gnulib/m4/lib-prefix.m4 \ $(top_srcdir)/gnulib/m4/longlong.m4 \ $(top_srcdir)/gnulib/m4/lstat.m4 \ $(top_srcdir)/gnulib/m4/malloc.m4 \ $(top_srcdir)/gnulib/m4/malloca.m4 \ $(top_srcdir)/gnulib/m4/memchr.m4 \ $(top_srcdir)/gnulib/m4/mempcpy.m4 \ $(top_srcdir)/gnulib/m4/memrchr.m4 \ $(top_srcdir)/gnulib/m4/mmap-anon.m4 \ $(top_srcdir)/gnulib/m4/mode_t.m4 \ $(top_srcdir)/gnulib/m4/msvc-inval.m4 \ $(top_srcdir)/gnulib/m4/msvc-nothrow.m4 \ $(top_srcdir)/gnulib/m4/multiarch.m4 \ $(top_srcdir)/gnulib/m4/nls.m4 \ $(top_srcdir)/gnulib/m4/nocrash.m4 \ $(top_srcdir)/gnulib/m4/off_t.m4 \ $(top_srcdir)/gnulib/m4/open.m4 \ $(top_srcdir)/gnulib/m4/openat.m4 \ $(top_srcdir)/gnulib/m4/opendir.m4 \ $(top_srcdir)/gnulib/m4/pathmax.m4 \ $(top_srcdir)/gnulib/m4/po.m4 \ $(top_srcdir)/gnulib/m4/printf.m4 \ $(top_srcdir)/gnulib/m4/progtest.m4 \ $(top_srcdir)/gnulib/m4/readdir.m4 \ $(top_srcdir)/gnulib/m4/readlink.m4 \ $(top_srcdir)/gnulib/m4/realloc.m4 \ $(top_srcdir)/gnulib/m4/relocatable-lib.m4 \ $(top_srcdir)/gnulib/m4/relocatable.m4 \ $(top_srcdir)/gnulib/m4/rewinddir.m4 \ $(top_srcdir)/gnulib/m4/same.m4 \ $(top_srcdir)/gnulib/m4/save-cwd.m4 \ $(top_srcdir)/gnulib/m4/setenv.m4 \ $(top_srcdir)/gnulib/m4/size_max.m4 \ $(top_srcdir)/gnulib/m4/ssize_t.m4 \ $(top_srcdir)/gnulib/m4/stat.m4 \ $(top_srcdir)/gnulib/m4/stdbool.m4 \ $(top_srcdir)/gnulib/m4/stddef_h.m4 \ $(top_srcdir)/gnulib/m4/stdint.m4 \ $(top_srcdir)/gnulib/m4/stdint_h.m4 \ $(top_srcdir)/gnulib/m4/stdio_h.m4 \ $(top_srcdir)/gnulib/m4/stdlib_h.m4 \ $(top_srcdir)/gnulib/m4/strcase.m4 \ $(top_srcdir)/gnulib/m4/strdup.m4 \ $(top_srcdir)/gnulib/m4/strerror.m4 \ $(top_srcdir)/gnulib/m4/string_h.m4 \ $(top_srcdir)/gnulib/m4/strings_h.m4 \ $(top_srcdir)/gnulib/m4/strndup.m4 \ $(top_srcdir)/gnulib/m4/strnlen.m4 \ $(top_srcdir)/gnulib/m4/sys_socket_h.m4 \ $(top_srcdir)/gnulib/m4/sys_stat_h.m4 \ $(top_srcdir)/gnulib/m4/sys_time_h.m4 \ $(top_srcdir)/gnulib/m4/sys_types_h.m4 \ $(top_srcdir)/gnulib/m4/time_h.m4 \ $(top_srcdir)/gnulib/m4/unistd-safer.m4 \ $(top_srcdir)/gnulib/m4/unistd_h.m4 \ $(top_srcdir)/gnulib/m4/vasnprintf.m4 \ $(top_srcdir)/gnulib/m4/vasprintf.m4 \ $(top_srcdir)/gnulib/m4/warn-on-use.m4 \ $(top_srcdir)/gnulib/m4/wchar_h.m4 \ $(top_srcdir)/gnulib/m4/wchar_t.m4 \ $(top_srcdir)/gnulib/m4/wint_t.m4 \ $(top_srcdir)/gnulib/m4/xalloc.m4 \ $(top_srcdir)/gnulib/m4/xgetcwd.m4 \ $(top_srcdir)/gnulib/m4/xsize.m4 \ $(top_srcdir)/gnulib/m4/xstrndup.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = woeres.rc CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man6dir)" PROGRAMS = $(bin_PROGRAMS) am__check_freedink_SOURCES_DIST = bgm.c bgm.h dinkini.c dinkini.h \ dinkc.c dinkc.h dinkc_bindings.c dinkc_bindings.h \ dinkc_console.c dinkc_console.h dinkc_sp_custom.c \ dinkc_sp_custom.h dinkvar.c dinkvar.h fastfile.c fastfile.h \ game_engine.c game_engine.h str_util.c str_util.h io_util.c \ io_util.h sfx.c sfx.h gfx.c gfx.h gfx_fade.c gfx_fade.h \ gfx_tiles.c gfx_tiles.h gfx_palette.c gfx_palette.h \ gfx_fonts.c gfx_fonts.h init.c init.h rect.c rect.h input.c \ input.h binreloc.c binreloc.h freedink_xpm.c freedink_xpm.h \ paths.c paths.h log.c log.h gfx_sprites.c gfx_sprites.h \ vgasys_fon.c vgasys_fon.h msgbox.c msgbox.h i18n.c i18n.h \ meminfo.c meminfo.h screen.c screen.h SDL_rwops_zzip.c \ SDL_rwops_zzip.h SDL_rwops_libzip.c SDL_rwops_libzip.h \ check_freedink.c @HAVE_ZZIPLIB_TRUE@am__objects_1 = SDL_rwops_zzip.$(OBJEXT) @HAVE_LIBZIP_TRUE@am__objects_2 = SDL_rwops_libzip.$(OBJEXT) am__objects_3 = bgm.$(OBJEXT) dinkini.$(OBJEXT) dinkc.$(OBJEXT) \ dinkc_bindings.$(OBJEXT) dinkc_console.$(OBJEXT) \ dinkc_sp_custom.$(OBJEXT) dinkvar.$(OBJEXT) fastfile.$(OBJEXT) \ game_engine.$(OBJEXT) str_util.$(OBJEXT) io_util.$(OBJEXT) \ sfx.$(OBJEXT) gfx.$(OBJEXT) gfx_fade.$(OBJEXT) \ gfx_tiles.$(OBJEXT) gfx_palette.$(OBJEXT) gfx_fonts.$(OBJEXT) \ init.$(OBJEXT) rect.$(OBJEXT) input.$(OBJEXT) \ binreloc.$(OBJEXT) freedink_xpm.$(OBJEXT) paths.$(OBJEXT) \ log.$(OBJEXT) gfx_sprites.$(OBJEXT) vgasys_fon.$(OBJEXT) \ msgbox.$(OBJEXT) i18n.$(OBJEXT) meminfo.$(OBJEXT) \ screen.$(OBJEXT) $(am__objects_1) $(am__objects_2) am_check_freedink_OBJECTS = $(am__objects_3) check_freedink.$(OBJEXT) check_freedink_OBJECTS = $(am_check_freedink_OBJECTS) am__DEPENDENCIES_1 = $(top_builddir)/gnulib/lib/libgnu.a check_freedink_DEPENDENCIES = $(am__DEPENDENCIES_1) am__freedink_SOURCES_DIST = bgm.c bgm.h dinkini.c dinkini.h dinkc.c \ dinkc.h dinkc_bindings.c dinkc_bindings.h dinkc_console.c \ dinkc_console.h dinkc_sp_custom.c dinkc_sp_custom.h dinkvar.c \ dinkvar.h fastfile.c fastfile.h game_engine.c game_engine.h \ str_util.c str_util.h io_util.c io_util.h sfx.c sfx.h gfx.c \ gfx.h gfx_fade.c gfx_fade.h gfx_tiles.c gfx_tiles.h \ gfx_palette.c gfx_palette.h gfx_fonts.c gfx_fonts.h init.c \ init.h rect.c rect.h input.c input.h binreloc.c binreloc.h \ freedink_xpm.c freedink_xpm.h paths.c paths.h log.c log.h \ gfx_sprites.c gfx_sprites.h vgasys_fon.c vgasys_fon.h msgbox.c \ msgbox.h i18n.c i18n.h meminfo.c meminfo.h screen.c screen.h \ SDL_rwops_zzip.c SDL_rwops_zzip.h SDL_rwops_libzip.c \ SDL_rwops_libzip.h freedink.c freedink.h update_frame.c \ update_frame.h am_freedink_OBJECTS = $(am__objects_3) freedink.$(OBJEXT) \ update_frame.$(OBJEXT) @HAVE_WINDRES_TRUE@am__objects_4 = woeres.$(OBJEXT) nodist_freedink_OBJECTS = $(am__objects_4) freedink_OBJECTS = $(am_freedink_OBJECTS) $(nodist_freedink_OBJECTS) freedink_LDADD = $(LDADD) freedink_DEPENDENCIES = $(top_builddir)/gnulib/lib/libgnu.a am__freedinkedit_SOURCES_DIST = bgm.c bgm.h dinkini.c dinkini.h \ dinkc.c dinkc.h dinkc_bindings.c dinkc_bindings.h \ dinkc_console.c dinkc_console.h dinkc_sp_custom.c \ dinkc_sp_custom.h dinkvar.c dinkvar.h fastfile.c fastfile.h \ game_engine.c game_engine.h str_util.c str_util.h io_util.c \ io_util.h sfx.c sfx.h gfx.c gfx.h gfx_fade.c gfx_fade.h \ gfx_tiles.c gfx_tiles.h gfx_palette.c gfx_palette.h \ gfx_fonts.c gfx_fonts.h init.c init.h rect.c rect.h input.c \ input.h binreloc.c binreloc.h freedink_xpm.c freedink_xpm.h \ paths.c paths.h log.c log.h gfx_sprites.c gfx_sprites.h \ vgasys_fon.c vgasys_fon.h msgbox.c msgbox.h i18n.c i18n.h \ meminfo.c meminfo.h screen.c screen.h SDL_rwops_zzip.c \ SDL_rwops_zzip.h SDL_rwops_libzip.c SDL_rwops_libzip.h \ freedinkedit.c am_freedinkedit_OBJECTS = $(am__objects_3) freedinkedit.$(OBJEXT) nodist_freedinkedit_OBJECTS = $(am__objects_4) freedinkedit_OBJECTS = $(am_freedinkedit_OBJECTS) \ $(nodist_freedinkedit_OBJECTS) freedinkedit_LDADD = $(LDADD) freedinkedit_DEPENDENCIES = $(top_builddir)/gnulib/lib/libgnu.a DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(check_freedink_SOURCES) $(freedink_SOURCES) \ $(nodist_freedink_SOURCES) $(freedinkedit_SOURCES) \ $(nodist_freedinkedit_SOURCES) DIST_SOURCES = $(am__check_freedink_SOURCES_DIST) \ $(am__freedink_SOURCES_DIST) $(am__freedinkedit_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man6dir = $(mandir)/man6 NROFF = nroff MANS = $(dist_man_MANS) ETAGS = etags CTAGS = ctags am__tty_colors = \ red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CHECK_CFLAGS = @CHECK_CFLAGS@ CHECK_LIBS = @CHECK_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FLOAT_H = @FLOAT_H@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETOPT_H = @GETOPT_H@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FCNTL = @GNULIB_FCNTL@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFS = @GNULIB_FFS@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBRLEN = @GNULIB_MBRLEN@ GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSINIT = @GNULIB_MBSINIT@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_OPEN = @GNULIB_OPEN@ GNULIB_OPENAT = @GNULIB_OPENAT@ GNULIB_OPENDIR = @GNULIB_OPENDIR@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READDIR = @GNULIB_READDIR@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCPCPY = @GNULIB_WCPCPY@ GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ GNULIB_WCSCAT = @GNULIB_WCSCAT@ GNULIB_WCSCHR = @GNULIB_WCSCHR@ GNULIB_WCSCMP = @GNULIB_WCSCMP@ GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ GNULIB_WCSCPY = @GNULIB_WCSCPY@ GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ GNULIB_WCSDUP = @GNULIB_WCSDUP@ GNULIB_WCSLEN = @GNULIB_WCSLEN@ GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ GNULIB_WCSSPN = @GNULIB_WCSSPN@ GNULIB_WCSSTR = @GNULIB_WCSSTR@ GNULIB_WCSTOK = @GNULIB_WCSTOK@ GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ GNULIB_WCTOB = @GNULIB_WCTOB@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ GNULIB_WMEMSET = @GNULIB_WMEMSET@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DIRENT_H = @HAVE_DIRENT_H@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFS = @HAVE_FFS@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OPENDIR = @HAVE_OPENDIR@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READDIR = @HAVE_READDIR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASECMP = @HAVE_STRCASECMP@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRINGS_H = @HAVE_STRINGS_H@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE__BOOL = @HAVE__BOOL@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM_ENV = @INSTALL_PROGRAM_ENV@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -lm LIBZIP_CFLAGS = @LIBZIP_CFLAGS@ LIBZIP_LIBS = @LIBZIP_LIBS@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRINGS_H = @NEXT_STRINGS_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ RELOCATABLE = @RELOCATABLE@ RELOCATABLE_BUILD_DIR = @RELOCATABLE_BUILD_DIR@ RELOCATABLE_CONFIG_H_DIR = @RELOCATABLE_CONFIG_H_DIR@ RELOCATABLE_LDFLAGS = @RELOCATABLE_LDFLAGS@ RELOCATABLE_LIBRARY_PATH = @RELOCATABLE_LIBRARY_PATH@ RELOCATABLE_SRC_DIR = @RELOCATABLE_SRC_DIR@ RELOCATABLE_STRIP = @RELOCATABLE_STRIP@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ REPLACE_DIRFD = @REPLACE_DIRFD@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_OPENDIR = @REPLACE_OPENDIR@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WRITE = @REPLACE_WRITE@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDBOOL_H = @STDBOOL_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ UPX = @UPX@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDRES = @WINDRES@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZIP = @ZIP@ ZZIPLIB_CFLAGS = @ZZIPLIB_CFLAGS@ ZZIPLIB_LIBS = @ZZIPLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Done in configure.ac so that Gnulib better detect environment #AM_CFLAGS = -Wall -std=c99 # Cf. (autoconf.info)Installation Directory Variables: # Don't use DATADIR, it conflicts with something in MinGW # Gnulib: # includes generated files from top_builddir (not only top_srcdir) # relocatable-prog # gettext: AM_CPPFLAGS = -DDEFAULT_DATA_DIR=\"$(datadir)\" \ -I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib \ -DINSTALLDIR=\"$(bindir)\" -DLOCALEDIR=\"$(localedir)\" \ -I$(top_srcdir)/intl -I$(top_builddir)/intl LDADD = $(top_builddir)/gnulib/lib/libgnu.a @LIBINTL@ @RELOCATABLE_VIA_LD_TRUE@AM_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)` COMMON_OBJS = bgm.c bgm.h dinkini.c dinkini.h dinkc.c dinkc.h \ dinkc_bindings.c dinkc_bindings.h dinkc_console.c \ dinkc_console.h dinkc_sp_custom.c dinkc_sp_custom.h dinkvar.c \ dinkvar.h fastfile.c fastfile.h game_engine.c game_engine.h \ str_util.c str_util.h io_util.c io_util.h sfx.c sfx.h gfx.c \ gfx.h gfx_fade.c gfx_fade.h gfx_tiles.c gfx_tiles.h \ gfx_palette.c gfx_palette.h gfx_fonts.c gfx_fonts.h init.c \ init.h rect.c rect.h input.c input.h binreloc.c binreloc.h \ freedink_xpm.c freedink_xpm.h paths.c paths.h log.c log.h \ gfx_sprites.c gfx_sprites.h vgasys_fon.c vgasys_fon.h msgbox.c \ msgbox.h i18n.c i18n.h meminfo.c meminfo.h screen.c screen.h \ $(am__append_1) $(am__append_2) freedink_SOURCES = $(COMMON_OBJS) freedink.c freedink.h update_frame.c \ update_frame.h freedinkedit_SOURCES = $(COMMON_OBJS) freedinkedit.c nodist_freedink_SOURCES = $(WOERES) nodist_freedinkedit_SOURCES = $(WOERES) EXTRA_DIST = media/freedink.ico media/system.sfd media/vgasys.fon \ media/README resdir = $(top_srcdir)/share/freedink # help2man-generated manpages # Inspiration from (automake-1.10.info.gz)distcleancheck dist_man_MANS = freedink.6 freedinkedit.6 dink.6 dinkedit.6 @HAVE_WINDRES_FALSE@WOERES = # How do we handle resources embedded in the executable binary? @HAVE_WINDRES_TRUE@WOERES = woeres.rc # Other projects that use Autotools and support MinGW # http://sourceforge.net/projects/chocolate-doom (Doom port) # http://savannah.nongnu.org/projects/akfavatar (text display) @PSP_TRUE@TARGET = freedink @PSP_TRUE@PSP_EBOOT_TITLE = "GNU FreeDink" @PSP_TRUE@DEVICE = sdX1 check_freedink_SOURCES = $(COMMON_OBJS) check_freedink.c check_freedink_LDADD = $(LDADD) @CHECK_LIBS@ all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj .rc $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): woeres.rc: $(top_builddir)/config.status $(srcdir)/woeres.rc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) installcheck-binPROGRAMS: $(bin_PROGRAMS) bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ esac; \ f=`echo "$$p" | \ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ for opt in --help --version; do \ if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ 2>c$${pid}_.err &2; bad=1; fi; \ done; \ done; rm -f c$${pid}_.???; exit $$bad clean-checkPROGRAMS: -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) check_freedink$(EXEEXT): $(check_freedink_OBJECTS) $(check_freedink_DEPENDENCIES) $(EXTRA_check_freedink_DEPENDENCIES) @rm -f check_freedink$(EXEEXT) $(LINK) $(check_freedink_OBJECTS) $(check_freedink_LDADD) $(LIBS) freedink$(EXEEXT): $(freedink_OBJECTS) $(freedink_DEPENDENCIES) $(EXTRA_freedink_DEPENDENCIES) @rm -f freedink$(EXEEXT) $(LINK) $(freedink_OBJECTS) $(freedink_LDADD) $(LIBS) freedinkedit$(EXEEXT): $(freedinkedit_OBJECTS) $(freedinkedit_DEPENDENCIES) $(EXTRA_freedinkedit_DEPENDENCIES) @rm -f freedinkedit$(EXEEXT) $(LINK) $(freedinkedit_OBJECTS) $(freedinkedit_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SDL_rwops_libzip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SDL_rwops_zzip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binreloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_freedink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dinkc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dinkc_bindings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dinkc_console.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dinkc_sp_custom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dinkini.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dinkvar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fastfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freedink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freedink_xpm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freedinkedit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/game_engine.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx_fade.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx_fonts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx_palette.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx_sprites.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx_tiles.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/meminfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msgbox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paths.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update_frame.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgasys_fon.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` install-man6: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man6dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man6dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man6dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.6[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^6][0-9a-z]*$$,6,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man6dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man6dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man6dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man6dir)" || exit $$?; }; \ done; } uninstall-man6: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man6dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.6[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^6][0-9a-z]*$$,6,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man6dir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ col=$$red; res=XPASS; \ ;; \ *) \ col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ col=$$blu; res=SKIP; \ fi; \ echo "$${col}$$res$${std}: $$tst"; \ done; \ if test "$$all" -eq 1; then \ tests="test"; \ All=""; \ else \ tests="tests"; \ All="All "; \ fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="$$All$$all $$tests passed"; \ else \ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all $$tests failed"; \ else \ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ if test "$$skip" -eq 1; then \ skipped="($$skip test was not run)"; \ else \ skipped="($$skip tests were not run)"; \ fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ col="$$grn"; \ else \ col="$$red"; \ fi; \ echo "$${col}$$dashes$${std}"; \ echo "$${col}$$banner$${std}"; \ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ test -z "$$report" || echo "$${col}$$report$${std}"; \ echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am @PSP_FALSE@all-local: all-am: Makefile $(PROGRAMS) $(MANS) all-local installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man6dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man6 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: installcheck-binPROGRAMS maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-man @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook uninstall-man: uninstall-man6 .MAKE: check-am install-am install-exec-am install-strip uninstall-am .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \ clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ ctags distclean distclean-compile distclean-generic \ distclean-local distclean-tags distdir dvi dvi-am html html-am \ info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-exec-hook install-html \ install-html-am install-info install-info-am install-man \ install-man6 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installcheck-binPROGRAMS installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-hook \ uninstall-man uninstall-man6 install-exec-hook: # UPX compression # Not using --best because it takes much more time and the result is # only a little bit smaller # Needs to be done before bundling resources @HAVE_UPX_TRUE@ -$(UPX) "$(DESTDIR)$(bindir)/freedink$(EXEEXT)" @HAVE_UPX_TRUE@ -$(UPX) "$(DESTDIR)$(bindir)/freedinkedit$(EXEEXT)" # Bundle resources @HAVE_ZIP_TRUE@ zip -j res.zip $(resdir)/LiberationSans-Regular.ttf @HAVE_ZIP_TRUE@ cat res.zip >> "$(DESTDIR)$(bindir)/freedink$(EXEEXT)" @HAVE_ZIP_TRUE@ rm -f res.zip @HAVE_ZIP_TRUE@ zip -A "$(DESTDIR)$(bindir)/freedink$(EXEEXT)" @HAVE_ZIP_TRUE@ zip -j res.zip $(resdir)/LiberationSans-Regular.ttf \ @HAVE_ZIP_TRUE@ $(resdir)/stop.wav $(resdir)/jump.wav @HAVE_ZIP_TRUE@ cat res.zip >> "$(DESTDIR)$(bindir)/freedinkedit$(EXEEXT)" @HAVE_ZIP_TRUE@ rm -f res.zip @HAVE_ZIP_TRUE@ zip -A "$(DESTDIR)$(bindir)/freedinkedit$(EXEEXT)" # Add 'dink' and 'dinkedit' aliases, to please 3rd-party tools $(LN_S) -f "freedink$(EXEEXT)" "$(DESTDIR)$(bindir)/dink$(EXEEXT)" $(LN_S) -f "freedinkedit$(EXEEXT)" "$(DESTDIR)$(bindir)/dinkedit$(EXEEXT)" uninstall-hook: rm -f "$(DESTDIR)$(bindir)/dink$(EXEEXT)" rm -f "$(DESTDIR)$(bindir)/dinkedit$(EXEEXT)" freedink.6: init.c $(top_srcdir)/configure.ac Makefile.am $(MAKE) $(AM_MAKEFLAGS) freedink$(EXEEXT) -$(HELP2MAN) -s6 -n "adventure and role-playing game (engine)" \ --no-info --output=freedink.6 ./freedink$(EXEEXT) freedinkedit.6: init.c $(top_srcdir)/configure.ac Makefile.am $(MAKE) $(AM_MAKEFLAGS) freedinkedit$(EXEEXT) -$(HELP2MAN) -s6 -n "adventure and role-playing game (editor)" \ --no-info --output=freedinkedit.6 ./freedinkedit$(EXEEXT) distclean-local: rm -f freedink.6 freedinkedit.6 # Woe icon and app infos # Also check http://fragglet.livejournal.com/4448.html .rc.o: $(WINDRES) -i $< -o $@ @PSP_TRUE@all-local: # Based on pspdev/psp/sdk/lib/build.mak # Fixup is mandatory. Without it the homebrew will freeze, and # after 10-20s the PSP will shutdown abruptly. @PSP_TRUE@ psp-fixup-imports $(TARGET) -o $(TARGET).elf @PSP_TRUE@ mksfoex -d MEMSIZE=1 $(PSP_EBOOT_TITLE) PARAM.SFO @PSP_TRUE@ psp-prxgen $(TARGET).elf $(TARGET).prx # also strips @PSP_TRUE@ pack-pbp EBOOT.PBP PARAM.SFO $(top_srcdir)/psp/freedink.png \ @PSP_TRUE@ NULL $(top_srcdir)/psp/icon1.png $(top_srcdir)/psp/splash.png \ @PSP_TRUE@ NULL $(TARGET).prx NULL @PSP_TRUE@install-psp: @PSP_TRUE@ pmount /dev/$(DEVICE) @PSP_TRUE@ mkdir -p /media/$(DEVICE)/PSP/GAME/$(TARGET) @PSP_TRUE@ cp -a EBOOT.PBP $(top_srcdir)/share/freedink/LiberationSans-Regular.ttf \ @PSP_TRUE@ /media/$(DEVICE)/PSP/GAME/$(TARGET) @PSP_TRUE@ pumount /dev/$(DEVICE) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: freedink-108.4+dfsg/src/dinkini.c0000644000175000017500000000711712354041252014404 0ustar meme/** * Dink.ini - loading graphics * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include "game_engine.h" #include "paths.h" #include "dinkvar.h" #include "dinkini.h" #include "log.h" #include "gfx_sprites.h" static int nb_idata = 0; struct idata { enum idata_type type; int seq; int frame; int xoffset, yoffset; rect hardbox; }; static struct idata *id; /** * Allocate idata */ void dinkini_init() { nb_idata = 600; if (dversion >= 108) nb_idata = 1000; id = calloc(sizeof(struct idata), nb_idata); } /** * Deallocate idata */ void dinkini_quit() { if (id != NULL) free(id); id = NULL; } /** * Store sprite instructions from dink.ini */ void make_idata(enum idata_type type, int myseq, int myframe, int xoffset, int yoffset, rect crect) { int i; for (i = 1; i < nb_idata; i++) { if (id[i].type == IDATA_EMPTY) { //found empty one id[i].type = type; id[i].seq = myseq; id[i].frame = myframe; id[i].xoffset = xoffset; id[i].yoffset = yoffset; rect_copy(&id[i].hardbox, &crect); return; } } log_error("Out of idata spots (max is %d), no more sprite corrections can be allowed.", nb_idata); } /** * Interpret/execute sprite instructions */ void program_idata(void) { int i; for (i = 1; i < nb_idata; i++) { if (id[i].type == IDATA_EMPTY) return; if (id[i].type == IDATA_SPRITE_INFO) { k[seq[id[i].seq].frame[id[i].frame]].xoffset = id[i].xoffset; k[seq[id[i].seq].frame[id[i].frame]].yoffset = id[i].yoffset; rect_copy(&k[seq[id[i].seq].frame[id[i].frame]].hardbox, &id[i].hardbox); // Msg("Programming idata type %d in %d...Seq %d Frame %d (Hardbox is %d %d %d %d)", id[i].type, i, // id[i].seq, id[i].frame, id[i].hardbox.left,id[i].hardbox.right, id[i].hardbox.top, id[i].hardbox.bottom); } if (id[i].type == IDATA_FRAME_SPECIAL) { //set special seq[id[i].seq].special[id[i].frame] = id[i].xoffset; } if (id[i].type == IDATA_FRAME_DELAY) { //set delay seq[id[i].seq].delay[id[i].frame] = id[i].xoffset; } if (id[i].type == IDATA_FRAME_FRAME) { if (id[i].xoffset == -1) seq[id[i].seq].frame[id[i].frame] = -1; else seq[id[i].seq].frame[id[i].frame] = seq[id[i].xoffset].frame[id[i].yoffset]; } } } /* Parse dink.ini */ void load_batch(void) { FILE *in = NULL; char line[255]; log_info("Loading dink.ini"); /* Open the text file in binary mode, so it's read the same way under different OSes (Unix has no text mode) */ if ((in = paths_dmodfile_fopen("dink.ini", "rb")) == NULL) log_error("Error opening dink.ini for reading."); else { while(fgets(line, 255, in) != NULL) { pre_figure_out(line); /* printf("[pre_figure_out] %s", line); */ } fclose(in); } program_idata(); } freedink-108.4+dfsg/src/sfx.h0000644000175000017500000000340212420231175013554 0ustar meme/** * Sound (not music) management * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2003 Shawn Betts * Copyright (C) 2005, 2007 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _SFX_H #define _SFX_H #include "SDL_mixer.h" extern int InitSound(); extern int CreateBufferFromWaveFile(char* filename, int dwBuf); extern int CreateBufferFromWaveFile_RW(SDL_RWops* rwops, int rwfreesrc, int index); extern void EditorSoundPlayEffect(int sound); extern int SoundPlayEffect(int sound, int min, int plus, int sound3d, /*bool*/int repeat); extern int playing(int sound); extern int SoundStopEffect(int sound); extern void kill_repeat_sounds(void); extern void kill_repeat_sounds_all(void); extern void QuitSound(void); extern void sfx_log_meminfo(void); extern void sfx_cleanup_finished_channels(void); extern void update_sound(void); /* DinkC procedures */ extern int playsound(int sound, int min, int plus, int sound3d, int repeat); extern void sound_set_kill(int soundbank); extern void sound_set_survive(int soundbank, int survive); extern void sound_set_vol(int soundbank, int volume); #endif freedink-108.4+dfsg/src/SDL_rwops_libzip.h0000644000175000017500000000271212420231175016204 0ustar meme/** * libzip data source for SDL_RWops * Copyright (C) 2001 Guido Draheim * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ /* * You should be able to drop it in the place of a SDL_RWFromFile. Then * go to X/share/myapp and do `cd graphics && zip -9r ../graphics.zip .` * and rename the graphics/ subfolder - and still all your files * are found: a filepath like X/shared/graphics/game/greetings.bmp * will open X/shared/graphics.zip and return the zipped file * game/greetings.bmp in the zip-archive (for reading that is). * */ #ifndef _SDL_RWops_LIBZIP_h #define _SDL_RWops_LIBZIP_h #include #ifdef __cplusplus extern "C" { #endif extern SDL_RWops *SDL_RWFromZIP(const char* archivename, const char* filename); #ifdef __cplusplus } /* extern C */ #endif #endif freedink-108.4+dfsg/src/game_engine.h0000644000175000017500000001310112420231175015207 0ustar meme/** * Header for code common to FreeDink and FreeDinkedit * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2008, 2009, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _GAME_ENGINE_H #define _GAME_ENGINE_H #include #include "SDL.h" #include "rect.h" #include "io_util.h" #include "dinkc.h" #include "gfx_tiles.h" #include "dinkc_sp_custom.h" #define FPS 60 #define MAX_SPRITES_AT_ONCE 300 struct sp { int x,moveman; int y; int mx,my; int lpx[51],lpy[51]; int speed; int brain; int seq_orig,dir; int seq; int frame; unsigned long delay; int pseq; int pframe; /*BOOL*/int active; int attrib; unsigned long wait; int timer; int skip; int skiptimer; int size; int que; int base_walk; int base_idle; int base_attack; int base_hit; int last_sound; int hard; rect alt; int althard; int sp_index; /* editor_sprite */ /*BOOL*/int nocontrol; int idle; int strength; int damage; int defense; int hitpoints; int exp; int gold; int base_die; int kill; Uint32 kill_timer; int script_num; char text[200]; int owner; int script; int sound; int callback; int freeze; /*bool*/int move_active; int move_script; int move_dir; int move_num; /*BOOL*/int move_nohard; int follow; int nohit; /*BOOL*/int notouch; unsigned long notouch_timer; /*BOOL*/int flying; int touch_damage; int brain_parm; int brain_parm2; /*BOOL*/int noclip; /*BOOL*/int reverse; /*BOOL*/int disabled; int target; int attack_wait; int move_wait; int distance; int last_hit; /*BOOL*/int live; int range; int attack_hit_sound; int attack_hit_sound_speed; int action; int nodraw; int frame_delay; int picfreeze; /* v1.08 */ int bloodseq; int bloodnum; dinkc_sp_custom custom; }; struct item_struct { BOOL_1BYTE active; char name[10+1]; int seq; int frame; }; struct mydata { unsigned char type[100]; // DinkC's editor_type(i) unsigned short seq[100]; // DinkC's editor_seq(i) unsigned char frame[100]; // DinkC's editor_frame(i) int last_time; // ticks when type 6, 7 or 8 was set }; /* Game state. Saved games are generated by dumping this structure in to SAVEx.DAT, so DON'T DON'T DON'T change anything here ;) otherwise you'll change the saved games format. */ // for storing current tiles in save game struct player_info_tile { char file[50]; }; #define NB_MITEMS 8 #define NB_ITEMS 16 struct player_info { int minutes; struct item_struct mitem[NB_MITEMS]; struct item_struct item[NB_ITEMS]; int curitem; // highlighted item in the inventory BOOL_1BYTE item_magic; // 1 if it's a magic item, 0 if regular struct mydata spmap[769]; struct varman var[MAX_VARS]; BOOL_1BYTE push_active; int push_dir; unsigned int push_timer; int last_talk; int mouse; /* vertical position of the mouse when selecting a dialog option */ int last_map; /* v1.08: use wasted space for storing file location of map.dat, dink.dat, palette, and tiles */ /* char cbuff[6000];*/ char mapdat[50]; char dinkdat[50]; char palette[50]; struct player_info_tile tile[GFX_TILES_NB_SETS+1]; struct global_function func[100]; }; extern struct sp spr[]; extern struct player_info play; extern int last_sprite_created; /* Engine variables directly mapped with DinkC variables */ extern int *pvision, *plife, *presult, *pspeed, *ptiming, *plifemax, *pexper, *pmap, *pstrength, *pcur_weapon,*pcur_magic, *pdefense, *pgold, *pmagic, *plevel, *plast_text, *pmagic_level; extern int *pupdate_status, *pmissile_target, *penemy_sprite, *pmagic_cost, *pmissle_source; extern int flife, fexp, fstrength, fdefense, fgold, fmagic, fmagic_level, flifemax, fraise, last_magic_draw; /* Sound - BGM */ extern /*bool*/int midi_active; extern /*bool*/int sound_on; extern /*bool*/int cd_inserted; /* dink.dat */ struct map_info { int loc[769]; int music[769]; int indoor[769]; }; extern struct map_info map; /* Joystick */ extern /*BOOL*/int joystick; /* extern JOYINFOEX jinfo; */ extern SDL_Joystick *jinfo; struct wait_for_button { int script; int button; /*bool*/int active; }; extern struct wait_for_button wait4b; extern int last_saved_game; extern char *dversion_string; extern int dversion; #define LEN_SAVE_GAME_INFO 200 extern char save_game_info[LEN_SAVE_GAME_INFO]; extern char current_map[50]; extern char current_dat[50]; extern time_t time_start; extern int smooth_follow; extern int get_pan(int h); extern int get_vol(int h); /* Editor sprite containing the current warp (teleporter), 0 if no active warp: */ extern int process_warp; extern int process_downcycle; extern int process_upcycle; extern unsigned long cycle_clock; extern int cycle_script; extern unsigned int dink_base_push; extern void game_init(void); extern void game_quit(void); extern Uint32 game_GetTicks(void); extern void game_set_high_speed(void); extern void game_set_normal_speed(void); #endif freedink-108.4+dfsg/src/vgasys_fon.c0000644000175000017500000010343312330466347015145 0ustar meme/* Statically compiled font for emergency messages Copyright (C) 2004 Huw D M Davies, Dmitry Timoshkov This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /* Origin: vgasys.fon, somehow built from system.sfd, comes from Wine (http://winehq.org). We keep a prebuilt vgasys.fon because it's complicated to rebuild it, see the fonts/ directory in the Wine source package. */ /* Translated to a C static char array using: (echo "unsigned char vgasys_fon[] = {"; od -v -txC ../share/freedink/vgasys.fon \ | sed -e 's/^[0-9]\+//' -e s'/ \([0-9a-f][0-9a-f]\)/0x\1,/g' -e'$d' \ | sed -e'$s/,$/};/' ) > vgasys_fon.c It's a modified version from http://www.codeguru.com/forum/showthread.php?t=373518 (I added the -v option for od and removed 'const') */ /* Note: I read there're various implementations of a tool called 'bin2c' to do the job. This might come in handy if there's ever need to do that again. */ const char vgasys_fon[] = { 0x4d,0x5a,0x0d,0x01,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0x00,0x00, 0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, 0x0e,0x1f,0xba,0x0e,0x00,0xb4,0x09,0xcd,0x21,0xb8,0x01,0x4c,0xcd,0x21,0x54,0x68, 0x69,0x73,0x20,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x63,0x61,0x6e,0x6e,0x6f, 0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6e,0x20,0x69,0x6e,0x20,0x44,0x4f,0x53,0x20, 0x6d,0x6f,0x64,0x65,0x0d,0x0a,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x4e,0x45,0x05,0x01,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x2b,0x00,0x40,0x00,0x40,0x00,0x7a,0x00,0x84,0x00,0x84,0x00,0x06,0x01,0x00,0x00, 0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04, 0x04,0x00,0x07,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x08,0x00,0x50,0x00, 0x32,0x00,0x00,0x00,0x00,0x00,0x08,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x1c,0x00, 0x7b,0x01,0x30,0x10,0x50,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x07,0x46,0x4f,0x4e,0x54,0x44,0x49,0x52,0x06,0x53,0x79,0x73,0x74,0x65, 0x6d,0x00,0x00,0x00,0x00,0x00,0x27,0x46,0x4f,0x4e,0x54,0x52,0x45,0x53,0x20,0x31, 0x30,0x30,0x2c,0x39,0x36,0x2c,0x39,0x36,0x20,0x3a,0x20,0x53,0x79,0x73,0x74,0x65, 0x6d,0x20,0x31,0x30,0x20,0x28,0x56,0x47,0x41,0x20,0x72,0x65,0x73,0x29,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x00,0x50,0x00,0x00,0x03,0xa7,0x17,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69, 0x67,0x68,0x74,0x20,0x28,0x43,0x29,0x20,0x32,0x30,0x30,0x34,0x20,0x48,0x75,0x77, 0x20,0x44,0x20,0x4d,0x20,0x44,0x61,0x76,0x69,0x65,0x73,0x2c,0x20,0x44,0x6d,0x69, 0x74,0x72,0x79,0x20,0x54,0x69,0x6d,0x6f,0x73,0x68,0x6b,0x6f,0x76,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x60,0x00,0x60,0x00,0x0d,0x00, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xbc,0x02,0x00,0x00,0x00,0x10,0x00,0x21,0x07, 0x00,0x0f,0x00,0x20,0xff,0x60,0x00,0x1c,0x01,0x00,0x00,0x00,0x00,0xa0,0x17,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x79,0x73,0x74,0x65,0x6d,0x00,0x00,0x00,0x00, 0x00,0x03,0xa7,0x17,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, 0x28,0x43,0x29,0x20,0x32,0x30,0x30,0x34,0x20,0x48,0x75,0x77,0x20,0x44,0x20,0x4d, 0x20,0x44,0x61,0x76,0x69,0x65,0x73,0x2c,0x20,0x44,0x6d,0x69,0x74,0x72,0x79,0x20, 0x54,0x69,0x6d,0x6f,0x73,0x68,0x6b,0x6f,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x0a,0x00,0x60,0x00,0x60,0x00,0x0d,0x00,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0xbc,0x02,0x00,0x00,0x00,0x10,0x00,0x21,0x07,0x00,0x0f,0x00,0x20, 0xff,0x60,0x00,0x1c,0x01,0x00,0x00,0x00,0x00,0xa0,0x17,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0x05,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x04,0x00,0xe0,0x05,0x00,0x00,0x04,0x00,0xf0,0x05,0x00,0x00, 0x06,0x00,0x00,0x06,0x00,0x00,0x08,0x00,0x10,0x06,0x00,0x00,0x08,0x00,0x20,0x06, 0x00,0x00,0x0b,0x00,0x30,0x06,0x00,0x00,0x09,0x00,0x50,0x06,0x00,0x00,0x04,0x00, 0x70,0x06,0x00,0x00,0x04,0x00,0x80,0x06,0x00,0x00,0x04,0x00,0x90,0x06,0x00,0x00, 0x06,0x00,0xa0,0x06,0x00,0x00,0x08,0x00,0xb0,0x06,0x00,0x00,0x04,0x00,0xc0,0x06, 0x00,0x00,0x04,0x00,0xd0,0x06,0x00,0x00,0x04,0x00,0xe0,0x06,0x00,0x00,0x04,0x00, 0xf0,0x06,0x00,0x00,0x08,0x00,0x00,0x07,0x00,0x00,0x08,0x00,0x10,0x07,0x00,0x00, 0x08,0x00,0x20,0x07,0x00,0x00,0x08,0x00,0x30,0x07,0x00,0x00,0x08,0x00,0x40,0x07, 0x00,0x00,0x08,0x00,0x50,0x07,0x00,0x00,0x08,0x00,0x60,0x07,0x00,0x00,0x08,0x00, 0x70,0x07,0x00,0x00,0x08,0x00,0x80,0x07,0x00,0x00,0x08,0x00,0x90,0x07,0x00,0x00, 0x04,0x00,0xa0,0x07,0x00,0x00,0x04,0x00,0xb0,0x07,0x00,0x00,0x08,0x00,0xc0,0x07, 0x00,0x00,0x08,0x00,0xd0,0x07,0x00,0x00,0x08,0x00,0xe0,0x07,0x00,0x00,0x08,0x00, 0xf0,0x07,0x00,0x00,0x0e,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x20,0x08,0x00,0x00, 0x0a,0x00,0x30,0x08,0x00,0x00,0x09,0x00,0x50,0x08,0x00,0x00,0x0a,0x00,0x70,0x08, 0x00,0x00,0x09,0x00,0x90,0x08,0x00,0x00,0x08,0x00,0xb0,0x08,0x00,0x00,0x0a,0x00, 0xc0,0x08,0x00,0x00,0x0a,0x00,0xe0,0x08,0x00,0x00,0x04,0x00,0x00,0x09,0x00,0x00, 0x07,0x00,0x10,0x09,0x00,0x00,0x09,0x00,0x20,0x09,0x00,0x00,0x08,0x00,0x40,0x09, 0x00,0x00,0x0c,0x00,0x50,0x09,0x00,0x00,0x0a,0x00,0x70,0x09,0x00,0x00,0x0a,0x00, 0x90,0x09,0x00,0x00,0x09,0x00,0xb0,0x09,0x00,0x00,0x0a,0x00,0xd0,0x09,0x00,0x00, 0x0a,0x00,0xf0,0x09,0x00,0x00,0x09,0x00,0x10,0x0a,0x00,0x00,0x08,0x00,0x30,0x0a, 0x00,0x00,0x0a,0x00,0x40,0x0a,0x00,0x00,0x08,0x00,0x60,0x0a,0x00,0x00,0x0e,0x00, 0x70,0x0a,0x00,0x00,0x09,0x00,0x90,0x0a,0x00,0x00,0x0a,0x00,0xb0,0x0a,0x00,0x00, 0x09,0x00,0xd0,0x0a,0x00,0x00,0x04,0x00,0xf0,0x0a,0x00,0x00,0x04,0x00,0x00,0x0b, 0x00,0x00,0x04,0x00,0x10,0x0b,0x00,0x00,0x05,0x00,0x20,0x0b,0x00,0x00,0x08,0x00, 0x30,0x0b,0x00,0x00,0x05,0x00,0x40,0x0b,0x00,0x00,0x08,0x00,0x50,0x0b,0x00,0x00, 0x08,0x00,0x60,0x0b,0x00,0x00,0x07,0x00,0x70,0x0b,0x00,0x00,0x08,0x00,0x80,0x0b, 0x00,0x00,0x08,0x00,0x90,0x0b,0x00,0x00,0x04,0x00,0xa0,0x0b,0x00,0x00,0x08,0x00, 0xb0,0x0b,0x00,0x00,0x08,0x00,0xc0,0x0b,0x00,0x00,0x04,0x00,0xd0,0x0b,0x00,0x00, 0x04,0x00,0xe0,0x0b,0x00,0x00,0x07,0x00,0xf0,0x0b,0x00,0x00,0x04,0x00,0x00,0x0c, 0x00,0x00,0x0c,0x00,0x10,0x0c,0x00,0x00,0x08,0x00,0x30,0x0c,0x00,0x00,0x08,0x00, 0x40,0x0c,0x00,0x00,0x08,0x00,0x50,0x0c,0x00,0x00,0x08,0x00,0x60,0x0c,0x00,0x00, 0x05,0x00,0x70,0x0c,0x00,0x00,0x08,0x00,0x80,0x0c,0x00,0x00,0x04,0x00,0x90,0x0c, 0x00,0x00,0x08,0x00,0xa0,0x0c,0x00,0x00,0x08,0x00,0xb0,0x0c,0x00,0x00,0x0a,0x00, 0xc0,0x0c,0x00,0x00,0x08,0x00,0xe0,0x0c,0x00,0x00,0x08,0x00,0xf0,0x0c,0x00,0x00, 0x08,0x00,0x00,0x0d,0x00,0x00,0x05,0x00,0x10,0x0d,0x00,0x00,0x04,0x00,0x20,0x0d, 0x00,0x00,0x05,0x00,0x30,0x0d,0x00,0x00,0x05,0x00,0x40,0x0d,0x00,0x00,0x04,0x00, 0x50,0x0d,0x00,0x00,0x04,0x00,0x60,0x0d,0x00,0x00,0x04,0x00,0x70,0x0d,0x00,0x00, 0x05,0x00,0x80,0x0d,0x00,0x00,0x04,0x00,0x90,0x0d,0x00,0x00,0x06,0x00,0xa0,0x0d, 0x00,0x00,0x08,0x00,0xb0,0x0d,0x00,0x00,0x0a,0x00,0xc0,0x0d,0x00,0x00,0x0a,0x00, 0xe0,0x0d,0x00,0x00,0x04,0x00,0x00,0x0e,0x00,0x00,0x0f,0x00,0x10,0x0e,0x00,0x00, 0x09,0x00,0x30,0x0e,0x00,0x00,0x08,0x00,0x50,0x0e,0x00,0x00,0x04,0x00,0x60,0x0e, 0x00,0x00,0x04,0x00,0x70,0x0e,0x00,0x00,0x09,0x00,0x80,0x0e,0x00,0x00,0x04,0x00, 0xa0,0x0e,0x00,0x00,0x04,0x00,0xb0,0x0e,0x00,0x00,0x04,0x00,0xc0,0x0e,0x00,0x00, 0x04,0x00,0xd0,0x0e,0x00,0x00,0x07,0x00,0xe0,0x0e,0x00,0x00,0x07,0x00,0xf0,0x0e, 0x00,0x00,0x07,0x00,0x00,0x0f,0x00,0x00,0x06,0x00,0x10,0x0f,0x00,0x00,0x09,0x00, 0x20,0x0f,0x00,0x00,0x04,0x00,0x40,0x0f,0x00,0x00,0x09,0x00,0x50,0x0f,0x00,0x00, 0x08,0x00,0x70,0x0f,0x00,0x00,0x07,0x00,0x80,0x0f,0x00,0x00,0x04,0x00,0x90,0x0f, 0x00,0x00,0x04,0x00,0xa0,0x0f,0x00,0x00,0x08,0x00,0xb0,0x0f,0x00,0x00,0x04,0x00, 0xc0,0x0f,0x00,0x00,0x09,0x00,0xd0,0x0f,0x00,0x00,0x04,0x00,0xf0,0x0f,0x00,0x00, 0x08,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x10,0x10,0x00,0x00,0x08,0x00,0x20,0x10, 0x00,0x00,0x08,0x00,0x30,0x10,0x00,0x00,0x04,0x00,0x40,0x10,0x00,0x00,0x08,0x00, 0x50,0x10,0x00,0x00,0x05,0x00,0x60,0x10,0x00,0x00,0x0a,0x00,0x70,0x10,0x00,0x00, 0x05,0x00,0x90,0x10,0x00,0x00,0x07,0x00,0xa0,0x10,0x00,0x00,0x08,0x00,0xb0,0x10, 0x00,0x00,0x04,0x00,0xc0,0x10,0x00,0x00,0x0a,0x00,0xd0,0x10,0x00,0x00,0x08,0x00, 0xf0,0x10,0x00,0x00,0x05,0x00,0x00,0x11,0x00,0x00,0x08,0x00,0x10,0x11,0x00,0x00, 0x04,0x00,0x20,0x11,0x00,0x00,0x04,0x00,0x30,0x11,0x00,0x00,0x05,0x00,0x40,0x11, 0x00,0x00,0x08,0x00,0x50,0x11,0x00,0x00,0x07,0x00,0x60,0x11,0x00,0x00,0x04,0x00, 0x70,0x11,0x00,0x00,0x05,0x00,0x80,0x11,0x00,0x00,0x04,0x00,0x90,0x11,0x00,0x00, 0x05,0x00,0xa0,0x11,0x00,0x00,0x07,0x00,0xb0,0x11,0x00,0x00,0x0b,0x00,0xc0,0x11, 0x00,0x00,0x0b,0x00,0xe0,0x11,0x00,0x00,0x0b,0x00,0x00,0x12,0x00,0x00,0x08,0x00, 0x20,0x12,0x00,0x00,0x08,0x00,0x30,0x12,0x00,0x00,0x08,0x00,0x40,0x12,0x00,0x00, 0x08,0x00,0x50,0x12,0x00,0x00,0x08,0x00,0x60,0x12,0x00,0x00,0x08,0x00,0x70,0x12, 0x00,0x00,0x08,0x00,0x80,0x12,0x00,0x00,0x0d,0x00,0x90,0x12,0x00,0x00,0x09,0x00, 0xb0,0x12,0x00,0x00,0x09,0x00,0xd0,0x12,0x00,0x00,0x09,0x00,0xf0,0x12,0x00,0x00, 0x09,0x00,0x10,0x13,0x00,0x00,0x09,0x00,0x30,0x13,0x00,0x00,0x04,0x00,0x50,0x13, 0x00,0x00,0x04,0x00,0x60,0x13,0x00,0x00,0x04,0x00,0x70,0x13,0x00,0x00,0x04,0x00, 0x80,0x13,0x00,0x00,0x0a,0x00,0x90,0x13,0x00,0x00,0x0a,0x00,0xb0,0x13,0x00,0x00, 0x0a,0x00,0xd0,0x13,0x00,0x00,0x0a,0x00,0xf0,0x13,0x00,0x00,0x0a,0x00,0x10,0x14, 0x00,0x00,0x0a,0x00,0x30,0x14,0x00,0x00,0x0a,0x00,0x50,0x14,0x00,0x00,0x08,0x00, 0x70,0x14,0x00,0x00,0x0a,0x00,0x80,0x14,0x00,0x00,0x0a,0x00,0xa0,0x14,0x00,0x00, 0x0a,0x00,0xc0,0x14,0x00,0x00,0x0a,0x00,0xe0,0x14,0x00,0x00,0x0a,0x00,0x00,0x15, 0x00,0x00,0x0a,0x00,0x20,0x15,0x00,0x00,0x09,0x00,0x40,0x15,0x00,0x00,0x08,0x00, 0x60,0x15,0x00,0x00,0x08,0x00,0x70,0x15,0x00,0x00,0x08,0x00,0x80,0x15,0x00,0x00, 0x08,0x00,0x90,0x15,0x00,0x00,0x08,0x00,0xa0,0x15,0x00,0x00,0x08,0x00,0xb0,0x15, 0x00,0x00,0x08,0x00,0xc0,0x15,0x00,0x00,0x0c,0x00,0xd0,0x15,0x00,0x00,0x07,0x00, 0xf0,0x15,0x00,0x00,0x08,0x00,0x00,0x16,0x00,0x00,0x08,0x00,0x10,0x16,0x00,0x00, 0x08,0x00,0x20,0x16,0x00,0x00,0x08,0x00,0x30,0x16,0x00,0x00,0x04,0x00,0x40,0x16, 0x00,0x00,0x04,0x00,0x50,0x16,0x00,0x00,0x04,0x00,0x60,0x16,0x00,0x00,0x04,0x00, 0x70,0x16,0x00,0x00,0x08,0x00,0x80,0x16,0x00,0x00,0x08,0x00,0x90,0x16,0x00,0x00, 0x08,0x00,0xa0,0x16,0x00,0x00,0x08,0x00,0xb0,0x16,0x00,0x00,0x08,0x00,0xc0,0x16, 0x00,0x00,0x08,0x00,0xd0,0x16,0x00,0x00,0x08,0x00,0xe0,0x16,0x00,0x00,0x06,0x00, 0xf0,0x16,0x00,0x00,0x08,0x00,0x00,0x17,0x00,0x00,0x08,0x00,0x10,0x17,0x00,0x00, 0x08,0x00,0x20,0x17,0x00,0x00,0x08,0x00,0x30,0x17,0x00,0x00,0x08,0x00,0x40,0x17, 0x00,0x00,0x08,0x00,0x50,0x17,0x00,0x00,0x08,0x00,0x60,0x17,0x00,0x00,0x08,0x00, 0x70,0x17,0x00,0x00,0x04,0x00,0x80,0x17,0x00,0x00,0x00,0x00,0x90,0x17,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0xcc,0xcc,0xcc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x36,0x36,0x7f,0x36,0x36,0x6c,0x6c,0xfe,0x6c,0x6c,0x00,0x00,0x00, 0x00,0x00,0x18,0x18,0x3c,0x66,0x60,0x60,0x3c,0x06,0x06,0x66,0x3c,0x18,0x18,0x00, 0x00,0x00,0x00,0x70,0xd8,0xd9,0x73,0x06,0x0c,0x19,0x33,0x63,0xc1,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xc0,0x80,0x00,0x00,0x00,0xc0,0x60,0x60,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x3c,0x38,0x6d,0x67,0x66,0x3d,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x30, 0x00,0x00,0x00,0xc0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xc0, 0x00,0x00,0x00,0x30,0x30,0xfc,0x30,0x78,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x7e,0x18,0x18,0x18,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x60,0x60,0x60,0x60,0xc0,0xc0,0xc0,0xc0,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x18,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x06,0x0c,0x18,0x30,0x60,0x60,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x06,0x06,0x3c,0x06,0x06,0x06,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x0e,0x1e,0x36,0x36,0x66,0x66,0x66,0x7f,0x06,0x06,0x00,0x00,0x00, 0x00,0x00,0x00,0x7e,0x60,0x60,0x60,0x7c,0x66,0x06,0x06,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x7c,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x7e,0x06,0x0c,0x0c,0x18,0x18,0x30,0x30,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x3c,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x66,0x3e,0x06,0x06,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x60,0x60,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x06,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x06,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0c,0x06,0x0c,0x18,0x30,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x06,0x0c,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00, 0x00,0x00,0x0f,0x18,0x30,0x67,0x6c,0x6c,0x6c,0x6c,0x63,0x30,0x18,0x0f,0x00,0x00, 0x00,0x00,0xc0,0x60,0x30,0x98,0xd8,0xd8,0xd8,0xf8,0x70,0x00,0x70,0xc0,0x00,0x00, 0x00,0x00,0x00,0x18,0x18,0x3c,0x3c,0x66,0x66,0x66,0x7e,0xc3,0xc3,0x00,0x00,0x00, 0x00,0x00,0x00,0x7f,0x61,0x61,0x61,0x7f,0x61,0x61,0x61,0x61,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1e,0x33,0x61,0x60,0x60,0x60,0x60,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x7e,0x63,0x61,0x61,0x61,0x61,0x61,0x61,0x63,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x7f,0x60,0x60,0x60,0x7e,0x60,0x60,0x60,0x60,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x7f,0x60,0x60,0x60,0x7e,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x1e,0x33,0x61,0x60,0x60,0x67,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x61,0x61,0x61,0x61,0x7f,0x61,0x61,0x61,0x61,0x61,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0xcc,0xcc,0x78,0x00,0x00,0x00, 0x00,0x00,0x00,0x63,0x66,0x6c,0x78,0x70,0x78,0x6c,0x66,0x63,0x61,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x70,0x70,0x79,0x79,0x6f,0x6f,0x66,0x66,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0xe0,0xe0,0xe0,0xe0,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x61,0x71,0x71,0x79,0x6d,0x6d,0x67,0x63,0x63,0x61,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x1e,0x33,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x7f,0x61,0x61,0x61,0x61,0x7f,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1e,0x33,0x61,0x61,0x61,0x61,0x61,0x67,0x33,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x7f,0x61,0x61,0x61,0x61,0x7f,0x61,0x61,0x61,0x61,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x3e,0x63,0x63,0x60,0x38,0x0e,0x03,0x63,0x63,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc3,0xc3,0xc3,0x66,0x66,0x66,0x3c,0x3c,0x18,0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0xc3,0xc3,0xc3,0x67,0x67,0x67,0x3c,0x3c,0x18,0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x0c,0x0c,0x0c,0x98,0x98,0x98,0xf0,0xf0,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0xc1,0xc1,0x63,0x36,0x1c,0x1c,0x36,0x63,0xc1,0xc1,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xc0,0x61,0x33,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0x01,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70, 0x00,0x00,0x00,0xc0,0xc0,0xc0,0xc0,0x60,0x60,0x60,0x60,0x30,0x30,0x30,0x30,0x00, 0x00,0x00,0x00,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0, 0x00,0x00,0x00,0x20,0x70,0xd8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, 0x00,0x00,0x60,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x06,0x3e,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x60,0x7c,0x66,0x66,0x66,0x66,0x66,0x7c,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x06,0x06,0x06,0x3e,0x66,0x66,0x66,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x66,0x7c,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x60,0x60,0xf0,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x66,0x66,0x66,0x66,0x66,0x3e,0x06,0x66,0x3c, 0x00,0x00,0x00,0x60,0x60,0x60,0x7c,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xc0, 0x00,0x00,0x00,0x60,0x60,0x60,0x66,0x6c,0x78,0x70,0x78,0x6c,0x66,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x66,0x66,0x66,0x66,0x66,0x3e,0x06,0x06,0x06, 0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x70,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x30,0x18,0x0c,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0xf0,0x60,0x60,0x60,0x60,0x60,0x30,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0x66,0x66,0x3c,0x18,0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xcc,0x6d,0x6d,0x3f,0x33,0x33,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0x66,0x3c,0x18,0x3c,0x66,0xc3,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0x66,0x66,0x3c,0x3c,0x18,0x18,0x30,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x06,0x0c,0x18,0x30,0x60,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x18,0x30,0x30,0x30,0x30,0x30,0x60,0x30,0x30,0x30,0x30,0x30,0x18, 0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, 0x00,0x00,0x00,0xc0,0x60,0x60,0x60,0x60,0x60,0x30,0x60,0x60,0x60,0x60,0x60,0xc0, 0x00,0x00,0x00,0xe8,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x60,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,0xd8,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdb,0xdb,0x00,0x00,0x00, 0x00,0x00,0x00,0x0c,0x0c,0x7f,0x7f,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0c,0x0c,0x7f,0x7f,0x0c,0x0c,0x0c,0x7f,0x7f,0x0c,0x0c,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x70,0xd8,0xd9,0x73,0x06,0x0c,0x1b,0x36,0x66,0xc3,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xc0,0x80,0x00,0x00,0x00,0x9c,0xf6,0xf6,0x9c,0x00,0x00,0x00, 0x36,0x1c,0x00,0x3e,0x63,0x63,0x60,0x38,0x0e,0x03,0x63,0x63,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x36,0x1c,0x00,0xff,0x01,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x60,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x6c,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x36,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0xed,0x4a,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x66,0x3c,0x18,0x00,0x3c,0x66,0x30,0x18,0x0c,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0c,0x18,0x30,0x60,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x66,0x3c,0x18,0x00,0x7e,0x06,0x0c,0x18,0x30,0x60,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x08,0x3c,0x6e,0x68,0x68,0x70,0x76,0x3c,0x10,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x60,0x30,0x30,0x7c,0x30,0x30,0x60,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x66,0x3c,0x24,0x24,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc3,0xc3,0x66,0x66,0xff,0x18,0xff,0x18,0x18,0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x60,0x60,0x60, 0x00,0x00,0x00,0x3c,0x66,0x38,0x78,0x2c,0x34,0x1e,0x1c,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0xd8,0xd8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x3f,0x61,0xcc,0xd2,0xd0,0xd0,0xd2,0xcc,0x61,0x3f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x10,0x70,0x50,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x6c,0xd8,0x6c,0x36,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x3f,0x61,0xde,0xd2,0xde,0xd8,0xd4,0xd2,0x61,0x3f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x80,0x00,0x00,0x00,0x00, 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x70,0x50,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7e,0x18,0x18,0x00,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xb0,0x30,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xb0,0x60,0xb0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x38,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x7f,0x60,0x60,0x60, 0x00,0x00,0x00,0x3c,0x7c,0x7c,0x7c,0x7c,0x3c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x70, 0x00,0x00,0x00,0x60,0xe0,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x70,0x50,0x50,0x50,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x6c,0x36,0x6c,0xd8,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x70,0x31,0x33,0x36,0x0c,0x19,0x32,0x63,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xc0,0x80,0x00,0x00,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x70,0x31,0x33,0x36,0x0d,0x1a,0x30,0x61,0xc3,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xc0,0x80,0x00,0x00,0x80,0xc0,0xc0,0x80,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x58,0x31,0x5b,0x36,0x0c,0x19,0x32,0x63,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xc0,0x80,0x00,0x00,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30,0x60,0x66,0x66,0x3c,0x00,0x00,0x00, 0x38,0x18,0x0c,0x18,0x18,0x3c,0x3c,0x66,0x66,0x66,0x7e,0xc3,0xc3,0x00,0x00,0x00, 0x1c,0x18,0x30,0x18,0x18,0x3c,0x3c,0x66,0x66,0x66,0x7e,0xc3,0xc3,0x00,0x00,0x00, 0x18,0x3c,0x66,0x18,0x18,0x3c,0x3c,0x66,0x66,0x66,0x7e,0xc3,0xc3,0x00,0x00,0x00, 0x7a,0x5e,0x00,0x18,0x18,0x3c,0x3c,0x66,0x66,0x66,0x7e,0xc3,0xc3,0x00,0x00,0x00, 0x66,0x66,0x00,0x18,0x18,0x3c,0x3c,0x66,0x66,0x66,0x7e,0xc3,0xc3,0x00,0x00,0x00, 0x18,0x3c,0x18,0x00,0x18,0x18,0x3c,0x66,0x66,0x66,0x7e,0xc3,0xc3,0x00,0x00,0x00, 0x00,0x00,0x00,0x1f,0x1e,0x36,0x36,0x37,0x66,0x66,0x7e,0xc6,0xc7,0x00,0x00,0x00, 0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00, 0x00,0x00,0x00,0x1e,0x33,0x61,0x60,0x60,0x60,0x60,0x61,0x33,0x1e,0x0c,0x06,0x1c, 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, 0x38,0x18,0x0c,0x7f,0x60,0x60,0x60,0x7e,0x60,0x60,0x60,0x60,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0e,0x0c,0x18,0x7f,0x60,0x60,0x60,0x7e,0x60,0x60,0x60,0x60,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0c,0x1e,0x33,0x7f,0x60,0x60,0x60,0x7e,0x60,0x60,0x60,0x60,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x33,0x33,0x00,0x7f,0x60,0x60,0x60,0x7e,0x60,0x60,0x60,0x60,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x60,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x30,0x60,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x60,0x90,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x90,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x7e,0x63,0x61,0x61,0xf9,0x61,0x61,0x61,0x63,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x3d,0x2f,0x00,0x61,0x71,0x71,0x79,0x6d,0x6d,0x67,0x63,0x63,0x61,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00, 0x1c,0x0c,0x06,0x1e,0x33,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x0e,0x0c,0x18,0x1e,0x33,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x0c,0x1e,0x33,0x1e,0x33,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x3d,0x2f,0x00,0x1e,0x33,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x33,0x33,0x00,0x1e,0x33,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x3c,0x18,0x3c,0x66,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1f,0x33,0x67,0x67,0x6d,0x6d,0x79,0x79,0x33,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x1c,0x0c,0x06,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x0e,0x0c,0x18,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x0c,0x1e,0x33,0x00,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x33,0x33,0x00,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x33,0x1e,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x07,0x06,0x0c,0xc0,0xc0,0x61,0x33,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x60,0x7e,0x63,0x63,0x63,0x63,0x7e,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x6c,0x66,0x66,0x66,0x66,0x6c,0x00,0x00,0x00, 0x00,0x00,0x38,0x18,0x0c,0x00,0x3c,0x66,0x06,0x3e,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x1c,0x18,0x30,0x00,0x3c,0x66,0x06,0x3e,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x18,0x3c,0x66,0x00,0x3c,0x66,0x06,0x3e,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x7a,0x5e,0x00,0x3c,0x66,0x06,0x3e,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x66,0x66,0x00,0x3c,0x66,0x06,0x3e,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x18,0x3c,0x18,0x00,0x3c,0x66,0x06,0x3e,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x66,0x06,0x3f,0x66,0x66,0x3f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x60,0x60,0xc0,0x00,0x60,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x60,0x66,0x3c,0x18,0x0c,0x38, 0x00,0x00,0x38,0x18,0x0c,0x00,0x3c,0x66,0x66,0x7c,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x1c,0x18,0x30,0x00,0x3c,0x66,0x66,0x7c,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x18,0x3c,0x66,0x00,0x3c,0x66,0x66,0x7c,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x66,0x66,0x00,0x3c,0x66,0x66,0x7c,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0xe0,0x60,0x30,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x70,0x60,0xc0,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0xf0,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x90,0x90,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x76,0x18,0x6c,0x0c,0x3e,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x7a,0x5e,0x00,0x7c,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00, 0x00,0x00,0x38,0x18,0x0c,0x00,0x3c,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x1c,0x18,0x30,0x00,0x3c,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x18,0x3c,0x66,0x00,0x3c,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x7a,0x5e,0x00,0x3c,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x66,0x66,0x00,0x3c,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x78,0x00,0x30,0x30,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x6e,0x6e,0x7e,0x76,0x76,0x7c,0x00,0x00,0x00, 0x00,0x00,0x38,0x18,0x0c,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x1c,0x18,0x30,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x18,0x3c,0x66,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x00,0x66,0x66,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3e,0x00,0x00,0x00, 0x00,0x00,0x0e,0x0c,0x18,0x00,0xc3,0xc3,0x66,0x66,0x3c,0x3c,0x18,0x18,0x30,0x60, 0x00,0x00,0x00,0x60,0x60,0x60,0x7c,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60,0x60, 0x00,0x00,0x00,0x66,0x66,0x00,0xc3,0xc3,0x66,0x66,0x3c,0x3c,0x18,0x18,0x30,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x53,0x79,0x73,0x74,0x65,0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; freedink-108.4+dfsg/src/dinkc_console.c0000644000175000017500000000474312420231175015572 0ustar meme/** * DinkC interactive console * Copyright (C) 2005, 2006 Dan Walma * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "dinkc_console.h" #include #include "str_util.h" #include "dinkc.h" #define NB_LINES 20 #define MAX_LINE_LEN 254 /* Console mode */ int console_active = 0; /* Last 20 commands entered in the console */ static char history[NB_LINES][MAX_LINE_LEN+1]; /* Current history index */ static int cur_line = 0; /* Result of the last evaluation */ static int console_return_value = 0; void dinkc_console_process_key(SDL_KeyboardEvent kev) { if (kev.keysym.sym == SDLK_UP) { cur_line--; /* Using (a+N)%N instead of a%N to avoid negative results */ cur_line = (cur_line + NB_LINES) % NB_LINES; } else if(kev.keysym.sym == SDLK_DOWN) { cur_line++; cur_line %= NB_LINES; } else if (kev.keysym.sym == SDLK_BACKSPACE) { /* Delete last char */ int len = strlen(history[cur_line]); if (len > 0) history[cur_line][len-1] = '\0'; } else if (kev.keysym.sym == SDLK_ESCAPE) { console_active = 0; } else if (kev.keysym.unicode == SDLK_RETURN) { /* Try to parse the string */ console_return_value = dinkc_execute_one_liner(history[cur_line]); /* Go the next line */ cur_line++; cur_line %= NB_LINES; int len = strlen(history[cur_line]); if (len > 0) history[cur_line][0] = '\0'; } else if (kev.keysym.unicode != 0) { /* Append character to the current line */ if (strlen(history[cur_line]) < MAX_LINE_LEN) strchar(history[cur_line], kev.keysym.unicode); } } char* dinkc_console_get_cur_line() { return history[cur_line]; } int dinkc_console_get_last_retval() { return console_return_value; } freedink-108.4+dfsg/src/gfx_sprites.c0000644000175000017500000004276512420231175015323 0ustar meme/** * Graphics - sprites management * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "gfx_sprites.h" #include #include #include "SDL_image.h" #include "gfx.h" #include "dinkvar.h" #include "fastfile.h" #include "io_util.h" #include "log.h" #include "paths.h" #include "dinkini.h" /* External global variables in use: seq[], GFX_k[], k[], no_running_main */ /* TODO: get rid of either k or GFX_k */ struct pic_info k[MAX_SPRITES]; // Sprite data struct GFX_pic_info GFX_k[MAX_SPRITES]; // Sprite data (SDL) struct sequence seq[MAX_SEQUENCES]; static int please_wait = 0; /** * Free memory used by sprites. It's not much useful in itself, since * it's only called when we're exiting the game, but it does avoid * memory leak warnings when FreeDink is analyzed by Valgrind or other * memory checkers. It also supports loading and unloading the * subsystem several times. */ void sprites_unload(void) { int i = 0; for (i = 0; i < MAX_SPRITES; i++) { if (GFX_k[i].k != NULL) SDL_FreeSurface(GFX_k[i].k); GFX_k[i].k = NULL; } for (i = 0; i < MAX_SEQUENCES; i++) { if (seq[i].ini != NULL) free(seq[i].ini); seq[i].ini = NULL; } } /** * Display a flashing "Please Wait" anim directly on the screen, just * before switching to a screen that requires loading new graphics * from the disk. */ static void draw_wait() { if (seq[423].frame[8] != 0) { if (please_wait) { SDL_Rect dst = {232, 0, GFX_k[seq[423].frame[7]].k->w, GFX_k[seq[423].frame[7]].k->h}; SDL_BlitSurface(GFX_k[seq[423].frame[7]].k, NULL, GFX_lpDDSBack, &dst); SDL_UpdateRects(GFX_lpDDSBack, 1, &dst); please_wait = 0; } else { SDL_Rect dst = {232, 0, GFX_k[seq[423].frame[8]].k->w, GFX_k[seq[423].frame[8]].k->h}; SDL_BlitSurface(GFX_k[seq[423].frame[8]].k, NULL, GFX_lpDDSBack, &dst); SDL_UpdateRects(GFX_lpDDSBack, 1, &dst); please_wait = 1; } } } /** * Return the next available graphic slot */ static int next_slot() { /* Start index at 1 instead of 0. A few parts in the game rely on this (e.g. if getpic(...) < 1). */ /* TODO: I noticed that sprite in slot 0 (by default, this would be a small white square) would be displayed temporarily on the screen in some situations.. */ int i = 1; while (i < MAX_SPRITES && GFX_k[i].k != NULL) i++; return i; /* Callee will need to check if i >= MAX_SPRITES and fail if necessary */ } /** * Free all graphic slots used by given sequence */ static void free_seq(int seq_no) { int i = 1; int slot_index = -1; while (i < MAX_FRAMES_PER_ABUSED_SEQUENCE+1 && (slot_index = seq[seq_no].frame[i]) != 0) { SDL_FreeSurface(GFX_k[slot_index].k); GFX_k[slot_index].k = NULL; i++; } /* 0 means end-of-sequence, no more frames */ if (i == MAX_FRAMES_PER_ABUSED_SEQUENCE+1) log_error("Invalid sequence %d, just avoided a buffer overflow\n", seq_no); } void load_sprite_pak(char seq_path_prefix[100], int seq_no, int delay, int xoffset, int yoffset, rect hardbox, int flags, /*bool*/int samedir) { char fname[20]; char crap[200]; int notanim = 0, black = 0, leftalign = 0; if ((flags & DINKINI_NOTANIM) == DINKINI_NOTANIM) notanim = 1; if ((flags & DINKINI_BLACK) == DINKINI_BLACK) black = 1; if ((flags & DINKINI_LEFTALIGN) == DINKINI_LEFTALIGN) leftalign = 1; /* If the sequence already exists, free it first */ free_seq(seq_no); if (no_running_main) draw_wait(); char *seq_dirname = pdirname(seq_path_prefix); int n = strlen(seq_path_prefix) - strlen(seq_dirname)-1; char *fullpath = NULL; strcpy(fname, &seq_path_prefix[strlen(seq_path_prefix) - n]); sprintf(crap, "%s/dir.ff", seq_dirname); if (samedir) fullpath = paths_dmodfile(crap); else fullpath = paths_fallbackfile(crap); if (!FastFileInit(fullpath, 5)) { log_error("Could not load dir.ff art file %s", crap); free(fullpath); free(seq_dirname); return; } free(seq_dirname); /* keep 'fullpath' for error messages, free() it later */ int oo; for (oo = 1; oo <= MAX_FRAMES_PER_SEQUENCE; oo++) { int myslot = next_slot(); if (myslot >= MAX_SPRITES) { log_error("No sprite slot available! Index %d out of %d.", myslot, MAX_SPRITES); break; } char *leading_zero = NULL; //load sprite if (oo < 10) leading_zero = "0"; else leading_zero = ""; sprintf(crap, "%s%s%d.bmp", fname, leading_zero, oo); HFASTFILE pfile = FastFileOpen(crap); if (pfile == NULL) /* File not present in this fastfile - either missing file or end of sequence */ break; // GFX SDL_RWops *rw = FastFileLock(pfile); if (rw == NULL) { /* rwops error? */ log_error("Failed to open '%s' in fastfile '%s'", crap, fullpath); } else { /* We use IMG_Load_RW instead of SDL_LoadBMP because there is no _RW access in plain SDL. However there is no intent to support anything else than 8bit BMPs. */ GFX_k[myslot].k = IMG_Load_RW(rw, 1); // auto free() if (GFX_k[myslot].k == NULL) log_error("Failed to load %s from fastfile %s: %s", crap, fullpath, SDL_GetError()); } if (GFX_k[myslot].k == NULL) { log_error("Failed to load %s from fastfile %s (see error above)", crap, fullpath); FastFileClose(pfile); break; } if (GFX_k[myslot].k->format->BitsPerPixel != 8) { log_error("Failed to load %s from fastfile %s:" " only 8bit paletted bitmaps are supported in dir.ff archives.", crap, fullpath); SDL_FreeSurface(GFX_k[myslot].k); continue; } // Palettes and transparency /* Note: in the original engine, for efficiency, no palette conversion was done for sprite paks - they needed to use the Dink Palette (otherwise weird colors would appear!)) */ /* The engine suffered a DX limitation: palette indexes 0 and 255 fixed fixed to black and white respectively. This is also the opposite of the Dink BMP palette indexes. This causes troubles when skipping palette conversion (here), during fade_down()/fade_up() (255/white pixels can't be darkened) and in DinkC's fillcolor(index). This is why this function replaced black with brighter black and white with darker white. */ /* In FreeDink palette conversion is done in load_bmp_internal, so we mainly care about avoiding white pixels during fade_down(), and only because we reproduced the palette limitation so as to support dynamic palette-changing tricks (cf. Lyna's Story) as well as having readable white text during fade_down(). Maintaining compatibility with fillcolor() is also important (although forcing 0 and 255 indexes could be done in that function only). But we might consider getting rid of it entirely. We just have to make sure a dir.ff LEFTALIGN has no transparency, otherwise the experience counter digits in the status bar will become transparent. */ /* Not doing the conversion in truecolor mode, because at least one D-Mod (The Blacksmith's Trail) ships with a 24bit, hence palette-less, tiles/ts01.bmp, and this doesn't mess up graphics in v1.08. */ if (!truecolor) SDL_SetPalette(GFX_k[myslot].k, SDL_LOGPAL, GFX_real_pal, 0, 256); Uint8 *p = (Uint8 *)GFX_k[myslot].k->pixels; Uint8 *last = p + GFX_k[myslot].k->h * GFX_k[myslot].k->pitch; if (leftalign) { // brighten black and darken white while (p < last) { if (*p == 0) // white *p = 30; // darker white else if (*p == 255) // black *p = 249; // brighter black p++; } } else if (black) { // darken white and set black as transparent while (p < last) { if (*p == 0) // white *p = 30; // darker white p++; } SDL_SetColorKey(GFX_k[myslot].k, SDL_SRCCOLORKEY|SDL_RLEACCEL, 255); /* Force RLE encoding now to save memory space */ SDL_BlitSurface(GFX_k[myslot].k, NULL, GFX_lpDDSTrick2, NULL); } else { // brighten black and set white as transparent while (p < last) { if (*p == 255) // black in Dink palette *p = 249; // brighter black p++; } SDL_SetColorKey(GFX_k[myslot].k, SDL_SRCCOLORKEY|SDL_RLEACCEL, 0); /* Force RLE encoding now to save memory space */ SDL_BlitSurface(GFX_k[myslot].k, NULL, GFX_lpDDSTrick2, NULL); } if (truecolor) { /* We may want to convert to truecolor for possibly faster blits. However I didn't notice a significant increase or decrease in performances, but there's a higher memory usage (+10MB for base Dink, more for D-Mods), so let's not do it. */ /* SDL_Surface *temp = SDL_DisplayFormat(GFX_k[myslot].k); */ /* SDL_FreeSurface(GFX_k[myslot].k); */ /* GFX_k[myslot].k = temp; */ } k[myslot].box.top = 0; k[myslot].box.left = 0; k[myslot].box.right = GFX_k[myslot].k->w; k[myslot].box.bottom = GFX_k[myslot].k->h; /* Define the offsets / center of the image */ if (yoffset > 0) { // explicitely set center k[myslot].yoffset = yoffset; } else { if (oo > 1 && notanim) // copy first frame info k[myslot].yoffset = k[seq[seq_no].frame[1]].yoffset; else // compute default center k[myslot].yoffset = (k[myslot].box.bottom - (k[myslot].box.bottom / 4)) - (k[myslot].box.bottom / 30); } if (xoffset > 0) { // explicitely set center k[myslot].xoffset = xoffset; } else { if (oo > 1 && notanim) // copy first frame info k[myslot].xoffset = k[seq[seq_no].frame[1]].xoffset; else // compute default center k[myslot].xoffset = (k[myslot].box.right - (k[myslot].box.right / 2)) + (k[myslot].box.right / 6); } //ok, setup main offsets, lets build the hard block if (hardbox.right > 0) { //forced setting k[myslot].hardbox.left = hardbox.left; k[myslot].hardbox.right = hardbox.right; } else { //guess setting int work = k[myslot].box.right / 4; k[myslot].hardbox.left -= work; k[myslot].hardbox.right += work; } if (hardbox.bottom > 0) { k[myslot].hardbox.top = hardbox.top; k[myslot].hardbox.bottom = hardbox.bottom; } else { int work = k[myslot].box.bottom / 10; k[myslot].hardbox.top -= work; k[myslot].hardbox.bottom += work; } FastFileClose(pfile); seq[seq_no].frame[oo] = myslot; seq[seq_no].delay[oo] = delay; } FastFileFini(); /* Mark end-of-sequence */ seq[seq_no].frame[oo] = 0; /* Length: inaccurate if 'set_frame_frame' is used */ seq[seq_no].len = oo - 1; if (oo == 1) log_error("Sprite_load_pak error: Couldn't load %s in %s.", crap, fullpath); free(fullpath); } /* Load sprite, either from a dir.ff pack (delegated to load_sprite_pak), either from a BMP file */ /* - seq_path_prefix: path to the file, relative to the current game (dink or dmod) */ /* - not_anim: reuse xoffset and yoffset from the first frame of the animation (misnomer) */ void load_sprites(char seq_path_prefix[100], int seq_no, int delay, int xoffset, int yoffset, rect hardbox, int flags) { char crap[200]; char *fullpath = NULL; int use_fallback = 0; int notanim = 0, black = 0; if ((flags & DINKINI_NOTANIM) == DINKINI_NOTANIM) notanim = 1; if ((flags & DINKINI_BLACK) == DINKINI_BLACK) black = 1; if (no_running_main) draw_wait(); /* Order: */ /* - dmod/.../dir.ff */ /* - dmod/.../...01.BMP */ /* - ../dink/.../dir.ff */ /* - ../dink/.../...01.BMP */ char *seq_dirname = pdirname(seq_path_prefix); int exists = 0; if (!exists) { sprintf(crap, "%s/dir.ff", seq_dirname); fullpath = paths_dmodfile(crap); exists = exist(fullpath); free(fullpath); if (exists) { free(seq_dirname); load_sprite_pak(seq_path_prefix, seq_no, delay, xoffset, yoffset, hardbox, flags, /*true*/1); return; } } if (!exists) { sprintf(crap, "%s01.BMP",seq_path_prefix); fullpath = paths_dmodfile(crap); exists = exist(fullpath); free(fullpath); } if (!exists) { sprintf(crap, "%s/dir.ff", seq_dirname); fullpath = paths_fallbackfile(crap); exists = exist(fullpath); free(fullpath); if (exists) { free(seq_dirname); load_sprite_pak(seq_path_prefix, seq_no, delay, xoffset, yoffset, hardbox, flags, /*false*/0); return; } } if (!exists) { /* Let's look for the BMP below */ use_fallback = 1; } free(seq_dirname); /* If the sequence already exists, free it first */ free_seq(seq_no); /* Load the whole sequence (prefix-01.bmp, prefix-02.bmp, ...) */ int oo; for (oo = 1; oo <= MAX_FRAMES_PER_ABUSED_SEQUENCE; oo++) { int myslot = next_slot(); if (myslot >= MAX_SPRITES) { log_error("No sprite slot available! Index %d out of %d.", myslot, MAX_SPRITES); break; } FILE *in = NULL; char *leading_zero = NULL; if (oo < 10) leading_zero = "0"; else leading_zero = ""; sprintf(crap, "%s%s%d.bmp", seq_path_prefix, leading_zero, oo); /* Set the pixel data */ if (use_fallback) in = paths_fallbackfile_fopen(crap, "rb"); else in = paths_dmodfile_fopen(crap, "rb"); GFX_k[myslot].k = load_bmp_from_fp(in); if (GFX_k[myslot].k == NULL) { // end of sequence break; } /** Configure current frame **/ /* Disable alpha in 32bit BMPs, like the original engine */ SDL_SetAlpha(GFX_k[myslot].k, 0, SDL_ALPHA_OPAQUE); /* Set transparent color: either black or white */ if (black) SDL_SetColorKey(GFX_k[myslot].k, SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(GFX_k[myslot].k->format, 0, 0, 0)); else SDL_SetColorKey(GFX_k[myslot].k, SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(GFX_k[myslot].k->format, 255, 255, 255)); /* Force RLE encoding now to save memory space */ SDL_BlitSurface(GFX_k[myslot].k, NULL, GFX_lpDDSTrick2, NULL); /* Note: there is definitely a performance improvement when using RLEACCEL under truecolor mode (~80%CPU -> 70%CPU) */ /* Fill in .box; this was previously done in DDSethLoad; in the future we could get rid of the .box field and rely directly on SDL_Surface's .w and .h fields instead: */ k[myslot].box.top = 0; k[myslot].box.left = 0; k[myslot].box.right = GFX_k[myslot].k->w; k[myslot].box.bottom = GFX_k[myslot].k->h; /* Define the offsets / center of the image */ if (yoffset > 0) { // explicitely set center k[myslot].yoffset = yoffset; } else { if (oo > 1 && notanim) // copy first frame info k[myslot].yoffset = k[seq[seq_no].frame[1]].yoffset; else // compute default center k[myslot].yoffset = (k[myslot].box.bottom - (k[myslot].box.bottom / 4)) - (k[myslot].box.bottom / 30); } if (xoffset > 0) { // explicitely set center k[myslot].xoffset = xoffset; } else { if (oo > 1 && notanim) // copy first frame info k[myslot].xoffset = k[seq[seq_no].frame[1]].xoffset; else // compute default center k[myslot].xoffset = (k[myslot].box.right - (k[myslot].box.right / 2)) + (k[myslot].box.right / 6); } //ok, setup main offsets, lets build the hard block if (hardbox.right > 0) { //forced setting k[myslot].hardbox.left = hardbox.left; k[myslot].hardbox.right = hardbox.right; } else { //default setting int work = k[myslot].box.right / 4; k[myslot].hardbox.left -= work; k[myslot].hardbox.right += work; } if (hardbox.bottom > 0) { //forced setting k[myslot].hardbox.top = hardbox.top; k[myslot].hardbox.bottom = hardbox.bottom; } else { //default setting /* eg: graphics\dink\push\ds-p2- and graphics\effects\comets\sm-comt2\fbal2- */ int work = k[myslot].box.bottom / 10; k[myslot].hardbox.top -= work; k[myslot].hardbox.bottom += work; } seq[seq_no].frame[oo] = myslot; seq[seq_no].delay[oo] = delay; } /* Mark end-of-sequence */ seq[seq_no].frame[oo] = 0; /* Length: inaccurate if 'set_frame_frame' is used */ seq[seq_no].len = oo - 1; /* oo == 1 => not even one sprite was loaded, error */ /* oo > 1 => the sequence ends */ if (oo == 1) { /* First frame didn't load! */ log_error("load_sprites: anim '%s' not found: couldn't open '%s'", seq_path_prefix, crap); } } /** * Set the dink.ini / init() line for this sequence. */ void seq_set_ini(int seq_no, char *line) { /* Check if we are not attempting to replace a line by itself (e.g. when a sequence is lazy-loaded) and free previous line. */ if (seq[seq_no].ini != line) { if (seq[seq_no].ini != NULL) free(seq[seq_no].ini); seq[seq_no].ini = strdup(line); } } freedink-108.4+dfsg/src/gfx.h0000644000175000017500000000420512420231175013542 0ustar meme/** * Header for graphics * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _GFX_H #define _GFX_H #include "SDL.h" enum gfx_init_state { GFX_NOT_INITIALIZED = 0, GFX_INITIALIZING_VIDEO, GFX_INITIALIZING_FONTS, GFX_INITIALIZED, GFX_QUITTING, }; enum gfx_windowed_state { GFX_WINDOWED = 0, GFX_FULLSCREEN, }; #define GFX_RES_W 640 #define GFX_RES_H 480 #define GFX_PLAY_W 600 #define GFX_PLAY_H 400 #define GFX_PLAY_LEFT 20 #define GFX_PLAY_TOP 0 extern int truecolor; extern SDL_Surface *GFX_lpDDSBack; extern SDL_Surface *GFX_lpDDSTrick; extern SDL_Surface *GFX_lpDDSTrick2; extern SDL_Surface *GFX_lpDDSTwo; extern SDL_Color GFX_real_pal[256]; extern double truecolor_fade_brightness; extern Uint32 truecolor_fade_lasttick; extern enum gfx_init_state gfx_get_init_state(void); extern int gfx_init(enum gfx_windowed_state, char* splash_path); extern int gfx_init_failsafe(); extern void gfx_quit(void); extern void change_screen_palette(SDL_Color* new_palette); extern SDL_Surface* load_bmp(char *filename); extern SDL_Surface* load_bmp_from_fp(FILE* in); extern SDL_Surface* load_bmp_from_mem(SDL_RWops *rw); extern int gfx_blit_nocolorkey(SDL_Surface *src, SDL_Rect *src_rect, SDL_Surface *dst, SDL_Rect *dst_rect); extern int gfx_blit_stretch(SDL_Surface *src, SDL_Rect *src_rect, SDL_Surface *dst, SDL_Rect *dst_rect); extern void flip_it(void); extern void gfx_toggle_fullscreen(void); extern void gfx_log_meminfo(void); #endif freedink-108.4+dfsg/src/gfx_fonts.h0000644000175000017500000000306712420231175014760 0ustar meme/** * Fonts * Copyright (C) 2007, 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _GFX_FONTS_H #define _GFX_FONTS_H #include "SDL_ttf.h" #include "rect.h" typedef enum enum_font { FONT_DIALOG = 0, FONT_SYSTEM, } FONT_TYPE; extern int gfx_fonts_init(void); extern int gfx_fonts_init_failsafe(void); extern void gfx_fonts_init_colors(void); extern void gfx_fonts_quit(void); extern void FONTS_SetTextColor(Uint8 r, Uint8 g, Uint8 b); extern void FONTS_SetTextColorIndex(int no); extern int print_text_wrap(char *str, rect * box, /*bool*/int hcenter, int calc_only, FONT_TYPE font_type); extern void print_text_wrap_debug(char *str, int x, int y); extern void SaySmall(char thing[500], int px, int py, int r, int g, int b); extern void Say(char thing[500], int px, int py); /* DinkC binding */ extern int initfont(char* fontname); extern void set_font_color(int no, int red, int green, int blue); #endif freedink-108.4+dfsg/src/io_util.c0000644000175000017500000002077512420231175014427 0ustar meme/** * Filesystem helpers * Copyright (C) 2005, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include /* strcasecmp */ #include #include /* stat(2) */ #include #include #include #include "binreloc.h" #include "progname.h" #include "relocatable.h" #include "SDL.h" #ifdef HAVE_LIBZIP # include "SDL_rwops_libzip.h" #else # ifdef HAVE_ZZIPLIB #include "SDL_rwops_zzip.h" # endif #endif #include "paths.h" /* Returns a pointer to the end of the current path element (file or directory) */ static char* end_of_elt(char *str) { char *p = str; while ((*p != '/') && (*p != '\\') && (*p != '\0')) p++; return p; } /** * Look for filename case-insensitively, to mimic MS Woe's * case-insensitive file system. It modifies the 'filename' buffer * in-place. Also converts '\' to '/'. I REPEAT: the filename buffer * is modified, so it cannot be "a constant string", or you'll get a * segfault. */ void ciconvert (char *filename) { #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ return; #else /* Parse all the directories that composes filename */ char *cur_dir = NULL; char *pcur_elt, *pend_of_elt, *pend_of_cur_dir; int error = 0; /* First simply try to open the file, constant complexity. Permits decent speed for careful authors who write exact filenames. */ FILE *f; if ((f = fopen(filename, "r")) != NULL) { fclose(f); return; } /* Else, check each path element of the filename */ /* No need to support volumes ("C:\"...) because this function already returned in case-insensitive environments (woe&dos) */ if (filename[0] == '/') { cur_dir = malloc(strlen("/") + strlen(filename) + 1); strcpy(cur_dir, "/"); pend_of_cur_dir = cur_dir + 1; } else { cur_dir = malloc(strlen("./") + strlen(filename) + 1); strcpy(cur_dir, "./"); pend_of_cur_dir = cur_dir + 2; } pcur_elt = filename; do { char end_of_elt_backup; /* skip leading or multiple slashes */ while (*pcur_elt == '/' || *pcur_elt == '\\') { *pcur_elt = '/'; pcur_elt++; } pend_of_elt = end_of_elt(pcur_elt); end_of_elt_backup = *pend_of_elt; *pend_of_elt = '\0'; /* pcur_elt is now a \0-terminated string containing the current path element. */ /* Now check if there's a matching entry in the directory */ DIR *list; struct dirent *entry; int found = 0; list = opendir (cur_dir); if (list != NULL) { /* note: we may want to sort list first */ while ((entry = readdir (list)) != NULL && !found) { if (strcasecmp(pcur_elt, entry->d_name) == 0) { /* Good case-insensitive match: replace the user-provided filename with it */ strcpy(pcur_elt, entry->d_name); found = 1; } } closedir (list); } if (!found) error = 1; /* Prepare parsing next path element, unless the current element was the last one */ if (end_of_elt_backup != '\0') { *pend_of_elt = '/'; /* restore */ /* Prepare next directory */ { int cur_elt_len = pend_of_elt - pcur_elt; strncpy(pend_of_cur_dir, pcur_elt, cur_elt_len + 1); pend_of_cur_dir += cur_elt_len + 1; *pend_of_cur_dir = '\0'; } /* go to the next path element */ pcur_elt = pend_of_elt + 1; } } while(*pend_of_elt != '\0' && !error); free(cur_dir); /* If there was an error, we return a half-converted path (maybe the file didn't exist yet, but leading directories still needed to be converted); otherwise, filename contains the fully-converted path, ready to be opened on a case-sensitive filesystem. */ #endif /* !_WIN32 */ } /** * Does this file exist and can be opened? * Note: this is case-sensitive. */ int exist(char *name) { FILE *fp = fopen(name, "rb"); if (!fp) return 0; fclose(fp); return 1; } /** * Is it a directory that exists? */ int is_directory(char *name) { char *tmp_filename = strdup(name); int accessible = 0; int retval = 0; struct stat buf; /* ciconvert(tmp_filename); */ accessible = stat(tmp_filename, &buf); free(tmp_filename); if (accessible < 0) retval = 0; else retval = S_ISDIR(buf.st_mode); return retval; } /** * So-called "portable" dirname - that is, it supports backslash and * forward-slash. That way, it can process filenames from dink.ini, in * particular. Return a newly allocated string. */ char* pdirname (const char* filename) { char *retval = strdup(filename); char *pc = retval + strlen(retval); while (pc >= retval && *pc != '/' && *pc != '\\') pc--; if (pc >= retval) *pc = '\0'; return retval; } SDL_RWops* find_resource_as_rwops(char *name) { SDL_RWops* rwops = NULL; /** pkgdatadir, pkgdefaultdatadir, exedir **/ FILE *in = NULL; if (in == NULL) in = paths_pkgdatafile_fopen(name, "rb"); if (in == NULL) /* When the relocatable datadir fails, it may be worth trying the compile-time datadir nonetheless; in the gNewSense LiveCD, the path is mistakenly detected as /cow/usr/bin/freedink, and hence the datadir becomes /cow/usr/share/freedink, which doesn't exist. */ in = paths_defaultpkgdatafile_fopen(name, "rb"); if (in == NULL) in = paths_exedirfile_fopen(name, "rb"); if (in != NULL) rwops = SDL_RWFromFP(in, /*autoclose=*/1); if (rwops != NULL) return rwops; /** Bundled resources **/ /* Look in appended ZIP archive */ /* Looked at last, to avoid confusing the user with invisible files **/ /* paths_getexefile() checks /proc (Linux), then argv[0] + PATH. Under Woe it uses GetModuleFileName(). The only way to make it fail is to execl("./freedink", "idontexist", 0); */ #ifdef HAVE_LIBZIP char *myself = strdup(paths_getexefile()); rwops = SDL_RWFromZIP(myself, name); free(myself); #else # ifdef HAVE_ZZIPLIB const char *myself = paths_getexefile(); char *zippath = malloc(strlen(myself) + 1 + strlen(name) + 1); sprintf(zippath, "%s/%s", myself, name); /* sample zippath: "/usr/bin/freedink/LiberationSans-Regular.ttf" */ rwops = SDL_RWFromZZIP(zippath, "rb"); /* Retrieve error (if any) with: printf("%s\n", strerror(errno)); */ free(zippath); # endif #endif if (rwops != NULL) return rwops; /** Not found! **/ return NULL; } /** * Append a line of text at the end of a file */ void add_text(char *text, char *filename) { if (strlen(text) < 1) return; FILE *fp = paths_dmodfile_fopen(filename, "ab"); if (fp != NULL) { fwrite(text, strlen(text), 1, fp); fclose(fp); } else { perror("add_text"); } } /** * Read integer portably (same result with MSB and LSB * endianness). Source data is a file with little-endian data. */ int read_lsb_int(FILE *f) { unsigned char buf[4]; fread(buf, 4, 1, f); return (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | (buf[0]); } /** * Write integer portably (same result with MSB and LSB * endianness). Will write little-endian data to file. */ void write_lsb_int(int n, FILE *f) { unsigned char buf[4]; buf[0] = n & 0xFF; buf[1] = (n >> (1*8)) & 0xFF; buf[2] = (n >> (2*8)) & 0xFF; buf[3] = (n >> (3*8)) & 0xFF; fwrite(buf, 4, 1, f); } /** * Read short portably (same result with MSB and LSB * endianness). Source data is a file with little-endian data. */ short read_lsb_short(FILE *f) { unsigned char buf[2]; fread(buf, 2, 1, f); return (buf[1] << 8) | (buf[0]); } /** * Write short portably (same result with MSB and LSB * endianness). Will write little-endian data to file. */ void write_lsb_short(short n, FILE *f) { unsigned char buf[2]; buf[0] = n & 0xFF; buf[1] = (n >> (1*8)) & 0xFF; fwrite(buf, 2, 1, f); } freedink-108.4+dfsg/src/freedink.60000644000175000017500000000243212421730244014465 0ustar meme.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.10. .TH FREEDINK "6" "October 2014" "FreeDink 108.4" "Games" .SH NAME FreeDink \- adventure and role-playing game (engine) .SH SYNOPSIS .B freedink [\fIOPTIONS\fR]... .SH DESCRIPTION Starts the Dink Smallwood game or one of its D\-Mods. .TP \fB\-h\fR, \fB\-\-help\fR Display this help screen .TP \fB\-v\fR, \fB\-\-version\fR Display the version .TP \fB\-g\fR, \fB\-\-game\fR Specify a DMod directory .TP \fB\-r\fR, \fB\-\-refdir\fR Specify base directory for dink/graphics, D\-Mods, etc. .TP \fB\-d\fR, \fB\-\-debug\fR Explain what is being done .TP \fB\-i\fR, \fB\-\-noini\fR Do not attempt to write dinksmallwood.ini .TP \fB\-j\fR, \fB\-\-nojoy\fR Do not attempt to use joystick .TP \fB\-s\fR, \fB\-\-nosound\fR Do not play sound .TP \fB\-t\fR, \fB\-\-truecolor\fR Allow more colours (for recent D\-Mod graphics) .TP \fB\-w\fR, \fB\-\-window\fR Use windowed mode instead of screen mode .TP \fB\-7\fR, \fB\-\-v1\fR.07 Enable v1.07 compatibility mode .SH "REPORTING BUGS" Report bugs to bug\-freedink@gnu.org. .PP .br FreeDink is free software, and you are welcome to redistribute it under certain conditions; see the GNU GPL for details. http://gnu.org/licenses/gpl.html .br There is NO WARRANTY, to the extent permitted by law. freedink-108.4+dfsg/src/i18n.h0000644000175000017500000000155112330466347013551 0ustar meme/** * Translate game texts * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _I18N_H #define _I18N_H extern char* i18n_translate(char* scriptname, int line, char* text); #endif freedink-108.4+dfsg/src/log.h0000644000175000017500000000344212420231175013541 0ustar meme/** * Filesystem helpers * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _LOG_H #define _LOG_H extern char last_debug[200]; extern int debug_mode; enum log_priority { LOG_PRIORITY_ALL, // catch-all LOG_PRIORITY_TRACE, // verbose debug LOG_PRIORITY_DEBUG, // for devs LOG_PRIORITY_INFO, // about program execution LOG_PRIORITY_WARN, // possible error LOG_PRIORITY_ERROR, // recoverable error LOG_PRIORITY_FATAL, // unrecoverable error LOG_PRIORITY_OFF // don't log anything }; #define log_trace(...) log_output(LOG_PRIORITY_TRACE, __VA_ARGS__) #define log_debug(...) log_output(LOG_PRIORITY_DEBUG, __VA_ARGS__) #define log_info(...) log_output(LOG_PRIORITY_INFO, __VA_ARGS__) #define log_warn(...) log_output(LOG_PRIORITY_WARN, __VA_ARGS__) #define log_error(...) log_output(LOG_PRIORITY_ERROR, __VA_ARGS__) #define log_fatal(...) log_output(LOG_PRIORITY_FATAL, __VA_ARGS__) extern void log_debug_on(void); extern void log_debug_off(void); extern void log_set_priority(enum log_priority priority); extern void log_output(enum log_priority priority, char *fmt, ...); #endif freedink-108.4+dfsg/src/dinkc_bindings.h0000644000175000017500000000223512330466347015737 0ustar meme/** * Link game engine and DinkC script engine * Copyright (C) 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _DINKC_BINDINGS_H #define _DINKC_BINDINGS_H enum dinkc_parser_state { DCPS_GOTO_NEXTLINE = 0, DCPS_CONTINUE = 1, DCPS_YIELD = 2, DCPS_DOELSE_ONCE = 4, }; extern void dinkc_bindings_init(); extern void dinkc_bindings_quit(); extern void attach(void); extern /*bool*/int talk_get(int script); extern enum dinkc_parser_state process_line (int script, char *s, /*bool*/int doelse); #endif freedink-108.4+dfsg/src/freedink_xpm.c0000644000175000017500000000535312345154755015447 0ustar meme/** * Converted from dink.ico, from the Dink source code release */ /* *** Dink Smallwood Source License Information *** This software is provided "as is" without express or implied warranties. You may freely use, modify and distribute this source provided that the copyright text below is included in the resulting source code, for example: "Portions Copyright (C) Seth A. Robinson, 1997-2003 You may use this source in personal and commercial products, you are not required to release the source code. Please note that sharing this source does not in any way relinquish interest or forfeit any rights enjoyed by Robinson Technologies and Seth A. Robinson concerning the name Dink Smallwood and related media includeding graphics, sounds, music, scripts and map data. (hereafter referred to as "Dink Smallwood Media"). Repackaging or distributing the Dink Smallwood Media in a modified format requires permission from Seth A. Robinson. Please consult the license included with the Dink Smallwood full version distribution for more information. Fastfile.*, ffcreate.*, dsutil.* and ddutil.* are copyrighted by the Microsoft Corporation and excluded from the above license. -Seth A. Robinson (seth@rtsoft.com) www.rtsoft.com */ /* In case this isn't clear enough, here's a statement of intent clarifying that the icon is free and not covered by the stanza about the "Dink Smallwood Media": http://lists.gnu.org/archive/html/bug-freedink/2008-09/msg00008.html */ /* XPM */ char * freedink_xpm[] = { "32 32 8 1", " c None", ". c #000000", "+ c #808080", "@ c #0000FF", "# c #808000", "$ c #C0C0C0", "% c #800000", "& c #FFFFFF", " . ...+", " .@. .##.", " .@@@. . .####", " .@$@. .#. .##%..", " .@@$@@. .##. .##%. ", " ..@@$&$@@..########.##.##%. ", " .@@@$&&&$@@@.......#.###.%. ", ".@@$$&&&&&$$@@@.%%%..$.###. ", " .@@@$&&&$@@@..%%%%.&&$.###. ", " #..@@$&$@@..%%%%%.&&$$&.###. ", " #.%.@@$@@.%%%%%%.&&$&&$...##. ", " #..%.@$@.%%%%%%.&&$&&$...#.. ", " ##.%.@@@.%.....&&$&$$.%%.## ", " #.%%.@.%%%.#.&&$&$$.%%%..## ", " #.%%.@.%%%..&&$&$..%%%%%.## ", " #.%%%.%%%..&&$&$.##.%%%%.## ", " #...%%%...&.$&$.###.%%%%.## ", " ###..%.#.#.#.$.#####.%%%.## ", " ###.%%.#.#.#.######.%%.#.# ", " ##.%%..#.#.#.#####.%%.#..# ", " ##..%.&....................##", " ###.%.&$.%%%%%#%#%##%####.....", " ##....&$&.#.#.#..............##", "##..%.&$&.#.#.#.#####.%%%.#..# ", "#..%%.$$.#.#.#.#####.%%%..#.# ", "#.%%%..........#####.%%%.### ", "#.%%....%%%%%%%..#..%%%..# ", "#.%%.##..%%%%%%%%.%%%%..## ", "#.%..###..%%%%%%%%%%%..## ", "#...## ##...%%%%%%%...## ", "##### ###.........### ", " ########### "}; freedink-108.4+dfsg/src/SDL_rwops_zzip.c0000644000175000017500000000543112420231175015703 0ustar meme/** * zziplib data source for SDL_RWops * Copyright (C) 2001 Guido Draheim * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif /* Order headers appropriately: http://lists.gnu.org/archive/html/bug-gnulib/2007-12/msg00152.html */ #include /* close->rpl_close */ #include /* also sources unistd.h */ #include /* has a 'close' member, replaced by 'rpl_close' */ #include "SDL_rwops_zzip.h" #include /* strchr */ /* MSVC can not take a casted variable as an lvalue ! */ #define SDL_RWOPS_ZZIP_DATA(_context) \ ((_context)->hidden.unknown.data1) #define SDL_RWOPS_ZZIP_FILE(_context) (ZZIP_FILE*) \ ((_context)->hidden.unknown.data1) static int rwops_zzip_seek(SDL_RWops *context, int offset, int whence) { return zzip_seek(SDL_RWOPS_ZZIP_FILE(context), offset, whence); } static int rwops_zzip_read(SDL_RWops *context, void *ptr, int size, int maxnum) { return zzip_read(SDL_RWOPS_ZZIP_FILE(context), ptr, size*maxnum) / size; } static int rwops_zzip_write(SDL_RWops *context, const void *ptr, int size, int num) { return 0; /* ignored */ } static int rwops_zzip_close(SDL_RWops *context) { if (! context) return 0; /* may be SDL_RWclose is called by atexit */ zzip_close (SDL_RWOPS_ZZIP_FILE(context)); SDL_FreeRW (context); return 0; } SDL_RWops *SDL_RWFromZZIP(const char* file, const char* mode) { register SDL_RWops* rwops; register ZZIP_FILE* zzip_file; if (! strchr (mode, 'r')) return SDL_RWFromFile(file, mode); /* zzip_file = zzip_fopen (file, mode); */ zzip_strings_t xor_fileext[] = { "", 0 }; zzip_file = zzip_open_ext_io(file, 0, ZZIP_CASELESS|ZZIP_ONLYZIP, xor_fileext, 0); if (! zzip_file) return 0; rwops = SDL_AllocRW (); if (! rwops) { errno=ENOMEM; zzip_close (zzip_file); return 0; } SDL_RWOPS_ZZIP_DATA(rwops) = zzip_file; rwops->read = rwops_zzip_read; rwops->write = rwops_zzip_write; rwops->seek = rwops_zzip_seek; rwops->close = rwops_zzip_close; return rwops; } freedink-108.4+dfsg/src/dinkvar.c0000644000175000017500000033170312420231175014415 0ustar meme/** * Common code for FreeDink and FreeDinkedit * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2003 Shawn Betts * Copyright (C) 2005, 2006 Dan Walma * Copyright (C) 2005, 2007, 2008, 2009, 2010, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #define WIN32_LEAN_AND_MEAN #include #include #include #include /* strncasecmp */ #include #include #ifdef _WIN32 /* GetWindowsDirectory */ #include #endif /* #include */ /* #include */ /* #include */ #include /* #include */ /* #include */ /* #define DIRECTINPUT_VERSION 0x0700 */ /* #include */ /* #include */ #include "SDL.h" #include "SDL_image.h" #include "SDL_framerate.h" #include "game_engine.h" #include "screen.h" #include "dinkini.h" #include "input.h" /* #include "ddutil.h" */ #include "fastfile.h" #include "io_util.h" #include "freedink.h" #include "dinkvar.h" #include "gfx.h" #include "gfx_tiles.h" #include "gfx_sprites.h" #include "gfx_palette.h" /* for DinkC's initfonts(): */ #include "gfx_fonts.h" #include "bgm.h" #include "sfx.h" #include "dinkc.h" #include "dinkc_bindings.h" #include "str_util.h" #include "paths.h" #include "log.h" //if true, will close app as soon as the message pump is empty int g_b_kill_app = 0; int dinkspeed = 3; int show_inventory = 0; // display inventory? void update_status_all(void); int add_sprite(int x1, int y, int brain,int pseq, int pframe ); void add_exp(int num, int h); void draw_status_all(void); void check_seq_status(int h); int realhard(int tile); int flub_mode = -500; int draw_map_tiny = -1; int walk_off_screen = /*false*/0; /* Skip flipping the double buffer for this frame only - used when setting up show_bmp and copy_bmp */ /*bool*/int abort_this_flip = /*false*/0; #define SEQ_LEVEL_NUMS 442 struct show_bmp showb; int keep_mouse = 0; struct attackinfo_struct bow; int screenlock = 0; struct talk_struct talk; unsigned long mold; int mbase_count; int push_active = 1; #define TEXT_MIN 2700 #define TEXT_TIMER 77 int stop_entire_game; const int max_game = 20; /*bool*/int in_enabled = /*false*/0; char *in_string; /* If true, and if the engine is executing a screen's attached script, and if main() loads new graphics (preload_seq()...), then load_sprites and load_sprite_pak will display a "Please Wait" animation. */ /*bool*/int no_running_main = /*false*/0; char dir[80]; //defaults int show_dot = /*FALSE*/0; unsigned long timer = 0; char *command_line; /*bool*/int dinkedit = /*false*/0; int base_timing = 0; int weapon_script = 0; int magic_script = 0; int sp_mode = 0; int fps,fps_final = 0; int move_screen = 0; int move_counter = 0; int playx = 620; /*bool*/int windowed = /*false*/0; /* TODO: move to gfx.c? */ int playl = 20; /*bool*/int mouse1 = /*false*/0; int playy = 400; int cur_map; /* Number of ms since an arbitrarily fixed point */ Uint32 thisTickCount,lastTickCount; /* SDL_gfx accurate framerate */ FPSmanager framerate_manager; unsigned long timecrap; rect math,box_crap,box_real; int mode; struct small_map pam; /*bool*/int trig_man = /*false*/0; /*bool*/int total_trigger = /*false*/0; struct player_info play; /* LPDIRECTDRAWSURFACE game[max_game]; // Game pieces */ /* LPDIRECTDRAWPALETTE lpDDPal = NULL; // The primary surface palette */ /* PALETTEENTRY pe[256]; */ int bActive = /*false*/0; // is application active/foreground? //LPDIRECTINPUT lpDI; //direct input stuff for mouse reading /* LPDIRECTINPUT g_pdi = NULL; */ /* LPDIRECTINPUTDEVICE g_pMouse = NULL; */ /* #define DINPUT_BUFFERSIZE 16 */ /* HANDLE g_hevtMouse = NULL; */ //LPCDIDATAFORMAT lpc; unsigned char torusColors[256]; // Marks the colors used in the torus /* HWND hWndMain = NULL; */ struct hardness hmap; void clear_talk(void) { memset(&talk, 0, sizeof(talk)); play.mouse = 0; } char * lmon(long money, char *dest) { char ho[30]; int k,c; char lmon1[30]; char buffer[30]; /*BOOL*/int quit1; quit1 = /*FALSE*/0; sprintf(buffer, "%ld", money); strcpy(lmon1, buffer); // prf("ORG IS '%s'",lmon1); if (strlen(lmon1) < 4) { strcpy(dest, lmon1); return(dest); } sprintf(buffer, "%ld", money); strcpy(ho, buffer); k = strlen(ho); c = -1; lmon1[0]=0; do { strchar(lmon1,ho[k]); k--; c++; if (c == 3) { if (k > -1) { strchar(lmon1,','); c = 0; } } if (k < 0) quit1 = /*TRUE*/1; }while (quit1 == /*FALSE*/0); reverse(lmon1); strcpy(dest, lmon1); return(dest); } /* void dderror(HRESULT hErr) */ /* { */ /* switch (hErr) */ /* { */ /* case DDERR_ALREADYINITIALIZED: */ /* Msg("DDERR_ALREADYINITIALIZED"); break; */ /* case DDERR_CANNOTATTACHSURFACE: */ /* Msg("DDERR_CANNOTATTACHSURFACE"); break; */ /* case DDERR_CANNOTDETACHSURFACE: */ /* Msg("DDERR_CANNOTDETACHSURFACE"); break; */ /* case DDERR_CURRENTLYNOTAVAIL: */ /* Msg("DDERR_CURRENTLYNOTAVAIL"); break; */ /* case DDERR_EXCEPTION: */ /* Msg("DDERR_EXCEPTION"); break; */ /* case DDERR_GENERIC: */ /* Msg("DDERR_GENERIC"); break; */ /* case DDERR_HEIGHTALIGN: */ /* Msg("DDERR_HEIGHTALIGN"); break; */ /* case DDERR_INCOMPATIBLEPRIMARY: */ /* Msg("DDERR_INCOMPATIBLEPRIMARY"); break; */ /* case DDERR_INVALIDCAPS: */ /* Msg("DDERR_INVALIDCAPS"); break; */ /* case DDERR_INVALIDCLIPLIST: */ /* Msg("DDERR_INVALIDCLIPLIST"); break; */ /* case DDERR_INVALIDMODE: */ /* Msg("DDERR_INVALIDMODE"); break; */ /* case DDERR_INVALIDOBJECT: */ /* Msg("DDERR_INVALIDOBJECT"); break; */ /* case DDERR_INVALIDPARAMS: */ /* Msg("DDERR_INVALIDPARAMS"); break; */ /* case DDERR_INVALIDPIXELFORMAT: */ /* Msg("DDERR_INVALIDPIXELFORMAT"); break; */ /* case DDERR_INVALIDRECT: */ /* Msg("DDERR_INVALIDRECT"); break; */ /* case DDERR_LOCKEDSURFACES: */ /* Msg("DDERR_LOCKEDSURFACES"); break; */ /* case DDERR_NO3D: */ /* Msg("DDERR_NO3D"); break; */ /* case DDERR_NOALPHAHW: */ /* Msg("DDERR_NOALPHAHW"); break; */ /* case DDERR_NOCLIPLIST: */ /* Msg("DDERR_NOCLIPLIST"); break; */ /* case DDERR_NOCOLORCONVHW: */ /* Msg("DDERR_NOCOLORCONVHW"); break; */ /* case DDERR_NOCOOPERATIVELEVELSET: */ /* Msg("DDERR_NOCOOPERATIVELEVELSET"); break; */ /* case DDERR_NOCOLORKEY: */ /* Msg("DDERR_NOCOLORKEY"); break; */ /* case DDERR_NOCOLORKEYHW: */ /* Msg("DDERR_NOCOLORKEYHW"); break; */ /* case DDERR_NODIRECTDRAWSUPPORT: */ /* Msg("DDERR_NODIRECTDRAWSUPPORT"); break; */ /* case DDERR_NOEXCLUSIVEMODE: */ /* Msg("DDERR_NOEXCLUSIVEMODE"); break; */ /* case DDERR_NOFLIPHW: */ /* Msg("DDERR_NOFLIPHW"); break; */ /* case DDERR_NOGDI: */ /* Msg("DDERR_NOGDI"); break; */ /* case DDERR_NOMIRRORHW: */ /* Msg("DDERR_NOMIRRORHW"); break; */ /* case DDERR_NOTFOUND: */ /* Msg("DDERR_NOTFOUND"); break; */ /* case DDERR_NOOVERLAYHW: */ /* Msg("DDERR_NOOVERLAYHW"); break; */ /* case DDERR_NORASTEROPHW: */ /* Msg("DDERR_NORASTEROPHW"); break; */ /* case DDERR_NOROTATIONHW: */ /* Msg("DDERR_NOROTATIONHW"); break; */ /* case DDERR_NOSTRETCHHW: */ /* Msg("DDERR_NOSTRETCHHW"); break; */ /* case DDERR_NOT4BITCOLOR: */ /* Msg("DDERR_NOT4BITCOLOR"); break; */ /* case DDERR_NOT4BITCOLORINDEX: */ /* Msg("DDERR_NOT4BITCOLORINDEX"); break; */ /* case DDERR_NOT8BITCOLOR: */ /* Msg("DDERR_NOT8BITCOLOR"); break; */ /* case DDERR_NOTEXTUREHW: */ /* Msg("DDERR_NOTEXTUREHW"); break; */ /* case DDERR_NOVSYNCHW: */ /* Msg("DDERR_NOVSYNCHW"); break; */ /* case DDERR_NOZBUFFERHW: */ /* Msg("DDERR_NOZBUFFERHW"); break; */ /* case DDERR_NOZOVERLAYHW: */ /* Msg("DDERR_NOZOVERLAYHW"); break; */ /* case DDERR_OUTOFCAPS: */ /* Msg("DDERR_OUTOFCAPS"); break; */ /* case DDERR_OUTOFMEMORY: */ /* Msg("DDERR_OUTOFMEMORY"); break; */ /* case DDERR_OUTOFVIDEOMEMORY: */ /* Msg("DDERR_OUTOFVIDEOMEMORY"); break; */ /* case DDERR_OVERLAYCANTCLIP: */ /* Msg("DDERR_OVERLAYCANTCLIP"); break; */ /* case DDERR_OVERLAYCOLORKEYONLYONEACTIVE: */ /* Msg("DDERR_OVERLAYCOLORKEYONLYONEACTIVE"); break; */ /* case DDERR_PALETTEBUSY: */ /* Msg("DDERR_PALETTEBUSY"); break; */ /* case DDERR_COLORKEYNOTSET: */ /* Msg("DDERR_COLORKEYNOTSET"); break; */ /* case DDERR_SURFACEALREADYATTACHED: */ /* Msg("DDERR_SURFACEALREADYATTACHED"); break; */ /* case DDERR_SURFACEALREADYDEPENDENT: */ /* Msg("DDERR_SURFACEALREADYDEPENDENT"); break; */ /* case DDERR_SURFACEBUSY: */ /* Msg("DDERR_SURFACEBUSY"); break; */ /* case DDERR_CANTLOCKSURFACE: */ /* Msg("DDERR_CANTLOCKSURFACE"); break; */ /* case DDERR_SURFACEISOBSCURED: */ /* Msg("DDERR_SURFACEISOBSCURED"); break; */ /* case DDERR_SURFACELOST: */ /* Msg("DDERR_SURFACELOST"); break; */ /* case DDERR_SURFACENOTATTACHED: */ /* Msg("DDERR_SURFACENOTATTACHED"); break; */ /* case DDERR_TOOBIGHEIGHT: */ /* Msg("DDERR_TOOBIGHEIGHT"); break; */ /* case DDERR_TOOBIGSIZE: */ /* Msg("DDERR_TOOBIGSIZE"); break; */ /* case DDERR_TOOBIGWIDTH: */ /* Msg("DDERR_TOOBIGWIDTH"); break; */ /* case DDERR_UNSUPPORTED: */ /* Msg("DDERR_UNSUPPORTED"); break; */ /* case DDERR_UNSUPPORTEDFORMAT: */ /* Msg("DDERR_UNSUPPORTEDFORMAT"); break; */ /* case DDERR_UNSUPPORTEDMASK: */ /* Msg("DDERR_UNSUPPORTEDMASK"); break; */ /* case DDERR_VERTICALBLANKINPROGRESS: */ /* Msg("DDERR_VERTICALBLANKINPROGRESS"); break; */ /* case DDERR_WASSTILLDRAWING: */ /* Msg("DDERR_WASSTILLDRAWING"); break; */ /* case DDERR_XALIGN: */ /* Msg("DDERR_XALIGN"); break; */ /* case DDERR_INVALIDDIRECTDRAWGUID: */ /* Msg("DDERR_INVALIDDIRECTDRAWGUID"); break; */ /* case DDERR_DIRECTDRAWALREADYCREATED: */ /* Msg("DDERR_DIRECTDRAWALREADYCREATED"); break; */ /* case DDERR_NODIRECTDRAWHW: */ /* Msg("DDERR_NODIRECTDRAWHW"); break; */ /* case DDERR_PRIMARYSURFACEALREADYEXISTS: */ /* Msg("DDERR_PRIMARYSURFACEALREADYEXISTS"); break; */ /* case DDERR_NOEMULATION: */ /* Msg("DDERR_NOEMULATION"); break; */ /* case DDERR_REGIONTOOSMALL: */ /* Msg("DDERR_REGIONTOOSMALL"); break; */ /* case DDERR_CLIPPERISUSINGHWND: */ /* Msg("DDERR_CLIPPERISUSINGHWND"); break; */ /* case DDERR_NOCLIPPERATTACHED: */ /* Msg("DDERR_NOCLIPPERATTACHED"); break; */ /* case DDERR_NOHWND: */ /* Msg("DDERR_NOHWND"); break; */ /* case DDERR_HWNDSUBCLASSED: */ /* Msg("DDERR_HWNDSUBCLASSED"); break; */ /* case DDERR_HWNDALREADYSET: */ /* Msg("DDERR_HWNDALREADYSET"); break; */ /* case DDERR_NOPALETTEATTACHED: */ /* Msg("DDERR_NOPALETTEATTACHED"); break; */ /* case DDERR_NOPALETTEHW: */ /* Msg("DDERR_NOPALETTEHW"); break; */ /* case DDERR_BLTFASTCANTCLIP: */ /* Msg("DDERR_BLTFASTCANTCLIP"); break; */ /* case DDERR_NOBLTHW: */ /* Msg("DDERR_NOBLTHW"); break; */ /* case DDERR_NODDROPSHW: */ /* Msg("DDERR_NODDROPSHW"); break; */ /* case DDERR_OVERLAYNOTVISIBLE: */ /* Msg("DDERR_OVERLAYNOTVISIBLE"); break; */ /* case DDERR_NOOVERLAYDEST: */ /* Msg("DDERR_NOOVERLAYDEST"); break; */ /* case DDERR_INVALIDPOSITION: */ /* Msg("DDERR_INVALIDPOSITION"); break; */ /* case DDERR_NOTAOVERLAYSURFACE: */ /* Msg("DDERR_NOTAOVERLAYSURFACE"); break; */ /* case DDERR_EXCLUSIVEMODEALREADYSET: */ /* Msg("DDERR_EXCLUSIVEMODEALREADYSET"); break; */ /* case DDERR_NOTFLIPPABLE: */ /* Msg("DDERR_NOTFLIPPABLE"); break; */ /* case DDERR_CANTDUPLICATE: */ /* Msg("DDERR_CANTDUPLICATE"); break; */ /* case DDERR_NOTLOCKED: */ /* Msg("DDERR_NOTLOCKED"); break; */ /* case DDERR_CANTCREATEDC: */ /* Msg("DDERR_CANTCREATEDC"); break; */ /* case DDERR_NODC: */ /* Msg("DDERR_NODC"); break; */ /* case DDERR_WRONGMODE: */ /* Msg("DDERR_WRONGMODE"); break; */ /* case DDERR_IMPLICITLYCREATED: */ /* Msg("DDERR_IMPLICITLYCREATED"); break; */ /* case DDERR_NOTPALETTIZED: */ /* Msg("DDERR_NOTPALETTIZED"); break; */ /* case DDERR_UNSUPPORTEDMODE: */ /* Msg("DDERR_UNSUPPORTEDMODE"); break; */ /* case DDERR_NOMIPMAPHW: */ /* Msg("DDERR_NOMIPMAPHW"); break; */ /* case DDERR_INVALIDSURFACETYPE: */ /* Msg("DDERR_INVALIDSURFACETYPE"); break; */ /* case DDERR_DCALREADYCREATED: */ /* Msg("DDERR_DCALREADYCREATED"); break; */ /* case DDERR_CANTPAGELOCK: */ /* Msg("DDERR_CANTPAGELOCK"); break; */ /* case DDERR_CANTPAGEUNLOCK: */ /* Msg("DDERR_CANTPAGEUNLOCK"); break; */ /* case DDERR_NOTPAGELOCKED: */ /* Msg("DDERR_NOTPAGELOCKED"); break; */ /* case DDERR_NOTINITIALIZED: */ /* Msg("DDERR_NOTINITIALIZED"); break; */ /* default: */ /* Msg("Unknown Error"); break; */ /* } */ /* Msg("\n"); */ /* } */ //add hardness from a sprite /** * Get the current graphic (current sequence/current frame) for sprite * 'sprite_no' */ int getpic(int sprite_no) { if (spr[sprite_no].pseq == 0) return 0; if (spr[sprite_no].pseq >= MAX_SEQUENCES) { log_error("Sequence %d? But max is %d!", spr[sprite_no].pseq, MAX_SEQUENCES); return 0; } return seq[spr[sprite_no].pseq].frame[spr[sprite_no].pframe]; } void add_hardness (int sprite, int num) { int xx; for (xx = spr[sprite].x + k[getpic(sprite)].hardbox.left; xx < spr[sprite].x + k[getpic(sprite)].hardbox.right; xx++) { int yy; for (yy = spr[sprite].y + k[getpic(sprite)].hardbox.top; yy < spr[sprite].y + k[getpic(sprite)].hardbox.bottom; yy++) { if ( (xx-20 > 600) | (xx-20 < 0)| (yy > 400) | (yy < 0)) ; /* Nothing */ else hm.x[xx-20].y[yy] = num; } } } /** * Check whether planned new position (x1,y1) is solid * * Only used in 'check_if_move_is_legal' */ unsigned char get_hard(int x1, int y1) { if (screenlock) { if (x1 < 0) x1 = 0; else if (x1 > 599) x1 = 599; if (y1 < 0) y1 = 0; else if (y1 > 399) y1 = 399; } if ((x1 < 0) || (y1 < 0) || (x1 > 599) || (y1 > 399)) return 0; int value = hm.x[x1].y[y1]; return(value); } /** * Check whether planned new position (x1,y1) is solid * * Does something weird when hard value is > 100?? * * Only used in 'human_brain' */ unsigned char get_hard_play(int h, int x1, int y1) { x1 -= 20; if (screenlock) { if (x1 < 0) x1 = 0; else if (x1 > 599) x1 = 599; if (y1 < 0) y1 = 0; else if (y1 > 399) y1 = 399; } if ((x1 < 0) || (y1 < 0) || (x1 > 599) || (y1 > 399)) return 0; int value = hm.x[x1].y[y1]; if (value > 100 && pam.sprite[value-100].is_warp != 0) { flub_mode = value; value = 0; } return(value); } unsigned char get_hard_map(int h,int x1, int y1) { if ((x1 < 0) || (y1 < 0)) return(0); if ((x1 > 599) ) return(0); if (y1 > 399) return(0); int til = (x1 / 50) + ( ((y1 / 50)) * 12); //til++; int offx = x1 - ((x1 / 50) * 50); int offy = y1 - ((y1 / 50) * 50); //Msg("tile %d ",til); return( hmap.htile[ realhard(til ) ].x[offx].y[offy]); } void fill_hardxy(rect box) { int x1, y1; //Msg("filling hard of %d %d %d %d", box.top, box.left, box.right, box.bottom); if (box.right > 600) box.right = 600; if (box.top < 0) box.top = 0; if (box.bottom > 400) box.bottom = 400; if (box.left < 0) box.left = 0; for (x1 = box.left; x1 < box.right; x1++) for (y1 = box.top; y1 < box.bottom; y1++) hm.x[x1].y[y1] = get_hard_map(0,x1,y1); } /** * Add experience - no "did the player really kill this enemy?" * checks */ void add_exp_force(int num, int source_sprite) { if (num > 0) { //add experience *pexper += num; int crap2 = add_sprite(spr[source_sprite].x, spr[source_sprite].y, 8, 0, 0); spr[crap2].y -= k[seq[spr[source_sprite].pseq].frame[spr[source_sprite].pframe]].yoffset; spr[crap2].x -= k[seq[spr[source_sprite].pseq].frame[spr[source_sprite].pframe]].xoffset; spr[crap2].y -= k[seq[spr[source_sprite].pseq].frame[spr[source_sprite].pframe]].box.bottom / 3; spr[crap2].x += k[seq[spr[source_sprite].pseq].frame[spr[source_sprite].pframe]].box.right / 5; spr[crap2].y -= 30; spr[crap2].speed = 1; spr[crap2].hard = 1; spr[crap2].brain_parm = 5000; spr[crap2].my = -1; spr[crap2].kill = 1000; spr[crap2].dir = 8; spr[crap2].damage = num; if (*pexper > 99999) *pexper = 99999; } } void add_exp(int num, int killed_sprite) { if (spr[killed_sprite].last_hit != 1) return; add_exp_force(num, killed_sprite); } /** * Return hardness index for this screen tile, either its default * hardness, or the replaced/alternative hardness. Tile is in [0,95]. */ int realhard(int tile) { if (pam.t[tile].althard > 0) return(pam.t[tile].althard); else return(hmap.btile_default[pam.t[tile].square_full_idx0]); } void fill_whole_hard(void) { int til; for (til=0; til < 96; til++) { int offx = (til * 50 - ((til / 12) * 600)); int offy = (til / 12) * 50; int x, y; for (x = 0; x < 50; x++) for (y = 0; y < 50; y++) hm.x[offx +x].y[offy+y] = hmap.htile[ realhard(til) ].x[x].y[y]; } } /* Draw harness. Used by freedinkedit and updateFrame() in hard-coded cheat mode. */ void drawallhard( void) { /* rect box_crap; */ /* int ddrval; */ /* DDBLTFX ddbltfx; */ int x1, y1; /* TODO: test me! Then factor the code */ for (x1=0; x1 < 600; x1++) for (y1=0; y1 < 400; y1++) { if (hm.x[x1].y[y1] == 1) { /* ddbltfx.dwFillColor = 1; */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* box_crap.top = y1; */ /* box_crap.bottom = y1+1; */ /* box_crap.left = x1+playl; //20 is to compensate for the border */ /* box_crap.right = x1+1+playl; */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) Msg("There was an error!"); */ // GFX { SDL_Rect GFX_box_crap; GFX_box_crap.x = x1 + playl; GFX_box_crap.y = y1; GFX_box_crap.w = 1; GFX_box_crap.h = 1; SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[1].r, GFX_real_pal[1].g, GFX_real_pal[1].b)); } } if (hm.x[x1].y[y1] == 2) { /* ddbltfx.dwFillColor = 128; */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* box_crap.top = y1; */ /* box_crap.bottom = y1+1; */ /* box_crap.left = x1+playl; //20 is to compensate for the border */ /* box_crap.right = x1+1+playl; */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) Msg("There was an error!"); */ // GFX { SDL_Rect GFX_box_crap; GFX_box_crap.x = x1 + playl; GFX_box_crap.y = y1; GFX_box_crap.w = 1; GFX_box_crap.h = 1; SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[128].r, GFX_real_pal[128].g, GFX_real_pal[128].b)); } } if (hm.x[x1].y[y1] == 3) { /* ddbltfx.dwFillColor = 45; */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* box_crap.top = y1; */ /* box_crap.bottom = y1+1; */ /* box_crap.left = x1+playl; //20 is to compensate for the border */ /* box_crap.right = x1+1+playl; */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) Msg("There was an error!"); */ // GFX { SDL_Rect GFX_box_crap; GFX_box_crap.x = x1 + playl; GFX_box_crap.y = y1; GFX_box_crap.w = 1; GFX_box_crap.h = 1; SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[45].r, GFX_real_pal[45].g, GFX_real_pal[45].b)); } } if (hm.x[x1].y[y1] > 100) { if (pam.sprite[ (hm.x[x1].y[y1]) - 100].is_warp == 1) { //draw a little pixel /* ddbltfx.dwFillColor = 20; */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* box_crap.top = y1; */ /* box_crap.bottom = y1+1; */ /* box_crap.left = x1+playl; //20 is to compensate for the border */ /* box_crap.right = x1+1+playl; */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) Msg("There was an error!"); */ // GFX { SDL_Rect GFX_box_crap; GFX_box_crap.x = x1 + playl; GFX_box_crap.y = y1; GFX_box_crap.w = 1; GFX_box_crap.h = 1; SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[20].r, GFX_real_pal[20].g, GFX_real_pal[20].b)); } } else { //draw a little pixel /* ddbltfx.dwFillColor = 23; */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* box_crap.top = y1; */ /* box_crap.bottom = y1+1; */ /* box_crap.left = x1+playl; //20 is to compensate for the border */ /* box_crap.right = x1+1+playl; */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) Msg("There was an error!"); */ // GFX { SDL_Rect GFX_box_crap; GFX_box_crap.x = x1 + playl; GFX_box_crap.y = y1; GFX_box_crap.w = 1; GFX_box_crap.h = 1; SDL_FillRect(GFX_lpDDSBack, &GFX_box_crap, SDL_MapRGB(GFX_lpDDSBack->format, GFX_real_pal[23].r, GFX_real_pal[23].g, GFX_real_pal[23].b)); } } } } } /** * Resurrect sprites that were temporarily disabled * (editor_type(6/7/8)) */ void fix_dead_sprites() { int i; if (dinkedit) return; for (i = 1; i < 100; i++) { int type = play.spmap[*pmap].type[i]; // Resurrect sprites after 5mn if (type == 6) { if ((thisTickCount > (play.spmap[*pmap].last_time + 300000)) || (thisTickCount + 400000 < play.spmap[*pmap].last_time + 300000)) { //this sprite can come back online now play.spmap[*pmap].type[i] = 0; } } // Resurrect sprites after 3mn if (type == 7) { if (thisTickCount > (play.spmap[*pmap].last_time + 180000)) { //this sprite can come back online now play.spmap[*pmap].type[i] = 0; } } // Resurrect sprites after 1mn if (type == 8) { if (thisTickCount > (play.spmap[*pmap].last_time + 60000)) { //this sprite can come back online now play.spmap[*pmap].type[i] = 0; } } } } /** * Load 1 screen from specified map.dat in specified memory buffer */ int load_map_to(char* path, const int num, struct small_map* screen) { /* Instead of using 'fseek(...)' when we want to skip a little bit of data, we read it to this buffer - this is much faster on PSP (1000ms -> 60ms), probably related to cache validation. No noticeable change on PC (<1ms). */ char skipbuf[10000]; // more than any fseek we do FILE *f = NULL; long holdme,lsize; f = paths_dmodfile_fopen(path, "rb"); if (!f) { log_error("Cannot find %s file!!!", path); return -1; } lsize = 31280; // sizeof(struct small_map); // under ia32, not portable holdme = (lsize * (num-1)); fseek(f, holdme, SEEK_SET); //Msg("Trying to read %d bytes with offset of %d",lsize,holdme); /* Portably load map structure from disk */ int i = 0; fread(skipbuf, 20, 1, f); // unused 'name' field for (i = 0; i < 97; i++) { screen->t[i].square_full_idx0 = read_lsb_int(f); fread(skipbuf, 4, 1, f); // unused 'property' field screen->t[i].althard = read_lsb_int(f); fread(skipbuf, 6, 1, f); // unused 'more2', 'more3', 'more4' fields fread(skipbuf, 2, 1, f); // reproduce memory alignment fread(skipbuf, 60, 1, f); // unused 'buff' field } // offset 7780 fread(skipbuf, 160, 1, f); // unused 'v' field fread(skipbuf, 80, 1, f); // unused 's' field // offset 8020 /* struct sprite_placement sprite[101]; */ /* size = 220 */ for (i = 0; i < 101; i++) { screen->sprite[i].x = read_lsb_int(f); screen->sprite[i].y = read_lsb_int(f); screen->sprite[i].seq = read_lsb_int(f); screen->sprite[i].frame = read_lsb_int(f); screen->sprite[i].type = read_lsb_int(f); screen->sprite[i].size = read_lsb_int(f); screen->sprite[i].active = fgetc(f); fread(skipbuf, 3, 1, f); // reproduce memory alignment // offset 28 screen->sprite[i].rotation = read_lsb_int(f); screen->sprite[i].special = read_lsb_int(f); screen->sprite[i].brain = read_lsb_int(f); fread(screen->sprite[i].script, 14, 1, f); screen->sprite[i].script[14-1] = '\0'; // safety fread(skipbuf, 38, 1, f); // unused hit/die/talk fields // offset 92 screen->sprite[i].speed = read_lsb_int(f); screen->sprite[i].base_walk = read_lsb_int(f); screen->sprite[i].base_idle = read_lsb_int(f); screen->sprite[i].base_attack = read_lsb_int(f); screen->sprite[i].base_hit = read_lsb_int(f); screen->sprite[i].timer = read_lsb_int(f); screen->sprite[i].que = read_lsb_int(f); screen->sprite[i].hard = read_lsb_int(f); // offset 124 screen->sprite[i].alt.left = read_lsb_int(f); screen->sprite[i].alt.top = read_lsb_int(f); screen->sprite[i].alt.right = read_lsb_int(f); screen->sprite[i].alt.bottom = read_lsb_int(f); // offset 140 screen->sprite[i].is_warp = read_lsb_int(f); screen->sprite[i].warp_map = read_lsb_int(f); screen->sprite[i].warp_x = read_lsb_int(f); screen->sprite[i].warp_y = read_lsb_int(f); screen->sprite[i].parm_seq = read_lsb_int(f); // offset 160 screen->sprite[i].base_die = read_lsb_int(f); screen->sprite[i].gold = read_lsb_int(f); screen->sprite[i].hitpoints = read_lsb_int(f); screen->sprite[i].strength = read_lsb_int(f); screen->sprite[i].defense = read_lsb_int(f); screen->sprite[i].exp = read_lsb_int(f); screen->sprite[i].sound = read_lsb_int(f); screen->sprite[i].vision = read_lsb_int(f); screen->sprite[i].nohit = read_lsb_int(f); screen->sprite[i].touch_damage = read_lsb_int(f); // offset 200 int j = 0; for (j = 0; j < 5; j++) screen->sprite[i].buff[j] = read_lsb_int(f); } // offset 30204 fread(screen->script, 21, 1, f); screen->script[21-1] = '\0'; // safety fread(skipbuf, 1018, 1, f); // unused hit/die/talk fields fread(skipbuf, 1, 1, f); // reproduce memory alignment // offset 31280 fclose(f); return 0; } /** * Load 1 screen from map.dat, which contains all 768 game screens */ int load_map(const int num) { if (load_map_to(current_map, num, &pam) < 0) return -1; spr[1].move_active = 0; if (dversion >= 108) spr[1].move_nohard = 0; spr[1].freeze = 0; screenlock = 0; fill_whole_hard(); fix_dead_sprites(); if (!dinkedit) check_midi(); // draw_map_game(); return 0; } /** * Save screen number 'num' in the map. Only used by the editor. */ void save_map(const int num) { /* Instead of using 'fseek(...)' when we want to skip a little bit of data, we read it to this buffer - this is much faster on PSP (1000ms -> 60ms), probably related to cache validation. No noticeable change on PC (<1ms). */ char skipbuf[10000]; // more than any fseek we do memset(skipbuf, 0, 10000); FILE *f = NULL; long holdme,lsize; log_info("Saving map data.."); if (num > 0) { f = paths_dmodfile_fopen(current_map, "r+b"); if (f == NULL) { perror("Cannot save map"); return; } lsize = 31280; // sizeof(struct small_map); // under ia32, not portable holdme = (lsize * (num-1)); fseek(f, holdme, SEEK_SET); /* Portably dump map structure */ int i = 0; char name[20] = "Smallwood"; fwrite(name, 20, 1, f); for (i = 0; i < 97; i++) { write_lsb_int(pam.t[i].square_full_idx0, f); fwrite(skipbuf, 4, 1, f); // unused 'property' field write_lsb_int(pam.t[i].althard, f); fwrite(skipbuf, 6, 1, f); // unused 'more2', 'more3', 'more4' fields fwrite(skipbuf, 2, 1, f); // reproduce memory alignment fwrite(skipbuf, 60, 1, f); // unused 'buff' field } // offset 7780 fwrite(skipbuf, 160, 1, f); // unused 'v' field fwrite(skipbuf, 80, 1, f); // unused 's' field // offset 8020 /* struct sprite_placement sprite[101]; */ /* size = 220 */ for (i = 0; i < 101; i++) { write_lsb_int(pam.sprite[i].x, f); write_lsb_int(pam.sprite[i].y, f); write_lsb_int(pam.sprite[i].seq, f); write_lsb_int(pam.sprite[i].frame, f); write_lsb_int(pam.sprite[i].type, f); write_lsb_int(pam.sprite[i].size, f); fputc(pam.sprite[i].active, f); fwrite(skipbuf, 3, 1, f); // reproduce memory alignment // offset 28 write_lsb_int(pam.sprite[i].rotation, f); write_lsb_int(pam.sprite[i].special, f); write_lsb_int(pam.sprite[i].brain, f); fwrite(pam.sprite[i].script, 14, 1, f); fwrite(skipbuf, 38, 1, f); // reproduce memory alignment // offset 92 write_lsb_int(pam.sprite[i].speed, f); write_lsb_int(pam.sprite[i].base_walk, f); write_lsb_int(pam.sprite[i].base_idle, f); write_lsb_int(pam.sprite[i].base_attack, f); write_lsb_int(pam.sprite[i].base_hit, f); write_lsb_int(pam.sprite[i].timer, f); write_lsb_int(pam.sprite[i].que, f); write_lsb_int(pam.sprite[i].hard, f); // offset 124 write_lsb_int(pam.sprite[i].alt.left, f); write_lsb_int(pam.sprite[i].alt.top, f); write_lsb_int(pam.sprite[i].alt.right, f); write_lsb_int(pam.sprite[i].alt.bottom, f); // offset 140 write_lsb_int(pam.sprite[i].is_warp, f); write_lsb_int(pam.sprite[i].warp_map, f); write_lsb_int(pam.sprite[i].warp_x, f); write_lsb_int(pam.sprite[i].warp_y, f); write_lsb_int(pam.sprite[i].parm_seq, f); // offset 160 write_lsb_int(pam.sprite[i].base_die, f); write_lsb_int(pam.sprite[i].gold, f); write_lsb_int(pam.sprite[i].hitpoints, f); write_lsb_int(pam.sprite[i].strength, f); write_lsb_int(pam.sprite[i].defense, f); write_lsb_int(pam.sprite[i].exp, f); write_lsb_int(pam.sprite[i].sound, f); write_lsb_int(pam.sprite[i].vision, f); write_lsb_int(pam.sprite[i].nohit, f); write_lsb_int(pam.sprite[i].touch_damage, f); // offset 200 int j = 0; for (j = 0; j < 5; j++) write_lsb_int(pam.sprite[i].buff[j], f); } // offset 30204 fwrite(pam.script, 21, 1, f); fwrite(skipbuf, 1018, 1, f); // unused random/load/buffer fields fwrite(skipbuf, 1, 1, f); // reproduce memory alignment // offset 31280 fclose(f); } log_info("Done saving map data.."); } /** * Save dink.dat (index of map offsets + midi# + indoor/outdoor) */ void save_info(void) { FILE *f = paths_dmodfile_fopen(current_dat, "wb"); if (f == NULL) { perror("Cannot save dink.dat"); return; } /* Portably dump struct map_info to disk */ int i = 0; char name[20] = "Smallwood"; fwrite(name, 20, 1, f); for (i = 0; i < 769; i++) write_lsb_int(map.loc[i], f); for (i = 0; i < 769; i++) write_lsb_int(map.music[i], f); for (i = 0; i < 769; i++) write_lsb_int(map.indoor[i], f); fseek(f, 2240, SEEK_CUR); // unused field fclose(f); } /*bool*/int load_game(int num) { /* Instead of using 'fseek(...)' when we want to skip a little bit of data, we read it to this buffer - this is much faster on PSP (1000ms -> 60ms), probably related to cache validation. No noticeable change on PC (<1ms). */ char skipbuf[10000]; // more than any fseek we do FILE *f = NULL; //lets get rid of our magic and weapon scripts if (weapon_script != 0) { if (locate(weapon_script, "DISARM")) { run_script(weapon_script); } } if (magic_script != 0 && locate(magic_script, "DISARM")) run_script(magic_script); bow.active = /*false*/0; weapon_script = 0; magic_script = 0; midi_active = /*true*/1; if (last_saved_game > 0) { log_info("Modifying saved game."); if (!add_time_to_saved_game(last_saved_game)) log_error("Error modifying saved game."); } StopMidi(); f = paths_savegame_fopen(num, "rb"); if (!f) { log_error("Couldn't load save game %d", num); return /*false*/0; } /* Portably load struct player_info play from disk */ int i = 0; // TODO: check 'version' field and warn/upgrade/downgrade if // savegame version != dversion fread(skipbuf, 4, 1, f); fread(skipbuf, 77+1, 1, f); // skip save_game_info, cf. save_game_small(...) fread(skipbuf, 118, 1, f); // unused // offset 200 play.minutes = read_lsb_int(f); spr[1].x = read_lsb_int(f); spr[1].y = read_lsb_int(f); fread(skipbuf, 4, 1, f); // unused 'die' field spr[1].size = read_lsb_int(f); spr[1].defense = read_lsb_int(f); spr[1].dir = read_lsb_int(f); spr[1].pframe = read_lsb_int(f); spr[1].pseq = read_lsb_int(f); spr[1].seq = read_lsb_int(f); spr[1].frame = read_lsb_int(f); spr[1].strength = read_lsb_int(f); spr[1].base_walk = read_lsb_int(f); spr[1].base_idle = read_lsb_int(f); spr[1].base_hit = read_lsb_int(f); spr[1].que = read_lsb_int(f); // offset 264 // skip first originally unused mitem entry fread(skipbuf, 20, 1, f); for (i = 0; i < NB_MITEMS; i++) { play.mitem[i].active = fgetc(f); fread(play.mitem[i].name, 11, 1, f); /* The item script could overflow, overwriting 'seq'; if */ play.mitem[i].name[11-1] = '\0'; // safety play.mitem[i].seq = read_lsb_int(f); play.mitem[i].frame = read_lsb_int(f); } // skip first originally unused item entry fread(skipbuf, 20, 1, f); for (i = 0; i < NB_ITEMS; i++) { play.item[i].active = fgetc(f); fread(play.item[i].name, 11, 1, f); play.item[i].name[11-1] = '\0'; // safety play.item[i].seq = read_lsb_int(f); play.item[i].frame = read_lsb_int(f); } // offset 784 play.curitem = read_lsb_int(f) - 1; fread(skipbuf, 4, 1, f); // reproduce unused 'unused' field fread(skipbuf, 4, 1, f); // reproduce unused 'counter' field fread(skipbuf, 1, 1, f); // reproduce unused 'idle' field fread(skipbuf, 3, 1, f); // reproduce memory alignment // offset 796 for (i = 0; i < 769; i++) { /* Thoses are char arrays, not null-terminated strings */ int j = 0; fread(play.spmap[i].type, 100, 1, f); for (j = 0; j < 100; j++) play.spmap[i].seq[j] = read_lsb_short(f); fread(play.spmap[i].frame, 100, 1, f); play.spmap[i].last_time = read_lsb_int(f); } /* Here's we'll perform a few tricks to respect a misconception in the original savegame format */ // skip first originally unused play.button entry fread(skipbuf, 4, 1, f); // first play.var entry (cf. below) was overwritten by // play.button[10], writing 10 play.button entries: for (i = 0; i < 10; i++) // use fixed 10 rather than NB_BUTTONS input_set_button_action(i, read_lsb_int(f)); // skip the rest of first unused play.var entry fread(skipbuf, 32-4, 1, f); // reading the rest of play.var for (i = 1; i < MAX_VARS; i++) { play.var[i].var = read_lsb_int(f); fread(play.var[i].name, 20, 1, f); play.var[i].name[20-1] = '\0'; // safety play.var[i].scope = read_lsb_int(f); play.var[i].active = fgetc(f); fread(skipbuf, 3, 1, f); // reproduce memory alignment } play.push_active = fgetc(f); fread(skipbuf, 3, 1, f); // reproduce memory alignment play.push_dir = read_lsb_int(f); play.push_timer = read_lsb_int(f); play.last_talk = read_lsb_int(f); play.mouse = read_lsb_int(f); play.item_magic = fgetc(f); fread(skipbuf, 3, 1, f); // reproduce memory alignment play.last_map = read_lsb_int(f); fread(skipbuf, 4, 1, f); // reproduce unused 'crap' field fread(skipbuf, 95 * 4, 1, f); // reproduce unused 'buff' field fread(skipbuf, 20 * 4, 1, f); // reproduce unused 'dbuff' field fread(skipbuf, 10 * 4, 1, f); // reproduce unused 'lbuff' field /* v1.08: use wasted space for storing file location of map.dat, dink.dat, palette, and tiles */ /* char cbuff[6000]; */ /* Thoses are char arrays, not null-terminated strings */ fread(play.mapdat, 50, 1, f); fread(play.dinkdat, 50, 1, f); fread(play.palette, 50, 1, f); for (i = 0; i < GFX_TILES_NB_SETS+1; i++) { fread(play.tile[i].file, 50, 1, f); play.tile[i].file[50-1] = '\0'; // safety } for (i = 0; i < 100; i++) { fread(play.func[i].file, 10, 1, f); play.func[i].file[10-1] = '\0'; // safety fread(play.func[i].func, 20, 1, f); play.func[i].func[20-1] = '\0'; // safety } /* Remains 750 unused chars at the end of the file. */ /* fread(play.cbuff, 750, 1, f); */ fclose(f); if (dversion >= 108) { // new map, if exist if (strlen (play.mapdat) > 0 && strlen (play.dinkdat) > 0) { strcpy (current_map, play.mapdat); strcpy (current_dat, play.dinkdat); load_info(); } // load palette if (strlen(play.palette) > 0) { if (gfx_palette_set_from_bmp(play.palette) < 0) log_error("Couldn't load palette from '%s': %s", play.palette, SDL_GetError()); gfx_palette_get_phys(GFX_real_pal); } /* Reload tiles */ tiles_load_default(); /* Replace with custom tiles if needed */ for (i = 1; i <= GFX_TILES_NB_SETS; i++) if (strlen(play.tile[i].file) > 0) tiles_load_slot(play.tile[i].file, i); } spr[1].damage = 0; walk_off_screen = 0; spr[1].nodraw = 0; push_active = 1; time(&time_start); int script = load_script("main", 0, /*true*/1); locate(script, "main"); run_script(script); //lets attach our vars to the scripts attach(); log_debug("Attached vars."); dinkspeed = 3; if (*pcur_weapon >= 1 && *pcur_weapon <= NB_ITEMS) { if (play.item[*pcur_weapon - 1].active == 0) { *pcur_weapon = 1; weapon_script = 0; log_error("Loadgame error: Player doesn't have armed weapon - changed to 1."); } else { weapon_script = load_script(play.item[*pcur_weapon - 1].name, 1000, /*false*/0); if (locate(weapon_script, "DISARM")) run_script(weapon_script); weapon_script = load_script(play.item[*pcur_weapon - 1].name, 1000, /*false*/0); if (locate(weapon_script, "ARM")) run_script(weapon_script); } } if (*pcur_magic >= 1 && *pcur_magic <= NB_MITEMS) { if (play.item[*pcur_magic - 1].active == /*false*/0) { *pcur_magic = 0; magic_script = 0; log_error("Loadgame error: Player doesn't have armed magic - changed to 0."); } else { magic_script = load_script(play.mitem[*pcur_magic - 1].name, 1000, /*false*/0); if (locate(magic_script, "DISARM")) run_script(magic_script); magic_script = load_script(play.mitem[*pcur_magic - 1].name, 1000, /*false*/0); if (locate(magic_script, "ARM")) run_script(magic_script); } } kill_repeat_sounds_all(); load_map(map.loc[*pmap]); log_info("Loaded map."); draw_map_game(); log_info("Map drawn."); last_saved_game = num; return /*true*/1; } /*bool*/int add_time_to_saved_game(int num) { FILE *f = NULL; f = paths_savegame_fopen(num, "rb"); if (!f) { log_error("Couldn't load save game %d", num); return /*false*/0; } int minutes = 0; int minutes_offset = 200; fseek(f, minutes_offset, SEEK_SET); minutes = read_lsb_int(f); fclose(f); //great, now let's resave it with added time log_info("Ok, adding time."); time_t ct; time(&ct); minutes += (int) (difftime(ct,time_start) / 60); f = paths_savegame_fopen(num, "rb+"); if (f) { fseek(f, minutes_offset, SEEK_SET); write_lsb_int(minutes, f); fclose(f); } log_info("Wrote it.(%d of time)", minutes); return /*true*/1; } void save_game(int num) { /* Instead of using 'fseek(...)' when we want to skip a little bit of data, we read it to this buffer - this is much faster on PSP (1000ms -> 60ms), probably related to cache validation. No noticeable change on PC (<1ms). */ char skipbuf[10000]; // more than any fseek we do memset(skipbuf, 0, 10000); FILE *f; //lets set some vars first time_t ct; time(&ct); play.minutes += (int) (difftime(ct,time_start) / 60); //reset timer time(&time_start); // save game things for storing new map, palette, and tile // information strncpy (play.mapdat, current_map, 50); strncpy (play.dinkdat, current_dat, 50); last_saved_game = num; f = paths_savegame_fopen(num, "wb"); if (f == NULL) { perror("Cannot save game"); return; } /* Portably dump struct player_info play to disk */ int i = 0; write_lsb_int(dversion, f); // set_save_game_info() support: { char* info_temp = strdup(save_game_info); decipher_string(&info_temp, 0); fwrite(info_temp, 77+1, 1, f); free(info_temp); } fwrite(skipbuf, 118, 1, f); // unused // offset 200 write_lsb_int(play.minutes, f); write_lsb_int(spr[1].x, f); write_lsb_int(spr[1].y, f); fwrite(skipbuf, 4, 1, f); // unused 'die' field write_lsb_int(spr[1].size, f); write_lsb_int(spr[1].defense, f); write_lsb_int(spr[1].dir, f); write_lsb_int(spr[1].pframe, f); write_lsb_int(spr[1].pseq, f); write_lsb_int(spr[1].seq, f); write_lsb_int(spr[1].frame, f); write_lsb_int(spr[1].strength, f); write_lsb_int(spr[1].base_walk, f); write_lsb_int(spr[1].base_idle, f); write_lsb_int(spr[1].base_hit, f); write_lsb_int(spr[1].que, f); // offset 264 // skip first originally unused mitem entry fwrite(skipbuf, 20, 1, f); for (i = 0; i < NB_MITEMS; i++) { fputc(play.mitem[i].active, f); fwrite(play.mitem[i].name, 11, 1, f); write_lsb_int(play.mitem[i].seq, f); write_lsb_int(play.mitem[i].frame, f); } // skip first originally unused item entry fwrite(skipbuf, 20, 1, f); for (i = 0; i < NB_ITEMS; i++) { fputc(play.item[i].active, f); fwrite(play.item[i].name, 11, 1, f); write_lsb_int(play.item[i].seq, f); write_lsb_int(play.item[i].frame, f); } // offset 784 write_lsb_int(play.curitem + 1, f); fwrite(skipbuf, 4, 1, f); // reproduce unused 'unused' field fwrite(skipbuf, 4, 1, f); // reproduce unused 'counter' field fwrite(skipbuf, 1, 1, f); // reproduce unused 'idle' field fwrite(skipbuf, 3, 1, f); // reproduce memory alignment // offset 796 for (i = 0; i < 769; i++) { int j = 0; fwrite(play.spmap[i].type, 100, 1, f); for (j = 0; j < 100; j++) write_lsb_short(play.spmap[i].seq[j], f); fwrite(play.spmap[i].frame, 100, 1, f); write_lsb_int(play.spmap[i].last_time, f); } /* Here's we'll perform a few tricks to respect a misconception in the original savegame format */ // skip first originally unused play.button entry fwrite(skipbuf, 4, 1, f); // first play.var entry (cf. below) was overwritten by // play.button[10], writing 10 play.button entries: for (i = 0; i < 10; i++) // use fixed 10 rather than NB_BUTTONS write_lsb_int(input_get_button_action(i), f); // skip the rest of first unused play.var entry fwrite(skipbuf, 32-4, 1, f); // writing the rest of play.var for (i = 1; i < MAX_VARS; i++) { write_lsb_int(play.var[i].var, f); fwrite(play.var[i].name, 20, 1, f); write_lsb_int(play.var[i].scope, f); fputc(play.var[i].active, f); fwrite(skipbuf, 3, 1, f); // reproduce memory alignment } fputc(play.push_active, f); fwrite(skipbuf, 3, 1, f); // reproduce memory alignment write_lsb_int(play.push_dir, f); write_lsb_int(play.push_timer, f); write_lsb_int(play.last_talk, f); write_lsb_int(play.mouse, f); fputc(play.item_magic, f); fwrite(skipbuf, 3, 1, f); // reproduce memory alignment write_lsb_int(play.last_map, f); fwrite(skipbuf, 4, 1, f); // reproduce unused 'crap' field fwrite(skipbuf, 95 * 4, 1, f); // reproduce unused 'buff' field fwrite(skipbuf, 20 * 4, 1, f); // reproduce unused 'dbuff' field fwrite(skipbuf, 10 * 4, 1, f); // reproduce unused 'lbuff' field /* v1.08: use wasted space for storing file location of map.dat, dink.dat, palette, and tiles */ /* char cbuff[6000];*/ fwrite(play.mapdat, 50, 1, f); fwrite(play.dinkdat, 50, 1, f); fwrite(play.palette, 50, 1, f); for (i = 0; i < GFX_TILES_NB_SETS+1; i++) fwrite(play.tile[i].file, 50, 1, f); for (i = 0; i < 100; i++) { fwrite(play.func[i].file, 10, 1, f); fwrite(play.func[i].func, 20, 1, f); } fwrite(skipbuf, 750, 1, f); fclose(f); } void kill_all_vars() { memset(&play, 0, sizeof(play)); } void kill_cur_item() { if (*pcur_weapon >= 1 && *pcur_weapon <= NB_ITEMS) { if (play.item[*pcur_weapon - 1].active == 1) { if (weapon_script != 0 && locate(weapon_script, "DISARM")) run_script(weapon_script); weapon_script = load_script(play.item[*pcur_weapon - 1].name, 0, /*false*/0); play.item[*pcur_weapon - 1].active = 0; *pcur_weapon = 0; if (weapon_script != 0 && locate(weapon_script, "HOLDINGDROP")) run_script(weapon_script); if (weapon_script != 0 && locate(weapon_script, "DROP")) run_script(weapon_script); weapon_script = 0; } else { log_error("Can't kill cur item, none armed."); } } } void kill_item_script(char* name) { int select = 0; { int i = 0; for (; i < NB_ITEMS; i++) { if (play.item[i].active) if (compare(play.item[i].name, name)) { select = i; goto found; } } } return; found: if (*pcur_weapon - 1 == select) { //holding it right now if (locate(weapon_script, "HOLDINGDROP")) run_script(weapon_script); if (locate(weapon_script, "DISARM")) run_script(weapon_script); *pcur_weapon = 0; weapon_script = 0; } int script = load_script(play.item[select].name, 0, /*false*/0); play.item[select].active = /*false*/0; if (locate(script, "DROP")) run_script(script); draw_status_all(); } void kill_mitem_script(char* name) { int select = 0; { int i = 0; for (; i < NB_MITEMS; i++) { if (play.mitem[i].active) if (compare(play.mitem[i].name, name)) { select = i; goto found; } } } return; found: if (*pcur_magic - 1 == select) { //holding it right now if (locate(magic_script, "HOLDINGDROP")) run_script(magic_script); if (locate(magic_script, "DISARM")) run_script(magic_script); // TODO: this should be *pcur_magic; keeping for compatibility // for now: *pcur_weapon = 0; magic_script = 0; } int script = load_script(play.mitem[select].name, 0, /*false*/0); play.mitem[select].active = 0; if (locate(script, "DROP")) run_script(script); draw_status_all(); } void kill_cur_magic() { if (*pcur_magic >= 1 && *pcur_magic <= NB_MITEMS) { if (play.mitem[*pcur_magic - 1].active == 1) { if (magic_script != 0 && locate(magic_script, "DISARM")) run_script(magic_script); magic_script = load_script(play.mitem[*pcur_magic - 1].name, 0, /*false*/0); play.mitem[*pcur_magic - 1].active = /*false*/0; *pcur_magic = 0; if (magic_script != 0 && locate(magic_script, "HOLDINGDROP")) run_script(magic_script); if (magic_script != 0 && locate(magic_script, "DROP")) run_script(magic_script); magic_script = 0; } else { log_error("Can't kill cur magic, none armed."); } } } /** * Remember last time we entered this screen (so we can disable * sprites for some minutes, e.g. monsters) */ void update_screen_time() { //Msg("Cur time is %d", play.spmap[*pmap].last_time); //Msg("Map is %d..", *pmap); play.spmap[*pmap].last_time = thisTickCount; //Msg("Time was saved as %d", play.spmap[*pmap].last_time); } /** * Load dink.dat to specified memory buffer */ int load_info_to(char* path, struct map_info *mymap) { FILE *f = NULL; f = paths_dmodfile_fopen(path, "rb"); if (!f) return -1; log_info("World data loaded."); /* Portably load struct map_info from disk */ int i = 0; fseek(f, 20, SEEK_CUR); // unused 'name' field for (i = 0; i < 769; i++) mymap->loc[i] = read_lsb_int(f); for (i = 0; i < 769; i++) mymap->music[i] = read_lsb_int(f); for (i = 0; i < 769; i++) mymap->indoor[i] = read_lsb_int(f); fseek(f, 2240, SEEK_CUR); // unused space fclose(f); return 0; } /** * Load dink.dat, an offsets index to screens stored in map.dat, with * some metadata (midi #, indoor/outdoor) */ void load_info(void) { int result = load_info_to(current_dat, &map); if (result < 0) { //make new data file save_info(); return; } } /*** * Saves hard.dat (only used from the editor) */ void save_hard(void) { /* Instead of using 'fseek(...)' when we want to skip a little bit of data, we read it to this buffer - this is much faster on PSP (1000ms -> 60ms), probably related to cache validation. No noticeable change on PC (<1ms). */ char skipbuf[10000]; // more than any fseek we do memset(skipbuf, 0, 10000); FILE *f = paths_dmodfile_fopen("hard.dat", "wb"); if (!f) { perror("Couldn't save hard.dat"); return; } /* Portably dump struct hardness hmap to disk */ int i = 0; for (i = 0; i < HARDNESS_NB_TILES; i++) { int j = 0; for (j = 0; j < 51; j++) fwrite(hmap.htile[i].x[j].y, 51, 1, f); fputc(hmap.htile[i].used, f); fwrite(skipbuf, 2, 1, f); // reproduce memory alignment fwrite(skipbuf, 4, 1, f); // unused 'hold' field } for (i = 0; i < GFX_TILES_NB_SQUARES; i++) write_lsb_int(hmap.btile_default[i], f); fseek(f, (8000-GFX_TILES_NB_SQUARES)*4, SEEK_CUR); // reproduce unused data fclose(f); } /** * Load hard.dat which contains tile hardness information. * * Unlike 1.08, don't reset and save hard.dat during game in case * e.g. it was just being written by an external editor. */ void load_hard(void) { /* Instead of using 'fseek(...)' when we want to skip a little bit of data, we read it to this buffer - this is much faster on PSP (1000ms -> 60ms), probably related to cache validation. No noticeable change on PC (<1ms). */ char skipbuf[10000]; // more than any fseek we do FILE *f = NULL; /* Try loading the D-Mod hard.dat */ f = paths_dmodfile_fopen("hard.dat", "rb"); /* Fallback to the default hard.dat */ if (f == NULL) f = paths_fallbackfile_fopen("hard.dat", "rb"); if (f == NULL) { //make new data file memset(&hmap, 0, sizeof(struct hardness)); return; } /* Portably load struct hardness hmap from disk */ int i = 0; for (i = 0; i < HARDNESS_NB_TILES; i++) { int j = 0; for (j = 0; j < 51; j++) fread(hmap.htile[i].x[j].y, 51, 1, f); hmap.htile[i].used = fgetc(f); fread(skipbuf, 2, 1, f); // reproduce memory alignment fread(skipbuf, 4, 1, f); // unused 'hold' field } for (i = 0; i < GFX_TILES_NB_SQUARES; i++) hmap.btile_default[i] = read_lsb_int(f); fseek(f, (8000-GFX_TILES_NB_SQUARES)*4, SEEK_CUR); // reproduce unused data fclose(f); } /** * Parse a dink.ini line, and store instructions for later processing * (used in game initialization through 'load_batch') */ void pre_figure_out(char* line) { int i; char* ev[10]; memset(&ev, 0, sizeof(ev)); for (i = 0; i < 10; i++) ev[i] = separate_string(line, i+1, ' '); char *command = ev[0]; // PLAYMIDI filename if (compare(command, "playmidi")) { char* midi_filename = ev[1]; if (!dinkedit) PlayMidi(midi_filename); } // LOAD_SEQUENCE_NOW path seq BLACK // LOAD_SEQUENCE_NOW path seq LEFTALIGN // LOAD_SEQUENCE_NOW path seq NOTANIM // LOAD_SEQUENCE_NOW path seq speed // LOAD_SEQUENCE_NOW path seq speed offsetx offsety hard.left hard.top hard.right hard.bottom else if (compare(command, "LOAD_SEQUENCE_NOW")) { rect hardbox; memset(&hardbox, 0, sizeof(rect)); int myseq = atol(ev[2]); seq[myseq].is_active = 1; seq_set_ini(myseq, line); int flags = 0; if (compare(ev[3], "BLACK")) { flags = DINKINI_NOTANIM | DINKINI_BLACK; } else if (compare(ev[3], "LEFTALIGN")) { flags = DINKINI_LEFTALIGN; } else if (compare(ev[3], "NOTANIM")) { //not an animation! flags = 0; } else { //yes, an animation! hardbox.left = atol(ev[6]); hardbox.top = atol(ev[7]); hardbox.right = atol(ev[8]); hardbox.bottom = atol(ev[9]); flags = DINKINI_NOTANIM; } load_sprites(ev[1],atol(ev[2]),atol(ev[3]),atol(ev[4]),atol(ev[5]), hardbox, flags); /* In the original engine, due to a bug, make_idata() modifies unused sequence #0, but this isn't really important because sequence was already configured in was already done in 'load_sprites'. This is consistent with 'figure_out', which doesn't call 'make_idata' at all. */ /* We still call 'make_idata' for compatibility, to use the same number of idata, hence preserving the same max_idata. */ make_idata(IDATA_SPRITE_INFO, 0,0, 0,0, hardbox); } // LOAD_SEQUENCE path seq BLACK // LOAD_SEQUENCE path seq LEFTALIGN // LOAD_SEQUENCE path seq NOTANIM // LOAD_SEQUENCE path seq speed // LOAD_SEQUENCE path seq speed offsetx offsety hard.left hard.top hard.right hard.bottom else if (compare(command, "LOAD_SEQUENCE")) { int myseq = atol(ev[2]); seq_set_ini(myseq, line); seq[myseq].is_active = 1; } else if (compare(command, "SET_SPRITE_INFO")) { // name seq speed offsetx offsety hardx hardy //if (k[seq[myseq].frame[myframe]].frame = 0) Msg("Changing sprite that doesn't exist..."); rect hardbox; int myseq = atol(ev[1]); int myframe = atol(ev[2]); rect_set(&hardbox, atol(ev[5]), atol(ev[6]), atol(ev[7]), atol(ev[8])); make_idata(IDATA_SPRITE_INFO, myseq, myframe,atol(ev[3]), atol(ev[4]),hardbox); } else if (compare(command, "SET_FRAME_SPECIAL")) { rect hardbox; int myseq = atol(ev[1]); int myframe = atol(ev[2]); int special = atol(ev[3]); make_idata(IDATA_FRAME_SPECIAL, myseq, myframe, special, 0, hardbox); } else if (compare(command, "SET_FRAME_DELAY")) { rect hardbox; int myseq = atol(ev[1]); int myframe = atol(ev[2]); int delay = atol(ev[3]); make_idata(IDATA_FRAME_DELAY, myseq, myframe, delay, 0, hardbox); } // SET_FRAME_FRAME seq frame new_seq new_frame // SET_FRAME_FRAME seq frame -1 else if (compare(command, "SET_FRAME_FRAME")) { rect hardbox; int myseq = atol(ev[1]); int myframe = atol(ev[2]); int new_seq = atol(ev[3]); int new_frame = atol(ev[4]); make_idata(IDATA_FRAME_FRAME, myseq, myframe, new_seq, new_frame, hardbox); } /* Clean-up */ for (i = 0; i < 10; i++) free(ev[i]); } /** * Parse a delayed seq[].ini or a DinkC init("...") , and act * immediately */ void figure_out(char* line) { int myseq = 0, myframe = 0; int special = 0; int special2 = 0; int i; char* ev[10]; memset(&ev, 0, sizeof(ev)); for (i = 0; i < 10; i++) { ev[i] = separate_string(line, i+1, ' '); if (ev[i] == NULL) ev[i] = strdup(""); } char *command = ev[0]; // LOAD_SEQUENCE_NOW path seq BLACK // LOAD_SEQUENCE_NOW path seq LEFTALIGN // LOAD_SEQUENCE_NOW path seq NOTANIM // LOAD_SEQUENCE_NOW path seq speed offsetx offsety hard.left hard.top hard.right hard.bottom if (compare(command, "LOAD_SEQUENCE_NOW") || compare(command, "LOAD_SEQUENCE")) { rect hardbox; memset(&hardbox, 0, sizeof(rect)); int myseq = atol(ev[2]); seq[myseq].is_active = 1; seq_set_ini(myseq, line); int flags = 0; if (compare(ev[3], "BLACK")) { flags = DINKINI_NOTANIM | DINKINI_BLACK; } else if (compare(ev[3], "LEFTALIGN")) { flags = DINKINI_LEFTALIGN; } else if (compare(ev[3], "NOTANIM")) { //not an animation! flags = 0; } else { //yes, an animation! hardbox.left = atol(ev[6]); hardbox.top = atol(ev[7]); hardbox.right = atol(ev[8]); hardbox.bottom = atol(ev[9]); flags = DINKINI_NOTANIM; } load_sprites(ev[1],atol(ev[2]),atol(ev[3]),atol(ev[4]),atol(ev[5]), hardbox, flags); program_idata(); } else if (compare(command, "SET_SPRITE_INFO")) { // name seq speed offsetx offsety hardx hardy myseq = atol(ev[1]); myframe = atol(ev[2]); k[seq[myseq].frame[myframe]].xoffset = atol(ev[3]); k[seq[myseq].frame[myframe]].yoffset = atol(ev[4]); k[seq[myseq].frame[myframe]].hardbox.left = atol(ev[5]); k[seq[myseq].frame[myframe]].hardbox.top = atol(ev[6]); k[seq[myseq].frame[myframe]].hardbox.right = atol(ev[7]); k[seq[myseq].frame[myframe]].hardbox.bottom = atol(ev[8]); } else if (compare(command, "SET_FRAME_SPECIAL")) { // name seq speed offsetx offsety hardx hardy myseq = atol(ev[1]); myframe = atol(ev[2]); special = atol(ev[3]); seq[myseq].special[myframe] = special; log_debug("Set special. %d %d %d", myseq, myframe, special); } else if (compare(command, "SET_FRAME_DELAY")) { // name seq speed offsetx offsety hardx hardy myseq = atol(ev[1]); myframe = atol(ev[2]); special = atol(ev[3]); seq[myseq].delay[myframe] = special; log_debug("Set delay. %d %d %d",myseq, myframe, special); } else if (compare(command, "SET_FRAME_FRAME")) { // name seq speed offsetx offsety hardx hardy myseq = atol(ev[1]); myframe = atol(ev[2]); special = atol(ev[3]); special2 = atol(ev[4]); if (special == -1) seq[myseq].frame[myframe] = special; else seq[myseq].frame[myframe] = seq[special].frame[special2]; log_debug("Set frame. %d %d %d", myseq, myframe, special); } /* Clean-up */ for (i = 0; i < 10; i++) free(ev[i]); } int draw_num(int mseq, char nums[50], int mx, int my) { int length = 0; /* HRESULT ddrval; */ int rnum = 0; int i; for (i=0; i < strlen(nums); i++) { if (nums[i] == '0') rnum = 10; else if (nums[i] == '1') rnum = 1; else if (nums[i] == '2') rnum = 2; else if (nums[i] == '3') rnum = 3; else if (nums[i] == '4') rnum = 4; else if (nums[i] == '5') rnum = 5; else if (nums[i] == '6') rnum = 6; else if (nums[i] == '7') rnum = 7; else if (nums[i] == '8') rnum = 8; else if (nums[i] == '9') rnum = 9; else if (nums[i] == '/') rnum = 11; /* again: */ if ((rnum != 11) && (!(mseq == SEQ_LEVEL_NUMS))) { /* ddrval = lpDDSTwo->BltFast(mx+length, my, k[seq[mseq].frame[rnum]].k, */ /* &k[seq[mseq].frame[rnum]].box, DDBLTFAST_NOCOLORKEY); */ // GFX { SDL_Rect dst = {mx+length, my}; gfx_blit_nocolorkey(GFX_k[seq[mseq].frame[rnum]].k, NULL, GFX_lpDDSTwo, &dst); } } else { /* ddrval = lpDDSTwo->BltFast(mx+length, my, k[seq[mseq].frame[rnum]].k, */ /* &k[seq[mseq].frame[rnum]].box, DDBLTFAST_SRCCOLORKEY); */ /* Draw experience level number _with_ transparency */ // GFX { SDL_Rect dst = {mx+length, my}; SDL_BlitSurface(GFX_k[seq[mseq].frame[rnum]].k, NULL, GFX_lpDDSTwo, &dst); } } /* if (ddrval != DD_OK) */ /* { */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again; */ /* //dderror(ddrval); */ /* } */ /* else */ /* { */ length += k[seq[mseq].frame[rnum]].box.right; /* } */ } return(length); } int next_raise(void) { int crap = *plevel; int num = ((100 * crap) * crap); if (num > 99999) num = 99999; return(num); } void draw_exp() { char buffer[30]; char nums[30]; char final[30]; //Msg("Drawing exp.. which is %d and %d",fexp, *pexp); strcpy(final, ""); sprintf(buffer, "%d", fexp); strcpy(nums, buffer); if (strlen(nums) < 5) { int i; for (i = 1; i < (6 - strlen(nums)); i++) strcat(final, "0"); } strcat(final, nums); strcat(final,"/"); sprintf(buffer, "%d", fraise); strcpy(nums, buffer); if (strlen(nums) < 5) { int i; for (i = 1; i < (6 - strlen(nums)); i++) strcat(final, "0"); } strcat(final, nums); draw_num(181, final, 404, 459); } void draw_strength() { char final[30]; char buffer[30]; char nums[30]; //Msg("Drawing exp.. which is %d and %d",fexp, *pexp); strcpy(final, ""); sprintf(buffer, "%d", fstrength); strcpy(nums, buffer); if (strlen(nums) < 3) { int i; for (i = 1; i < (4 - strlen(nums)); i++) strcat(final, "0"); } strcat(final, nums); //Msg("Drawing %s..",final); draw_num(182, final, 81, 415); } void draw_defense() { char final[30]; char buffer[30]; char nums[30]; //Msg("Drawing exp.. which is %d and %d",fexp, *pexp); strcpy(final, ""); sprintf(buffer, "%d", fdefense); strcpy(nums, buffer); if (strlen(nums) < 3) { int i; for (i = 1; i < (4 - strlen(nums)); i++) strcat(final, "0"); } strcat(final, nums); draw_num(183, final, 81, 437); } void draw_magic() { char final[30]; char buffer[30]; char nums[30]; //Msg("Drawing exp.. which is %d and %d",fexp, *pexp); strcpy(final, ""); sprintf(buffer, "%d", fmagic); strcpy(nums, buffer); if (strlen(nums) < 3) { int i; for (i = 1; i < (4 - strlen(nums)); i++) strcat(final, "0"); } strcat(final, nums); draw_num(184, final, 81, 459); } void draw_level() { char final[30]; char buffer[30]; //*plevel = 15; //Msg("Drawing level.. which is %d ",*plevel); sprintf(buffer, "%d", *plevel); strcpy(final, buffer); if (strlen(final) == 1) draw_num(SEQ_LEVEL_NUMS, final, 528, 456); else draw_num(SEQ_LEVEL_NUMS, final, 523, 456); } void draw_gold() { char final[30]; char buffer[30]; char nums[30]; //Msg("Drawing exp.. which is %d and %d",fexp, *pexp); strcpy(final, ""); sprintf(buffer, "%d", fgold); strcpy(nums, buffer); if (strlen(nums) < 5) { int i; for (i = 1; i < (6 - strlen(nums)); i++) strcat(final, "0"); } strcat(final, nums); draw_num(185, final, 298, 457); } void draw_bar(int life, int seqman) { int cur = 0; int curx = 284; int cury = 412; int rnum = 3; int curx_start = curx; rect box; while(1) { cur++; if (cur > life) { cur--; int rem = (cur) - (cur / 10) * 10; if (rem != 0) { rect_copy(&box, &k[seq[seqman].frame[rnum]].box); //Msg("Drawing part bar . cur is %d", rem); box.right = (box.right * ((rem) * 10)/100); //woah, there is part of a bar remaining. Lets do it. /* again: */ /* ddrval = lpDDSTwo->BltFast(curx, cury, k[seq[seqman].frame[rnum]].k, */ /* &box, DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) */ /* goto again; */ // GFX { SDL_Rect src, dst; src.x = 0; src.y = 0; src.w = GFX_k[seq[seqman].frame[rnum]].k->w * (rem * 10) / 100; src.h = GFX_k[seq[seqman].frame[rnum]].k->h; dst.x = curx; dst.y = cury; gfx_blit_nocolorkey(GFX_k[seq[seqman].frame[rnum]].k, &src, GFX_lpDDSTwo, &dst); } } //are we done? return; } rnum = 2; if (cur < 11) rnum = 1; if (cur == *plifemax) rnum = 3; if ((cur / 10) * 10 == cur) { /* again2: */ /* ddrval = lpDDSTwo->BltFast( curx, cury, k[seq[seqman].frame[rnum]].k, */ /* &k[seq[seqman].frame[rnum]].box , DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again2; */ // GFX { SDL_Rect dst; dst.x = curx; dst.y = cury; gfx_blit_nocolorkey(GFX_k[seq[seqman].frame[rnum]].k, NULL, GFX_lpDDSTwo, &dst); } //if (ddrval != DD_OK) dderror(ddrval); curx += k[seq[seqman].frame[rnum]].box.right; if (cur == 110) {cury += k[seq[seqman].frame[rnum]].box.bottom+5; curx = curx_start; } if (cur == 220) return; } } } void draw_health( void ) { flifemax = *plifemax; draw_bar(flifemax, 190); flife = *plife; draw_bar(flife, 451); } void draw_icons() { if (*pcur_weapon >= 1 && *pcur_weapon <= NB_ITEMS && play.item[*pcur_weapon - 1].active) { //disarm old weapon check_seq_status(play.item[*pcur_weapon - 1].seq); SDL_Rect dst = {557, 413}; SDL_BlitSurface(GFX_k[seq[play.item[*pcur_weapon - 1].seq].frame[play.item[*pcur_weapon - 1].frame]].k, NULL, GFX_lpDDSTwo, &dst); } if (*pcur_magic >= 1 && *pcur_magic <= NB_MITEMS && play.mitem[*pcur_magic - 1].active) { //disarm old weapon check_seq_status(play.mitem[*pcur_magic - 1].seq); SDL_Rect dst = {153, 413}; SDL_BlitSurface(GFX_k[seq[play.mitem[*pcur_magic - 1].seq].frame[play.mitem[*pcur_magic - 1].frame]].k, NULL, GFX_lpDDSTwo, &dst); } } /** draw_virtical, draw_hor, draw_virt2, draw_hor2: used to draw the magic jauge (in that order) (dinkvar.cpp:draw_mlevel() only) **/ void draw_virtical(int percent, int mx, int my, int mseq, int mframe) { int cut; if (percent > 25) percent = 25; percent = (percent * 4); rect myrect; rect_copy(&myrect, &k[seq[mseq].frame[mframe]].box); int full = myrect.bottom; cut = (full * percent) / 100; myrect.bottom = cut; my += (full - cut); /* ddrval = lpDDSTwo->BltFast(mx, my, k[seq[mseq].frame[mframe]].k, */ /* &myrect, DDBLTFAST_NOCOLORKEY); */ // GFX { /* TODO: test me! */ SDL_Rect src, dst; src.x = src.y = 0; src.w = GFX_k[seq[mseq].frame[mframe]].k->w; src.h = GFX_k[seq[mseq].frame[mframe]].k->h * percent / 100; dst.x = mx; dst.y = my; gfx_blit_nocolorkey(GFX_k[seq[mseq].frame[mframe]].k, &src, GFX_lpDDSTwo, &dst); } } void draw_virt2(int percent, int mx, int my, int mseq, int mframe) { int cut; if (percent > 25) percent = 25; percent = (percent * 4); rect myrect; rect_copy(&myrect, &k[seq[mseq].frame[mframe]].box); int full = myrect.bottom; cut = (full * percent) / 100; myrect.bottom = cut; /* again: */ /* ddrval = lpDDSTwo->BltFast( mx, my, k[seq[mseq].frame[mframe]].k, */ /* &myrect, DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again; */ // GFX { SDL_Rect src, dst; src.x = src.y = 0; src.w = GFX_k[seq[mseq].frame[mframe]].k->w; src.h = GFX_k[seq[mseq].frame[mframe]].k->h * percent / 100; dst.x = mx; dst.y = my; gfx_blit_nocolorkey(GFX_k[seq[mseq].frame[mframe]].k, &src, GFX_lpDDSTwo, &dst); } } void draw_hor(int percent, int mx, int my, int mseq, int mframe) { int cut; if (percent > 25) percent = 25; percent = (percent * 4); rect myrect; rect_copy(&myrect, &k[seq[mseq].frame[mframe]].box); int full = myrect.right; cut = (full * percent) / 100; full = cut; myrect.right = full; /* again: */ /* ddrval = lpDDSTwo->BltFast( mx, my, k[seq[mseq].frame[mframe]].k, */ /* &myrect, DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again; */ // GFX { /* TODO: test me! */ SDL_Rect src, dst; src.x = src.y = 0; src.w = GFX_k[seq[mseq].frame[mframe]].k->w * percent / 100; src.h = GFX_k[seq[mseq].frame[mframe]].k->h; dst.x = mx; dst.y = my; gfx_blit_nocolorkey(GFX_k[seq[mseq].frame[mframe]].k, &src, GFX_lpDDSTwo, &dst); } } void draw_hor2(int percent, int mx, int my, int mseq, int mframe) { int cut; if (percent > 25) percent = 25; percent = (percent * 4); rect myrect; rect_copy(&myrect, &k[seq[mseq].frame[mframe]].box); int full = myrect.right; cut = (full * percent) / 100; myrect.right = cut; mx += (full - cut); /* again: */ /* ddrval = lpDDSTwo->BltFast( mx, my, k[seq[mseq].frame[mframe]].k, */ /* &myrect, DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again; */ // GFX { SDL_Rect src, dst; src.x = src.y = 0; src.w = GFX_k[seq[mseq].frame[mframe]].k->w * percent / 100; src.h = GFX_k[seq[mseq].frame[mframe]].k->h; dst.x = mx; dst.y = my; gfx_blit_nocolorkey(GFX_k[seq[mseq].frame[mframe]].k, &src, GFX_lpDDSTwo, &dst); } } void draw_mlevel(int percent) { //if (*pmagic_level < 1) return; int mseq = 180; int bary = 6; int barx = 7; if (percent > 0) draw_virtical(percent, 149, 411, mseq, bary); percent -= 25; if (percent > 0) draw_hor(percent, 149, 409, mseq, barx); percent -= 25; if (percent > 0) draw_virt2(percent, 215, 411, mseq, bary); percent -= 25; if (percent > 0) draw_hor2(percent, 149, 466, mseq, barx); } /* Draw the status bar and the magic jauge */ void draw_status_all(void) { /* RECT rcRect; */ /* rcRect.left = 0; */ /* rcRect.top = 0; */ /* rcRect.right = 640; */ /* rcRect.bottom = 80; */ /* again: */ /* ddrval = lpDDSTwo->BltFast(0, 400, k[seq[180].frame[3]].k, */ /* &rcRect, DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again; */ // GFX { SDL_Rect src = {0, 0, 640, 80}, dst = {0, 400}; gfx_blit_nocolorkey(GFX_k[seq[180].frame[3]].k, &src, GFX_lpDDSTwo, &dst); } /* rcRect.left = 0; */ /* rcRect.top = 0; */ /* rcRect.right = 20; */ /* rcRect.bottom = 400; */ /* again2: */ /* ddrval = lpDDSTwo->BltFast(0, 0, k[seq[180].frame[1]].k, */ /* &rcRect, DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again2; */ /* again3: */ /* ddrval = lpDDSTwo->BltFast(620, 0, k[seq[180].frame[2]].k, */ /* &rcRect, DDBLTFAST_NOCOLORKEY); */ /* if (ddrval == DDERR_WASSTILLDRAWING) goto again3; */ // GFX { SDL_Rect src = {0, 0, 20, 400}, dst1 = {0, 0}, dst2 = {620, 0}; gfx_blit_nocolorkey(GFX_k[seq[180].frame[1]].k, &src, GFX_lpDDSTwo, &dst1); gfx_blit_nocolorkey(GFX_k[seq[180].frame[2]].k, &src, GFX_lpDDSTwo, &dst2); } fraise = next_raise(); if (*pexper < fraise) fexp = *pexper; else fexp = fraise - 1; fstrength = *pstrength; fmagic = *pmagic; fgold = *pgold; fdefense = *pdefense; last_magic_draw = 0; draw_exp(); draw_health(); draw_strength(); draw_defense(); draw_magic(); draw_gold(); draw_level(); draw_icons(); if (*pmagic_cost > 0 && *pmagic_level > 0) draw_mlevel(*pmagic_level * 100 / *pmagic_cost); } /*bool*/int inside_box(int x1, int y1, rect box) { if (x1 > box.right) return(/*false*/0); if (x1 < box.left) return(/*false*/0); if (y1 > box.bottom) return(/*false*/0); if (y1 < box.top) return(/*false*/0); return(/*true*/1); } int add_sprite_dumb(int x1, int y, int brain,int pseq, int pframe,int size ) { int x; for (x = 1; x < MAX_SPRITES_AT_ONCE; x++) { if (spr[x].active == /*FALSE*/0) { memset(&spr[x], 0, sizeof(spr[x])); //Msg("Making sprite %d.",x); spr[x].active = /*TRUE*/1; spr[x].x = x1; spr[x].y = y; spr[x].my = 0; spr[x].mx = 0; spr[x].speed = 0; spr[x].brain = brain; spr[x].frame = 0; spr[x].pseq = pseq; spr[x].pframe = pframe; spr[x].size = size; spr[x].seq = 0; if (x > last_sprite_created) last_sprite_created = x; spr[x].timer = 0; spr[x].wait = 0; spr[x].lpx[0] = 0; spr[x].lpy[0] = 0; spr[x].moveman = 0; spr[x].seq_orig = 0; spr[x].base_hit = -1; spr[x].base_walk = -1; spr[x].base_die = -1; spr[x].base_idle = -1; spr[x].base_attack = -1; spr[x].last_sound = 0; spr[x].hard = 1; rect_set(&spr[x].alt, 0,0,0,0); spr[x].althard = 0; spr[x].sp_index = 0; spr[x].nocontrol = 0; spr[x].idle = 0; spr[x].strength = 0; spr[x].damage = 0; spr[x].defense = 0; if (dversion >= 108) { if (spr[x].custom == NULL) { spr[x].custom = dinkc_sp_custom_new(); } else { dinkc_sp_custom_clear(spr[x].custom); } } return(x); } } return(0); } /*bool*/int get_box (int h, rect * box_scaled, rect * box_real) { int x_offset, y_offset; int mplayx = playx; int mplayl = playl; int mplayy = playy; if (spr[h].noclip) { mplayx = 640; mplayl = 0; mplayy = 480; } // added to fix frame-not-in-memory immediately if (getpic(h) < 1) { if (spr[h].pseq != 0) check_seq_status(spr[h].pseq); } // if frame is still not in memory: if (getpic(h) < 1) { if (dinkedit) log_warn("Yo, sprite %d has a bad pic. (Map %d) Seq %d, Frame %d", h, cur_map, spr[h].pseq, spr[h].pframe); else log_warn("Yo, sprite %d has a bad pic. (Map %d) Seq %d, Frame %d", h, *pmap, spr[h].pseq, spr[h].pframe); goto nodraw; } *box_real = k[getpic(h)].box; /* This doesn't really make sense, but that's the way the game was released, so we keep it for compatibility */ { rect krect; rect_copy(&krect, &k[getpic(h)].box); double size_ratio = spr[h].size / 100.0; int x_compat = krect.right * (size_ratio - 1) / 2; int y_compat = krect.bottom * (size_ratio - 1) / 2; int center_x = k[getpic(h)].xoffset; int center_y = k[getpic(h)].yoffset; box_scaled->left = spr[h].x - center_x - x_compat; box_scaled->top = spr[h].y - center_y - y_compat; box_scaled->right = box_scaled->left + krect.right * size_ratio; box_scaled->bottom = box_scaled->top + krect.bottom * size_ratio; } if (spr[h].alt.right != 0 || spr[h].alt.left != 0 || spr[h].alt.top != 0) { // checks for correct box stuff if (spr[h].alt.left < 0) spr[h].alt.left = 0; if (spr[h].alt.left > k[getpic(h)].box.right) spr[h].alt.left = k[getpic(h)].box.right; if (spr[h].alt.top < 0) spr[h].alt.top = 0; if (spr[h].alt.top > k[getpic(h)].box.bottom) spr[h].alt.top = k[getpic(h)].box.bottom; if (spr[h].alt.right < 0) spr[h].alt.right = 0; if (spr[h].alt.right > k[getpic(h)].box.right) spr[h].alt.right = k[getpic(h)].box.right; if (spr[h].alt.bottom < 0) spr[h].alt.bottom = 0; if (spr[h].alt.bottom > k[getpic(h)].box.bottom) spr[h].alt.bottom = k[getpic(h)].box.bottom; box_scaled->left += spr[h].alt.left; box_scaled->top += spr[h].alt.top; box_scaled->right = box_scaled->right - (k[getpic(h)].box.right - spr[h].alt.right); box_scaled->bottom = box_scaled->bottom - (k[getpic(h)].box.bottom - spr[h].alt.bottom); rect_copy(box_real, &spr[h].alt); } //********* Check to see if they need to be cut down and do clipping if (spr[h].size == 0) spr[h].size = 100; if (dinkedit && (mode == 1 || mode == 5) && draw_map_tiny < 1) goto do_draw; if (box_scaled->left < mplayl) { x_offset = box_scaled->left * (-1) + mplayl; box_scaled->left = mplayl; if (spr[h].size == 100) box_real->left += x_offset; else box_real->left += (x_offset * 100) / spr[h].size; if (box_scaled->right - 1 < mplayl) goto nodraw; } if (box_scaled->top < 0) { y_offset = box_scaled->top * (-1); box_scaled->top = 0; if (spr[h].size == 100) box_real->top += y_offset; else box_real->top += (y_offset * 100) / spr[h].size; if (box_scaled->bottom-1 < 0) goto nodraw; } if (box_scaled->right > mplayx) { x_offset = (box_scaled->right) - mplayx; box_scaled->right = mplayx; if (spr[h].size == 100) box_real->right -= x_offset; else box_real->right -= (x_offset * 100) / spr[h].size; if (box_scaled->left+1 > mplayx) goto nodraw; } if (box_scaled->bottom > mplayy) { y_offset = (box_scaled->bottom) - mplayy; box_scaled->bottom = mplayy; if (spr[h].size == 100) box_real->bottom -= y_offset; else box_real->bottom -= (y_offset * 100) / spr[h].size; if (box_scaled->top+1 > mplayy) goto nodraw; } do_draw: return(/*true*/1); nodraw: return(/*false*/0); } /* void reload_sprites(char name[100], int nummy, int junk) */ /* { */ /* HRESULT ddrval; */ /* PALETTEENTRY holdpal[256]; */ /* char crap[100],hold[10]; */ /* int n; */ /* n = 0; */ /* lpDDPal->GetEntries(0,0,256,holdpal); */ /* lpDDPal->SetEntries(0,0,256,real_pal); */ /* for (int oo = index[nummy].s+1; oo <= index[nummy].s + index[nummy].last; oo++) */ /* { */ /* n++; */ // Msg( "%s", crap); // initFail(hWndMain, crap); /* ddrval = k[oo].k->Restore(); */ /* if( ddrval == DD_OK ) */ /* { */ /* if (n < 10) strcpy(hold, "0"); else strcpy(hold,""); */ /* sprintf(crap, "%s%s%d.BMP",name,hold,n); */ /* DDReLoadBitmap(k[oo].k, crap); */ //Msg("Sprite %s%d.bmp reloaded into area %d. ",name,n,oo); /* } */ /* } */ /* lpDDPal->SetEntries(0,0,256,holdpal); */ /* } */ int add_sprite(int x1, int y, int brain,int pseq, int pframe ) { int x; for (x = 1; x < MAX_SPRITES_AT_ONCE; x++) { if (spr[x].active == /*FALSE*/0) { memset(&spr[x], 0, sizeof(spr[x])); spr[x].active = /*TRUE*/1; spr[x].x = x1; spr[x].y = y; spr[x].my = 0; spr[x].mx = 0; spr[x].speed = 1; spr[x].brain = brain; spr[x].frame = 0; spr[x].pseq = pseq; spr[x].pframe = pframe; spr[x].seq = 0; if (x > last_sprite_created) last_sprite_created = x; spr[x].timer = 33; spr[x].wait = 0; spr[x].lpx[0] = 0; spr[x].lpy[0] = 0; spr[x].moveman = 0; spr[x].size = 100; spr[x].que = 0; spr[x].strength = 0; spr[x].damage = 0; spr[x].defense = 0; spr[x].hard = 1; if (dversion >= 108) { if (spr[x].custom == NULL) { spr[x].custom = dinkc_sp_custom_new(); } else { dinkc_sp_custom_clear(spr[x].custom); } } return(x); } } return(0); } /* Editor only */ void check_sprite_status(int h) { /* HRESULT dderror; */ /* char word1[80]; */ //is sprite in memory? if (spr[h].pseq > 0) { // Msg("Smartload: Loading seq %d..", spr[h].seq); if (seq[spr[h].pseq].frame[1] == 0) { if (seq[spr[h].pseq].is_active) figure_out(seq[spr[h].pseq].ini); else log_error("Error: sprite %d on map %d references non-existent sequence %d", h, cur_map, spr[h].pseq); } else { //it's been loaded before.. is it lost or still there? //Msg("Sprite %d's seq is %d",h,spr[h].seq); /* dderror = k[seq[spr[h].pseq].frame[1]].k->IsLost(); */ /* if (dderror == DDERR_SURFACELOST) */ /* { */ /* get_word(seq[spr[h].pseq].data, 2, word1); */ /* reload_sprites(word1, spr[h].pseq,0); */ /* //Msg("Reloaded seq %d with path of %s should be %s", spr[h].seq, word1,seq[spr[h].seq].data ); */ /* } */ } } } /* Editor only */ void check_frame_status(int h, int frame) { /* HRESULT dderror; */ /* char word1[80]; */ if (!seq[h].is_active) return; if (h > 0) { // Msg("Smartload: Loading seq %d..", spr[h].seq); if (seq[h].frame[1] == 0 || GFX_k[seq[h].frame[1]].k == NULL) { figure_out(seq[h].ini); } else { //it's been loaded before.. is it lost or still there? //Msg("Sprite %d's seq is %d",h,spr[h].seq); /* dderror = k[seq[h].frame[1]].k->IsLost(); */ /* if (dderror == DDERR_SURFACELOST) */ /* { */ /* get_word(seq[h].data, 2, word1); */ /* reload_sprites(word1, h,0); */ /* //Msg("Reloaded seq %d with path of %s should be %s", spr[h].seq, word1,seq[spr[h].seq].data ); */ /* } */ } } } /** * Load sequence in memory if not already, using cached dink.ini info */ void check_seq_status(int seq_no) { if (seq_no > 0 && seq_no < MAX_SEQUENCES) { /* Skip empty/unused sequences */ if (!seq[seq_no].is_active) return; if (seq[seq_no].frame[1] == 0 || GFX_k[seq[seq_no].frame[1]].k == NULL) figure_out(seq[seq_no].ini); } else if (seq_no > 0) { log_error("Warning: check_seq_status: invalid sequence %d", seq_no); } } /** * Load all +1->+9 sequences from base sequence 'base' in memory, * useful to load all of a moving sprite sequences */ void check_base(int base) { int i; for (i = 1; i < 10; i++) if (seq[base+i].is_active) check_seq_status(base+i); } /** * Checks for all seq's used by the (base) commands */ void check_sprite_status_full(int sprite_no) { //is sprite in memory? check_seq_status(spr[sprite_no].pseq); if (spr[sprite_no].base_walk > -1) check_base(spr[sprite_no].base_walk); } /* say_text, say_text_xy: used by the game only (not the editor) */ int add_text_sprite(char* text, int script, int sprite_owner, int mx, int my) { int tsprite = add_sprite(mx, my, 8, 0, 0); if (tsprite == 0) { log_error("Couldn't say something, out of sprites."); return 0; } strncpy(spr[tsprite].text, text, 200-1); // TODO: currently truncated to 199 chars spr[tsprite].text[200-1] = '\0'; *plast_text = tsprite; spr[tsprite].kill = strlen(text) * TEXT_TIMER; if (spr[tsprite].kill < TEXT_MIN) spr[tsprite].kill = TEXT_MIN; spr[tsprite].damage = -1; spr[tsprite].owner = sprite_owner; spr[tsprite].hard = 1; spr[tsprite].script = script; spr[tsprite].nohit = 1; return tsprite; } int say_text(char* text, int sprite_owner, int script) { int tsprite; if (sprite_owner == 1000) tsprite = add_text_sprite(text, script, 1000, 100, 100); else tsprite = add_text_sprite(text, script, sprite_owner, spr[sprite_owner].x, spr[sprite_owner].y); if (tsprite == 0) return 0; //set X offset for text, using strength var since it's unused spr[tsprite].strength = 75; check_seq_status(spr[spr[tsprite].owner].seq); spr[tsprite].defense = ( ( k[getpic(spr[tsprite].owner)].box.bottom - k[getpic(spr[tsprite].owner)].yoffset ) + 100 ); spr[tsprite].x = spr[spr[tsprite].owner].x - spr[tsprite].strength; spr[tsprite].y = spr[spr[tsprite].owner].y - spr[tsprite].defense; return tsprite; } int say_text_xy(char* text, int mx, int my, int script) { int sprite_owner = 1000; return add_text_sprite(text, script, sprite_owner, mx, my); } int does_sprite_have_text(int sprite) { int k; //Msg("getting callback # with %d..", sprite); for (k = 1; k <= MAX_SPRITES_AT_ONCE; k++) { if ( spr[k].active) if (spr[k].owner == sprite) if (spr[k].brain == 8) { //Msg("Found it! returning %d.", k); return(k); } } return(0); } void kill_text_owned_by(int sprite) { int i; for (i = 1; i < MAX_SPRITES_AT_ONCE; i++) { if (spr[i].active && spr[i].brain == 8 && spr[i].owner == sprite) spr[i].active = /*false*/0; } } /** * Is 'sprite' currently talking? * Returns 1 if a text sprite is owned by sprite number 'sprite'. */ /*bool*/int text_owned_by(int sprite) { int i = 1; for (; i < MAX_SPRITES_AT_ONCE; i++) if (spr[i].active && spr[i].brain == 8 && spr[i].owner == sprite) return /*true*/1; return /*false*/0; } void kill_sprite_all (int sprite) { spr[sprite].active = /*false*/0; kill_text_owned_by(sprite); kill_scripts_owned_by(sprite); } /** * Find an editor sprite in active sprites */ int find_sprite(int editor_sprite) { int k; for (k = 1; k <= last_sprite_created; k++) if (spr[k].sp_index == editor_sprite) return k; return 0; } void get_right(char line[200], char thing[100], char *ret) { char *dumb; int pos = strcspn(line, thing ); if (pos == 0){ strcpy(ret, ""); return; } dumb = &ret[pos+1]; strcpy(ret, dumb); } int change_sprite(int h, int val, int *change) { //Msg("Searching sprite %s with val %d. Cur is %d", h, val, *change); if (h < 1 || h >= MAX_SPRITES_AT_ONCE) { log_error("Error with an SP command - Sprite %d is invalid.", h); return -1; } if (spr[h].active == 0) return -1; if (val != -1) *change = val; return *change; } int change_edit(int h, int val, unsigned short* change) { //Msg("Searching sprite %s with val %d. Cur is %d", h, val, *change); if (h < 1 || h > 99) return -1; if (val != -1) *change = val; return *change; } /** * Sanity-check and set an editor variable (editor_type(), * editor_seq() and editor_frame()) */ int change_edit_char(int h, int val, unsigned char* change) { //Msg("Searching sprite %s with val %d. Cur is %d", h, val, *change); // Msg("h is %d..",val); if (h < 1 || h > 99) return -1; if (val != -1) *change = val; return *change; } int change_sprite_noreturn(int h, int val, int* change) { //Msg("Searching sprite %s with val %d. Cur is %d", h, val, *change); if (h < 0 || h >= MAX_SPRITES_AT_ONCE || spr[h].active == 0) return -1; *change = val; return(*change); } void draw_sprite_game(SDL_Surface *GFX_lpdest, int h) { if (g_b_kill_app) return; //don't try, we're quitting if (spr[h].brain == 8) return; // text if (spr[h].nodraw == 1) return; // invisible rect box_crap,box_real; if (get_box(h, &box_crap, &box_real)) { /* Generic scaling */ /* Not perfectly accurate yet: move a 200% sprite to the border of the screen to it is clipped: it's scaled size will slighly vary. Maybe we need to clip the source zone before scaling it.. */ // error checking for invalid rectangle if (box_crap.left >= box_crap.right || box_crap.top >= box_crap.bottom) return; SDL_Rect src, dst; int retval = 0; src.x = box_real.left; src.y = box_real.top; src.w = box_real.right - box_real.left; src.h = box_real.bottom - box_real.top; dst.x = box_crap.left; dst.y = box_crap.top; dst.w = box_crap.right - box_crap.left; dst.h = box_crap.bottom - box_crap.top; retval = gfx_blit_stretch(GFX_k[getpic(h)].k, &src, GFX_lpdest, &dst); if (retval < 0) { log_error("Could not draw sprite %d: %s", getpic(h), SDL_GetError()); /* If we failed, then maybe the sprite was actually loaded yet, let's try now */ if (spr[h].pseq != 0) check_seq_status(spr[h].pseq); } } } void changedir( int dir1, int k,int base) { int hspeed; int speed_hold = spr[k].speed; if (k > 1) if (spr[k].brain != 9) if (spr[k].brain != 10) { hspeed = spr[k].speed * (base_timing / 4); if (hspeed > 49) { log_debug("Speed was %d", hspeed); spr[k].speed = 49; } else spr[k].speed = hspeed; } int old_seq = spr[k].seq; spr[k].dir = dir1; if (dir1 == 1) { spr[k].mx = (0 - spr[k].speed ) + (spr[k].speed / 3); spr[k].my = spr[k].speed - (spr[k].speed / 3); if (base != -1) { spr[k].seq = base + 1; if (!seq[spr[k].seq].is_active) { spr[k].seq = base + 9; } } if (old_seq != spr[k].seq) { spr[k].frame = 0; spr[k].delay = 0; } } if (dir1 == 2) { spr[k].mx = 0; spr[k].my = spr[k].speed; if (base != -1) spr[k].seq = base + 2; if (!seq[spr[k].seq].is_active && seq[base+3].is_active) spr[k].seq = base + 3; if (!seq[spr[k].seq].is_active && seq[base+1].is_active) spr[k].seq = base + 1; if (old_seq != spr[k].seq) { spr[k].frame = 0; spr[k].delay = 0; } } if (dir1 == 3) { spr[k].mx = spr[k].speed - (spr[k].speed / 3); spr[k].my = spr[k].speed - (spr[k].speed / 3); if (base != -1) { spr[k].seq = base + 3; if (!seq[spr[k].seq].is_active) spr[k].seq = base + 7; } if (old_seq != spr[k].seq) { spr[k].frame = 0; spr[k].delay = 0; } } if (dir1 == 4) { //Msg("Changing %d to four..",k); spr[k].mx = (0 - spr[k].speed); spr[k].my = 0; if (base != -1) spr[k].seq = base + 4; if (!seq[spr[k].seq].is_active && seq[base+7].is_active) spr[k].seq = base + 7; if (!seq[spr[k].seq].is_active && seq[base+1].is_active) spr[k].seq = base + 1; } if (dir1 == 6) { spr[k].mx = spr[k].speed; spr[k].my = 0; if (base != -1) spr[k].seq = base + 6; if (!seq[spr[k].seq].is_active && seq[base+3].is_active) spr[k].seq = base + 3; if (!seq[spr[k].seq].is_active && seq[base+9].is_active) spr[k].seq = base + 9; } if (dir1 == 7) { spr[k].mx = (0 - spr[k].speed) + (spr[k].speed / 3); spr[k].my = (0 - spr[k].speed)+ (spr[k].speed / 3); if (base != -1) { spr[k].seq = base + 7; if (!seq[spr[k].seq].is_active) spr[k].seq = base + 3; } } if (dir1 == 8) { spr[k].mx = 0; spr[k].my = (0 - spr[k].speed); if (base != -1) spr[k].seq = base + 8; if (!seq[spr[k].seq].is_active && seq[base+7].is_active) spr[k].seq = base + 7; if (!seq[spr[k].seq].is_active && seq[base+9].is_active) spr[k].seq = base + 9; } if (dir1 == 9) { spr[k].mx = spr[k].speed- (spr[k].speed / 3); spr[k].my = (0 - spr[k].speed)+ (spr[k].speed / 3); if (base != -1) { spr[k].seq = base + 9; if (!seq[spr[k].seq].is_active) spr[k].seq = base + 1; } } if (old_seq != spr[k].seq) { spr[k].frame = 0; spr[k].delay = 0; } if (!seq[spr[k].seq].is_active) { //spr[k].mx = 0; //spr[k].my = 0; spr[k].seq = old_seq; } //Msg("Leaving with %d..", spr[k].dir); //Msg("Changedir: Tried to switch sprite %d to dir %d",k,dir1); spr[k].speed = speed_hold; } void update_play_changes( void ) { int j; for (j = 1; j < 100; j++) { if (pam.sprite[j].active) if (play.spmap[*pmap].type[j] != 0) { //lets make some changes, player has extra info if (play.spmap[*pmap].type[j] == 1) { pam.sprite[j].active = 0; } if (play.spmap[*pmap].type[j] == 2) { pam.sprite[j].type = 1; pam.sprite[j].hard = 1; } if (play.spmap[*pmap].type[j] == 3) { // Msg("Changing sprite %d", j); pam.sprite[j].type = 0; pam.sprite[j].hard = 1; } if (play.spmap[*pmap].type[j] == 4) { pam.sprite[j].type = 1; pam.sprite[j].hard = 0; } if (play.spmap[*pmap].type[j] == 5) { pam.sprite[j].type = 0; pam.sprite[j].hard = 0; } if (play.spmap[*pmap].type[j] == 6) { pam.sprite[j].active = 0; } if (play.spmap[*pmap].type[j] == 7) { pam.sprite[j].active = 0; } if (play.spmap[*pmap].type[j] == 8) { pam.sprite[j].active = 0; } pam.sprite[j].seq = play.spmap[*pmap].seq[j]; pam.sprite[j].frame = play.spmap[*pmap].frame[j]; strcpy(pam.sprite[j].script, ""); } } } void update_status_all(void) { /*bool*/int drawexp = /*false*/0; int next = next_raise(); int script; if (next != fraise) { fraise += next / 40; if (fraise > next) fraise = next; //make noise here drawexp = /*true*/1; SoundPlayEffect( 13,15050, 0,0 ,0); } if (*pexper != fexp && ((talk.active == 0 && show_inventory == 0 && spr[1].freeze == 0) || fexp + 10 < fraise)) { //update screen experience fexp += 10; //make noise here if (fexp > *pexper) fexp = *pexper; drawexp = /*true*/1; SoundPlayEffect( 13,29050, 0,0 ,0); if (fexp >= fraise) { *pexper -= next; fexp = 0; script = load_script("lraise", 1, /*false*/0); if (locate(script, "raise")) run_script(script); } } if (drawexp) { draw_exp(); } if ( (flifemax != *plifemax) || (flife != *plife) ) { if (flifemax < *plifemax) flifemax++; if (flifemax > *plifemax) flifemax--; if (flife > *plife) flife--; if (flife < *plife) flife++; if (flife > *plife) flife--; if (flife < *plife) flife++; draw_bar(flifemax, 190); draw_bar(flife, 451); } if ( fstrength != *pstrength) { if (fstrength < *pstrength) fstrength++; if (fstrength > *pstrength) fstrength--; SoundPlayEffect( 22,22050, 0,0 ,0); draw_strength(); } if ( fdefense != *pdefense) { if (fdefense < *pdefense) fdefense++; if (fdefense > *pdefense) fdefense--; SoundPlayEffect( 22,22050, 0,0 ,0); draw_defense(); } if ( fmagic != *pmagic) { if (fmagic < *pmagic) fmagic++; if (fmagic > *pmagic) fmagic--; SoundPlayEffect( 22,22050, 0,0 ,0); draw_magic(); } if (fgold != *pgold) { if (fgold < *pgold) { fgold += 20; if (fgold > *pgold) fgold = *pgold; } if (fgold > *pgold) { fgold -= 20; if (fgold < *pgold) fgold = *pgold; } SoundPlayEffect( 14,22050, 0,0 ,0); draw_gold(); } if (*pmagic_level < *pmagic_cost) { if (show_inventory == 0) *pmagic_level += *pmagic; if (*pmagic_level > *pmagic_cost) *pmagic_level = *pmagic_cost; } if (*pmagic_cost > 0) if (*pmagic_level > 0) { int mnum = *pmagic_level * 100 / *pmagic_cost; if (mnum != last_magic_draw) { draw_mlevel(mnum); //draw_status_all(); last_magic_draw = mnum; } } spr[1].strength = fstrength; spr[1].defense = fdefense; if (flife < 1) { script = load_script("dinfo", 1000, /*false*/0); if (locate(script, "die")) run_script(script); } } /*bool*/int kill_last_sprite(void) { int found = 0; /*bool*/int nosetlast = /*false*/0; int k; for (k=1; k < MAX_SPRITES_AT_ONCE; k++ ) { if (spr[k].active) { if (spr[k].live) { nosetlast = /*true*/1; } else { found = k; } } } if (found > 1) { spr[found].active = /*FALSE*/0; if (nosetlast == /*false*/0) last_sprite_created = found - 1; return(/*true*/1); } //we didn't kill any sprites, only 1 remains return(/*false*/0); } void show_bmp(char* name, int showdot, int script) { char* fullpath = paths_dmodfile(name); SDL_Surface* image = IMG_Load(fullpath); if (image == NULL) { log_error("Couldn't load '%s': %s", name, SDL_GetError()); return; } /* Set physical screen palette */ if (!truecolor) { gfx_palette_set_from_surface(image); SDL_Color phys_pal[256]; gfx_palette_get_phys(phys_pal); /* In case the DX bug messed the palette, let's convert the image to the new palette. This also converts 24->8bit if necessary. */ { SDL_Surface* converted = SDL_DisplayFormat(image); SDL_SetPalette(converted, SDL_LOGPAL, phys_pal, 0, 256); SDL_BlitSurface(image, NULL, converted, NULL); SDL_FreeSurface(image); image = converted; } /* Next blit without palette conversion */ SDL_SetPalette(image, SDL_LOGPAL, GFX_real_pal, 0, 256); } showb.active = /*true*/1; showb.showdot = showdot; showb.script = script; SDL_BlitSurface(image, NULL, GFX_lpDDSTrick, NULL); SDL_FreeSurface(image); // After show_bmp(), and before the flip_it() call in updateFrame(), // other parts of the code will draw sprites on lpDDSBack and mess // the showbmp(). So skip the next flip_it(). abort_this_flip = /*true*/1; } /* Used to implement DinkC's copy_bmp_to_screen(). Difference with show_cmp: does not set showb.* (wait for button), install the image to lpDDSTwo (background) and not lpDDSBack (screen double buffer) */ void copy_bmp(char* name) { char* fullpath = paths_dmodfile(name); SDL_Surface* image = IMG_Load(fullpath); if (image == NULL) { log_error("Couldn't load '%s': %s", name, SDL_GetError()); return; } /* Set physical screen palette */ if (!truecolor) { gfx_palette_set_from_surface(image); SDL_Color phys_pal[256]; gfx_palette_get_phys(phys_pal); /* In case the DX bug messed the palette, let's convert the image to the new palette. This also converts 24->8bit if necessary. */ { SDL_Surface* converted = SDL_DisplayFormat(image); SDL_SetPalette(converted, SDL_LOGPAL, phys_pal, 0, 256); SDL_BlitSurface(image, NULL, converted, NULL); SDL_FreeSurface(image); image = converted; } /* Next blit without palette conversion */ SDL_SetPalette(image, SDL_LOGPAL, GFX_real_pal, 0, 256); } SDL_BlitSurface(image, NULL, GFX_lpDDSTwo, NULL); SDL_FreeSurface(image); abort_this_flip = /*true*/1; } int hurt_thing(int h, int damage, int special) { //lets hurt this sprite but good if (damage < 1) return(0); int num = damage - spr[h].defense; // Msg("num is %d.. defense was %d.of sprite %d", num, spr[h].defense, h); if (num < 1) num = 0; if (num == 0) { if ((rand() % 2)+1 == 1) num = 1; } spr[h].damage += num; return(num); //draw blood here } void random_blood(int mx, int my, int sprite) { int myseq; /* v1.08 introduces custom blood sequence, as well as a slightly different default (select blood in range 187-189 included, instead of 187-188 included) */ int randy; if (spr[sprite].bloodseq > 0 && spr[sprite].bloodnum > 0) { myseq = spr[sprite].bloodseq; randy = spr[sprite].bloodnum; } else { myseq = 187; if (dversion >= 108) randy = 3; else randy = 2; } myseq += (rand () % randy); int crap2 = add_sprite(mx,my,5,myseq,1); /* TODO: add_sprite might return 0, and the following would trash spr[0] - cf. bugs.debian.org/688934 */ spr[crap2].speed = 0; spr[crap2].base_walk = -1; spr[crap2].nohit = 1; spr[crap2].seq = myseq; if (sprite > 0) spr[crap2].que = spr[sprite].y+1; } void add_item(char* name, int mseq, int mframe, enum item_type type) { if (type == ITEM_REGULAR) { //add reg item int i; for (i = 0; i < NB_ITEMS; i++) { if (play.item[i].active == 0) { log_info("Weapon/item %s added to inventory.", name); play.item[i].seq = mseq; play.item[i].frame = mframe; strncpy(play.item[i].name, name, sizeof(play.item[i].name)); play.item[i].name[sizeof(play.item[i].name)-1] = '\0'; play.item[i].active = 1; int crap1 = load_script(play.item[i].name, 1000, /*false*/0); if (locate(crap1, "PICKUP")) run_script(crap1); break; } } } else { //add magic item int i; for (i = 0; i < NB_MITEMS; i++) { if (play.mitem[i].active == 0) { log_info("Magic %s added to inventory.", name); play.mitem[i].seq = mseq; play.mitem[i].frame = mframe; strncpy(play.mitem[i].name, name, sizeof(play.mitem[i].name)); play.mitem[i].name[sizeof(play.mitem[i].name)-1] = '\0'; play.mitem[i].active = 1; int crap = load_script(play.mitem[i].name, 1000, /*false*/0); if (locate(crap, "PICKUP")) run_script(crap); break; } } } } void fill_screen(int num) { /* Warning: palette indexes 0 and 255 are hard-coded to black and white (cf. gfx_palette.c). */ if (!truecolor) SDL_FillRect(GFX_lpDDSTwo, NULL, num); else SDL_FillRect(GFX_lpDDSTwo, NULL, SDL_MapRGB(GFX_lpDDSTwo->format, GFX_real_pal[num].r, GFX_real_pal[num].g, GFX_real_pal[num].b)); } freedink-108.4+dfsg/src/game_engine.c0000644000175000017500000001272412420231175015214 0ustar meme/** * Header for code common to FreeDink and FreeDinkedit * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include /* srand */ #include /* time */ #include /* memset */ #include "game_engine.h" #include "screen.h" /* hm */ #include "dinkvar.h" /* hmap, pam */ #include "input.h" struct sp spr[MAX_SPRITES_AT_ONCE]; //max sprite control systems at once int last_sprite_created; /* Engine variables directly mapped with DinkC variables */ int *pvision, *plife, *presult, *pspeed, *ptiming, *plifemax, *pexper, *pmap, *pstrength, *pcur_weapon,*pcur_magic, *pdefense, *pgold, *pmagic, *plevel, *plast_text, *pmagic_level; int *pupdate_status, *pmissile_target, *penemy_sprite, *pmagic_cost, *pmissle_source; int flife, fexp, fstrength, fdefense, fgold, fmagic, fmagic_level, flifemax, fraise, last_magic_draw; int fcur_weapon, fcur_magic; /* Sound - BGM */ int sound_on = 1; int cd_inserted; int midi_active = 1; struct map_info map; //JOYINFOEX jinfo; //joystick info SDL_Joystick* jinfo; int joystick = /*true*/1; struct wait_for_button wait4b; int dversion = 108; char* dversion_string; int last_saved_game = 0; char save_game_info[200] = "Level &level"; char current_map[50] = "map.dat"; char current_dat[50] = "dink.dat"; time_t time_start; int smooth_follow = 0; /** Fadedown / fadeup **/ /* Tell the engine that we're warping */ /* (quick fadedown + black + fadeup) */ int process_warp = 0; /* Tell the engine that we're fading down */ /* or fading up */ int process_downcycle = 0; int process_upcycle = 0; /* When the fadedown must finish: */ unsigned long cycle_clock = 0; /* What script to resume after fade: */ int cycle_script = 0; /* Base for Dink's push sequences */ unsigned int dink_base_push = 310; /* hardness */ struct hit_map hm; static int high_speed = 0; void game_init() { /* Clean the game state structure - done by C++ but not automatically done by C, and this causes errors. TODO: fix the errors properly instead of using this dirty trick. */ memset(&play, 0, sizeof(play)); /* Precaution */ memset(&hmap, 0, sizeof(hmap)); memset(&pam, 0, sizeof(pam)); memset(&spr, 0, sizeof(spr)); memset(&hm, 0, sizeof(hm)); if (dversion >= 108) dversion_string = "v1.08 FreeDink"; else dversion_string = "v1.07 FreeDink"; srand((unsigned)time(NULL)); } void game_quit() { int i = 0; for (i = 1; i < MAX_SPRITES_AT_ONCE; i++) { if (spr[i].custom != NULL) dinkc_sp_custom_free(spr[i].custom); spr[i].custom = NULL; } } /** * Fake SDL_GetTicks if the player is in high-speed mode. Make sure * you call it once per frame. */ Uint32 game_GetTicks() { static Uint32 last_sdl_ticks = 0; static Uint32 high_ticks = 0; Uint32 cur_sdl_ticks = SDL_GetTicks(); /* Work-around incorrect initial value */ if (last_sdl_ticks == 0) last_sdl_ticks = cur_sdl_ticks - 1; /* If high speed, then count every tick as triple (so add 2x) */ if (high_speed) { high_ticks += 2 * (cur_sdl_ticks - last_sdl_ticks); } last_sdl_ticks = cur_sdl_ticks; return cur_sdl_ticks + high_ticks; } void game_set_high_speed() { if (high_speed == 0) { SDL_setFramerate(&framerate_manager, 3*FPS); high_speed = 1; } } void game_set_normal_speed() { if (high_speed == 1) { SDL_setFramerate(&framerate_manager, FPS); high_speed = 0; } } /* Sound - SFX */ int get_pan(int h) { int pan = 0; int x1 = 320; //uncomment to allow math to be done from Dink's current location //x1 = spr[1].x; if (spr[h].active) { if (spr[h].x > x1) pan += (spr[h].x - x1) * 6; if (x1 > spr[h].x) pan -= (x1 - spr[h].x) * 6; } if (pan > 10000) pan = 10000; if (pan < -10000) pan = -10000; return(pan); } int get_vol(int h) { int pan = 0; int pan2 = 0; if (spr[h].active) { if (spr[h].x > spr[1].x) pan -= (spr[h].x - spr[1].x) * 4; if (spr[1].x > spr[h].x) pan -= (spr[1].x - spr[h].x) * 4; if (spr[h].y > spr[1].y) pan2 -= (spr[h].y - spr[1].y) * 4; if (spr[1].y > spr[h].y) pan2 -= (spr[1].y - spr[h].y) * 4; //Msg("pan %d, pan2 %d", pan, pan2); if (pan2 < pan) pan = pan2; } if (pan > -100) pan = 0; if (pan < -10000) pan = -10000; return(pan); } freedink-108.4+dfsg/src/init.c0000644000175000017500000003072112420231175013716 0ustar meme/** * System initialization, common to FreeDink and FreeDinkEdit * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include /* chdir */ #include #include #include "gettext.h" #define _(String) gettext (String) #include "SDL.h" #include "SDL_image.h" #include "SDL_ttf.h" #include "SDL_framerate.h" #include "binreloc.h" #include "progname.h" #include "game_engine.h" #include "dinkini.h" #include "dinkvar.h" #include "gfx.h" #include "gfx_fonts.h" #include "gfx_palette.h" #include "gfx_sprites.h" #include "gfx_tiles.h" #include "fastfile.h" #include "sfx.h" #include "bgm.h" #include "input.h" #include "io_util.h" #include "paths.h" #include "log.h" #include "init.h" #include "msgbox.h" #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ #define WIN32_LEAN_AND_MEAN #include #endif #ifdef _PSP /* The following is necessary if you're running in PRX format, whose default heap size is only 64kB... */ #include PSP_HEAP_SIZE_MAX(); #endif static int g_b_no_write_ini = 0; // -noini passed to command line? static char* init_error_msg = NULL; void init_set_error_msg(char *fmt, ...) { va_list ap; va_start(ap, fmt); vasprintf(&init_error_msg, fmt, ap); va_end(ap); } /** * Prints the version on the standard ouput. Based on the homonymous * function from ratpoison */ void print_version () { printf("%s %s\n", PACKAGE_NAME, VERSION); printf("FreeDink is free software, and you are welcome to redistribute it\n"); printf("under certain conditions; see the GNU GPL for details.\n"); printf("http://gnu.org/licenses/gpl.html\n"); printf("There is NO WARRANTY, to the extent permitted by law.\n"); exit(EXIT_SUCCESS); } /** * Prints the version on the standard ouput. Based on the homonymous * function from ratpoison */ void print_help (int argc, char *argv[]) { printf(_("Usage: %s [OPTIONS]...\n"), argv[0]); if (!dinkedit) printf(_("Starts the Dink Smallwood game or one of its D-Mods.")); else printf(_("Edit the Dink Smallwood game or one of its D-Mods.")); printf("\n"); /* TODO: Display the default configuration here */ printf(_(" -h, --help Display this help screen\n")); printf(_(" -v, --version Display the version\n")); printf("\n"); printf(_(" -g, --game Specify a DMod directory\n")); printf(_(" -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n")); printf("\n"); printf(_(" -d, --debug Explain what is being done\n")); printf(_(" -i, --noini Do not attempt to write dinksmallwood.ini\n")); printf(_(" -j, --nojoy Do not attempt to use joystick\n")); printf(_(" -s, --nosound Do not play sound\n")); printf(_(" -t, --truecolor Allow more colours (for recent D-Mod graphics)\n")); printf(_(" -w, --window Use windowed mode instead of screen mode\n")); printf(_(" -7, --v1.07 Enable v1.07 compatibility mode\n")); printf("\n"); /* printf ("Type 'info freedink' for more information\n"); */ /* TRANSLATORS: The placeholder indicates the bug-reporting address for this package. Please add _another line_ saying "Report translation bugs to <...>\n" with the address for translation bugs (typically your translation team's web or email address). */ printf(_("Report bugs to %s.\n"), PACKAGE_BUGREPORT); exit(EXIT_SUCCESS); } /* * finiObjects * * finished with all objects we use; release them */ void finiObjects() { if (g_b_kill_app != 0) return; g_b_kill_app = 1; if (last_saved_game > 0) { log_info("Modifying saved game."); if (!add_time_to_saved_game(last_saved_game)) log_error("Error modifying saved game."); last_saved_game = 0; } log_path(/*playing=*/0); if (sound_on) { //lets kill the cdaudio too bgm_quit(); QuitSound(); } kill_all_scripts_for_real(); FastFileFini(); dinkc_quit(); dinkini_quit(); game_quit(); input_quit(); gfx_quit(); //SDL_QuitSubSystem(SDL_INIT_EVENTTHREAD); SDL_QuitSubSystem(SDL_INIT_TIMER); SDL_Quit(); if (init_error_msg != NULL) free(init_error_msg); paths_quit(); } /** * This function is called if the initialization function fails */ int initFail(char *message) { msgbox_init_error(message); return -1; /* used when "return initFail(...);" */ } /** * Check the command line arguments and initialize the required global * variables */ static int check_arg(int argc, char *argv[]) { int c; char *refdir_opt = NULL; char *dmoddir_opt = NULL; int debug_p = 0; /* Options '-debug', '-game', '-noini', '-nojoy', '-nosound' and '-window' (with one dash '-' only) are required to maintain backward compatibility with the original game */ struct option long_options[] = { {"debug", no_argument, NULL, 'd'}, {"refdir", required_argument, NULL, 'r'}, {"game", required_argument, NULL, 'g'}, {"help", no_argument, NULL, 'h'}, {"noini", no_argument, NULL, 'i'}, {"nojoy", no_argument, NULL, 'j'}, {"nosound", no_argument, NULL, 's'}, {"version", no_argument, NULL, 'v'}, {"window", no_argument, NULL, 'w'}, {"v1.07", no_argument, NULL, '7'}, {"truecolor", no_argument, NULL, 't'}, {"nomovie" , no_argument, NULL, ','}, {0, 0, 0, 0} }; char short_options[] = "dr:g:hijsvw7t"; /* Loop through each argument */ while ((c = getopt_long_only (argc, argv, short_options, long_options, NULL)) != EOF) { switch (c) { case 'd': debug_p = 1; /* Enable early debugging, before we can locate DEBUG.txt */ log_set_priority(LOG_PRIORITY_DEBUG); break; case 'r': refdir_opt = strdup(optarg); break; case 'g': dmoddir_opt = strdup(optarg); break; case 'h': print_help(argc, argv); break; case 'j': joystick = 0; break; case 'i': g_b_no_write_ini = 1; break; case 's': sound_on = 0; break; case 'v': print_version(); break; case 'w': windowed = 1; break; case '7': dversion = 107; break; case 't': truecolor = 1; break; case ',': printf(_("Note: -nomovie is accepted for compatiblity, but has no effect.\n")); break; default: exit(EXIT_FAILURE); } } if (optind < argc) { fprintf(stderr, "Invalid additional argument: "); while (optind < argc) fprintf(stderr, "%s ", argv[optind++]); printf(" (did you forget '--game'?)\n"); exit(EXIT_FAILURE); } paths_init(argv[0], refdir_opt, dmoddir_opt); free(refdir_opt); free(dmoddir_opt); if (debug_p == 1) { /* Remove DEBUG.TXT when starting Dink (but not when toggling debug) */ char* fullpath = paths_dmodfile("DEBUG.TXT"); remove(fullpath); free(fullpath); log_debug_on(); } log_info("Game directory is '%s'.", paths_getdmoddir()); return 1; } /** * What to do if running out of memory */ void xalloc_die (void) { fprintf(stderr, "Memory exhausted!"); finiObjects(); abort(); } /* The goal is to replace freedink and freedinkedit's doInit() by a common init procedure. This procedure will also initialize each subsystem as needed (eg InitSound) */ int init(int argc, char *argv[], char* splash_path) { /** i18n **/ /* Only using LC_MESSAGES because LC_CTYPE (part of LC_ALL) may bring locale-specific behavior in the DinkC parsers. If that's a problem we may use some gnulib modules (cf. (gettext.info.gz)Triggering) */ /* Ex. with scanf("%f"...): LANG=C 1.1 -> 1.100000 LANG=C 1,1 -> 1.000000 LANG=fr_FR.UTF-8 1.1 -> 1,000000 LANG=fr_FR.UTF-8 1,1 -> 1,100000 */ /* setlocale (LC_ALL, ""); */ setlocale(LC_MESSAGES, ""); bindtextdomain(PACKAGE, LOCALEDIR); bindtextdomain(PACKAGE "-gnulib", LOCALEDIR); textdomain(PACKAGE); /* SDL can display messages in either ASCII or UTF-8. Thus we need gettext to output translations in UTF-8. */ /* That's a problem for console messages in locales that are not UTF-8-encoded. If this is really a problem, we'll have to perform some character conversion directly. We can't create a separate message catalog for those, because several console messages are also displayed on the SDL screen and need a separate conversion anyway. */ bind_textdomain_codeset(PACKAGE, "UTF-8"); if (!check_arg(argc, argv)) return -1; /* Same for this D-Mod's .mo (after options are parsed) */ char* dmod_localedir = paths_dmodfile("l10n"); bindtextdomain(paths_getdmodname(), dmod_localedir); bind_textdomain_codeset(paths_getdmodname(), "UTF-8"); free(dmod_localedir); /* SDL */ /* Init timer subsystem */ if (SDL_Init(SDL_INIT_TIMER) == -1) { init_set_error_msg("Timer initialization error: %s\n", SDL_GetError()); return initFail(init_error_msg); } /* Quits in case we couldn't do it properly first (i.e. attempt to avoid stucking the user in 640x480 when crashing) */ atexit(finiObjects); /* GFX */ if (gfx_init(windowed ? GFX_WINDOWED : GFX_FULLSCREEN, splash_path) < 0) return initFail(init_error_msg); /* Joystick */ input_init(); /* Engine */ /* Start with this initialization as it resets structures that are filled in other subsystems initialization */ game_init(); dinkini_init(); dinkc_init(); /* SFX & BGM */ if (sound_on) { log_info("Initting sound"); if (InitSound() < 0) sound_on = 0; else sound_on = 1; if (sound_on) bgm_init(); } if (cd_inserted) PlayCD(7); SDL_initFramerate(&framerate_manager); /* The official v1.08 .exe runs 50-60 FPS in practice, despite the documented intent of running 83 FPS (or 12ms delay). */ /* SDL_setFramerate(manager, 83); */ SDL_setFramerate(&framerate_manager, FPS); //dinks normal walk log_info("Loading batch..."); load_batch(); log_info(" done!"); log_info("Loading hard..."); load_hard(); log_info(" done!"); /* We'll handle those events manually */ SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE); SDL_EventState(SDL_VIDEOEXPOSE, SDL_IGNORE); SDL_EventState(SDL_VIDEORESIZE, SDL_IGNORE); SDL_EventState(SDL_USEREVENT, SDL_IGNORE); SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE); SDL_EventState(SDL_KEYUP, SDL_IGNORE); SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE); SDL_EventState(SDL_MOUSEBUTTONUP, SDL_IGNORE); /* We still process through a SDL_PollEvent() loop: */ /* - SDL_QUIT: quit on window close and Ctrl+C */ /* - SDL_MOUSEBUTTONDOWN: don't miss quick clicks */ /* - Joystick: apparently we need to keep them, otherwise joystick doesn't work at all */ /* - SDL_KEYDOWN: we want the keydown events for text input (show_console and editor input dialog) */ return 0; } /** * Save where Dink is installed in a .ini file, read by third-party * applications like the DinkFrontEnd. Also notify whether Dink is * running or not. */ void log_path(/*bool*/int playing) { if (g_b_no_write_ini) return; //fix problem with NT security if -noini is set /* TODO: saves it in the user home instead. Think about where to cleanly store additional DMods. */ #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ char windir[100]; char inifile[256]; GetWindowsDirectory(windir, 256); sprintf(inifile, "%s\\dinksmallwood.ini", windir); unlink(inifile); add_text("[Dink Smallwood Directory Information for the CD to read]\r\n", inifile); add_text((char *)paths_getexedir(), inifile); add_text("\r\n", inifile); if (playing) add_text("TRUE\r\n", inifile); else add_text("FALSE\r\n", inifile); #endif } freedink-108.4+dfsg/src/woeres.rc.in0000644000175000017500000000116012330466347015054 0ustar meme#include #define IDI_ICON1 120 IDI_ICON1 ICON DISCARDABLE "@srcdir@/media/freedink.ico" 1 VERSIONINFO FILEVERSION 1,0,8,0 PRODUCTVERSION 1,0,8,0 FILETYPE VFT_APP { BLOCK "StringFileInfo" { BLOCK "040904E4" { VALUE "CompanyName", "" VALUE "FileVersion", "" VALUE "FileDescription", "@PACKAGE_STRING@" VALUE "InternalName", "@PACKAGE@" VALUE "LegalCopyright", "Collective" VALUE "LegalTrademarks", "" VALUE "OriginalFilename", "" VALUE "ProductName", "@PACKAGE_NAME@" VALUE "ProductVersion", "@PACKAGE_VERSION@" } } } freedink-108.4+dfsg/src/freedinkedit.c0000644000175000017500000036524312420231175015422 0ustar meme/** * FreeDink editor-specific code * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2007, 2008, 2009, 2010, 2011, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "progname.h" /* #define WIN32_LEAN_AND_MEAN */ #include #include #include #include /* for tolower */ #include /* #include */ /* #include */ #include #ifdef _WIN32 /* GetModuleFileName */ #include #endif #include #include "SDL.h" #include "SDL_rotozoom.h" #include "SDL_framerate.h" #include "init.h" #include "dinkvar.h" #include "screen.h" #include "fastfile.h" #include "gfx.h" #include "game_engine.h" #include "screen.h" #include "gfx_sprites.h" #include "gfx_tiles.h" #include "gfx_fonts.h" #include "sfx.h" #include "input.h" #include "io_util.h" #include "paths.h" #include "log.h" //Dinkedit-only vars /* * I count 10 modes in Dinkedit: map(1), screen tiles(3), screen * sprites(6), screen hardness initialization (9, switches to 8 * immediately), screen hardness(8), tile hardness(4), sprite * chooser(5), tile chooser(2), sprite hardness editor(7), plus input * dialog(0). */ /* TODO: The goal is to split the big keybinding functions into these * modes, and in each mode, call a function instead of inlining the * code. And we may use 'else if', or even a hashmap to do the * bindings. */ /* Use constants for readability */ #define MODE_MINIMAP 1 #define MODE_TILE_PICKER 2 #define MODE_SPRITE_PICKER 5 #define MODE_SCREEN_TILES 3 #define MODE_SCREEN_SPRITES 6 #define MODE_SCREEN_HARDNESS 8 #define MODE_SCREEN_HARDNESS_INIT 9 #define MODE_TILE_HARDNESS 4 #define MODE_SPRITE_HARDNESS 7 #define MODE_DIALOG 0 #define INPUT_MINIMAP_LOAD 30 #define INPUT_SCREEN_VISION 32 #define INPUT_SCREEN_MIDI 33 #define INPUT_SCREEN_TYPE 34 enum editor_buttons { EDITOR_ACTION_FIRST = 0, // min constant for loops, like SDLKey EDITOR_ACTION_NOOP = 0, EDITOR_ACTION_ESCAPE = 1, EDITOR_ACTION_RETURN, EDITOR_ACTION_X, EDITOR_ACTION_Z, EDITOR_ACTION_TAB, EDITOR_ACTION_LAST // max+1 constant for loops }; struct map_info buffmap; /*bool*/int buf_mode = /*false*/0; static char buf_path[100]; static int buf_map = 0; /* Save x and y coordinates for mode 4, 5 and 6 */ static int m4x,m4y,m5x,m5y,m6x,m6y,m5ax,m5ay; /* LPDIRECTDRAWCLIPPER lpClipper; */ static int sp_base_walk = -1; static int sp_base_idle = -1; static int sp_base_attack = -1; static int sp_base_hit = -1; static int sp_base_die = -1; static int sp_gold, sp_defense, sp_strength, sp_exp, sp_hitpoints; static int sp_timer = 33; static int sp_que; static int sp_hard = 1; static int sp_sound = 0; static int sp_type = 1; static int sp_is_warp = 0; static int sp_warp_map = 0; static /*bool*/int show_display = /*true*/1; static int sp_picker = 0; static int sp_nohit = 0; static int sp_touch_damage = 0; static int sp_warp_x = 0; static int sp_warp_y = 0; static int sp_parm_seq = 0; static char sp_script[15]; static int old_command; static int sp_cycle = 0; static int cur_screen; static int selx = 1; static int sely = 1; static int last_mode = 0; static int last_modereal = 0; static int hold_warp_map, hold_warp_x,hold_warp_y; static int sp_seq,sp_frame = 0; /* const int NUM_SOUND_EFFECTS = 6; */ #define NUM_SOUND_EFFECTS 2 typedef enum enum_EFFECT { SOUND_STOP = 0, /* SOUND_THROW, */ SOUND_JUMP, /* SOUND_STUNNED, */ /* SOUND_BEARSTRIKE, */ /* SOUND_BEARMISS, */ } EFFECT; static char *szSoundEffects[NUM_SOUND_EFFECTS] = { "stop.wav", /* "THROW.WAV", */ "jump.wav" /* "STUNNED.WAV", */ /* "STRIKE02.WAV", */ /* "MISS02.WAV" */ }; static int x = 640; static int y = 480; static char in_temp[200]; static int in_command; static int in_onflag; static int in_max = 10; static int in_huh = 0; static char in_default[200]; static int in_master = 0; static int *in_int; static char *in_string; static int in_x, in_y; static /*bool*/int in_enabled; static int sp_mode; static int sp_speed = 0; static int sp_brain = 0; static /*bool*/int sp_screenmatch = 0; static int hard_tile = 0; static int last_sprite_added = 0; static int map_vision = 0; static int m1x,m1y; static int m2x,m2y; static int m3x,m3y; static int cur_tile; /** * Get the screen tile under coords x,y */ int xy2screentile(int x, int y) { return ((y + 1) * 12) / 50 + x / 50; } // PROC NAMES /*BOOL*/int initFail(char mess[200] ); int getkeystate(int key); int getcharstate(Uint16 character); char key_convert(int key); void draw_map(void); void draw_minimap(void); /* void dderror(HRESULT hErr); */ void draw_sprite(SDL_Surface *GFX_lpdest, int h) { rect box_crap,box_real; /* HRESULT ddrval; */ /* DDBLTFX ddbltfx; */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ /* ddbltfx.dwFillColor = 0; */ if (get_box(h, &box_crap, &box_real)) { /* while(1) */ /* { */ /* again: */ /* ddrval = lpdest->Blt(&box_crap, k[getpic(h)].k, */ /* &box_real, DDBLT_KEYSRC, &ddbltfx); */ // GFX { SDL_Rect src, dst; src.x = box_real.left; src.y = box_real.top; src.w = box_real.right - box_real.left; src.h = box_real.bottom - box_real.top; dst.x = box_crap.left; dst.y = box_crap.top; dst.w = box_crap.right - box_crap.left; dst.h = box_crap.bottom - box_crap.top; gfx_blit_stretch(GFX_k[getpic(h)].k, &src, GFX_lpdest, &dst); } /* if (ddrval != DD_OK) */ /* { */ /* if (ddrval == DDERR_WASSTILLDRAWING) */ /* goto again; */ /* //dderror(ddrval); */ /* dderror(ddrval); */ /* if (draw_map_tiny > 0) */ /* { */ /* Msg("MainSpriteDraw(): Could not draw sprite %d, pic %d. (Seq %d, Fram %d) (map %d)",h,getpic(h),spr[h].pseq, spr[h].pframe, draw_map_tiny); */ /* Msg("Box_crap: %d %d %d %d, Box_real: %d %d %d %d",box_crap.left,box_crap.top, */ /* box_crap.right, box_crap.bottom,box_real.left,box_real.top, */ /* box_real.right, box_real.bottom); */ /* } */ /* else */ /* { */ /* Msg("MainSpriteDraw(): Could not draw sprite %d, pic %d. (map %d)",h,getpic(h), cur_map); */ /* } */ /* check_sprite_status(h); */ /* break; */ /* } */ /* break; */ /* } */ } } /** * Draw all screen sprites, ordered by queue. * * Also cf. game's place_sprites_game(...) and * place_sprites_game_background(...). */ void place_sprites() { int rank[MAX_SPRITES_EDITOR]; screen_rank_map_sprites(rank); int r1 = 0; for (; r1 < MAX_SPRITES_EDITOR && rank[r1] > 0; r1++) { //Msg("Ok, rank[%d] is %d.",oo,rank[oo]); int j = rank[r1]; if (pam.sprite[j].active == 1 && (pam.sprite[j].vision == 0 || pam.sprite[j].vision == map_vision)) { //we have instructions to make a sprite if (pam.sprite[j].type == 0 || pam.sprite[j].type == 2) { //make it part of the background (much faster) int sprite = add_sprite_dumb(pam.sprite[j].x,pam.sprite[j].y, 0, pam.sprite[j].seq,pam.sprite[j].frame, pam.sprite[j].size); spr[sprite].hard = pam.sprite[j].hard; check_sprite_status(sprite); spr[sprite].sp_index = j; rect_copy(&spr[sprite].alt , &pam.sprite[j].alt); if (pam.sprite[j].type == 0) draw_sprite(GFX_lpDDSTwo, sprite); if (spr[sprite].hard == 0) { if (pam.sprite[j].is_warp == 0) add_hardness(sprite, 1); else add_hardness(sprite, 100 + j); } spr[sprite].active = 0; } if (pam.sprite[j].type == 1) { //make it a living sprite int sprite = add_sprite_dumb(pam.sprite[j].x,pam.sprite[j].y, 0, pam.sprite[j].seq,pam.sprite[j].frame, pam.sprite[j].size); spr[sprite].que = pam.sprite[j].que; check_sprite_status(sprite); spr[sprite].hard = pam.sprite[j].hard; rect_copy(&spr[sprite].alt , &pam.sprite[j].alt); if (spr[sprite].hard == 0) { if (pam.sprite[j].is_warp == 0) add_hardness(sprite, 1); else add_hardness(sprite,100+j); } } } } } /* Draw background from tiles */ void draw_map(void) { fill_screen(0); fill_whole_hard(); while (kill_last_sprite()); gfx_tiles_draw_screen(); place_sprites(); } /** * Draw the currently selected tile square (in the bottom-right corner * of the screen) */ void draw_current() { int srctileset_idx0 = cur_tile / 128; int srctile_square_idx0 = cur_tile % 128; SDL_Rect src; int srctile_square_x = srctile_square_idx0 % GFX_TILES_SCREEN_W; int srctile_square_y = srctile_square_idx0 / GFX_TILES_SCREEN_W; src.x = srctile_square_x * GFX_TILES_SQUARE_SIZE; src.y = srctile_square_y * GFX_TILES_SQUARE_SIZE; src.w = GFX_TILES_SQUARE_SIZE; src.h = GFX_TILES_SQUARE_SIZE; SDL_Rect dst = {590, 430}; SDL_BlitSurface(gfx_tiles[srctileset_idx0 + 1], &src, GFX_lpDDSTwo, &dst); } /* Edit a tile hardness - show semi-transparent red/blue/orange squares on pixels with different kinds of hardness */ void draw_hard( void) { //RECT rcRect; int x; for (x = 0; x < 50; x++) { int y; for (y = 0; y < 50; y++) { /* red */ if (hmap.htile[hard_tile].x[x].y[y] == 1) { /* lpDDSBack->BltFast(95+(x*9), y*9, k[seq[10].frame[2]].k, */ /* &k[seq[10].frame[2]].box, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT); */ // GFX { SDL_Rect dst; dst.x = 95 + x*9; dst.y = y*9; SDL_BlitSurface(GFX_k[seq[10].frame[2]].k, NULL, GFX_lpDDSBack, &dst); } } /* blue */ if (hmap.htile[hard_tile].x[x].y[y] == 2) { /* lpDDSBack->BltFast(95+(x*9),y*9, k[seq[10].frame[9]].k, */ /* &k[seq[10].frame[9]].box, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT); */ // GFX { SDL_Rect dst; dst.x = 95 + x*9; dst.y = y*9; SDL_BlitSurface(GFX_k[seq[10].frame[9]].k, NULL, GFX_lpDDSBack, &dst); } } /* orange */ if (hmap.htile[hard_tile].x[x].y[y] == 3) { /* lpDDSBack->BltFast(95+(x*9),y*9, k[seq[10].frame[10]].k, */ /* &k[seq[10].frame[10]].box, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT); */ // GFX { SDL_Rect dst; dst.x = 95 + x*9; dst.y = y*9; SDL_BlitSurface(GFX_k[seq[10].frame[10]].k, NULL, GFX_lpDDSBack, &dst); } } } } } void draw_this_map(struct map_info* pmap) { int x; for (x = 0; x < 768; x++) { /* Blue square - unused screen */ if (pmap->loc[x+1] == 0) { /* lpDDSTwo->BltFast((x) * 20 - ((x / 32) * 640), (x / 32) * 20, k[seq[10].frame[6]].k, */ /* &k[seq[10].frame[6]].box, DDBLTFAST_NOCOLORKEY| DDBLTFAST_WAIT ); */ // GFX { SDL_Rect dst; SDL_Surface *sprite; sprite = GFX_k[seq[10].frame[6]].k; dst.x = x * 20 - x/32*640; dst.y = x/32 * 20; gfx_blit_nocolorkey(sprite, NULL, GFX_lpDDSTwo, &dst); } } /* Red square - used screen */ if (pmap->loc[x+1] > 0) { /* lpDDSTwo->BltFast((x) * 20 - ((x / 32) * 640), (x / 32) * 20, k[seq[10].frame[7]].k, */ /* &k[seq[10].frame[7]].box, DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT); */ // GFX { SDL_Rect dst; SDL_Surface *sprite = GFX_k[seq[10].frame[7]].k; dst.x = x * 20 - x/32*640; dst.y = x/32 * 20; gfx_blit_nocolorkey(sprite, NULL, GFX_lpDDSTwo, &dst); } } /* M mark - screen has MIDI */ if (pmap->music[x+1] != 0) { /* lpDDSTwo->BltFast((x) * 20 - ((x / 32) * 640), (x / 32) * 20, k[seq[10].frame[12]].k, */ /* &k[seq[10].frame[12]].box, DDBLTFAST_SRCCOLORKEY| DDBLTFAST_WAIT ); */ // GFX { SDL_Rect dst; dst.x = x * 20 - x/32*640; dst.y = x/32 * 20; SDL_BlitSurface(GFX_k[seq[10].frame[12]].k, NULL, GFX_lpDDSTwo, &dst); } } /* S mark - screen has screentype / is indoor */ if (pmap->indoor[x+1] != 0) { /* lpDDSTwo->BltFast( (x) * 20 - ((x / 32) * 640), (x / 32) * 20, k[seq[10].frame[13]].k, */ /* &k[seq[10].frame[13]].box, DDBLTFAST_SRCCOLORKEY| DDBLTFAST_WAIT ); */ // GFX { SDL_Rect dst; dst.x = x * 20 - x/32*640; dst.y = x/32 * 20; SDL_BlitSurface(GFX_k[seq[10].frame[13]].k, NULL, GFX_lpDDSTwo, &dst); } } } } /* Draw all squares in the map picker mode, including the 'M' (midi) and 'S' (screentype) marks */ void draw_minimap(void) { /*box_crap.top = spr[h].y + k[spr[h].pic].hardbox.top; box_crap.bottom = spr[h].y + k[spr[h].pic].hardbox.bottom; box_crap.left = spr[h].x + k[spr[h].pic].hardbox.left; box_crap.right = spr[h].x + k[spr[h].pic].hardbox.right; */ //lpDDSBack->Blt(NULL ,NULL,NULL, DDBLT_COLORFILL, &ddbltfx); draw_this_map(&map); } /*bool*/int load_map_buf(const int num) { char crap[120]; /* TODO: Dinkedit historically loads map with a filename relative to the current D-Mod directory. Maybe change that to handle absolute paths and paths relative to the refdir. */ sprintf(crap, "%sMAP.DAT", buf_path); load_map_to(crap, num, &pam); return /*true*/1; } void load_info_buff(void) { char crap[120]; sprintf(crap, "%sDINK.DAT", buf_path); if (load_info_to(crap, &buffmap) < 0) { log_error("World not found in %s.", buf_path); buf_mode = /*false*/0; } else { log_info("World data loaded."); buf_mode = /*true*/1; } } /* draw_minimap() but on a different map ('L' in map picker mode) */ void draw_minimap_buff(void) { load_info_buff(); if (!buf_mode) { //failed /* TODO: display error message to the user */ draw_minimap(); return; } draw_this_map(&buffmap); } int add_new_map(void) { FILE *fp; long now; fp = paths_dmodfile_fopen("MAP.DAT", "a+b"); if (fp == NULL) { perror("Cannot open MAP.DAT"); return -1; } fwrite(&pam,sizeof(struct small_map), 1, fp); now = (ftell(fp) / (sizeof(struct small_map))); fclose(fp); return(now); } /* Read key "is pressed?" status from cache */ int getkeystate(int key) { if (sjoy.keystate[key]) return 1; else return 0; } /* Read key "is pressed?" status from cache - but with a character code*/ int getcharstate(Uint16 character) { if (sjoy.charstate[character]) return 1; else return 0; } /* Set the keyboard state in sjoy */ void check_keyboard() { /* Keys state */ /* Check if the key was just pressed, or only maintained pressed */ int keystate_size; Uint8 *new_keystate; new_keystate = SDL_GetKeyState(&keystate_size); int x = 0; for (x = 0; x < keystate_size; x++) { /* Put the current keyboard state in cache */ /* getkey() then can check sjoy.keystate - that is, from the cache */ int last_state = sjoy.keystate[x]; sjoy.keystate[x] = new_keystate[x]; if (last_state == 0 && sjoy.keystate[x] == 1) /* We just changed from "released" to "pressed" */ sjoy.keyjustpressed[x] = 1; else sjoy.keyjustpressed[x] = 0; } /* Layout-independant character state */ /* Reset 'just pressed' field */ memset(sjoy.charjustpressed, 0, sizeof(sjoy.charjustpressed)); sjoy.last_unicode = 0; if (sjoy.last_nokey_unicode != 0) { sjoy.charstate[sjoy.last_nokey_unicode] = 0; sjoy.charjustpressed[sjoy.last_nokey_unicode] = 0; sjoy.last_nokey_unicode = 0; } /* Pick ONE event, so as not to miss keystorkes in text input mode */ SDL_Event event; if (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_KEYDOWN)|SDL_EVENTMASK(SDL_KEYUP)) > 0) { int key = event.key.keysym.sym; Uint16 unicode = event.key.keysym.unicode; switch (event.type) { case SDL_KEYDOWN: sjoy.charstate[unicode] = 1; sjoy.charjustpressed[unicode] = 1; sjoy.last_unicode = unicode; if (key != 0) sjoy.key2char[key] = unicode; else /* No possible 'kept pressed' support, so will be marked 'not pressed' next time */ sjoy.last_nokey_unicode = unicode; break; case SDL_KEYUP: /* No Unicode on KEYUP :/ */ if (key != 0) { unicode = sjoy.key2char[key]; sjoy.charstate[unicode] = 0; } break; } } } void check_joystick(void) { /* Clean-up */ /* Actions */ { int a = EDITOR_ACTION_FIRST; for (a = EDITOR_ACTION_FIRST; a < EDITOR_ACTION_LAST; a++) sjoy.joybit[a] = 0; } /* Arrows */ sjoy.right = 0; sjoy.left = 0; sjoy.up = 0; sjoy.down = 0; if (joystick) { SDL_JoystickUpdate(); Sint16 x_pos = 0, y_pos = 0; /* SDL counts buttons from 0, not from 1 */ int i = 0; for (i = 0; i < NB_BUTTONS; i++) if (SDL_JoystickGetButton(jinfo, i)) { if (i == 1-1) sjoy.joybit[EDITOR_ACTION_ESCAPE] = 1; else if (i == 2-1) sjoy.joybit[EDITOR_ACTION_RETURN] = 1; else if (i == 3-1) sjoy.joybit[EDITOR_ACTION_X] = 1; else if (i == 4-1) sjoy.joybit[EDITOR_ACTION_Z] = 1; else if (i == 5-1) sjoy.joybit[EDITOR_ACTION_TAB] = 1; } x_pos = SDL_JoystickGetAxis(jinfo, 0); y_pos = SDL_JoystickGetAxis(jinfo, 1); /* Using thresold=10% (original game) is just enough to get rid of the noise. Let's use 30% instead, otherwise Dink will go diags too easily. */ { Sint16 threshold = 32767 * 30/100; if (x_pos < -threshold) sjoy.left = 1; if (x_pos > +threshold) sjoy.right = 1; if (y_pos < -threshold) sjoy.up = 1; if (y_pos > +threshold) sjoy.down = 1; } } /* Refresh keyboard state */ check_keyboard(); if (getkeystate(SDLK_ESCAPE)) sjoy.joybit[EDITOR_ACTION_ESCAPE] = 1; if (getkeystate(SDLK_RETURN)) sjoy.joybit[EDITOR_ACTION_RETURN] = 1; if (getcharstate('x')) sjoy.joybit[EDITOR_ACTION_X] = 1; if (getcharstate('z')) sjoy.joybit[EDITOR_ACTION_Z] = 1; if (getkeystate(SDLK_TAB)) sjoy.joybit[EDITOR_ACTION_TAB] = 1; if (getkeystate(SDLK_RIGHT)) sjoy.right = 1; if (getkeystate(SDLK_LEFT)) sjoy.left = 1; if (getkeystate(SDLK_DOWN)) sjoy.down = 1; if (getkeystate(SDLK_UP)) sjoy.up = 1; { int a = EDITOR_ACTION_FIRST; for (a = EDITOR_ACTION_FIRST; a < EDITOR_ACTION_LAST; a++) { sjoy.button[a] = 0; if (sjoy.joybit[a] && sjoy.joybitold[a] == 0) /* Button was just pressed */ sjoy.button[a] = 1; sjoy.joybitold[a] = sjoy.joybit[a]; } } } /* Human-readable representation of the keycode, used to display which key is currently pressed */ /* Note: key constants may be found in winuser.h. The "Keycodes"/keycodes.txt file by Dan Walma also brings some clues about the _OEM keys. */ char key_convert(int key) { if (SDL_GetModState()&KMOD_SHIFT) key = toupper(key); if (key == 190 /* VK_OEM_PERIOD */) { if (SDL_GetModState()&KMOD_SHIFT) key = '>'; else key = '.'; } if (key == 188 /* VK_OEM_COMMA */) { if (SDL_GetModState()&KMOD_SHIFT) key = '<'; else key = ','; } if (key == '1') if (SDL_GetModState()&KMOD_SHIFT) key = '!'; if (key == '2') if (SDL_GetModState()&KMOD_SHIFT) key = '@'; if (key == '3') if (SDL_GetModState()&KMOD_SHIFT) key = '#'; if (key == '4') if (SDL_GetModState()&KMOD_SHIFT) key = '$'; if (key == '5') if (SDL_GetModState()&KMOD_SHIFT) key = '%'; if (key == '6') if (SDL_GetModState()&KMOD_SHIFT) key = '^'; if (key == '7') if (SDL_GetModState()&KMOD_SHIFT) key = '&'; if (key == '8') if (SDL_GetModState()&KMOD_SHIFT) key = '*'; if (key == '9') if (SDL_GetModState()&KMOD_SHIFT) key = '('; if (key == '0') if (SDL_GetModState()&KMOD_SHIFT) key = ')'; if (key == 189 /* VK_OEM_MINUS */) { if (SDL_GetModState()&KMOD_SHIFT) key = '_'; else key = '-'; } if (key == 187 /* VK_OEM_PLUS */) { if (SDL_GetModState()&KMOD_SHIFT) key = '+'; else key = '='; } if (key == 186 /* VK_OEM_1 */) { if (SDL_GetModState()&KMOD_SHIFT) key = ':'; else key = ';'; } if (key == 222 /* VK_OEM_7 */) { if (SDL_GetModState()&KMOD_SHIFT) key = '\"'; else key = '\''; } if (key == 191 /* VK_OEM_2 */) { if (SDL_GetModState()&KMOD_SHIFT) key = '?'; else key = '/'; } if (key == 220 /* VK_OEM_5 */) { if (SDL_GetModState()&KMOD_SHIFT) key = '|'; else key = '\\'; } return(key); } /* Displays a tile fullscreen, so we can select some squares */ void loadtile(int tileset) { /* DDBLTFX ddbltfx; */ /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ //feel tile background with a color /* ddbltfx.dwFillColor = 0; */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* lpDDSTwo->Blt(NULL,NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ // GFX SDL_FillRect(GFX_lpDDSTwo, NULL, SDL_MapRGB(GFX_lpDDSTwo->format, 0, 0, 0)); spr[1].seq = 3; spr[1].seq_orig = 3; // if (mode == 3) if (mode == MODE_SCREEN_TILES) { m3x = spr[1].x; m3y = spr[1].y; spr[1].x = m2x; spr[1].y = m2y; mode = 2; spr[1].speed = 50; } // if (mode == 4) if (mode == MODE_TILE_HARDNESS) { spr[1].x = m2x; spr[1].y = m2y; mode = 2; spr[1].speed = 50; } /* lpDDSTwo->BltFast(0, 0, tiles[tileset], &tilerect[tileset], DDBLTFAST_NOCOLORKEY |DDBLTFAST_WAIT); */ // GFX SDL_BlitSurface(gfx_tiles[tileset], NULL, GFX_lpDDSTwo, NULL); cur_screen = tileset; last_mode = tileset; while(kill_last_sprite()); } int sp_get( int num) { int t = 1; int j; for (j = 1; j < MAX_SEQUENCES; j++) { check_frame_status(j, 1); if (seq[j].frame[1] != 0) { if (t == num) { return(j); } t++; } } return(0); } /* In sprite picking mode, draw a grid to separate sprites or sequences' 50x50 previews */ static void draw_sprite_picker_grid(void) { /* DDBLTFX ddbltfx; */ /* RECT box_crap; */ /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* Draw vertical lines */ int x2, x3; for (x2 = 1; x2 <= 12; x2++) { /* ddbltfx.dwFillColor = 120; */ /* box_crap.top = 0; */ /* box_crap.bottom = 400; */ /* box_crap.left = (x2*50) -1; */ /* box_crap.right = box_crap.left+1; */ /* ddrval = lpDDSTwo->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL|DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst = {12345, 0, 12345, 400}; dst.x = x2*50 - 1; dst.w = 1; SDL_FillRect(GFX_lpDDSTwo, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 123, 132, 99)); } } /* Draw horizontal lines */ for (x3 = 1; x3 <= 8; x3++) { /* ddbltfx.dwFillColor = 120; */ /* box_crap.top = (50 * x3)-1; */ /* box_crap.bottom = box_crap.top +1; */ /* box_crap.left = 0; */ /* box_crap.right = 600; */ /* ddrval = lpDDSTwo->Blt(&box_crap ,NULL, NULL, DDBLT_COLORFILL|DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst = {0, 12345, 600, 12345}; dst.y = x3*50 - 1; dst.h = 1; SDL_FillRect(GFX_lpDDSTwo, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 123, 132, 99)); } } } /* Main sprite selection screen - display a page of the sequence selector */ void draw15(int num) { /* int crap; */ /* DDBLTFX ddbltfx; */ /* rect crapRec, Rect, box_crap; */ int frame; /* int ddrval; */ int se; /* int dd; */ int x1; //get_sp_seq(2); while(kill_last_sprite()); /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ /* ddbltfx.dwFillColor = 0; */ /* crap = lpDDSTwo->Blt(NULL ,NULL,NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ // GFX SDL_FillRect(GFX_lpDDSTwo, NULL, SDL_MapRGB(GFX_lpDDSTwo->format, 0, 0, 0)); /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ Say("Please wait, loading sprite data into SmartCache system...", 147,160); flip_it(); /* Draw sprites */ for (x1 = 0; x1 <= 11; x1++) { int y1; for (y1=0; y1 <= 7; y1++) { num++; se = sp_get(num); check_seq_status(se); if (se > 0) { frame = 1; /* Rect.left = x1 * 50; */ /* Rect.top = y1 * 50; */ /* Rect.right = Rect.left + 50; */ /* Rect.bottom = Rect.top + 50; */ /* crapRec = k[seq[se].frame[frame]].box; */ /* dd = lpDDSTwo->Blt(&Rect, k[seq[se].frame[frame]].k, */ /* &crapRec, DDBLT_KEYSRC | DDBLT_DDFX | DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst; dst.x = x1 * 50; dst.y = y1 * 50; dst.w = 50; dst.h = 50; gfx_blit_stretch(GFX_k[seq[se].frame[frame]].k, NULL, GFX_lpDDSTwo, &dst); } /* if (dd != DD_OK) Msg("Error with drawing sprite! Seq %d, Spr %d.", se, frame); */ } } } draw_sprite_picker_grid(); } /* Inner sprite selection screen - display all frames/sprites in a sequence */ void draw96(int def) { /* int crap; */ /* DDBLTFX ddbltfx; */ /* rect crapRec, Rect, box_crap; */ /* int ddrval; */ int se; /* int dd; */ int x1; //get_sp_seq(2); se = sp_seq; check_seq_status(se); int num = 0; while(kill_last_sprite()); /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ /* ddbltfx.dwFillColor = 0; */ /* crap = lpDDSTwo->Blt(NULL ,NULL,NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ // GFX SDL_FillRect(GFX_lpDDSTwo, NULL, SDL_MapRGB(GFX_lpDDSTwo->format, 0, 0, 0)); /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ for (x1=0; x1 <= 11; x1++) { int y1; for (y1=0; y1 <= 7; y1++) { num++; if (seq[se].frame[num] == 0) { //all done displaying goto pass; } //se = sp_get(num); /* Rect.left = x1 * 50; */ /* Rect.top = y1 * 50; */ /* Rect.right = Rect.left + 50; */ /* Rect.bottom = Rect.top + 50; */ if (def > 0 && num == def) { //set default location to sprite they are holding spr[1].x = x1*50; spr[1].y = y1 *50; } /* crapRec = k[seq[se].frame[num]].box; */ /* dd = lpDDSTwo->Blt(&Rect, k[seq[se].frame[num]].k, */ /* &crapRec, DDBLT_KEYSRC | DDBLT_DDFX | DDBLT_WAIT, &ddbltfx ); */ // GFX { SDL_Rect dst; dst.x = x1 * 50; dst.y = y1 * 50; dst.w = 50; dst.h = 50; gfx_blit_stretch(GFX_k[seq[se].frame[num]].k, NULL, GFX_lpDDSTwo, &dst); } /* if (dd != DD_OK) Msg("Error with drawing sprite! Seq %d, Spr %d.",se,frame); */ } } pass: draw_sprite_picker_grid(); } void sp_add( void ) { int j; for (j = 1; j < 100; j++) { if (pam.sprite[j].active == /*false*/0) { last_sprite_added = j; //Msg("Adding sprite %d, seq %d, frame %d.",j,sp_seq,sp_frame); pam.sprite[j].active = /*true*/1; pam.sprite[j].frame = sp_frame; pam.sprite[j].seq = sp_seq; pam.sprite[j].x = spr[1].x; pam.sprite[j].y = spr[1].y; pam.sprite[j].size = spr[1].size; pam.sprite[j].type = sp_type; pam.sprite[j].brain = sp_brain; pam.sprite[j].speed = sp_speed; pam.sprite[j].base_walk = sp_base_walk; pam.sprite[j].base_idle = sp_base_idle; pam.sprite[j].base_attack = sp_base_attack; pam.sprite[j].base_hit = sp_base_hit; pam.sprite[j].timer = sp_timer; pam.sprite[j].que = sp_que; pam.sprite[j].hard = sp_hard; pam.sprite[j].is_warp = sp_is_warp; pam.sprite[j].warp_map = sp_warp_map; pam.sprite[j].warp_x = sp_warp_x; pam.sprite[j].warp_y = sp_warp_y; pam.sprite[j].parm_seq = sp_parm_seq; strcpy(pam.sprite[j].script, sp_script); pam.sprite[j].base_die = sp_base_die; pam.sprite[j].gold = sp_gold; pam.sprite[j].exp = sp_exp; pam.sprite[j].strength = sp_strength; pam.sprite[j].defense = sp_defense; pam.sprite[j].hitpoints = sp_hitpoints; pam.sprite[j].sound = sp_sound; pam.sprite[j].vision = map_vision; pam.sprite[j].nohit = sp_nohit; pam.sprite[j].touch_damage = sp_touch_damage; rect_copy(&pam.sprite[j].alt , &spr[1].alt); return; } } } void smart_add(void) { sp_add(); if (sp_screenmatch) { if (spr[1].size == 100) { //lets see if the sprite crosses into another screen //use screenmatch technology if ((spr[1].x - k[getpic(1)].xoffset) + k[getpic(1)].box.right > 620) { log_debug("need to add it to the right"); //need to add it to the right if (map.loc[cur_map+1] > 0) { save_map(map.loc[cur_map]); log_debug("loading right map"); load_map(map.loc[cur_map+1]); int holdx = spr[1].x; int holdy = spr[1].y; spr[1].x -= 600; sp_add(); save_map(map.loc[cur_map+1]); load_map(map.loc[cur_map]); spr[1].x = holdx; spr[1].y = holdy; } } if ((spr[1].x - k[getpic(1)].xoffset) - k[getpic(1)].box.right < 20) { log_debug("need to add it to the right"); //need to add it to the left if (map.loc[cur_map-1] > 0) { save_map(map.loc[cur_map]); log_debug("loading right map"); load_map(map.loc[cur_map-1]); int holdx = spr[1].x; int holdy = spr[1].y; spr[1].x += 600; sp_add(); save_map(map.loc[cur_map-1]); load_map(map.loc[cur_map]); spr[1].x = holdx; spr[1].y = holdy; } } if ((spr[1].y - k[getpic(1)].yoffset) + k[getpic(1)].box.bottom > 400) { log_debug("need to add it to the bottom"); //need to add it to the bottom if (map.loc[cur_map+32] > 0) { save_map(map.loc[cur_map]); log_debug("loading bottom "); load_map(map.loc[cur_map+32]); int holdx = spr[1].x; int holdy = spr[1].y; spr[1].y -= 400; sp_add(); save_map(map.loc[cur_map+32]); load_map(map.loc[cur_map]); spr[1].x = holdx; spr[1].y = holdy; } } if ((spr[1].y - k[getpic(1)].yoffset) - k[getpic(1)].box.bottom < 0) { log_debug("need to add it to the top"); //need to add it to the left if (map.loc[cur_map-32] > 0) { save_map(map.loc[cur_map]); log_debug("loading top map"); load_map(map.loc[cur_map-32]); int holdx = spr[1].x; int holdy = spr[1].y; spr[1].y += 400; sp_add(); save_map(map.loc[cur_map-32]); load_map(map.loc[cur_map]); spr[1].x = holdx; spr[1].y = holdy; } } } } } void blit(int seq1, int frame, SDL_Surface *GFX_lpdest, int tx, int ty) { /* RECT math; */ /* math = k[seq[seq1].frame[frame]].box; */ /* OffsetRect(&math, tx, ty); */ /* ddrval = lpdest->Blt(&math, k[seq[seq1].frame[frame]].k, &k[seq[seq1].frame[frame]].box, DDBLT_WAIT, NULL); */ // GFX // No scaling needed here { SDL_Rect dst; dst.x = tx; dst.y = ty; SDL_BlitSurface(GFX_k[seq[seq1].frame[frame]].k, NULL, GFX_lpdest, &dst); } } /** * Display the appropriate input dialog */ void check_in(void) { in_huh = in_master; /** * - Sprite dialogs: * 1 = size * 2 = type (background|sprite) * 3 = brain * 4 = speed * 5 = timer (timing) * 6 = base_walk * 7 = base_idle * 8 = que * 9 = hard (hardness_type - background|sprite) * 10 = is_warp * 11 = warp_map * 12 = warp_x * 13 = warp_y * 14 = parm_seq * 15 = script * 16 = base_die * 17 = sound (looping sound) * 18 = hitpoints * 19 = nohit * 20 = touch_damage * 21 = base_attack * 22 = defense * * - Minimap dialogs: * 30 = 'L' - load screen from another map * * - Screen dialogs: * (called from minimap or screen mode) * 31 = 'B' - screen script * 32 = 'V' - vision * (called from minimap mod) * 33 = 'M' - screen midi * 34 = 'S' - screen type (indoors / outside) **/ /* In: */ /* in_master = identifier for the property we need to edit */ /* Out: */ /* in_max = maximum length of input (as text) + 1 */ /* in_command = data type (int|string) */ /* in_int = pointer to the integer value to update */ /* in_string = pointer to the string to update */ /* in_onflag = trigger the creation of an input window */ /* in_enabled ? */ if (in_master == 1) { in_command = 1; //number in_int = &spr[1].size; in_max = 10; //max _length sprintf(in_default,"%d",spr[1].size); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Size?",260,175); } if (in_master == 2) { in_command = 1; //number in_int = &sp_type; in_max = 10; //max _length sprintf(in_default,"%d",sp_type); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Type?",260,175); Say("Type controls the sprite's basic type - 0 means it is ornamental only" "(cannot walk behind or think) 1 - means normal sprite. (for a tree or person)" ,10,10); } if (in_master == 3) { in_command = 1; //number in_int = &sp_brain; in_max = 10; //max _length sprintf(in_default,"%d",sp_brain); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Brain?",260,175); Say("Brains are a predefined way for this sprite to behave. 0 = No movement, 1 = Dink," " 2 = Dumb Sprite Bouncer, 3 = Duck, 4 = Pig, 6 = repeat, 7 = one loop then kill," " 9 = monster (all diag), 10 = monster(no diag)" ,10,10); } if (in_master == 4) { in_command = 1; //number in_int = &sp_speed; in_max = 10; //max _length sprintf(in_default,"%d",sp_speed); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Speed?",260,175); Say("Speed rating allows you to adjust how fast a certain sprite moves. Works with" " most brains." ,10,10); } if (in_master == 5) { in_command = 1; //number in_int = &sp_timer; in_max = 10; //max _length sprintf(in_default,"%d",sp_timer); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Timing?",260,175); Say("This is the delay the CPU waits before processing the sprite after each cycle. " "(in thousands of a second - so 33 would mean 30 times a second)" ,10,10); } if (in_master == 6) { in_command = 1; //number in_int = &sp_base_walk; in_max = 10; //max _length sprintf(in_default,"%d",sp_base_walk); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Base Walk?",260,175); Say("The base for which the CPU adds 1 through 9 to make the sprite move, depending on" " direction. Must be a multiple of ten. (ie, 20 to look like a duck, 40 to look like a pig)" ,10,10); } if (in_master == 7) { in_command = 1; //number in_int = &sp_base_idle; in_max = 10; //max _length sprintf(in_default,"%d",sp_base_idle); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Base Idle?",260,175); Say("Some brains can optionally use extra sprites for their \'idle\' pose." ,10,10); } if (in_master == 8) { in_command = 1; //number in_int = &sp_que; in_max = 10; //max _length sprintf(in_default,"%d",sp_que); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Depth Que?",250,175); Say("From 1 to 20000, 0 for default. (defaults to y cord)" ,10,10); } if (in_master == 9) { in_command = 1; //number in_int = &sp_hard; in_max = 10; //max _length sprintf(in_default,"%d",sp_hard); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Hardness?",260,175); Say("Sets how hardness works. 1 means normal, (monsters) 0 means added to background. (walls, trees)" ,10,10); } if (in_master == 10) { in_command = 1; //number in_int = &sp_is_warp; in_max = 10; //max _length sprintf(in_default,"%d",sp_is_warp); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("New Properties?",260,175); Say("Sets special properties for the hardblock. 0 = normal (just hard) 1 = warp." ,10,10); } if (in_master == 11) { in_command = 1; //number in_int = &sp_warp_map; in_max = 10; //max _length sprintf(in_default,"%d",sp_warp_map); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Warp Map #",260,175); Say("These parms are valid if the hard block property setting is 1. (warp)" ,10,10); } if (in_master == 12) { in_command = 1; //number in_int = &sp_warp_x; in_max = 10; //max _length sprintf(in_default,"%d",sp_warp_x); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Warp X:",260,175); Say("The X location to warp to. (20 to 619)" ,10,10); } if (in_master == 13) { in_command = 1; //number in_int = &sp_warp_y; in_max = 10; //max _length sprintf(in_default,"%d",sp_warp_y); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Warp Y:",260,175); Say("The Y location to warp to. (0 to 499)" ,10,10); } if (in_master == 14) { in_command = 1; //number in_int = &sp_parm_seq; in_max = 10; //max _length sprintf(in_default,"%d",sp_parm_seq); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Sequence:",260,175); Say("This parm is used by some brains/settings if set. A sequence is an animation #." ,10,10); } if (in_master == 15) { in_command = 2; //string sprintf(in_default, "%s", sp_script); in_max = 13; in_string = sp_script; blit(30,1,GFX_lpDDSBack,250,170); Say("Script:",260,175); Say("Filename of script this sprite uses." ,10,10); } if (in_master == 16) { in_command = 1; //number in_int = &sp_base_die; in_max = 10; //max _length sprintf(in_default,"%d",sp_base_die); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Base Death:",260,175); Say("If this sprite dies, this will be used." ,10,10); } if (in_master == 17) { in_command = 1; //number in_int = &sp_sound; in_max = 10; //max _length sprintf(in_default,"%d",sp_sound); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Sound:",260,175); Say("This sprite will play this sound looped until it dies." ,10,10); } if (in_master == 18) { in_command = 1; //number in_int = &sp_hitpoints; in_max = 10; //max _length sprintf(in_default,"%d",sp_hitpoints); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Hitpoints:",260,175); Say("How strong is this creature? (0 = not alive/invincible)" ,10,10); } if (in_master == 19) { in_command = 1; //number in_int = &sp_nohit; in_max = 10; //max _length sprintf(in_default,"%d",sp_nohit); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Nohit:",260,175); Say("Can this be punched? 0 if yes. Either way it will" "still check for hit() if a script is attached." ,10,10); } if (in_master == 20) { in_command = 1; //number in_int = &sp_touch_damage; in_max = 10; //max _length sprintf(in_default,"%d",sp_touch_damage); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Touch Damage:",260,175); Say("If not 0, the hardbox of this sprite will cause this" "much damage if touched." ,10,10); } if (in_master == 21) { in_command = 1; //number in_int = &sp_base_attack; in_max = 10; //max _length sprintf(in_default,"%d",sp_base_attack); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Base Attack:",260,175); Say("If not -1, this monster can attack with this sprite base. (base + dir)" ,10,10); } if (in_master == 22) { in_command = 1; //number in_int = &sp_defense; in_max = 10; //max _length sprintf(in_default,"%d",sp_defense); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Defense:",260,175); Say("This will be deducted from any attack." ,10,10); } if (in_master == INPUT_MINIMAP_LOAD) { in_command = 2; //string sprintf(in_default, "%s", buf_path); in_max = 80; in_string = buf_path; blit(30,1,GFX_lpDDSBack,250,170); Say("Path:",260,175); Say("Enter the path with trailing backslash to a dir containing" " another dink.dat and map.dat file to choose a replacement" " for this block. (or enter to choose a replacement from the" " current map)" ,10,10); } if (in_master == 31) { in_command = 2; //string sprintf(in_default, "%s", pam.script); in_max = 20; in_string = pam.script; blit(30,1,GFX_lpDDSBack,250,170); Say("Script:",260,175); Say("This script will be run before the screen is drawn. A good place" "to change the vision, ect." ,10,10); } if (in_master == INPUT_SCREEN_VISION) { in_command = 1; //number in_int = &map_vision; in_max = 10; //max _length sprintf(in_default,"%d",map_vision); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Vision:",260,175); Say("Current vision. If not 0, any sprites you add will ONLY show up" " in the game if the vision level matches this one." ,10,10); } if (in_master == INPUT_SCREEN_MIDI) { in_command = 1; //number in_max = 10; //max _length sprintf(in_default,"%d",*in_int); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Music # for screen?:",260,175); Say("Will play #.MID for this screen if nothing else is playing." ,10,10); } if (in_master == INPUT_SCREEN_TYPE) { in_command = 1; //number in_max = 10; //max _length sprintf(in_default,"%d",*in_int); //set default blit(30,1,GFX_lpDDSBack,250,170); Say("Screentype?:",260,175); Say("Enter 1 for 'indoors'. (so it won't show up on the player map)." ,10,10); } old_command = in_master; in_master = 0; in_onflag = /*true*/1; } //this changes all none 0 blocks in this tile to num void change_tile(int tile, int num) { int x; for (x = 0; x < 50; x++) { int y; for (y = 0; y < 50; y++) if (hmap.htile[tile].x[x].y[y] != 0) hmap.htile[tile].x[x].y[y] = num; } } void copy_front_to_two( void) { /* RECT rcRect; */ /* rcRect.left = 0; */ /* rcRect.top = 0; */ /* rcRect.right = x; */ /* rcRect.bottom = y; */ /* lpDDSTwo->BltFast( 0, 0, lpDDSBack, */ /* &rcRect, DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT); */ // GFX SDL_BlitSurface(GFX_lpDDSBack, NULL, GFX_lpDDSTwo, NULL); } /* Create a 20x20 view of lpDDSTwo for use in the minimap */ void shrink_screen_to_these_cords(int x1, int y1) { /* RECT crapRec, Rect; */ /* DDBLTFX ddbltfx; */ /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* SetRect(&crapRec, playl, 0, playx, 400); */ /* SetRect(&Rect, x1, y1, x1+20, y1+20); */ /* lpDDSBack->Blt(&Rect, lpDDSTwo, */ /* &crapRec, DDBLT_DDFX | DDBLT_WAIT, &ddbltfx); */ // GFX /* Generic scaling - except no transparency */ { SDL_Rect src, dst; src.x = playl; src.y = 0; src.w = playx - playl; src.h = 400; dst.x = x1; dst.y = y1; dst.w = 20; dst.h = 20; gfx_blit_stretch(GFX_lpDDSTwo, &src, GFX_lpDDSBack, &dst); } } /**************************************************************************** * * UpdateCursorPosition * * Move our private cursor in the requested direction, subject * to clipping, scaling, and all that other stuff. * * This does not redraw the cursor. You need to do that yourself. * ****************************************************************************/ void UpdateCursorPosition(int dx, int dy) { /* * Pick up any leftover fuzz from last time. This is important * when scaling down mouse motions. Otherwise, the user can * drag to the right extremely slow for the length of the table * and not get anywhere. */ sp_cycle = 0; spr[1].x += dx; spr[1].y += dy; /* Clip the cursor to our client area */ /* Try to get the mouse (and the focus) within the window, not 100% safe but good enough */ SDL_WarpMouse(320, 240); /* Ignore the mouse event generated by SDL_WarpMouse: */ SDL_PumpEvents(); SDL_GetRelativeMouseState(NULL, NULL); /* Alternatively, we can do this all the time, even when dx and dy are zero, and the mouse will always return to the application. We'd need to avoid that when the application is backgrounded though, otherwise FreeDink will keep warping the mouse. */ } void Scrawl_OnMouseInput(void) { SDL_Event event; int dx, dy; mouse1 = /*false*/0; if (mode != 6) return; SDL_PumpEvents(); SDL_GetRelativeMouseState(&dx, &dy); if (dx != 0 || dy != 0) UpdateCursorPosition(dx, dy); /* Process stacked clicks */ while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN)) > 0) { SDL_MouseButtonEvent *button_event = (SDL_MouseButtonEvent*)&event; if (button_event->button == SDL_BUTTON_LEFT) mouse1 = /*true*/1; } return; /* BOOL fDone = 0; */ /* while (!fDone) { */ /* DIDEVICEOBJECTDATA od; */ /* DWORD dwElements = 1; */ /* HRESULT hr = g_pMouse->GetDeviceData( */ /* sizeof(DIDEVICEOBJECTDATA), &od, */ /* &dwElements, 0); */ /* if (hr == DIERR_INPUTLOST) { */ /* /\* */ /* * We had acquisition, but lost it. Try to reacquire it. */ /* * */ /* * WARNING! DO NOT ATTEMPT TO REACQUIRE IF YOU GET */ /* * DIERR_NOTACQUIRED! Otherwise, you're extremely likely */ /* * to get caught in an infinite loop: The acquire will fail, */ /* * and you'll get another DIERR_NOTACQUIRED so you'll */ /* * try to aquire again, and that'll fail, etc. */ /* *\/ */ /* // PostMessage(hwnd, WM_SYNCACQUIRE, 0, 0L); */ /* // break; */ /* Msg("Have no aquisition!!"); */ /* g_pMouse->Acquire(); */ /* } */ /* /\* Unable to read data or no data available *\/ */ /* if (FAILED(hr) || dwElements == 0) { */ /* // Msg("No mouse data there."); */ /* break; */ /* } */ /* Look at the element to see what happened */ /* switch (od.dwOfs) { // DIMOFS_X: Mouse horizontal motion case DIMOFS_X: UpdateCursorPosition(od.dwData, 0); break; //DIMOFS_Y: Mouse vertical motion case DIMOFS_Y: UpdateCursorPosition(0, od.dwData); break; case DIDFT_BUTTON: if (od.dwData > 0) mouse1 = true; break; } */ /* if (od.dwOfs == DIMOFS_X) */ /* { */ /* // DIMOFS_X: Mouse horizontal motion */ /* UpdateCursorPosition(od.dwData, 0); */ /* } */ /* else if (od.dwOfs == DIMOFS_Y) */ /* { */ /* //DIMOFS_Y: Mouse vertical motion */ /* UpdateCursorPosition(0, od.dwData); */ /* } */ /* else if (od.dwOfs == DIDFT_BUTTON) */ /* { */ /* if (od.dwData > 0) mouse1 = true; */ /* } */ /* } */ } /** * So-called "Movie2000 sprite movie maker" feature. It will dump a * series of DinkC moves that you specify using the mouse * (destination) and the numpad (direction). Check * http://www.dinknetwork.com/file/movie2000_tutorial */ void write_moves(void) { char crap[100]; char move[100]; char fname[100]; strcpy(fname, sp_script); if (strlen(sp_script) <= 2) strcpy(fname, "CRAP"); if (sjoy.keyjustpressed[SDLK_KP8 /* 104 */]) { EditorSoundPlayEffect( SOUND_JUMP ); sprintf(crap, "story/%s.c",fname); sprintf(move, "move_stop(¤t_sprite, 8, %d, 1)\n", spr[1].y); add_text(move, crap); } if (sjoy.keyjustpressed[SDLK_KP4 /* 100 */]) { EditorSoundPlayEffect( SOUND_JUMP ); sprintf(crap, "story/%s.c",fname); sprintf(move, "move_stop(¤t_sprite, 4, %d, 1)\n", spr[1].x); add_text(move, crap); } if (sjoy.keyjustpressed[SDLK_KP5 /* 101 */]) { EditorSoundPlayEffect(SOUND_JUMP); sprintf(crap, "story/%s.c",fname); add_text("//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n", crap); } if (sjoy.keyjustpressed[SDLK_KP2 /* 98 */]) { EditorSoundPlayEffect(SOUND_JUMP); sprintf(crap, "story/%s.c", fname); sprintf(move, "move_stop(¤t_sprite, 2, %d, 1)\n", spr[1].y); add_text(move, crap); } if (sjoy.keyjustpressed[SDLK_KP6 /* 102 */]) { EditorSoundPlayEffect( SOUND_JUMP ); sprintf(crap, "story/%s.c",fname); sprintf(move, "move_stop(¤t_sprite, 6, %d, 1)\n", spr[1].x); add_text(move, crap); } if (sjoy.keyjustpressed[SDLK_KP7 /* 103 */]) { EditorSoundPlayEffect( SOUND_JUMP ); sprintf(crap, "story/%s.c",fname); sprintf(move, "move_stop(¤t_sprite, 7, %d, 1)\n", spr[1].x); add_text(move, crap); } if (sjoy.keyjustpressed[SDLK_KP1 /* 97 */]) { EditorSoundPlayEffect( SOUND_JUMP ); sprintf(crap, "story/%s.c",fname); sprintf(move, "move_stop(¤t_sprite, 1, %d, 1)\n", spr[1].x); add_text(move, crap); } if (sjoy.keyjustpressed[SDLK_KP9 /* 105 */]) { EditorSoundPlayEffect( SOUND_JUMP ); sprintf(crap, "story/%s.c",fname); sprintf(move, "move_stop(¤t_sprite, 9, %d, 1)\n", spr[1].x); add_text(move, crap); } if (sjoy.keyjustpressed[SDLK_KP3 /* 99 */]) { EditorSoundPlayEffect( SOUND_JUMP ); sprintf(crap, "story/%s.c",fname); sprintf(move, "move_stop(¤t_sprite, 3, %d, 1)\n", spr[1].x); add_text(move, crap); } } /** * Draw hardness single tile #'tile', pixel by pixel, in white. Used * to draw the currently selected hardness tile. */ void draw_hard_tile(int x1, int y1, int tile) { SDL_Rect dst; dst.w = 1; dst.h = 1; int x = 0; for (x = 0; x < 50; x++) { int y = 0; for (y = 0; y < 50; y++) { if (hmap.htile[tile].x[x].y[y] == 1) { //draw it dst.x = x1 + x + 20/* status bar length */; dst.y = y1 + y; /* TODO: not very efficient */ SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSBack->format, 255, 255, 255)); } } } } /** * updateFrame * * Decide what needs to be blitted next, wait for flip to complete, * then flip the buffers. */ void updateFrame(void) { // static DWORD lastTickCount[4] = {0,0,0,0}; // static int currentFrame[3] = {0,0,0}; unsigned long thisTickCount; // char buffer[20]; rect rcRect; rect Rect; /* rect rcRectSrc; */ /* rect rcRectDest; */ rect box_crap,box_real; /* POINT p; */ char msg[500]; char buff[200]; // DWORD delay[4] = {0, 0, 0, 20}; /* HDC hdc; */ int in_crap2 = 0; int holdx; //PALETTEENTRY pe[256]; /* HRESULT ddrval; */ int xx; /* DDBLTFX ddbltfx; */ /*BOOL*/int cool; /*BOOL*/int bs[MAX_SPRITES_AT_ONCE]; int rank[MAX_SPRITES_AT_ONCE]; int highest_sprite; int jj; SDL_framerateDelay(&framerate_manager); // Decide which frame will be blitted next thisTickCount = SDL_GetTicks(); strcpy(buff,"Nothing"); check_joystick(); Scrawl_OnMouseInput(); rcRect.left = 0; rcRect.top = 0; rcRect.right = x; rcRect.bottom = y; if (draw_map_tiny != -1) { tiny_again: if (draw_map_tiny == 769) { draw_map_tiny = -1; while(kill_last_sprite()); //all done } else { draw_map_tiny++; copy_front_to_two(); if (map.loc[draw_map_tiny] != 0) { //a map exists here load_map(map.loc[draw_map_tiny]); //map loaded, lets display it draw_map(); goto pass_flip; } else goto tiny_again; } } /* while( 1 ) */ /* { */ /* ddrval = lpDDSBack->BltFast( 0, 0, lpDDSTwo, */ /* &rcRect, DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT); */ // GFX SDL_BlitSurface(GFX_lpDDSTwo, NULL, GFX_lpDDSBack, NULL); /* if( ddrval == DD_OK ) */ /* { */ /* break; */ /* } */ /* if( ddrval == DDERR_SURFACELOST ) */ /* { */ /* ddrval = restoreAll(); */ /* if( ddrval != DD_OK ) */ /* { */ /* return; */ /* } */ /* } */ /* if( ddrval != DDERR_WASSTILLDRAWING ) */ /* { */ /* return; */ /* } */ /* } */ pass_flip: memset(&bs,0,sizeof(bs)); int max_s = 105; //max_sprites_at_once; /*for (int r2 = 1; r2 < max_sprites_at_once; r2++) { if (spr[r2].active) max_s = r2+1; } */ int height; spr[1].que = 20000; if (mode == MODE_SCREEN_SPRITES) if ( ! ((spr[1].pseq == 10) && (spr[1].pframe == 8)) ) spr[1].que = sp_que; if (!in_enabled) { int r1; for (r1 = 1; r1 < max_s+1; r1++) { int h1; highest_sprite = 22024; //more than it could ever be rank[r1] = 0; for (h1 = 1; h1 < max_s+1; h1++) { if (spr[h1].active) { if (bs[h1] == /*FALSE*/0) { //Msg( "Ok, %d is %d", h1,(spr[h1].y + k[spr[h1].pic].yoffset) ); if (spr[h1].que != 0) height = spr[h1].que; else height = spr[h1].y; if ( height < highest_sprite ) { highest_sprite = height; rank[r1] = h1; } } } } if (rank[r1] != 0) bs[rank[r1]] = /*TRUE*/1; } } if (!in_enabled) for (jj = 1; jj < max_s; jj++) { int h = rank[jj]; //Msg("Studying %d.,",h); if (spr[h].active) { // Msg("Sprite %d is active.",h); int greba = 0; if (spr[h].brain == 1) { if ((spr[h].seq == 0) || (mode == MODE_TILE_HARDNESS)) { //if (mode == 7) if (mode == MODE_SPRITE_HARDNESS) { //editing a sprite, setting hard box and depth dot. spr[1].pseq = 1; spr[1].pframe = 1; if (sjoy.button[EDITOR_ACTION_ESCAPE]) { //they want out //mode = 5; mode = MODE_SPRITE_PICKER; draw96(0); spr[1].x = m5x; spr[1].y = m5y; spr[1].pseq = 10; spr[1].pframe = 5; spr[1].speed = 50; goto sp_edit_end; } if (sjoy.keyjustpressed[SDLK_TAB /* 9 */]) { //they hit tab, lets toggle what mode they are in if (sp_mode == 0) sp_mode = 1; else if (sp_mode == 1) sp_mode = 2; else if (sp_mode == 2) sp_mode = 0; } if (sjoy.charjustpressed['s' /* 83 */]) { //they hit tab, lets toggle what mode they are in char death[150]; char filename[10]; sprintf(death, "SET_SPRITE_INFO %d %d %d %d %d %d %d %d\n", sp_seq,sp_frame, k[seq[sp_seq].frame[sp_frame]].xoffset, k[seq[sp_seq].frame[sp_frame]].yoffset, k[seq[sp_seq].frame[sp_frame]].hardbox.left, k[seq[sp_seq].frame[sp_frame]].hardbox.top, k[seq[sp_seq].frame[sp_frame]].hardbox.right,k[seq[sp_seq].frame[sp_frame]].hardbox.bottom); strcpy(filename, "dink.ini"); add_text(death,filename); EditorSoundPlayEffect( SOUND_JUMP ); } int modif = 1; if (SDL_GetModState()&KMOD_SHIFT) modif += 9; if (sp_mode == 0) { //ok, we are editing depth dot if (SDL_GetModState()&KMOD_CTRL) { if (sjoy.keyjustpressed[SDLK_RIGHT /* 39 */]) { k[seq[sp_seq].frame[sp_frame]].xoffset += modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_LEFT /* 37 */]) { k[seq[sp_seq].frame[sp_frame]].xoffset -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_UP /* 38 */]) { k[seq[sp_seq].frame[sp_frame]].yoffset -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_DOWN /* 40 */]) { k[seq[sp_seq].frame[sp_frame]].yoffset += modif; EditorSoundPlayEffect( SOUND_STOP ); } } else { if (sjoy.right) { k[seq[sp_seq].frame[sp_frame]].xoffset += modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.left) { k[seq[sp_seq].frame[sp_frame]].xoffset -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.up) { k[seq[sp_seq].frame[sp_frame]].yoffset -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.down) { k[seq[sp_seq].frame[sp_frame]].yoffset += modif; EditorSoundPlayEffect( SOUND_STOP ); } } } if (sp_mode == 2) { //ok, we are top left hardness if (SDL_GetModState()&KMOD_CTRL) { if (sjoy.keyjustpressed[SDLK_RIGHT /* 39 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.right += modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_LEFT /* 37 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.right -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_UP /* 38 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.bottom -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_DOWN /* 40 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.bottom += modif; EditorSoundPlayEffect( SOUND_STOP ); } } else { if (sjoy.right) { k[seq[sp_seq].frame[sp_frame]].hardbox.right += modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.left) { k[seq[sp_seq].frame[sp_frame]].hardbox.right -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.up) { k[seq[sp_seq].frame[sp_frame]].hardbox.bottom -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.down) { k[seq[sp_seq].frame[sp_frame]].hardbox.bottom += modif; EditorSoundPlayEffect( SOUND_STOP ); } } if (k[seq[sp_seq].frame[sp_frame]].hardbox.right <= k[seq[sp_seq].frame[sp_frame]].hardbox.left) k[seq[sp_seq].frame[sp_frame]].hardbox.left = k[seq[sp_seq].frame[sp_frame]].hardbox.right -1; if (k[seq[sp_seq].frame[sp_frame]].hardbox.bottom <= k[seq[sp_seq].frame[sp_frame]].hardbox.top) k[seq[sp_seq].frame[sp_frame]].hardbox.top = k[seq[sp_seq].frame[sp_frame]].hardbox.bottom -1; } if (sp_mode == 1) { //ok, we are top left hardness if (SDL_GetModState()&KMOD_CTRL) { if (sjoy.keyjustpressed[SDLK_RIGHT /* 39 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.left += modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_LEFT /* 37 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.left -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_UP /* 38 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.top -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_DOWN /* 40 */]) { k[seq[sp_seq].frame[sp_frame]].hardbox.top += modif; EditorSoundPlayEffect( SOUND_STOP ); } } else { if (sjoy.right) { k[seq[sp_seq].frame[sp_frame]].hardbox.left += modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.left) { k[seq[sp_seq].frame[sp_frame]].hardbox.left -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.up) { k[seq[sp_seq].frame[sp_frame]].hardbox.top -= modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.down) { k[seq[sp_seq].frame[sp_frame]].hardbox.top += modif; EditorSoundPlayEffect( SOUND_STOP ); } } if (k[seq[sp_seq].frame[sp_frame]].hardbox.left >= k[seq[sp_seq].frame[sp_frame]].hardbox.right) k[seq[sp_seq].frame[sp_frame]].hardbox.right = k[seq[sp_seq].frame[sp_frame]].hardbox.left +1; if (k[seq[sp_seq].frame[sp_frame]].hardbox.top >= k[seq[sp_seq].frame[sp_frame]].hardbox.bottom) k[seq[sp_seq].frame[sp_frame]].hardbox.bottom = k[seq[sp_seq].frame[sp_frame]].hardbox.bottom +1; } if (k[seq[sp_seq].frame[sp_frame]].hardbox.top > 200 ) k[seq[sp_seq].frame[sp_frame]].hardbox.top = 200; if (k[seq[sp_seq].frame[sp_frame]].hardbox.top <-200 ) k[seq[sp_seq].frame[sp_frame]].hardbox.top = -200; if (k[seq[sp_seq].frame[sp_frame]].hardbox.left > 316) k[seq[sp_seq].frame[sp_frame]].hardbox.left = 316; if (k[seq[sp_seq].frame[sp_frame]].hardbox.left < -320) k[seq[sp_seq].frame[sp_frame]].hardbox.left = -320; if (k[seq[sp_seq].frame[sp_frame]].hardbox.bottom > 200) k[seq[sp_seq].frame[sp_frame]].hardbox.bottom = 200; if (k[seq[sp_seq].frame[sp_frame]].hardbox.bottom <-200 ) k[seq[sp_seq].frame[sp_frame]].hardbox.bottom = -200; if (k[seq[sp_seq].frame[sp_frame]].hardbox.right > 316) k[seq[sp_seq].frame[sp_frame]].hardbox.right = 316; if (k[seq[sp_seq].frame[sp_frame]].hardbox.right < -320) k[seq[sp_seq].frame[sp_frame]].hardbox.right = -320; goto b1end; } if (mode == MODE_SCREEN_SPRITES) { // place sprite if ( (sjoy.charjustpressed['v']) ) { in_master = INPUT_SCREEN_VISION; // Set screen vision? } int modif = 0; if (SDL_GetModState()&KMOD_SHIFT) modif = 9; if (sjoy.charjustpressed['m']) { if (sp_screenmatch) sp_screenmatch = /*false*/0; else sp_screenmatch = /*true*/1; } if (SDL_GetModState()&KMOD_ALT) // alt { //alt is held down 87 if (sjoy.charjustpressed['w' /* 87 */]) { //pressed W if (((spr[1].pseq == 10) && (spr[1].pframe == 8))) { //a sprite is not chosen hold_warp_map = cur_map; hold_warp_x = spr[1].x; hold_warp_y= spr[1].y; EditorSoundPlayEffect(SOUND_JUMP); } else { sp_warp_map = hold_warp_map ; sp_warp_x = hold_warp_x; sp_warp_y = hold_warp_y; EditorSoundPlayEffect(SOUND_JUMP); } } } /** * Edit sprite properties */ if (!((spr[1].pseq == 10) && (spr[1].pframe == 8))) { //they are wheeling around a sprite if (spr[1].x > 1500) spr[1].x = 1500; if (spr[1].y > 1500) spr[1].y = 1500; if (spr[1].size > 1500) spr[1].size = 1500; /* if (GetKeyboard(VK_OEM_4 /\* 219 *\/)) // '[' for US */ if (getcharstate('[')) spr[1].size -= 1+modif; /* if (GetKeyboard(VK_OEM_6 /\* 221 *\/)) // ']' for US */ if (getcharstate(']')) spr[1].size += 1+modif; if (SDL_GetModState()&KMOD_SHIFT) { //shift is being held down if (getkeystate('1') || getkeystate(SDLK_KP1) || getkeystate(SDLK_F1)) in_master = 11; if (getkeystate('2') || getkeystate(SDLK_KP2) || getkeystate(SDLK_F2)) in_master = 12; if (getkeystate('3') || getkeystate(SDLK_KP3) || getkeystate(SDLK_F3)) in_master = 13; if (getkeystate('4') || getkeystate(SDLK_KP4) || getkeystate(SDLK_F4)) in_master = 14; if (getkeystate('5') || getkeystate(SDLK_KP5) || getkeystate(SDLK_F5)) in_master = 15; if (getkeystate('6') || getkeystate(SDLK_KP6) || getkeystate(SDLK_F6)) in_master = 16; if (getkeystate('7') || getkeystate(SDLK_KP7) || getkeystate(SDLK_F7)) in_master = 17; if (getkeystate('8') || getkeystate(SDLK_KP8) || getkeystate(SDLK_F8)) in_master = 18; if (getkeystate('9') || getkeystate(SDLK_KP9) || getkeystate(SDLK_F9)) in_master = 19; } else if (SDL_GetModState()&KMOD_ALT) { //alt is being held down if (getkeystate('1') || getkeystate(SDLK_KP1) || getkeystate(SDLK_F1)) in_master = 20; if (getkeystate('2') || getkeystate(SDLK_KP2) || getkeystate(SDLK_F2)) in_master = 21; if (getkeystate('3') || getkeystate(SDLK_KP3) || getkeystate(SDLK_F3)) in_master = 22; /*(getkeystate('4' /\* 52 *\/)) in_master = 14; if (getkeystate(53)) in_master = 15; if (getkeystate(54)) in_master = 16; if (getkeystate(55)) in_master = 17; if (getkeystate(56)) in_master = 18; if (getkeystate(57)) in_master = 19; */ } else { //shift is not being held down if (getkeystate('1') || getkeystate(SDLK_KP1) || getkeystate(SDLK_F1)) in_master = 1; if (getkeystate('2') || getkeystate(SDLK_KP2) || getkeystate(SDLK_F2)) in_master = 2; if (getkeystate('3') || getkeystate(SDLK_KP3) || getkeystate(SDLK_F3)) in_master = 3; if (getkeystate('4') || getkeystate(SDLK_KP4) || getkeystate(SDLK_F4)) in_master = 4; if (getkeystate('5') || getkeystate(SDLK_KP5) || getkeystate(SDLK_F5)) in_master = 5; if (getkeystate('6') || getkeystate(SDLK_KP6) || getkeystate(SDLK_F6)) in_master = 6; if (getkeystate('7') || getkeystate(SDLK_KP7) || getkeystate(SDLK_F7)) in_master = 7; if (getkeystate('8') || getkeystate(SDLK_KP8) || getkeystate(SDLK_F8)) in_master = 8; if (getkeystate('9') || getkeystate(SDLK_KP9) || getkeystate(SDLK_F9)) in_master = 9; if (getkeystate('0') || getkeystate(SDLK_KP0) || getkeystate(SDLK_F10)) in_master = 10; } if (sjoy.charjustpressed['s' /* 83 */]) { smart_add(); draw_map(); } if ( (sjoy.button[EDITOR_ACTION_RETURN]) | (mouse1) ) { smart_add(); draw_map(); spr[1].pseq = 10; spr[1].pframe = 8; spr[1].size = 100; rect_set(&spr[1].alt,0,0,0,0); } if (sjoy.keyjustpressed[SDLK_DELETE /* 46 */]) { spr[1].pseq = 10; spr[1].pframe = 8; spr[1].size = 100; rect_set(&spr[1].alt,0,0,0,0); } } else { //no sprite is currently selected int max_spr = 0; int jj; write_moves(); for (jj=1; jj < 100; jj++) { if ( pam.sprite[jj].active) if (pam.sprite[jj].vision == map_vision) max_spr++; } if (max_spr > 0) { /* if (sjoy.keyjustpressed[VK_OEM_4 /\* 219 *\/]) // '[' for US */ if (sjoy.charjustpressed['[']) { sp_cycle--; if (sp_cycle < 1) sp_cycle = max_spr; } /* if (sjoy.keyjustpressed[VK_OEM_6 /\* 221 *\/]) // ']' for US */ if (sjoy.charjustpressed[']']) { sp_cycle++; if (sp_cycle > max_spr) sp_cycle = 1; } } //Msg("Cycle is %d", sp_cycle); int realpic = 0; if (sp_cycle > 0) { //lets draw a frame around the sprite we want int dumbpic = 0; int jh; realpic = 0; for (jh = 1; dumbpic != sp_cycle; jh++) { if (pam.sprite[jh].active) if ( pam.sprite[jh].vision == map_vision) { dumbpic++; realpic = jh; } if (jh == 99) goto fail; } last_sprite_added = realpic; /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* ddbltfx.dwFillColor = 235; */ int sprite = add_sprite_dumb(pam.sprite[realpic].x,pam.sprite[realpic].y,0, pam.sprite[realpic].seq, pam.sprite[realpic].frame, pam.sprite[realpic].size); rect_copy(&spr[sprite].alt , &pam.sprite[realpic].alt); get_box(sprite, &box_crap, &box_real); get_box(sprite, &box_crap, &box_real); box_crap.bottom = box_crap.top + 5; /* ddrval = lpDDSBack->Blt(&box_crap ,NULL,NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst; dst.x = box_crap.left; dst.y = box_crap.top; dst.w = box_crap.right - box_crap.left; dst.h = 5; SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 33, 41, 16)); } get_box(sprite, &box_crap, &box_real); box_crap.right = box_crap.left + 5; /* ddrval = lpDDSBack->Blt(&box_crap ,NULL,NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst; dst.x = box_crap.left; dst.y = box_crap.top; dst.w = 5; dst.h = box_crap.bottom - box_crap.top; SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 33, 41, 16)); } get_box(sprite, &box_crap, &box_real); box_crap.left = box_crap.right - 5; /* ddrval = lpDDSBack->Blt(&box_crap ,NULL,NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst; dst.x = box_crap.right - 5; dst.y = box_crap.top; dst.w = 5; dst.h = box_crap.bottom - box_crap.top; SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 33, 41, 16)); } get_box(sprite, &box_crap, &box_real); box_crap.top = box_crap.bottom - 5; /* ddrval = lpDDSBack->Blt(&box_crap ,NULL,NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ // GFX { SDL_Rect dst; dst.x = box_crap.left; dst.y = box_crap.bottom - 5; dst.w = box_crap.right - box_crap.left; dst.h = 5; SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 33, 41, 16)); } // if (ddrval != DD_OK) dderror(ddrval); spr[sprite].active = /*false*/0; } fail: if ( (sjoy.button[EDITOR_ACTION_RETURN]) | (mouse1)) { //pick up a sprite already placed by hitting enter int uu; for (uu = 100; uu > 0; uu--) { if ( pam.sprite[uu].active) if ( ( pam.sprite[uu].vision == 0) || (pam.sprite[uu].vision == map_vision)) { int sprite = add_sprite_dumb(pam.sprite[uu].x,pam.sprite[uu].y,0, pam.sprite[uu].seq, pam.sprite[uu].frame, pam.sprite[uu].size); rect_copy(&spr[sprite].alt , &pam.sprite[uu].alt); get_box(sprite, &box_crap, &box_real); if (realpic > 0) goto spwarp; //Msg("Got sprite %d's info. X%d Y %d.",uu,box_crap.left,box_crap.right); if (inside_box(spr[1].x,spr[1].y,box_crap)) { //this is the sprite they want to edit, lets convert them into it // Msg("FOUND SPRITE! It's %d, huh.",uu); if ( 4 > 9) { spwarp: log_debug("Ah yeah, using %d!", realpic); uu = realpic; } spr[1].x = pam.sprite[uu].x; spr[1].y = pam.sprite[uu].y; spr[1].size = pam.sprite[uu].size; sp_type = pam.sprite[uu].type; sp_brain = pam.sprite[uu].brain; sp_speed = pam.sprite[uu].speed; sp_base_walk = pam.sprite[uu].base_walk; sp_base_idle = pam.sprite[uu].base_idle; sp_base_attack = pam.sprite[uu].base_attack; sp_base_hit = pam.sprite[uu].base_hit; sp_timer = pam.sprite[uu].timer; sp_que = pam.sprite[uu].que; sp_seq = pam.sprite[uu].seq; sp_hard = pam.sprite[uu].hard; rect_copy(&spr[1].alt , &pam.sprite[uu].alt); sp_frame = pam.sprite[uu].frame; spr[1].pseq = pam.sprite[uu].seq; spr[1].pframe = pam.sprite[uu].frame; sp_is_warp = pam.sprite[uu].is_warp; sp_warp_map = pam.sprite[uu].warp_map; sp_warp_x = pam.sprite[uu].warp_x; sp_warp_y = pam.sprite[uu].warp_y; sp_parm_seq = pam.sprite[uu].parm_seq; strcpy(sp_script, pam.sprite[uu].script); sp_base_die = pam.sprite[uu].base_die; sp_gold = pam.sprite[uu].gold; sp_hitpoints = pam.sprite[uu].hitpoints; sp_exp = pam.sprite[uu].exp; sp_nohit = pam.sprite[uu].nohit; sp_touch_damage = pam.sprite[uu].touch_damage; sp_defense = pam.sprite[uu].defense; sp_strength = pam.sprite[uu].strength; sp_sound = pam.sprite[uu].sound; pam.sprite[uu].active = /*false*/0; //erase sprite draw_map(); spr[sprite].active = /*false*/0; break; } spr[sprite].active = /*false*/0; } } } if ((SDL_GetModState()&KMOD_ALT) && (getkeystate(SDLK_DELETE /* 46 */))) { int ll; for (ll = 1; ll < 100; ll++) { pam.sprite[ll].active = /*false*/0; } draw_map(); rect_set(&spr[h].alt,0,0,0,0); } } /** Trim a sprite **/ if (getcharstate('z') || (getcharstate('x'))) { if ((spr[h].alt.right == 0) && (spr[h].alt.left == 0) && (spr[h].alt.top == 0) && (spr[h].alt.bottom == 0)) rect_copy(&spr[h].alt, &k[getpic(h)].box); } if (getcharstate('z')) { if (sjoy.keyjustpressed[SDLK_RIGHT /* 39 */]) { spr[h].alt.left += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_LEFT /* 37 */]) { spr[h].alt.left -= spr[h].speed +modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_DOWN /* 40 */]) { spr[h].alt.top += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_UP /* 38 */]) { spr[h].alt.top -= spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); } if (spr[h].alt.top < 0) spr[h].alt.top = 0; if (spr[h].alt.left < 0) spr[h].alt.left = 0; goto b1end; } if (getcharstate('x')) { if (sjoy.keyjustpressed[SDLK_RIGHT /* 39 */]) { spr[h].alt.right += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_LEFT /* 37 */]) { spr[h].alt.right -= spr[h].speed +modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_DOWN /* 40 */]) { spr[h].alt.bottom += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_UP /* 38 */]) { spr[h].alt.bottom -= spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); // Msg("Bottom is %d..",spr[h].alt.bottom); } if (spr[h].alt.bottom > k[getpic(h)].box.bottom) spr[h].alt.bottom = k[getpic(h)].box.bottom; if (spr[h].alt.right > k[getpic(h)].box.right) spr[h].alt.right = k[getpic(h)].box.right; goto b1end; } if (spr[1].size < 1) spr[1].size = 1; /* Precise positionning: move the sprite just 1 pixel left/right/up/down, then don't do move until an arrow key is released and pressed again. */ if (SDL_GetModState()&KMOD_CTRL) { if (sjoy.keyjustpressed[SDLK_RIGHT /* 39 */]) { sp_cycle = 0; spr[h].x += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.keyjustpressed[SDLK_LEFT /* 37 */]) { spr[h].x -= spr[h].speed +modif; EditorSoundPlayEffect( SOUND_STOP ); sp_cycle = 0; } if (sjoy.keyjustpressed[SDLK_UP /* 38 */]) { spr[h].y -= spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); sp_cycle = 0; } if (sjoy.keyjustpressed[SDLK_DOWN /* 40 */]) { spr[h].y += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); sp_cycle = 0; } } else { if (sjoy.right) { spr[h].x += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); sp_cycle = 0; } if (sjoy.left) { spr[h].x -= spr[h].speed +modif; EditorSoundPlayEffect( SOUND_STOP ); sp_cycle = 0; } if (sjoy.up) { spr[h].y -= spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); sp_cycle = 0; } if (sjoy.down) { spr[h].y += spr[h].speed + modif; EditorSoundPlayEffect( SOUND_STOP ); sp_cycle = 0; } } if ( (sjoy.button[EDITOR_ACTION_ESCAPE]) ) { //return to edit mode or drop sprite, depending.. if (((spr[1].pseq == 10) && (spr[1].pframe == 8)) ) { rect_set(&spr[1].alt,0,0,0,0); spr[1].size = 100; mode = MODE_SCREEN_TILES; spr[1].x = m4x; spr[1].y = m4y; spr[1].seq = 3; spr[1].speed = 50; } else { smart_add(); draw_map(); rect_set(&spr[1].alt,0,0,0,0); spr[1].pseq = 10; spr[1].pframe = 8; spr[1].size = 100; } } if (sjoy.charjustpressed['e']) { //they hit E, go to sprite picker rect_set(&spr[1].alt,0,0,0,0); spr[1].size = 100; //mode = 5; mode = MODE_SPRITE_PICKER; m6x = spr[h].x; m6y = spr[h].y; spr[h].x = m5x; spr[h].y = m5y; spr[1].seq = 3; spr[1].speed = 50; if (sp_seq == 0) draw15(sp_picker); else draw96(sp_frame); goto sp_edit_end; } if (sjoy.button[EDITOR_ACTION_TAB]) { //they hit tab, return to tile edit mode if ( !((spr[1].pseq == 10) && (spr[1].pframe == 8)) ) { smart_add(); rect_set(&spr[1].alt,0,0,0,0); draw_map(); } spr[1].size = 100; mode = MODE_SCREEN_TILES; spr[h].x = m4x; spr[h].y = m4y; spr[1].seq = 3; spr[1].speed = 50; // if (sp_seq == 0) draw15(); else draw96(); goto sp_edit_end; } goto b1end; } if ( (mode == MODE_SCREEN_TILES) && (sjoy.button[EDITOR_ACTION_TAB])) { //they chose sprite picker mode //while (kill_last_sprite()); mode = MODE_SCREEN_SPRITES; spr[1].pseq = 10; spr[1].pframe = 8; spr[1].speed = 1; selx = 1; sely = 1; m4x = spr[h].x; m4y = spr[h].y; //spr[h].x = m5x; //spr[h].y = m5y; //if (sp_seq == 0) // draw15(); else draw96(); } else if (mode == MODE_SPRITE_PICKER) { //picking a sprite if (sp_seq != 0) { //they are in select sprite phase 2 if (sjoy.charjustpressed['e']) { //they want to 'edit' the sprite mode = MODE_SPRITE_HARDNESS; m5x = spr[h].x; m5y = spr[h].y; //lets blank the screen /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ /* ddbltfx.dwFillColor = 255; */ /* crap = lpDDSTwo->Blt(NULL ,NULL,NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx); */ // GFX SDL_FillRect(GFX_lpDDSTwo, NULL, SDL_MapRGB(GFX_lpDDSTwo->format, 255, 255, 255)); holdx = (spr[1].x / 50); int holdy = (spr[1].y / 50)+1; holdx = holdx * 8; if (seq[sp_seq].frame[holdx + holdy] == 0) goto sp_fin; add_sprite_dumb(320,200 , 0,sp_seq,holdx + holdy,100 ); sp_frame = holdx + holdy; spr[1].pseq = 10; spr[1].pframe = 8; spr[1].speed = 1; goto sp_edit_end; } if ((sjoy.button[EDITOR_ACTION_ESCAPE])) { //returning to main sprite picker mode sp_seq = 0; draw15(sp_picker); spr[h].x = m5ax; spr[h].y = m5ay; goto sp_edit_end; } if (sjoy.button[EDITOR_ACTION_TAB]) { //leave to screen editor sp_fin: m5x = spr[h].x; m5y = spr[h].y; draw_map(); spr[h].x = m6x; spr[h].y = m6y; spr[1].pseq = 10; spr[1].pframe = 8; spr[h].speed = 1; mode = MODE_SCREEN_SPRITES; goto sp_edit_end; } if (sjoy.button[EDITOR_ACTION_RETURN]) { // go to mode 6, sprite placement m5x = spr[h].x; m5y = spr[h].y; holdx = (spr[1].x / 50); int holdy = (spr[1].y / 50)+1; holdx = holdx * 8; if (seq[sp_seq].frame[holdx + holdy] == 0) goto sp_fin; spr[1].pseq = sp_seq; spr[1].pframe = holdx + holdy; sp_frame = holdx + holdy; draw_map(); spr[h].x = m6x; spr[h].y = m6y; mode = MODE_SCREEN_SPRITES; spr[h].speed = 1; goto sp_edit_end; } goto sp_edit_end; } if (sjoy.button[EDITOR_ACTION_TAB] || sjoy.button[EDITOR_ACTION_ESCAPE]) { //exit to main editor /*m5x = spr[h].x; m5y = spr[h].y; draw_map(); spr[h].x = m4x; spr[h].y = m4y; mode = 3; goto b1end; */ m5x = spr[h].x; m5y = spr[h].y; draw_map(); spr[h].x = m6x; spr[h].y = m6y; spr[h].pseq = 10; spr[h].pframe = 8; spr[h].speed = 1; mode = MODE_SCREEN_SPRITES; goto b1end; //goto sp_edit_end; } /* if (sjoy.keyjustpressed[VK_OEM_4 /\* 219 *\/]) // '[' for US */ if (sjoy.charjustpressed['[']) { if (sp_picker > 95) sp_picker -= 96; else { sp_picker = (4 * 96); } draw15(sp_picker); } /* if (sjoy.keyjustpressed[VK_OEM_6 /\* 221 *\/]) // ']' for US */ if (sjoy.charjustpressed[']']) { if (sp_picker < 400) sp_picker += 96; draw15(sp_picker); } if (sjoy.button[EDITOR_ACTION_RETURN]) { //they chose a catagory, switch to phase 2, it will know cuz sp_seq > 0. holdx = (spr[1].x / 50); int holdy = (spr[1].y / 50)+1; holdx = holdx * 8; m5ax = spr[1].x; m5ay = spr[1].y; spr[1].x = 0; spr[1].y = 0; sp_seq = sp_get(sp_picker+ (holdx + holdy)); // Msg("Sp_seq is %d",sp_seq); draw96(0); } } sp_edit_end: if (mode == MODE_SCREEN_TILES) draw_current(); if (mode == MODE_DIALOG) { spr[h].seq = 2; spr[h].seq_orig = 2; draw_minimap(); spr[1].que = 20000; mode = MODE_MINIMAP; spr[2].active = /*FALSE*/0; spr[3].active = /*FALSE*/0; spr[4].active = /*FALSE*/0; } if (mode == MODE_DIALOG) goto b1end; //mode equals 4, they are in hardness edit mode, so lets do this thang if (mode == MODE_TILE_HARDNESS) { if (spr[h].seq == 0) { if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_RIGHT))) { spr[h].seq = 4; spr[h].frame = 1; if (selx < 8) selx++; goto b1fun; } if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_LEFT))) { spr[h].seq = 4; spr[h].frame = 1; if (selx > 1) selx--; goto b1fun; } if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_UP))) { spr[h].seq = 4; spr[h].frame = 1; if (sely > 1) sely--; goto b1fun; } if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_DOWN))) { spr[h].seq = 4; spr[h].frame = 1; if (sely < 8) sely++; goto b1fun; } if (sjoy.right) { spr[h].x += 9; spr[h].seq = 4; spr[h].frame = 1; EditorSoundPlayEffect(SOUND_STOP); } if (sjoy.left) { spr[h].x -= 9; spr[h].seq = 4; spr[h].frame = 1; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.up) { spr[h].y -= 9; spr[h].seq = 4; spr[h].frame = 1; EditorSoundPlayEffect( SOUND_STOP ); } if (sjoy.down) { spr[h].y += 9; spr[h].seq = 4; spr[h].frame = 1; EditorSoundPlayEffect( SOUND_STOP ); } } b1fun: //make sure they didn't go past the boundrys if (mode != 1) { if (spr[h].x + (9 * (selx -1))> 95+441) spr[h].x = (95+441) - (9 * (selx-1)); if (spr[h].x < 95) spr[h].x = 95; if (spr[h].y < 0) spr[h].y = 0; if (spr[h].y + (9 * (sely -1))> 441) spr[h].y = 441 - (9 * (sely-1)); } //change a piece to hard if (getcharstate('z')) { int y; for (y = 0; y < sely; y++) { int x; for (x = 0; x < selx; x++) { hmap.htile[hard_tile].x[((spr[h].x) + (x*9) - 95) / 9].y[(spr[h].y + (y *9)) / 9] = 1; } } } //change a piece to soft if (getcharstate('x')) { int y; for (y = 0; y < sely; y++) { int x; for (x = 0; x < selx; x++) { hmap.htile[hard_tile].x[((spr[h].x) + (x*9) - 95) / 9].y[(spr[h].y + (y *9)) / 9] = 0; } } } if ( (getcharstate('a')) && (SDL_GetModState()&KMOD_ALT ) ) { //change ALL to 'low hard' change_tile(hard_tile, 2); log_debug("Changing whole tile to 2"); return; } if ( (getcharstate('s')) && (SDL_GetModState()&KMOD_ALT ) ) { //change ALL to 'low hard' change_tile(hard_tile, 3); log_debug("Chaning whole tile to 3"); return; } if ( (getcharstate('x')) && (SDL_GetModState()&KMOD_ALT ) ) { //change ALL to 'low hard' change_tile(hard_tile, 1); log_debug("Changing whole tile to 1"); return; } if (getcharstate('a')) { int y; for (y = 0; y < sely; y++) { int x; for (x = 0; x < selx; x++) { hmap.htile[hard_tile].x[((spr[h].x) + (x*9) - 95) / 9].y[(spr[h].y + (y *9)) / 9] = 2; } } } if (getcharstate('s')) { int y; for (y = 0; y < sely; y++) { int x; for (x = 0; x < selx; x++) { hmap.htile[hard_tile].x[((spr[h].x) + (x*9) - 95) / 9].y[(spr[h].y + (y *9)) / 9] = 3; } } } //update frame with current hard blocks, slow draw_hard(); if (sjoy.button[EDITOR_ACTION_ESCAPE] == 1 || sjoy.button[EDITOR_ACTION_RETURN] == 1) { //quit hardness edit spr[h].seq = 3; spr[h].seq_orig = 3; if (last_modereal == 8) { //return to alt hardness editor draw_map(); last_modereal = 0; spr[h].x = m4x; spr[h].y = m4y; selx = 1; sely = 1; mode = MODE_SCREEN_HARDNESS_INIT; return; //goto skip_draw; } if (last_mode > 0) { loadtile(last_mode); selx = 1; sely = 1; goto b1end; } fill_whole_hard(); draw_map(); spr[h].x = m4x; spr[h].y = m4y; mode = MODE_SCREEN_TILES; selx = 1; sely = 1; } goto b1end; } //THEY WANT TO EDIT HARDNESS if ( (sjoy.charjustpressed['b']) ) { in_master = 31; } if ( (sjoy.charjustpressed['v']) ) { in_master = INPUT_SCREEN_VISION; } if (((mode == MODE_SCREEN_TILES) && (sjoy.button[EDITOR_ACTION_RETURN])) || ((mode == MODE_TILE_PICKER) && (getkeystate(SDLK_SPACE)))) { if (mode == MODE_SCREEN_TILES) cur_tile = pam.t[(((spr[1].y+1)*12) / 50)+(spr[1].x / 50)].square_full_idx0; if (mode == MODE_TILE_PICKER) { cur_tile = (((spr[1].y+1)*12) / 50)+(spr[1].x / 50); cur_tile += (cur_screen * 128) - 128; } while(kill_last_sprite()); draw_current(); if (cur_tile > 0) { if (hmap.btile_default[cur_tile] == 0) { int j; for (j = 1; j < 799; j++) { if (hmap.htile[j].used == /*FALSE*/0) { hmap.btile_default[cur_tile] = j; hmap.htile[j].used = /*TRUE*/1; hard_tile = j; goto tilesel; } } } else hard_tile = hmap.btile_default[cur_tile]; tilesel: xx = cur_tile % 128; /* Rect.left = (xx * 50- (xx / 12) * 600); */ /* Rect.top = (xx / 12) * 50; */ /* Rect.right = Rect.left + 50; */ /* Rect.bottom = Rect.top + 50; */ /* crapRec.top = 0; */ /* crapRec.left = 95; */ /* crapRec.bottom = 450; */ /* crapRec.right = 95+450; */ /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ spr[1].seq = 0; spr[1].pseq = 10; spr[1].pframe = 1; // Display the given tile square fullscreen, for hardness editing /* lpDDSTwo->Blt(&crapRec , tiles[cool+1], */ /* &Rect, DDBLT_DDFX | DDBLT_WAIT,&ddbltfx ); */ // GFX /* Generic scaling */ /* Not perfectly accurate yet: move a 200% sprite to the border of the screen to it is clipped: it's scaled size will slighly vary. Maybe we need to clip the source zone before scaling it.. */ { SDL_Rect src, dst; src.x = (xx % 12) * 50; src.y = (xx / 12) * 50; src.w = 50; src.h = 50; dst.x = 95; dst.y = 0; dst.w = 450; dst.h = 450; cool = cur_tile / 128; gfx_blit_stretch(gfx_tiles[cool+1], &src, GFX_lpDDSTwo, &dst); } m4x = spr[h].x; m4y = spr[h].y; spr[1].x = 95; spr[1].y = 0; selx = 1; sely = 1; mode = MODE_TILE_HARDNESS; } } if ((mode == MODE_TILE_PICKER) || (mode == MODE_SCREEN_TILES)) { //resizing the box if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_RIGHT /* 39 */)) ) { spr[h].seq = 3; spr[h].seq_orig = 3; if (selx < 8) selx++; goto b1end; } if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_LEFT /* 37 */)) ) { spr[h].seq = 3; spr[h].seq_orig = 3; if (selx > 1) selx--; goto b1end; } if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_UP /* 38 */)) ) { spr[h].seq = 3; spr[h].seq_orig = 3; if (sely > 1) sely--; goto b1end; } if ((SDL_GetModState()&KMOD_SHIFT) && (getkeystate(SDLK_DOWN /* 40 */)) ) { spr[h].seq = 3; spr[h].seq_orig = 3; if (sely < 8) sely++; goto b1end; } } if (getkeystate(SDLK_RIGHT)) { spr[h].x += spr[h].speed; spr[h].seq = spr[h].seq_orig; EditorSoundPlayEffect( SOUND_STOP ); } if ((getcharstate('s')) && (mode == MODE_SCREEN_TILES)) { int y; spr[h].seq = 3; spr[h].seq_orig = 3; //EditorSoundPlayEffect( SOUND_JUMP ); pam.t[(((spr[1].y+1)*12) / 50)+(spr[1].x / 50)].square_full_idx0 = cur_tile; for (y = 0; y < sely; y++) { int x; for (x = 0; x < selx; x++) { holdx = (((spr[1].y+1)*12) / 50)+(spr[1].x / 50); holdx += (y * 12); holdx += x; pam.t[holdx].square_full_idx0 = (cur_tile + (y * 12) + x); } } draw_map(); } if ((getcharstate('c')) && (mode == MODE_SCREEN_TILES)) { spr[h].seq = 3; spr[h].seq_orig = 3; //SoundPlayEffect( SOUND_JUMP ); cur_tile = pam.t[(((spr[1].y+1)*12) / 50)+(spr[1].x / 50)].square_full_idx0; draw_map(); } /* Tile selection */ if (mode == MODE_SCREEN_TILES || mode == MODE_TILE_PICKER) { int unit = 0, tile_no = 0; if (getkeystate('1') || getkeystate(SDLK_KP1) || getkeystate(SDLK_F1)) unit = 1; if (getkeystate('2') || getkeystate(SDLK_KP2) || getkeystate(SDLK_F2)) unit = 2; if (getkeystate('3') || getkeystate(SDLK_KP3) || getkeystate(SDLK_F3)) unit = 3; if (getkeystate('4') || getkeystate(SDLK_KP4) || getkeystate(SDLK_F4)) unit = 4; if (getkeystate('5') || getkeystate(SDLK_KP5) || getkeystate(SDLK_F5)) unit = 5; if (getkeystate('6') || getkeystate(SDLK_KP6) || getkeystate(SDLK_F6)) unit = 6; if (getkeystate('7') || getkeystate(SDLK_KP7) || getkeystate(SDLK_F7)) unit = 7; if (getkeystate('8') || getkeystate(SDLK_KP8) || getkeystate(SDLK_F8)) unit = 8; if (getkeystate('9') || getkeystate(SDLK_KP9) || getkeystate(SDLK_F9)) unit = 9; if (getkeystate('0') || getkeystate(SDLK_KP0) || getkeystate(SDLK_F10)) unit = 10; tile_no = unit; if (SDL_GetModState()&KMOD_SHIFT) tile_no = 10 + unit; if (SDL_GetModState()&KMOD_CTRL) tile_no = 20 + unit; if (SDL_GetModState()&KMOD_ALT) tile_no = 30 + unit; if (unit > 0) /* make sure one key was pressed */ loadtile(tile_no); /* Exception: tile #41 = Alt+` */ if (SDL_GetModState()&KMOD_ALT && getkeystate(SDLK_BACKQUOTE)) loadtile(41); /* alternatives for non-US keyboards */ if (getkeystate(SDLK_F11) || getkeystate(SDLK_KP_PERIOD)) loadtile(41); } //if ( (GetKeyboard(48)) && ( (mode == 3) | (mode ==2)) ) loadtile(11); if ((sjoy.button[EDITOR_ACTION_RETURN]) && (mode == MODE_TILE_PICKER)) { // cut to map editer from tile selection spr[h].seq = 3; spr[h].seq_orig = 3; cur_tile = (((spr[1].y+1)*12) / 50)+(spr[1].x / 50); cur_tile += (cur_screen * 128) - 128; //SoundPlayEffect( SOUND_JUMP ); m2x = spr[h].x; m2y = spr[h].y; spr[h].x = m3x; spr[h].y = m3y; mode = MODE_SCREEN_TILES; spr[h].speed = 50; draw_map(); last_mode = 0; } if (sjoy.button[EDITOR_ACTION_ESCAPE] && (mode == MODE_TILE_PICKER)) { // cut to map editer from tile selection spr[h].seq = 3; spr[h].seq_orig = 3; //cur_tile = (((spr[1].y+1)*12) / 50)+(spr[1].x / 50); //SoundPlayEffect( SOUND_JUMP ); m2x = spr[h].x; m2y = spr[h].y; spr[h].x = m3x; spr[h].y = m3y; mode = MODE_SCREEN_TILES; draw_map(); last_mode = 0; goto b1end; } if ( (sjoy.keyjustpressed[SDLK_SPACE]) && (mode == MODE_MINIMAP)) { //make_map_tiny(); draw_map_tiny = 0; } if ( (sjoy.charjustpressed['l']) && (mode == MODE_MINIMAP)) { //if (map.loc[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)] != 0) //{ buf_map = (((spr[1].y+1)*32) / 20)+(spr[1].x / 20); in_master = INPUT_MINIMAP_LOAD; //} } if ( (sjoy.keyjustpressed[SDLK_ESCAPE /* 27 */]) && (mode == MODE_MINIMAP)) { load_info(); draw_minimap(); buf_mode = /*false*/0; } if ( (sjoy.charjustpressed['m']) && (mode == MODE_MINIMAP)) { //set music # for this block in_int = &map.music[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)]; in_master = INPUT_SCREEN_MIDI; } if ( (sjoy.charjustpressed['s']) && (mode == MODE_MINIMAP)) { //set music # for this block in_int = &map.indoor[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)]; in_master = INPUT_SCREEN_TYPE; } if ( (sjoy.charjustpressed['q']) && (mode == MODE_MINIMAP)) { save_hard(); log_info("Info saved."); SDL_Event ev; ev.type = SDL_QUIT; SDL_PushEvent(&ev); return; } if ( (sjoy.button[EDITOR_ACTION_RETURN]) && (mode == MODE_MINIMAP)) { if (buf_mode) { //lets replace this screen buf_mode = /*false*/0; if (!load_map_buf(buffmap.loc[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)])) { draw_minimap(); sjoy.button[EDITOR_ACTION_RETURN] = /*false*/0; return; } load_info(); if (map.loc[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)] == 0) { ( map.loc[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)]) = add_new_map(); //wrongo, let's add the map //draw_minimap(); } map.indoor[buf_map] = buffmap.indoor[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)]; map.music[buf_map] = buffmap.music[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20)]; save_map(map.loc[buf_map]); save_info(); draw_minimap(); return; } load_info(); cur_map= (((spr[1].y+1)*32) / 20)+(spr[1].x / 20); if (map.loc[cur_map] == 0) { //new map screen map.loc[cur_map] = add_new_map(); save_info(); } else load_map(map.loc[cur_map]); spr[h].seq = 3; spr[h].seq_orig = 3; k[seq[3].frame[1]].xoffset = -playl; //SoundPlayEffect( SOUND_JUMP ); log_debug("Y is %d X is %d", spr[h].y, spr[h].x); m1x = spr[h].x; m1y = spr[h].y; spr[h].x = m3x; spr[h].y = m3y; mode = MODE_SCREEN_TILES; spr[h].speed = 50; draw_map(); } /* TODO: where is it in the editor, and what are the keys in the original dinkedit? */ if ( (mode == MODE_SCREEN_TILES) && (getkeystate(189 /* VK_OEM_MINUS */)) ) { spr[h].seq = 3; spr[h].seq_orig = 3; cur_tile--; if (cur_tile < 0) cur_tile = 0; } if ( (mode == MODE_SCREEN_TILES) && (getkeystate(187 /* VK_OEM_PLUS */)) ) { spr[h].seq = 3; spr[h].seq_orig = 3; cur_tile++; //if (cur_tile > 127) cur_tile = 127; } if ((mode == MODE_SCREEN_TILES) && (sjoy.charjustpressed['h'])) { //start althard mode mode = MODE_SCREEN_HARDNESS_INIT; goto skip_draw; } if (mode == MODE_SCREEN_HARDNESS) { //mode for it if (sjoy.keyjustpressed[SDLK_ESCAPE]) { //exit mode 8 mode = MODE_SCREEN_TILES; spr[h].seq = 3; spr[h].seq_orig = 3; draw_map(); goto b1end; } /* if (sjoy.keyjustpressed[/\* VK_OEM_4 *\/ 219]) // '[' for US */ if (sjoy.charjustpressed['[']) { hard_tile--; if (hard_tile < 0) hard_tile = 799; } /* if (sjoy.keyjustpressed[/\* VK_OEM_6 *\/ 221]) // ']' for US */ if (sjoy.charjustpressed[']']) { hard_tile++; if (hard_tile > 799) hard_tile = 0; } if (sjoy.charjustpressed['c']) { //copy tile hardness from current block hard_tile = realhard(xy2screentile(spr[1].x, spr[1].y)); } if (sjoy.charjustpressed['s']) { //stamp tile hardness to selected pam.t[(((spr[1].y+1)*12) / 50)+(spr[1].x / 50)].althard = hard_tile; draw_map(); mode = MODE_SCREEN_HARDNESS_INIT; return; } if (sjoy.keyjustpressed[SDLK_DELETE]) { //stamp tile hardness to selected pam.t[(((spr[1].y+1)*12) / 50)+(spr[1].x / 50)].althard = 0; draw_map(); mode = MODE_SCREEN_HARDNESS_INIT; return; } /* Display the hard tile in the clipboard */ char crapa[20]; sprintf(crapa, "Copy: %d",hard_tile); SaySmall(crapa, 580,400, 255,255,255); draw_hard_tile(spr[1].x,spr[1].y, hard_tile); if (sjoy.keyjustpressed[SDLK_RETURN]) { //they want to edit this alt hardness, let's do it cur_tile = pam.t[xy2screentile(spr[1].x, spr[1].y)].square_full_idx0; xx = cur_tile - (cool * 128); Rect.left = spr[1].x+20; Rect.top = spr[1].y; Rect.right = Rect.left + 50; Rect.bottom = Rect.top + 50; /* crapRec.top = 0; */ /* crapRec.left = 95; */ /* crapRec.bottom = 450; */ /* crapRec.right = 95+450; */ /* ZeroMemory(&ddbltfx, sizeof(ddbltfx)); */ /* ddbltfx.dwSize = sizeof( ddbltfx); */ spr[1].seq = 0; spr[1].pseq = 10; spr[1].pframe = 1; /* lpDDSTwo->Blt(&crapRec , lpDDSBack, */ /* &Rect, DDBLT_DDFX | DDBLT_WAIT,&ddbltfx ); */ // GFX /* In this particular case, we're scaling the whole screen backbuffer by 900% just to scale a single 50x50 square of it... */ { SDL_Rect src, dst; src.x = spr[1].x+20; src.y = spr[1].y; src.w = 50; src.h = 50; dst.x = 95; dst.y = 0; dst.w = 450; dst.h = 450; gfx_blit_stretch(GFX_lpDDSBack, &src, GFX_lpDDSTwo, &dst); } m4x = spr[h].x; m4y = spr[h].y; spr[1].x = 95; spr[1].y = 0; selx = 1; sely = 1; mode = MODE_TILE_HARDNESS; hmap.htile[hard_tile].used = /*true*/1; last_modereal = 8; } } if ((mode == MODE_SCREEN_TILES) && (SDL_GetModState()&KMOD_ALT) && sjoy.charjustpressed['x']) { spr[h].seq = 2; spr[h].seq_orig = 2; m3x = spr[h].x; m3y = spr[h].y; spr[h].x = m1x; spr[h].y = m1y; mode = MODE_MINIMAP; spr[h].speed = 20; load_info(); draw_minimap(); while (kill_last_sprite()); return; } if ((mode == MODE_SCREEN_TILES) && (sjoy.button[EDITOR_ACTION_ESCAPE])) { // jump to map selector selector from map mode save_map(map.loc[cur_map]); spr[h].seq = 2; spr[h].seq_orig = 2; //SoundPlayEffect( SOUND_JUMP ); m3x = spr[h].x; m3y = spr[h].y; //Msg("m1y is %d, math is %d",m1y, (20 * (m1y / 20)) < m1y); spr[h].x = m1x; spr[h].y = m1y; mode = 1; spr[h].speed = 20; load_info(); draw_minimap(); while (kill_last_sprite()); return; } if (getkeystate(SDLK_LEFT)) { spr[h].x -= spr[h].speed; spr[h].seq = spr[h].seq_orig; EditorSoundPlayEffect(SOUND_STOP); } if (getkeystate(SDLK_DOWN)) { spr[h].y += spr[h].speed; spr[h].seq = spr[h].seq_orig; EditorSoundPlayEffect(SOUND_STOP); } if (getkeystate(SDLK_UP)) { spr[h].y -= spr[h].speed; spr[h].seq = spr[h].seq_orig; EditorSoundPlayEffect(SOUND_STOP); } if (spr[h].speed < 1) spr[h].speed = 1; if (spr[h].y > (y - k[getpic(h)].box.bottom)) spr[h].y = y - k[getpic(h)].box.bottom; if (spr[h].x > (x - k[getpic(h)].box.right)) spr[h].x = x - k[getpic(h)].box.right; if (spr[h].x < 0) spr[h].x = 0; if (spr[h].y < 0) spr[h].y = 0; // end human brain (1) if ((mode == MODE_TILE_PICKER) || (mode == MODE_SCREEN_TILES) || (mode == MODE_SPRITE_PICKER) || (mode == MODE_SCREEN_HARDNESS)) { if ((selx * 50 + spr[1].x) > 600) { spr[1].x = 600 - (selx * 50); } } if ((mode == MODE_TILE_PICKER)) { if ((sely * 50 + spr[1].y) > 450) { spr[1].y = 450 - (sely * 50); } } if ((mode == MODE_SCREEN_TILES) || (mode == MODE_SPRITE_PICKER) || (mode == MODE_SCREEN_HARDNESS)) { if ((sely * 50 + spr[1].y) > 400) { spr[1].y = 400 - (sely * 50); } } b1end:; } //end if seq is 0 } //real end of human brain if (spr[h].brain == 2) { if (spr[h].y > (y-k[getpic(h)].box.bottom)) { spr[h].my -= (spr[h].my * 2); // SoundPlayEffect( SOUND_JUMP ); } if (spr[h].x > (x-k[getpic(h)].box.right)) { spr[h].mx -= (spr[h].mx * 2); //SoundPlayEffect( SOUND_JUMP ); } if (spr[h].y < 0) { spr[h].my -= (spr[h].my * 2); //SoundPlayEffect( SOUND_JUMP ); } if (spr[h].x < 0) { spr[h].mx -= (spr[h].mx * 2); //SoundPlayEffect( SOUND_JUMP ); } spr[h].x += spr[h].mx; spr[h].y += spr[h].my; } // end robot(2) if (spr[h].seq > 0) { if (spr[h].frame < 1) { // new anim spr[h].pseq = spr[h].seq; spr[h].pframe = 1; spr[h].frame = 1; spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[1]); } else { // not new anim //is it time? if (thisTickCount > spr[h].delay) { spr[h].frame++; spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[spr[h].frame]); spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame; if (seq[spr[h].seq].frame[spr[h].frame] == -1) { spr[h].frame = 1; spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame; spr[h].delay = (thisTickCount + seq[spr[h].seq].delay[spr[h].frame]); } if (seq[spr[h].seq].frame[spr[h].frame] == 0) { spr[h].pseq = spr[h].seq; spr[h].pframe = spr[h].frame-1; spr[h].frame = 0; spr[h].seq = 0; } } } } if (mode == MODE_SCREEN_TILES) { //need offset to look right k[seq[3].frame[1]].xoffset = -20; greba = 20; } if (mode == MODE_TILE_PICKER) { //pick a tile, needs no offset k[seq[3].frame[1]].xoffset = 0; greba = 0; } // if ( !(( h == 1) & (mode == 9)) ) if (!((h == 1) && (mode == MODE_SCREEN_HARDNESS_INIT))) { if (draw_map_tiny == -1) draw_sprite(GFX_lpDDSBack, h); else draw_sprite(GFX_lpDDSTwo, h); } //Msg("Drew %d.",h); skip_draw: if (spr[h].brain == 1) { if (mode == MODE_SCREEN_TILES || mode == MODE_TILE_PICKER) { /* Draw the tile squares selector, an expandable array of white non-filled squares */ int y; for (y = 0; y < sely; y++) { int x; for (x = 0; x < selx; x++) { /* ddrval = lpDDSBack->BltFast( (spr[h].x+(50 *x))+greba,spr[h].y+(50 * y), k[getpic(h)].k, */ /* &k[getpic(h)].box , DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT ); */ // GFX { SDL_Rect dst; dst.x = spr[h].x + 50*x + greba; dst.y = spr[h].y + 50*y; SDL_BlitSurface(GFX_k[getpic(h)].k, NULL, GFX_lpDDSBack, &dst); } } } } if ((mode == MODE_TILE_HARDNESS)) { /* Display the current "pencil"/square to draw hardness with */ int yy; for (yy = 0; yy < sely; yy++) { int xx; for (xx = 0; xx < selx; xx++) { /* ddrval = lpDDSBack->BltFast( spr[h].x+(9 * xx),spr[h].y+(9 * yy), k[getpic(h)].k, */ /* &k[getpic(h)].box , DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT ); */ // GFX { SDL_Rect dst; dst.x = spr[h].x + 9*xx; dst.y = spr[h].y + 9*yy; SDL_BlitSurface(GFX_k[getpic(h)].k, NULL, GFX_lpDDSBack, &dst); } } } } } } } if (mode == MODE_SCREEN_HARDNESS_INIT) { mode = MODE_SCREEN_HARDNESS; fill_whole_hard(); while(kill_last_sprite()); place_sprites(); /* draw_map(); rcRect.top = 0; rcRect.right = x; rcRect.bottom = y; ddrval = lpDDSBack->BltFast( 0, 0, lpDDSTwo, &rcRect, DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT); */ drawallhard(); rcRect.left = 0; rcRect.right = 640; rcRect.top = 0; rcRect.bottom = 400; /* ddrval = lpDDSTwo->BltFast( 0, 0, lpDDSBack, */ /* &rcRect, DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT); */ /* if (ddrval != DD_OK) dderror(ddrval); */ // GFX SDL_BlitSurface(GFX_lpDDSBack, NULL, GFX_lpDDSTwo, NULL); while(kill_last_sprite()); } //sprintf(msg, "k[1] top is %d",k[1].box.top); //prepare to display misc messages for debug purposes /* if (lpDDSBack->GetDC(&hdc) == DD_OK) */ /* { */ /* SetBkMode(hdc, TRANSPARENT); */ /* // SetBkMode(hdc, OPAQUE); */ /* SetBkColor(hdc, 1); */ /* SetTextColor(hdc,RGB(200,200,200)); */ FONTS_SetTextColor(200, 200, 200); // TextOut(hdc,0,0, msg,lstrlen(msg)); // if (mode == 0) strcpy(msg,""); if (mode == MODE_DIALOG) strcpy(msg,""); if (mode == MODE_MINIMAP) { if (20 * (spr[1].y / 20) != spr[1].y) { spr[1].y += 10; } sprintf(msg, "Map # %d - Press ENTER to edit, SPACE to detail map. (%d) (Q) to quit and save. L to replace a " "screen from another map file. Z to toggle this help text. S to modify screentype. M to modify midi.", mode, (((spr[1].y+1)*32) / 20)+(spr[1].x / 20)); /* map.loc[(((spr[1].y+1)*32) / 20)+(spr[1].x / 20) ]); */ } if (mode == MODE_SCREEN_TILES) { //((x-1) - (x / 12))*50, (x / 12) * 50, sprintf(msg, "Map # %d, (C)opy or (S)tamp tile. ESC to exit to map picker. ENTER to edit hardness. TAB for sprite edit mode. 1-10 for tilescreens. (hold alt, crtl or shift for more) SPACE to show hardness of screen. (I)nfo on sprites." " V to change vision, B to change maps base .C file.", mode); /* cur_map, */ /* cur_tile, */ /* pam.t[crap].num); */ } if (mode == MODE_TILE_PICKER) sprintf(msg, "Map # %d - Current tile # %d - ENTER to choose, SPACE to edit hardness.", mode, cur_map); /* (((spr[1].y+1)*12) / 50)+(spr[1].x / 50)); */ if (mode == MODE_TILE_HARDNESS) { sprintf(msg, "X:%d Y:%d: Density index %d Z to harden, X to soften, A for low-hard, S for ???.\n" "Alt+X/A/S to fill hardness. Shift+direction for larger brush. ENTER or ESC to exit.", (spr[1].x / 9) -9,(spr[1].y / 9) +1, hard_tile); } if (mode == MODE_SPRITE_PICKER) { if (sp_seq == 0) { sprintf(msg, "Choose sequence and press ENTER. ] for next page, [ for previous. ESC or TAB to exit. (now on page %d)", 1+(sp_picker / 96)); } else { sprintf(msg, "Choose a sprite from sequence %d. Enter to place sprite, TAB to exit or ESC to return to previous screen." " E to edit depth dot and hardbox", sp_seq); } } if (mode == MODE_SCREEN_SPRITES) { char crap7[80]; if (sp_screenmatch) strcpy(crap7, "ScreenMatch is ON."); else strcpy(crap7, "ScreenMatch is OFF"); sprintf(msg, "Press ENTER to pickup/putdown sprite. Space to show hardness. E to edit/pick new sprite. SHIFT to move fast. (S)tamp sprite. ] &" "[ to scale (now at %d). DEL to erase sprite. Press 1 through 9 to change sprite attributes. (hold alt or shift for more) Last sprite touched: %d %s (M to toggle)" "Hold Z or X + arrow keys to trim a sprite. V to change Vision mode. X: %d Y: %d", spr[1].size,last_sprite_added,crap7, spr[1].x, spr[1].y); //lets draw the depth dot } if (mode == MODE_SPRITE_HARDNESS) { if (sp_mode == 0) { sprintf(msg, "Editing depth dot for Seq %d, frame %d. SHIFT to move fast. Control to move one" " pixel. TAB for next edit option. ESC to return to sprite picker. S to save to dink.ini.", sp_seq,sp_frame); } if ( (sp_mode == 1) ) { sprintf(msg, "Editing hardbox up left cordinate for Seq %d, frame %d. SHIFT to move fast. Control to move one" " pixel. TAB for next edit option. ESC to return to sprite picker. S to save to dink.ini. X: %d Y: %d", sp_seq,sp_frame, k[seq[sp_seq].frame[sp_frame]].hardbox.left, k[seq[sp_seq].frame[sp_frame]].hardbox.top); } if ( (sp_mode == 2) ) { sprintf(msg, "Editing hardbox down right cordinate for Seq %d, frame %d. SHIFT to move fast. Control to move one" " pixel. TAB for next edit option. ESC to return to sprite picker. S to save to dink.ini. X: %d Y: %d", sp_seq,sp_frame, k[seq[sp_seq].frame[sp_frame]].hardbox.right, k[seq[sp_seq].frame[sp_frame]].hardbox.bottom); } } if (mode == MODE_SCREEN_HARDNESS) { int screentile = xy2screentile(spr[1].x, spr[1].y); int sourcetile = pam.t[screentile].square_full_idx0; int defaulthardness = hmap.btile_default[sourcetile]; int curhardness = realhard(screentile); char str[100]; if (defaulthardness == curhardness) sprintf(str, "Current %03d (default %03d tile %03d)", curhardness, defaulthardness, sourcetile); else sprintf(str, "Current %03d (default %03d tile %03d) (alternate)", curhardness, defaulthardness, sourcetile); sprintf(msg, "Alternative Tile Hardness Selector: Press S to stamp this tiles hardness." " DEL to remove alternate hardness." " C to copy from current block." " [ & ] to cycle." " ESCAPE to exit.\n" "%s", str); } { int x; for (x = 0; x < 256; x++) { if (getkeystate(x)) { sprintf(msg + strlen(msg), " (Key %i)", x); } } } rcRect.left = 0; rcRect.top = 400; if (mode == MODE_TILE_HARDNESS) rcRect.top = 450; rcRect.right = 590; rcRect.bottom = 480; if (show_display) { /* Display help message at the bottom of the screen */ /* DrawText(hdc,msg,lstrlen(msg),&rcRect,DT_WORDBREAK); */ // FONTS print_text_wrap(msg, &rcRect, 0, 0, FONT_SYSTEM); } /* lpDDSBack->ReleaseDC(hdc); */ /* } /\* GetDC(&hdc) *\/ */ if ((mode == MODE_MINIMAP)) { if (sjoy.charjustpressed['z']) { if (show_display) show_display = /*false*/0; else show_display = /*true*/1; } } if ( (mode == MODE_SCREEN_SPRITES) | (mode == MODE_SCREEN_TILES) ) { /* Show sprites info */ if (getcharstate('i')) { int j; for (j = 1; j < 100; j++) { if (pam.sprite[j].active == /*true*/1) { /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* ddbltfx.dwFillColor = 230; */ //info on the sprites sprite info /* int temp = s_index[pam.sprite[j].seq].s + pam.sprite[j].frame; */ int sprite2 = add_sprite_dumb(pam.sprite[j].x,pam.sprite[j].y,0, pam.sprite[j].seq,pam.sprite[j].frame, pam.sprite[j].size); rect_copy(&spr[sprite2].alt , &pam.sprite[j].alt); get_box(sprite2, &box_crap, &box_real); spr[sprite2].active = /*false*/0; //box_crap.top = box_crpam.sprite[j].y - 25; box_crap.bottom = box_crap.top + 50; box_crap.left = box_crap.left + ( (box_crap.right - box_crap.left) / 2); box_crap.right = box_crap.left+ 50; /* ddrval = lpDDSBack->Blt(&box_crap ,k[seq[10].frame[5]].k,&k[seq[10].frame[5]].box, DDBLT_WAIT, &ddbltfx); */ // if (ddrval != DD_OK) dderror(ddrval); // GFX { SDL_Rect dst; SDL_Surface *sprite = GFX_k[seq[10].frame[5]].k; dst.x = box_crap.left; dst.y = box_crap.top; /* Simplified blit, no scaling, the sprite is already 50x50 */ /* We need to avoid transparency though */ Uint32 colorkey = sprite->format->colorkey; SDL_SetColorKey(sprite, 0, 0); /* Temporarily disable transparent color */ SDL_BlitSurface(sprite, NULL, GFX_lpDDSBack, &dst); SDL_SetColorKey(sprite, SDL_SRCCOLORKEY, colorkey); } char crap5[200]; char crap6[20]; strcpy(crap6,""); if (pam.sprite[j].hard == 0) strcpy(crap6,"HARD"); sprintf(crap5, "B: %d %s",pam.sprite[j].brain,crap6); if (pam.sprite[j].type == 0) { SaySmall(crap5,box_crap.left+3,box_crap.top+3,255,255,255); } if (pam.sprite[j].type > 0) { SaySmall(crap5,box_crap.left+3,box_crap.top+3,255,0,0); } if (strlen(pam.sprite[j].script) > 1) SaySmall(pam.sprite[j].script,box_crap.left+3,box_crap.top+35,255,0,0); sprintf(crap6,"%d",j); SaySmall(crap6,box_crap.left+20,box_crap.top-15,0,255,0); } } } } if (mode == MODE_SPRITE_HARDNESS) { /* ddbltfx.dwSize = sizeof(ddbltfx); */ /* ddbltfx.dwFillColor = 230; */ if (sp_mode == 0) { //draw depth dot for sprite attribute edit /* box_crap.top = spr[2].y; */ /* box_crap.bottom = spr[2].y+1; */ /* box_crap.left = spr[2].x - 20; */ /* box_crap.right = spr[2].x + 20; */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL,NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) dderror(ddrval); */ // GFX { SDL_Rect dst; dst.x = spr[2].x - 20; dst.y = spr[2].y; dst.w = 40; dst.h = 1; SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 41, 0, 49)); } /* box_crap.top = spr[2].y-20; */ /* box_crap.bottom = spr[2].y+20; */ /* box_crap.left = spr[2].x; */ /* box_crap.right = spr[2].x +1; */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL,NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) dderror(ddrval); */ // GFX { SDL_Rect dst; dst.x = spr[2].x; dst.y = spr[2].y - 20; dst.w = 1; dst.h = 40; SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 41, 0, 49)); } } if ((sp_mode == 1) | (sp_mode == 2) ) { //draw hardbox dot for sprite attribute edit /* box_crap = k[seq[sp_seq].frame[sp_frame]].hardbox; */ /* OffsetRect(&box_crap,320,200); */ /* ddrval = lpDDSBack->Blt(&box_crap ,NULL,NULL, DDBLT_COLORFILL| DDBLT_WAIT, &ddbltfx); */ /* if (ddrval != DD_OK) Msg("Error with drawing hard block... you know why."); */ // GFX { SDL_Rect dst; dst.x = k[seq[sp_seq].frame[sp_frame]].hardbox.left + 320; dst.y = k[seq[sp_seq].frame[sp_frame]].hardbox.top + 200; dst.w = k[seq[sp_seq].frame[sp_frame]].hardbox.right - k[seq[sp_seq].frame[sp_frame]].hardbox.left; dst.h = k[seq[sp_seq].frame[sp_frame]].hardbox.bottom - k[seq[sp_seq].frame[sp_frame]].hardbox.top; SDL_FillRect(GFX_lpDDSBack, &dst, SDL_MapRGB(GFX_lpDDSTwo->format, 41, 0, 49)); } } } if (in_enabled) { //text window is open, lets act accordingly //check_joystick(); if (getkeystate(SDLK_RETURN) || getkeystate(SDLK_KP_ENTER)) { //exit text mode if (in_command == 2) { if (in_string != NULL) strcpy(in_string, in_temp); else log_error("Error, in_char pointer not set, can't issue a value."); } if (in_command == 1) { if (in_int != NULL) { char *stop; int in_crap = strtol(in_temp, &stop,10); in_crap2 = in_crap; if ((old_command == INPUT_SCREEN_MIDI) || (old_command == INPUT_SCREEN_TYPE)) load_info(); *in_int = in_crap2; if ((old_command == INPUT_SCREEN_MIDI) || (old_command == INPUT_SCREEN_TYPE)) save_info(); } else { log_error("in_int pointer not set, can't issue a value."); } } in_command = 0; if (in_huh == 3) { if (in_crap2 == 3) { //default duck settings sp_speed = 1; sp_base_walk = 20; sp_base_idle = -1; sp_base_hit = -1; sp_base_attack = -1; sp_timer = 33; sp_type = 1; sp_que = 0; sp_hard = 1; } if (in_crap2 == 4) { //default pig settings sp_speed = 1; sp_base_walk = 40; sp_base_idle = -1; sp_base_hit = -1; sp_base_attack = -1; sp_timer = 66; sp_type = 1; sp_que = 0; sp_hard = 1; } if (in_crap2 == 9) { //default diag settings sp_speed = 1; sp_base_walk = (sp_seq / 10) * 10; sp_base_idle = -1; sp_base_hit = -1; sp_base_attack = -1; sp_timer = 66; sp_type = 1; strcpy(sp_script, ""); sp_que = 0; sp_hard = 1; } if (in_crap2 == 10) { //default diag settings sp_speed = 1; sp_base_walk = (sp_seq / 10) * 10; sp_base_idle = -1; sp_base_hit = -1; sp_base_attack = -1; sp_timer = 66; sp_type = 1; strcpy(sp_script, ""); sp_que = 0; sp_hard = 1; } } in_enabled = 0; } else if (sjoy.keyjustpressed[SDLK_ESCAPE]) { in_enabled = 0; } else if (sjoy.keyjustpressed[SDLK_BACKSPACE]) // if (getkey(8)) //this is a much faster backspace than the above { if (strlen(in_temp) > 0) in_temp[strlen(in_temp)-1] = 0; } else if (strlen(in_temp) < in_max) { if (isprint(sjoy.last_unicode)) sprintf(in_temp + strlen(in_temp), "%c", sjoy.last_unicode); } if (in_enabled) { Say(in_temp,260,200); } else { /* Redraw last mode */ if (mode == MODE_MINIMAP) { if (old_command == INPUT_MINIMAP_LOAD) draw_minimap_buff(); else draw_minimap(); } else { draw_map(); } } } if (in_master != 0) check_in(); //open a text window? if (in_onflag) { //start it up //copy screen to Two /* SetRect(&rcRect, 0, 0, 640, 480); */ /* ddrval = lpDDSTwo->Blt( &rcRect, lpDDSBack, &rcRect, DDBLT_WAIT, NULL); */ /* if (ddrval != DD_OK) dderror(ddrval); */ // GFX // TODO: use copy_front_to_two() SDL_BlitSurface(GFX_lpDDSBack, NULL, GFX_lpDDSTwo, NULL); strcpy(in_temp,in_default); in_x = 270; in_y = 190; in_onflag = /*false*/0; in_enabled = /*true*/1; } //MAIN PAGE FLIP DONE HERE if (getkeystate(SDLK_SPACE) && (mode != 1)) { drawallhard(); } if (draw_map_tiny != -1) { int huh = 0; //if (draw_map_tiny > 32) huh = 1; shrink_screen_to_these_cords( (draw_map_tiny-1) * 20 - ((((draw_map_tiny-1) / 32) * 640) ) , ((((draw_map_tiny-1) / 32)- huh) * 20)); //Msg("Just flipped # %d", draw_map_tiny); } /* if (!windowed) */ /* { */ /* while( 1 ) */ /* { */ /* ddrval = lpDDSPrimary->Flip(NULL,DDFLIP_WAIT ); */ /* if( ddrval == DD_OK ) */ /* { */ /* break; */ /* } */ /* if( ddrval == DDERR_SURFACELOST ) */ /* { */ /* ddrval = restoreAll(); */ /* if( ddrval != DD_OK ) */ /* { */ /* break; */ /* } */ /* } */ /* if( ddrval != DDERR_WASSTILLDRAWING ) */ /* { */ /* dderror(ddrval); */ /* } */ /* } */ /* if (draw_map_tiny != -1) */ /* { */ //extra flip /* ddrval = lpDDSPrimary->Flip(NULL,DDFLIP_WAIT ); */ /* } */ /* } else */ /* { */ flip_it(); /* //windowed mode, no flipping p.x = 0; p.y = 0; ClientToScreen(hWndMain, &p); GetClientRect(hWndMain, &rcRectDest); //rcRectDest.top += winoffset; rcRectDest.bottom = 480; rcRectDest.right = 640; OffsetRect(&rcRectDest, p.x, p.y); SetRect(&rcRectSrc, 0, 0, 640, 480); ddbltfx.dwSize = sizeof(ddbltfx); ddbltfx.dwDDFX = DDBLTFX_NOTEARING; ddrval = lpDDSPrimary->Blt( &rcRectDest, lpDDSBack, &rcRectSrc, DDBLT_DDFX | DDBLT_WAIT, &ddbltfx); */ /* } */ } /* updateFrame */ int load_editor_sounds() { int i; if (InitSound() < 0) return -1; /* * Load all sounds */ for(i = 0; i < NUM_SOUND_EFFECTS; i++) { char *filename = szSoundEffects[i]; log_info("Loading sound %s [%d]", filename, i); /* Try from resources */ SDL_RWops* rwops; rwops = find_resource_as_rwops(filename); if (rwops != NULL) CreateBufferFromWaveFile_RW(rwops, 1, i); else log_error("Cannot load sound effect %s, from resources or from %s", filename, paths_getpkgdatadir()); } return 1; } /* * doInit - do work required for every instance of the application: * create the window, initialize data */ static int doInit(int argc, char *argv[]) { dinkedit = 1; /* New initialization */ if (init(argc, argv, "tiles/esplash.bmp") < 0) return -1; /* Difference with the game: attempt to get a Unicode key state (to handle '[' and ']' in a layout-independant way, namely) */ SDL_EventState(SDL_KEYUP, SDL_ENABLE); /** SETUP **/ /* Manually setup basic sequences */ { int i = 1; for (; i <= 4; i++) { spr[i].active = 0; spr[i].x = 10; spr[i].y = 10; spr[i].my = (rand() % 3)+1; spr[i].mx = (rand() % 3)+1; spr[i].seq = 1; spr[i].speed = (rand() % 40)+1; spr[i].brain = 2; spr[i].pseq = 10; spr[i].pframe = 3; spr[i].size = 100; } } spr[1].active = /*TRUE*/1; spr[1].x = 0; spr[1].y = 0; spr[1].speed = 20; spr[1].brain = 1; rect_set(&spr[1].alt,0,0,0,0); spr[1].pseq = 10; spr[1].pframe = 3; spr[1].seq = 0; spr[1].seq = 2; //sprite sequence setup seq[1].frame[1] = seq[10].frame[1]; seq[1].frame[2] = seq[10].frame[2]; seq[1].frame[3] = seq[10].frame[3]; // FIX: end of sequence is 0, not -1. This made the editor crash. // seq[1].frame[4] = -1; seq[1].frame[4] = 0; seq[1].delay[1] = 50; seq[1].delay[2] = 50; seq[1].delay[3] = 50; seq[1].delay[4] = 50; seq[2].frame[1] = seq[10].frame[4]; seq[2].frame[2] = seq[10].frame[4]; seq[2].frame[3] = seq[10].frame[4]; seq[2].frame[4] = 0; seq[2].delay[1] = 10; seq[2].delay[2] = 10; seq[2].delay[3] = 10; seq[2].delay[4] = 10; seq[3].frame[1] = seq[10].frame[5]; seq[3].frame[2] = seq[10].frame[5]; seq[3].frame[3] = seq[10].frame[5]; seq[3].frame[4] = 0; seq[3].delay[1] = 5; seq[3].delay[2] = 5; seq[3].delay[3] = 5; seq[3].delay[4] = 5; seq[4].frame[1] = seq[10].frame[1]; seq[4].frame[2] = seq[10].frame[1]; seq[4].frame[3] = 0; seq[4].frame[4] = 0; seq[4].delay[1] = 2; seq[4].delay[2] = 2; seq[4].delay[3] = 2; seq[4].delay[4] = 2; if (sound_on) load_editor_sounds(); mode = MODE_DIALOG; cur_tile = 1; load_info(); playl = 20; playx = 620; playy = 480; sp_seq = 0; return 0; } int main(int argc, char *argv[]) { /* Initialize/setup */ int init_ret = doInit(argc, argv); if (init_ret == 0) { /* Main loop */ while(1) { SDL_Event event; SDL_PumpEvents(); /* Check if we need to quit */ if (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_QUIT)) > 0) break; /* Fullscreen <-> window */ if ((SDL_GetModState()&KMOD_ALT) && GetKeyboard(SDLK_RETURN)) { /* Note: as of 2008-08-07, only works under X11 */ int success = SDL_WM_ToggleFullScreen(GFX_lpDDSBack); if (!success) /* Try using a more portable way: */ gfx_toggle_fullscreen(); } updateFrame(); /* Clean-up finished sounds: normally this is done by SDL_mixer but since we're using effects tricks to stream&resample sounds, we need to do this manually. */ sfx_cleanup_finished_channels(); } } /* Uninitialize/clean-up */ finiObjects(); if (init_ret < 0) return EXIT_FAILURE; else return EXIT_SUCCESS; } freedink-108.4+dfsg/src/screen.c0000644000175000017500000002260712420231175014236 0ustar meme/** * Screen sprites and hardness * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include "dinkvar.h" #include "screen.h" #include "gfx.h" #include "sfx.h" #include "log.h" /** * Fills a int[MAX_SPRITES_EDITOR] with the index of the current * screen's sprites, sorted by ascending height/queue. */ void screen_rank_map_sprites(int* rank) { memset(rank, 0, MAX_SPRITES_EDITOR * sizeof(int)); int r1 = 0; int already_checked[MAX_SPRITES_EDITOR+1]; memset(already_checked, 0, sizeof(already_checked)); for (r1 = 0; r1 < MAX_SPRITES_EDITOR; r1++) { int highest_sprite = 22000; //more than it could ever be rank[r1] = 0; int h1; for (h1 = 1; h1 <= MAX_SPRITES_EDITOR; h1++) { if (already_checked[h1] == 0 && pam.sprite[h1].active) { int height; if (pam.sprite[h1].que != 0) height = pam.sprite[h1].que; else height = pam.sprite[h1].y; if (height < highest_sprite) { highest_sprite = height; rank[r1] = h1; } } } if (rank[r1] != 0) already_checked[rank[r1]] = 1; } } /** * Fills a int[MAX_SPRITES_AT_ONCE] with the index of the current * screen's sprites, sorted by ascending height/queue. */ void screen_rank_game_sprites(int* rank) { memset(rank, 0, MAX_SPRITES_AT_ONCE * sizeof(int)); int r1 = 0; int already_checked[MAX_SPRITES_AT_ONCE+1]; memset(already_checked, 0, sizeof(already_checked)); for (r1 = 0; r1 < last_sprite_created; r1++) { int highest_sprite = 22000; //more than it could ever be rank[r1] = 0; int h1; for (h1 = 1; h1 <= last_sprite_created; h1++) { if (already_checked[h1] == 0 && spr[h1].active) { int height; if (spr[h1].que != 0) height = spr[h1].que; else height = spr[h1].y; if (height < highest_sprite) { highest_sprite = height; rank[r1] = h1; } } } if (rank[r1] != 0) already_checked[rank[r1]] = 1; } } /** * Load screen sprites: draw sprites on background buffer, ordered by queue * and configure the others (sounds, scripts, etc.). * * Also cf. cf. place_sprites_game_background(...) and editor's * place_sprites(...). */ void place_sprites_game() { update_play_changes(); int rank[MAX_SPRITES_EDITOR]; screen_rank_map_sprites(rank); int r1 = 0; for (; r1 < MAX_SPRITES_EDITOR && rank[r1] > 0; r1++) { //Msg("Ok, rank[%d] is %d.",oo,rank[oo]); int j = rank[r1]; if (pam.sprite[j].active == 1 && (pam.sprite[j].vision == 0 || pam.sprite[j].vision == *pvision)) { check_seq_status(pam.sprite[j].seq); //we have instructions to make a sprite if (pam.sprite[j].type == 0 || pam.sprite[j].type == 2) { //make it part of the background (much faster) int sprite = add_sprite_dumb(pam.sprite[j].x,pam.sprite[j].y, 0, pam.sprite[j].seq,pam.sprite[j].frame, pam.sprite[j].size); spr[sprite].hard = pam.sprite[j].hard; spr[sprite].sp_index = j; rect_copy(&spr[sprite].alt , &pam.sprite[j].alt); check_sprite_status_full(sprite); if (pam.sprite[j].type == 0) draw_sprite_game(GFX_lpDDSTwo, sprite); if (spr[sprite].hard == 0) { /*if (pam.sprite[j].is_warp == 0) add_hardness(sprite, 1); else */ add_hardness(sprite, 100 + j); } spr[sprite].active = 0; } if (pam.sprite[j].type == 1) { //make it a living sprite int sprite = add_sprite_dumb(pam.sprite[j].x,pam.sprite[j].y, 0, pam.sprite[j].seq,pam.sprite[j].frame, pam.sprite[j].size); spr[sprite].hard = pam.sprite[j].hard; //assign addition parms to the new sprite spr[sprite].sp_index = j; spr[sprite].brain = pam.sprite[j].brain; spr[sprite].speed = pam.sprite[j].speed; spr[sprite].base_walk = pam.sprite[j].base_walk; spr[sprite].base_idle = pam.sprite[j].base_idle; spr[sprite].base_attack = pam.sprite[j].base_attack; spr[sprite].base_hit = pam.sprite[j].base_hit; spr[sprite].hard = pam.sprite[j].hard; spr[sprite].timer = pam.sprite[j].timer; spr[sprite].que = pam.sprite[j].que; spr[sprite].sp_index = j; rect_copy(&spr[sprite].alt , &pam.sprite[j].alt); spr[sprite].base_die = pam.sprite[j].base_die; spr[sprite].strength = pam.sprite[j].strength; spr[sprite].defense = pam.sprite[j].defense; spr[sprite].gold = pam.sprite[j].gold; spr[sprite].exp = pam.sprite[j].exp; spr[sprite].nohit = pam.sprite[j].nohit; spr[sprite].touch_damage = pam.sprite[j].touch_damage; spr[sprite].hitpoints = pam.sprite[j].hitpoints; spr[sprite].sound = pam.sprite[j].sound; check_sprite_status_full(sprite); if (pam.sprite[j].is_warp == 0 && spr[sprite].sound != 0) { //make looping sound log_debug("making sound with sprite %d..", sprite); SoundPlayEffect( spr[sprite].sound,22050, 0,sprite, 1); } if (spr[sprite].brain == 3) { // Duck check_seq_status(21); check_seq_status(23); check_seq_status(24); check_seq_status(26); check_seq_status(27); check_seq_status(29); // Headless duck check_seq_status(111); check_seq_status(113); check_seq_status(117); check_seq_status(119); // Duck head check_seq_status(121); check_seq_status(123); check_seq_status(127); check_seq_status(129); } if (spr[sprite].hard == 0) { /* if (pam.sprite[j].is_warp == 0) add_hardness(sprite, 1); else */ add_hardness(sprite, 100+j); } //does it need a script loaded? if (strlen(pam.sprite[j].script) > 1) { spr[sprite].script = load_script(pam.sprite[j].script, sprite, /*true*/1); } } //Msg("I just made sprite %d because rank[%d] told me to..",sprite,j); } } } /** * Draw background sprites and background (not looking at * non-background sprites), ordered by queue. * * Also cf. place_sprites_game(...) and editor's place_sprites(...). */ void place_sprites_game_background() { int rank[MAX_SPRITES_EDITOR]; screen_rank_map_sprites(rank); int r1 = 0; for (; r1 < MAX_SPRITES_EDITOR && rank[r1] > 0; r1++) { //Msg("Ok, rank[%d] is %d.",oo,rank[oo]); int j = rank[r1]; if (pam.sprite[j].active == 1 && (pam.sprite[j].vision == 0 || pam.sprite[j].vision == *pvision)) { if (pam.sprite[j].type == 0) { //we have instructions to make a sprite check_seq_status(pam.sprite[j].seq); //make it part of the background (much faster) int sprite = add_sprite_dumb(pam.sprite[j].x,pam.sprite[j].y, 0, pam.sprite[j].seq,pam.sprite[j].frame, pam.sprite[j].size); check_sprite_status_full(sprite); draw_sprite_game(GFX_lpDDSTwo, sprite); spr[sprite].active = 0; } } } } void fill_back_sprites() { int rank[MAX_SPRITES_EDITOR]; screen_rank_map_sprites(rank); int r1 = 0; for (; r1 < MAX_SPRITES_EDITOR && rank[r1] > 0; r1++) { //Msg("Ok, rank[%d] is %d.",oo,rank[oo]); int j = rank[r1]; if (pam.sprite[j].active == 1 && (pam.sprite[j].vision == 0 || pam.sprite[j].vision == *pvision)) { if (pam.sprite[j].type != 1 && pam.sprite[j].hard == 0) { //make it part of the background (much faster) int sprite = add_sprite_dumb(pam.sprite[j].x,pam.sprite[j].y, 0, pam.sprite[j].seq,pam.sprite[j].frame, pam.sprite[j].size); spr[sprite].hard = pam.sprite[j].hard; spr[sprite].sp_index = j; rect_copy(&spr[sprite].alt , &pam.sprite[j].alt); check_sprite_status_full(sprite); if (spr[sprite].hard == 0) { /*if (pam.sprite[j].is_warp == 0) add_hardness(sprite, 1); else */ add_hardness(sprite,100+j); } spr[sprite].active = 0; } } } } void fill_hard_sprites() { int rank[MAX_SPRITES_AT_ONCE]; screen_rank_game_sprites(rank); int r1 = 0; for (; r1 < last_sprite_created && rank[r1] > 0; r1++) { int h = rank[r1]; if (spr[h].active) { // Msg("proccesing sprite %d", h); if (spr[h].sp_index != 0) { //Msg("has spindex of %d is_warp is %d",spr[h].sp_index,pam.sprite[spr[h].sp_index].is_warp); if (pam.sprite[spr[h].sp_index].hard == 0) { add_hardness(h,100+spr[h].sp_index); //Msg("added warp hardness for %d", spr[h].sp_index); } } else { if (spr[h].hard == 0) { //Msg("adding a new sprite hardness %d (not from editor)", h); add_hardness(h, 1); } } } } } freedink-108.4+dfsg/src/dinkc_sp_custom.h0000644000175000017500000000230512330466347016154 0ustar meme/** * Hash table to be used by DinkC's 'sp_custom' function * Copyright (C) 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef DINKC_SP_CUSTOM_HASH #define DINKC_SP_CUSTOM_HASH #include "hash.h" typedef Hash_table* dinkc_sp_custom; extern dinkc_sp_custom dinkc_sp_custom_new(); extern void dinkc_sp_custom_free(dinkc_sp_custom hash); extern void dinkc_sp_custom_set(dinkc_sp_custom hash, char key[200], int val); extern int dinkc_sp_custom_get(dinkc_sp_custom hash, char key[200]); extern void dinkc_sp_custom_clear(dinkc_sp_custom hash); #endif freedink-108.4+dfsg/src/dinkc_console.h0000644000175000017500000000203612420231175015570 0ustar meme/** * DinkC interactive console * Copyright (C) 2005, 2006 Dan Walma * Copyright (C) 2008 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _DINKC_CONSOLE_H #define _DINKC_CONSOLE_H #include "SDL.h" extern int console_active; extern char* dinkc_console_get_cur_line(); extern int dinkc_console_get_last_retval(); extern void dinkc_console_process_key(SDL_KeyboardEvent kev); #endif freedink-108.4+dfsg/src/gfx_fade.c0000644000175000017500000001154412330466347014533 0ustar meme/** * Fade down / fade up, preserving white pixels * Copyright (C) 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "gfx_fade.h" #include #include "SDL.h" #include "gfx.h" /* 2MB cache - performs quite well for 15&16bits*/ static unsigned short **cache = NULL; /** * Init cache */ void gfx_fade_init() { SDL_Surface *screen = GFX_lpDDSBack; if (screen->format->BitsPerPixel != 15 && screen->format->BitsPerPixel != 16) return; /* For each discrete fade value, try to make cache values contiguous, so [32][65536] rather than [65536][32] */ cache = malloc(32*sizeof(unsigned short*)); int i, j; for (i = 0; i < 32; i++) { if (screen->format->BitsPerPixel == 16 && screen->format->Gmask == 0x07E0) { /* RGB565 */ cache[i] = malloc(65536*sizeof(unsigned short)); for (j = 0; j < 65536-1; j++) { Uint8 r, g, b; r = (((j&0xF800)>>11)<<3) * i / 32; g = (((j&0x07E0)>>5)<<2) * i / 32; b = ((j&0x001F)<<3) * i / 32; cache[i][j] = ((r>>3)<<11)|((g>>2)<<5)|(b>>3); } // keep white; 0xFFFF = 11111 111111 11111 = 65535 cache[i][0xFFFF] = 0xFFFF; } else if ((screen->format->BitsPerPixel == 15) || (screen->format->BitsPerPixel == 16 && screen->format->Gmask == 0x03E0)) { /* RGB555 */ /* In 15bits, SDL returns bbp=_16_ with mask 0x03E0 */ cache[i] = malloc(32768*sizeof(unsigned short)); for (j = 0; j < 32768-1; j++) { Uint8 r, g, b; r = (((j&0x7C00)>>10)<<3) * i / 32; g = (((j&0x03E0)>>5)<<3) * i / 32; b = ((j&0x001F)<<3) * i / 32; cache[i][j] = ((r>>3)<<10)|((g>>3)<<5)|(b>>3); } // keep white; 0x7FFF = 0 11111 11111 11111 = 32767 cache[i][0x7FFF] = 0x7FFF; } } } void gfx_fade_quit() { if (cache != NULL) { int i; for (i = 0; i < 32; i++) free(cache[i]); free(cache); } } void gfx_fade_apply(int brightness) { SDL_Surface *screen = GFX_lpDDSBack; SDL_LockSurface(screen); /* Check SDL_blit.h in the SDL source code for guidance */ switch (screen->format->BitsPerPixel) { case 32: { /* Progress per pixel rather than per byte */ int remainder = (screen->pitch - (screen->w * screen->format->BytesPerPixel)) / screen->format->BytesPerPixel; /* Using aligned Uint32 is faster than working with Uint8 values */ Uint32 *p = screen->pixels; int height = screen->h; while (height--) { int x; for (x = 0; x < screen->w; x++) { /* Assume that pixel order is RGBA */ #if SDL_BYTEORDER == SDL_LIL_ENDIAN if (*p != 0x00FFFFFF) // skip white #else if (*p != 0xFFFFFF00) // TODO: I need a PPC tester for this #endif { *((Uint8*)p) = *((Uint8*)p) * brightness >> 8; *((Uint8*)p+1) = *((Uint8*)p+1) * brightness >> 8; *((Uint8*)p+2) = *((Uint8*)p+2) * brightness >> 8; } p++; } p += remainder; } } break; case 24: { /* Progress per byte rather than per pixel (can't use Uint_32_ since bbp=24) */ int remainder = screen->pitch - (screen->w * screen->format->BytesPerPixel); Uint8 *p = screen->pixels; int height = screen->h; while (height--) { int x; for (x = 0; x < screen->w; x++) { /* Don't distinguish r,g,b to avoid mask&shift jobs */ Uint8 c1, c2, c3; c1 = *(p); c2 = *(p+1); c3 = *(p+2); if (c1 != 255 || c2 != 255 || c3 != 255) // skip white { *(p) = c1 * brightness >> 8; *(p+1) = c2 * brightness >> 8; *(p+2) = c3 * brightness >> 8; } p += 3; } p += remainder; } } break; case 16: /* RGB 565 */ case 15: /* RGB 555 */ { /* Progress per byte rather than per pixel */ int remainder = (screen->pitch - (screen->w * screen->format->BytesPerPixel)) / screen->format->BytesPerPixel; Uint16 *p = screen->pixels; int height = screen->h; brightness /= 256/32; /* cached units of 32th rather than computed 256th */ unsigned short* cur_cache = cache[brightness]; while (height--) { int x; for (x = 0; x < screen->w; x++) { *p = cur_cache[*p]; p ++; } p += remainder; } } break; } SDL_UnlockSurface(screen); } freedink-108.4+dfsg/src/fastfile.c0000644000175000017500000001661512330466347014571 0ustar meme/** * Free fastfile.cpp replacement * Copyright (C) 2003 Shawn Betts * Copyright (C) 2003, 2004, 2007, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #ifdef _WIN32 # include # include /* #define strcasecmp(a,b) stricmp(a,b) */ #else # include # ifdef HAVE_MMAP # include # endif # include # include # include #endif #include "str_util.h" #include "io_util.h" extern void FastFileFini(void); #define HEADER_NB_ENTRIES_LEN 4 struct FF_Entry { long off; char name[13]; }; struct FF_Handle { int alive; long pos, off, len; }; static struct FF_Entry *g_Entries = NULL; static struct FF_Handle *g_Handles = NULL; static unsigned int g_FileSize = 0; static unsigned int g_numEntries = 0; static unsigned int g_numHandles = 0; #ifdef HAVE_MMAP static int g_File = 0; #else # ifdef _WIN32 HANDLE g_File; /* HANDLE == void*, cf. winnt.h */ HANDLE g_FileMap; # else FILE* g_File = NULL; # endif #endif #if defined HAVE_MMAP || defined _WIN32 unsigned char *g_MemMap = NULL; #endif int FastFileInit(char *filename, int max_handles) { long count = 0; FastFileFini(); #if _WIN32 | HAVE_MMAP unsigned char *buf = NULL; #endif #ifdef HAVE_MMAP /* Open and mmap the file (Unix) */ g_File = open(filename, O_RDONLY); if (g_File < 0) return 0/*false*/; g_FileSize = lseek(g_File, 0, SEEK_END); /* needed by munmap */ lseek (g_File, 0, SEEK_SET); g_MemMap = mmap(NULL, g_FileSize, PROT_READ, MAP_PRIVATE, g_File, 0); #else # ifdef _WIN32 /* Open and mmap the file (Windows) */ /* first: file size (for later sanity checks) */ FILE* t = fopen(filename, "rb"); if (t == NULL) return FALSE; fseek(t, 0, SEEK_END); g_FileSize = ftell(t); fseek(t, 0, SEEK_SET); fclose(t); g_File = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, 0); if (g_File == NULL) return FALSE; g_FileMap = CreateFileMapping (g_File, NULL, PAGE_READONLY, 0, 0, NULL); g_MemMap = MapViewOfFile (g_FileMap, FILE_MAP_READ, 0, 0, 0); # else /* C stdio (portable) */ g_File = fopen(filename, "rb"); if (g_File == NULL) return 0/*false*/; fseek(g_File, 0, SEEK_END); g_FileSize = ftell(g_File); fseek(g_File, 0, SEEK_SET); # endif #endif g_numHandles = max_handles; /* Get the number of entries (from stored LSB int32) */ #if defined HAVE_MMAP || defined _WIN32 buf = g_MemMap; g_numEntries = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | (buf[0]); buf += 4; #else g_numEntries = read_lsb_int(g_File); #endif /* Allocate the memory */ g_Entries = calloc(sizeof(struct FF_Entry), g_numEntries); g_Handles = calloc(sizeof(struct FF_Handle), max_handles); for (count = 0; count < g_numEntries; count++) { #if defined HAVE_MMAP || defined _WIN32 g_Entries[count].off = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | (buf[0]); buf += 4; strncpy (g_Entries[count].name, (char*)buf, 13); buf += 13; #else g_Entries[count].off = read_lsb_int(g_File); fread(g_Entries[count].name, 13, 1, g_File); #endif /* Ensure string is null-terminated */ g_Entries[count].name[12] = '\0'; } return 1; } void FastFileFini (void) { if (g_Entries != NULL) { free(g_Entries); g_Entries = NULL; } if (g_Handles != NULL) { free(g_Handles); g_Handles = NULL; } #ifdef HAVE_MMAP /* Unmap and close the file (Unix) */ if (g_MemMap != NULL) { munmap(g_MemMap, g_FileSize); g_MemMap = NULL; } if (g_File != 0) { close(g_File); g_File = 0; } #else # ifdef _WIN32 if (g_MemMap != NULL) { /* Unmap and close the file (Windows) */ CloseHandle(g_FileMap); CloseHandle(g_File); g_MemMap = NULL; } # else if (g_File != NULL) { fclose(g_File); g_File = NULL; } # endif #endif } void * FastFileOpen(char *name) { struct FF_Handle *i; long fCount; long hCount; /* Check for the file, dont' include directory */ for (fCount = 0; fCount < (long)g_numEntries - 1; fCount++) { if (strcasecmp(g_Entries[fCount].name, name) == 0) { for (hCount = 0; hCount < (long)g_numHandles; hCount++) { i = &g_Handles[hCount]; if (!i->alive) { i->alive = 1; i->off = g_Entries[fCount].off; i->pos = 0; /* Normal offset, tells where next the image bytes start */ int next_off = g_Entries[fCount + 1].off; if (next_off == 0) /* Support badly generated dir.ff such as Mystery Island's (skip 1 empty entry) */ /* TODO: check that fCount+2 is valid. */ next_off = g_Entries[fCount + 2].off; /* Watch for buffer overflows - check that 'off' is in a reasonable range [0, len(file)], and doesn't overlap another fastfile */ if ((i->off < 0 || i->off > g_FileSize) || i->off > next_off) i->len = 0; else i->len = next_off - i->off; return (void*)i; } } return NULL; } } return NULL; } int FastFileClose (struct FF_Handle *i) { if (!i) return 0; #if defined HAVE_MMAP || defined _WIN32 if (!g_MemMap) return 0; #endif i->alive = 0; return 1; } SDL_RWops* FastFileLock(struct FF_Handle *i) { if (!i) return NULL; #if defined HAVE_MMAP || defined _WIN32 char *buffer = NULL; if(!g_MemMap) return NULL; #endif #if defined HAVE_MMAP || defined _WIN32 buffer = (char*)g_MemMap; buffer += i->off; return SDL_RWFromMem(buffer, i->len); #else fseek(g_File, i->off, SEEK_SET); return SDL_RWFromFP(g_File, /*autoclose=*/0); #endif } int FastFileLen(struct FF_Handle *i) { return i->len; } /* comment out unused functions to ease portability */ #if 0 int FastFileUnlock(struct FF_Handle *i, int off, int len) { return 1; } int FastFileSeek (struct FF_Handle *i, int offset, int whence) { long oldpos; if (!i || !g_MemMap) return 0; oldpos = i->pos; switch (whence) { case SEEK_SET: i->pos = offset; break; case SEEK_CUR: i->pos += offset; break; case SEEK_END: i->pos = i->len - offset; break; } if (i->pos > i->len) { i->pos = oldpos; return 0; } return 1; } int FastFileRead (struct FF_Handle *i, void *bigBuffer, int size) { unsigned char *srcBuffer; if (!i || !bigBuffer || !g_MemMap) return 0; if (i->pos + size > i->len) return 0; srcBuffer = g_MemMap; srcBuffer += i->pos; srcBuffer += i->off; memcpy (bigBuffer, srcBuffer, size); i->pos += size; return 1; } long FastFileTell (struct FF_Handle *i) { if (!i) return 0; return i->pos; } #endif freedink-108.4+dfsg/src/rect.h0000644000175000017500000000223012330466347013722 0ustar meme/** * Rectangle structure to make hardness maths * Copyright (C) 2007 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _RECT_H #define _RECT_H #ifdef __cplusplus extern "C" { #endif typedef struct rect { int left, top, right, bottom; } rect; extern int rect_set(rect *rect, int left, int top, int right, int bottom); extern int rect_offset(rect *rect, int tx, int ty); extern int rect_copy(rect *src, rect *dst); extern int rect_inflate(rect *rect, int dw, int dh); #ifdef __cplusplus } #endif #endif freedink-108.4+dfsg/src/screen.h0000644000175000017500000000251112420231175014233 0ustar meme/** * Screen sprites and hardness * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _SCREEN_H #define _SCREEN_H #define MAX_SPRITES_EDITOR 99 // sub struct for hardness map struct mega_y { unsigned char y[401]; }; // struct for hardness map struct hit_map { struct mega_y x[601]; }; extern struct hit_map hm; extern void screen_rank_map_sprites(int rank[]); extern void screen_rank_game_sprites(int rank[]); extern void place_sprites_game(void); extern void place_sprites_game_background(void); extern void fill_back_sprites(void); extern void fill_hard_sprites(void); #endif freedink-108.4+dfsg/src/dinkedit.60000644000175000017500000000003012330466347014472 0ustar meme.so man6/freedinkedit.6 freedink-108.4+dfsg/src/dinkc_bindings.c0000644000175000017500000031211312420231175015716 0ustar meme/** * Link game engine and DinkC script engine * Copyright (C) 1997, 1998, 1999, 2002, 2003 Seth A. Robinson * Copyright (C) 2005, 2006 Dan Walma * Copyright (C) 2005, 2007, 2008, 2009, 2010, 2011, 2012 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include "dinkc_bindings.h" #include #include /* atol */ #include #include #include #include #include /* tolower */ #include /* Gnulib */ #include "hash.h" #include "game_engine.h" #include "screen.h" #include "dinkvar.h" #include "dinkc.h" #include "freedink.h" #include "gfx.h" #include "gfx_fonts.h" #include "gfx_palette.h" #include "gfx_sprites.h" #include "gfx_tiles.h" #include "bgm.h" #include "sfx.h" #include "input.h" #include "str_util.h" #include "paths.h" #include "log.h" #include "dinkc_console.h" #include "i18n.h" /* store current procedure arguments expanded values of type 'int' (see get_parms) */ static long nlist[10]; /* store current procedure arguments of type 'string' (idem) */ static char* slist[10]; static char* cur_funcname; /***************/ /* DinkC API */ /* */ /***************/ /** * Short-hand to check for invalid sprites and avoid segfaults. * Also warn the D-Mod author about it. */ #define STOP_IF_BAD_SPRITE(sprite) \ if (sprite <= 0 || sprite >= MAX_SPRITES_AT_ONCE) \ { \ log_error("[DinkC] %s:%d:%s: invalid sprite %d (offset %d)", \ rinfo[script]->name, rinfo[script]->debug_line, \ cur_funcname, sprite, rinfo[script]->current); \ return; \ } /** * sp_* functions used to call 'change_sprite' on spr[sprite] without * checking if 'sprite' was in [1; MAX_SPRITES_AT_ONCE-1]. Since * 'change_sprite' returns -1 when 'sprite' is inactive, that's also * what we return when the sprite is out of range. */ #define RETURN_NEG_IF_BAD_SPRITE(sprite) \ if (sprite <= 0 || sprite >= MAX_SPRITES_AT_ONCE) \ { \ log_error("[DinkC] %s:%d:%s: invalid sprite %d (offset %d)", \ rinfo[script]->name, rinfo[script]->debug_line, \ cur_funcname, sprite, rinfo[script]->current); \ *preturnint = -1; \ return; \ } void dc_sp_active(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].active); } void dc_sp_attack_hit_sound(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].attack_hit_sound); } void dc_sp_attack_hit_sound_speed(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].attack_hit_sound_speed); } void dc_sp_attack_wait(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg+thisTickCount, &spr[sprite].attack_wait); } void dc_sp_base_attack(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite_noreturn(sprite, sparg, &spr[sprite].base_attack); } void dc_sp_base_die(int script, int* yield, int* preturnint, int sprite, int base_sequence) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite_noreturn(sprite, base_sequence, &spr[sprite].base_die); } void dc_sp_base_hit(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite_noreturn(sprite, sparg, &spr[sprite].base_hit); } void dc_sp_base_idle(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite_noreturn(sprite, sparg, &spr[sprite].base_idle); } void dc_sp_base_walk(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite_noreturn(sprite, sparg, &spr[sprite].base_walk); } void dc_sp_brain(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].brain); } void dc_sp_brain_parm(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].brain_parm); } void dc_sp_brain_parm2(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].brain_parm2); } void dc_sp_defense(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].defense); } void dc_sp_dir(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].dir); if (sparg != -1) changedir(spr[sprite].dir, sprite, spr[sprite].base_walk); } void dc_sp_disabled(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].disabled); } void dc_sp_distance(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].distance); } void dc_sp_exp(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].exp); } void dc_sp_flying(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].flying); } void dc_sp_follow(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].follow); } void dc_sp_frame(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].frame); } void dc_sp_frame_delay(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].frame_delay); } void dc_sp_gold(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].gold); } void dc_sp_hard(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].hard); if (spr[sprite].sp_index != 0 && sparg != -1) pam.sprite[spr[sprite].sp_index].hard = *preturnint; } void dc_sp_hitpoints(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].hitpoints); } void dc_sp_move_nohard(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].move_nohard); } void dc_sp_mx(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].mx); } void dc_sp_my(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].my); } void dc_sp_noclip(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].noclip); } void dc_sp_nocontrol(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].nocontrol); } void dc_sp_nodraw(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].nodraw); } void dc_sp_nohit(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].nohit); } void dc_sp_notouch(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].notouch); } void dc_sp_pframe(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].pframe); } void dc_sp_picfreeze(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].picfreeze); } void dc_sp_pseq(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].pseq); } void dc_sp_que(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].que); } void dc_sp_range(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].range); } void dc_sp_reverse(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].reverse); } void dc_sp_seq(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); if ((sparg < 0 || sparg >= MAX_SEQUENCES) && sparg != -1) { log_error("[DinkC] %s:%d:%s: invalid sequence %d, ignoring (offset %d)", rinfo[script]->name, rinfo[script]->debug_line, cur_funcname, sparg, rinfo[script]->current); *preturnint = -1; return; } *preturnint = change_sprite(sprite, sparg, &spr[sprite].seq); } void dc_sp_size(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].size); } void dc_sp_sound(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].sound); if (sparg > 0) SoundPlayEffect(spr[sprite].sound,22050, 0, sprite, 1); } void dc_sp_speed(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].speed); if (sparg != -1) changedir(spr[sprite].dir, sprite, spr[sprite].base_walk); } void dc_sp_strength(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].strength); } void dc_sp_target(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].target); } void dc_sp_timing(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].timer); } void dc_sp_touch_damage(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite_noreturn(sprite, sparg, &spr[sprite].touch_damage); } void dc_sp_x(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].x); } void dc_sp_y(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); *preturnint = change_sprite(sprite, sparg, &spr[sprite].y); } void dc_sp_kill(int script, int* yield, int* preturnint, int sprite, int sparg) { STOP_IF_BAD_SPRITE(sprite); spr[sprite].kill = sparg; } void dc_sp_editor_num(int script, int* yield, int* preturnint, int sprite) { *preturnint = 0; if (sprite > 0 && sprite < MAX_SPRITES_AT_ONCE) *preturnint = spr[sprite].sp_index; else log_error("[DinkC] sp_editor_num: invalid sprite %d", sprite); } void dc_sp_kill_wait(int script, int* yield, int* preturnint, int sprite) { if (sprite > 0 && sprite < MAX_SPRITES_AT_ONCE) spr[sprite].wait = 0; else log_error("[DinkC] sp_kill_wait: invalid sprite %d", sprite); } void dc_sp_script(int script, int* yield, int* preturnint, int sprite, char* dcscript) { // (sprite, direction, until, nohard); if (sprite <= 0 || (sprite >= MAX_SPRITES_AT_ONCE && sprite != 1000)) { log_error("[DinkC] %s:%d:%s: cannot process sprite %d??", rinfo[script]->name, rinfo[script]->debug_line, cur_funcname, sprite); return; } kill_scripts_owned_by(sprite); if (load_script(dcscript, sprite, /*true*/1) == 0) { *preturnint = 0; return; } int tempreturn = 0; if (sprite != 1000) { if (no_running_main == /*true*/1) log_info("Not running %s until later..", rinfo[spr[sprite].script]->name); if (no_running_main == /*false*/0 && sprite != 1000) locate(spr[sprite].script, "MAIN"); tempreturn = spr[sprite].script; if (no_running_main == /*false*/0) run_script(spr[sprite].script); } *preturnint = tempreturn; } void dc_unfreeze(int script, int* yield, int* preturnint, int sprite) { STOP_IF_BAD_SPRITE(sprite); if (spr[sprite].active) spr[sprite].freeze = 0; else log_error("[DinkC] Couldn't unfreeze sprite %d in script %d, it doesn't exist.", sprite, script); } void dc_freeze(int script, int* yield, int* preturnint, int sprite) { STOP_IF_BAD_SPRITE(sprite); if (spr[sprite].active) spr[sprite].freeze = script; else log_error("[DinkC] Couldn't freeze sprite %d in script %d, it doesn't exist.", sprite, script); } void dc_set_callback_random(int script, int* yield, int* preturnint, char* procedure, int base, int range) { int retval = add_callback(procedure, base, range, script); if (dversion >= 108) *preturnint = retval; } void dc_set_dink_speed(int script, int* yield, int* preturnint, int speed) { if (dversion >= 108 && speed == 0) ; // do nothing else dinkspeed = speed; } void dc_reset_timer(int script, int* yield, int* preturnint) { time(&time_start); play.minutes = 0; } void dc_set_keep_mouse(int script, int* yield, int* preturnint, int keep_mouse_p) { keep_mouse = keep_mouse_p; } void dc_add_item(int script, int* yield, int* preturnint, char* dcscript, int sequence, int frame) { add_item(dcscript, sequence, frame, ITEM_REGULAR); } void dc_add_magic(int script, int* yield, int* preturnint, char* dcscript, int sequence, int frame) { add_item(dcscript, sequence, frame, ITEM_MAGIC); } void dc_add_exp(int script, int* yield, int* preturnint, int amount, int active_sprite) { STOP_IF_BAD_SPRITE(active_sprite); if (dversion >= 108) // fix - made work with all sprites when // using add_exp DinkC command add_exp_force(amount, active_sprite); else add_exp(amount, active_sprite); } void dc_kill_this_item(int script, int* yield, int* preturnint, char* dcscript) { kill_item_script(dcscript); } void dc_kill_this_magic(int script, int* yield, int* preturnint, char* dcscript) { kill_mitem_script(dcscript); } void dc_show_bmp(int script, int* yield, int* preturnint, char* bmp_file, int show_map_dot, int unused) { log_info("showing BMP"); wait4b.active = /*false*/0; show_bmp(bmp_file, show_map_dot, script); *yield = 1; } void dc_copy_bmp_to_screen(int script, int* yield, int* preturnint, char* bmp_file) { log_info("copying BMP"); copy_bmp(bmp_file); } void dc_wait_for_button(int script, int* yield, int* preturnint) { log_info("waiting for button with script %d", script); wait4b.script = script; wait4b.active = /*true*/1; wait4b.button = 0; *yield = 1; } void dc_stop_wait_for_button(int script, int* yield, int* preturnint) { wait4b.active = /*false*/0; } void dc_load_screen(int script, int* yield, int* preturnint) { /* STOP_IF_BAD_SPRITE(active_sprite); */ //Msg("Loading map %d..",*pmap); update_screen_time(); load_map(map.loc[*pmap]); // update indicator on mini-map if (map.indoor[*pmap] == 0) play.last_map = *pmap; return; } /** * Decipher a copy of 'text' (to avoid potentially realloc'ing it) and * call 'say_text(...)' */ static int say_text_from_dc(char* text, int active_sprite, int script) { log_debug("[DinkC] %s:%d:%s(\"%s\", %d)", rinfo[script]->name, rinfo[script]->debug_line, cur_funcname, text, active_sprite); /* Translate text (before variable substitution) */ char* translation = NULL; if (strlen(text) >= 2 && text[0] == '`') { char* temp = i18n_translate(rinfo[script]->name, rinfo[script]->debug_line, text+2); translation = xmalloc(strlen(temp) + 2 + 1); sprintf(translation, "%c%c%s", text[0], text[1], temp); free(temp); } else { translation = i18n_translate(rinfo[script]->name, rinfo[script]->debug_line, text); } /* Substitute variables */ char* expanded = strdup(translation); free(translation); decipher_string(&expanded, script); int text_sprite = say_text(expanded, active_sprite, script); free(expanded); return text_sprite; } /** * Decipher a copy of 'text' (to avoid potentially realloc'ing it) and * call 'say_text_xy(...)' */ static int say_text_xy_from_dc(char* text, int x, int y, int script) { log_debug("[DinkC] %s:%d:%s(\"%s\", %d, %d)", rinfo[script]->name, rinfo[script]->debug_line, cur_funcname, text, x, y); /* Translate text (before variable substitution) */ char* translation = NULL; if (strlen(text) >= 2 && text[0] == '`') { char* temp = i18n_translate(rinfo[script]->name, rinfo[script]->debug_line, text+2); translation = xmalloc(strlen(temp) + 2 + 1); sprintf(translation, "%c%c%s", text[0], text[1], temp); free(temp); } else { translation = i18n_translate(rinfo[script]->name, rinfo[script]->debug_line, text); } /* Substitute variables */ char* expanded = strdup(translation); free(translation); decipher_string(&expanded, script); int text_sprite = say_text_xy(expanded, x, y, script); free(expanded); return text_sprite; } void dc_say(int script, int* yield, int* preturnint, char* text, int active_sprite) { /* 1000 is a valid value, and bad values don't trigger segfaults in this particular function; so don't validate active_sprite */ /* STOP_IF_BAD_SPRITE(active_sprite); */ if (active_sprite == 0) { log_error("[DinkC] say_stop: Sprite 0 can talk? Yeah, didn't think so."); return; } if (active_sprite != 1000) kill_text_owned_by(active_sprite); *preturnint = say_text_from_dc(text, active_sprite, script); } void dc_say_stop(int script, int* yield, int* preturnint, char* text, int active_sprite) { /* STOP_IF_BAD_SPRITE(active_sprite); */ if (active_sprite == 0) { log_error("[DinkC] say_stop: Sprite 0 can talk? Yeah, didn't think so."); return; } kill_text_owned_by(active_sprite); kill_text_owned_by(1); kill_returning_stuff(script); int sprite = say_text_from_dc(text, active_sprite, script); *preturnint = sprite; spr[sprite].callback = script; play.last_talk = script; //Msg("Sprite %d marked callback true.", sprite); *yield = 1; } void dc_say_stop_npc(int script, int* yield, int* preturnint, char* text, int active_sprite) { /* STOP_IF_BAD_SPRITE(active_sprite); */ /* no-op if already talking */ if (text_owned_by(active_sprite)) { *preturnint = 0; return; } kill_returning_stuff(script); int sprite = say_text_from_dc(text, active_sprite, script); spr[sprite].callback = script; *yield = 1; } void dc_say_stop_xy(int script, int* yield, int* preturnint, char* text, int x, int y) { kill_returning_stuff(script); int sprite = say_text_xy_from_dc(text, x, y, script); spr[sprite].callback = script; spr[sprite].live = /*true*/1; play.last_talk = script; *yield = 1; } void dc_say_xy(int script, int* yield, int* preturnint, char* text, int x, int y) { kill_returning_stuff(script); *preturnint = say_text_xy_from_dc(text, x, y, script); } void dc_draw_screen(int script, int* yield, int* preturnint) { /* only refresh screen if not in a cut-scene */ /* do it before draw_map_game() because that one calls kill_all_scripts(), which NULLifies rinfo[script] */ if (rinfo[script]->sprite != 1000) *yield = 1; draw_map_game(); } void dc_free_items(int script, int* yield, int* preturnint) { *preturnint = 0; int i = 0; for (; i < NB_ITEMS; i++) { if (play.item[i].active == 0) *preturnint += 1; } } void dc_free_magic(int script, int* yield, int* preturnint) { *preturnint = 0; int i = 0; for (; i < NB_MITEMS; i ++) { if (play.mitem[i-1].active == 0) *preturnint += 1; } } void dc_kill_cur_item(int script, int* yield, int* preturnint) { *preturnint = 0; kill_cur_item(); *yield = 1; } void dc_kill_cur_magic(int script, int* yield, int* preturnint) { *preturnint = 0; kill_cur_magic(); *yield = 1; } void dc_draw_status(int script, int* yield, int* preturnint) { draw_status_all(); } void dc_arm_weapon(int script, int* yield, int* preturnint) { if (weapon_script != 0 && locate(weapon_script, "DISARM")) run_script(weapon_script); weapon_script = load_script(play.item[*pcur_weapon - 1].name, 1000, /*false*/0); if (locate(weapon_script, "ARM")) run_script(weapon_script); } void dc_arm_magic(int script, int* yield, int* preturnint) { if (magic_script != 0 && locate(magic_script, "DISARM")) run_script(magic_script); magic_script = load_script(play.mitem[*pcur_magic - 1].name, 1000, /*false*/0); if (locate(magic_script, "ARM")) run_script(magic_script); } void dc_restart_game(int script, int* yield, int* preturnint) { int mainscript; while (kill_last_sprite()); kill_repeat_sounds_all(); kill_all_scripts_for_real(); mode = 0; screenlock = 0; kill_all_vars(); memset(&hm, 0, sizeof(hm)); input_set_default_buttons(); mainscript = load_script("main", 0, /*true*/1); locate(mainscript, "main"); run_script(mainscript); //lets attach our vars to the scripts attach(); *yield = 1; } void dc_wait(int script, int* yield, int* preturnint, int delayms) { kill_returning_stuff(script); add_callback("", delayms, 0, script); *yield = 1; } void dc_preload_seq(int script, int* yield, int* preturnint, int sequence) { check_seq_status(sequence); } void dc_script_attach(int script, int* yield, int* preturnint, int sprite) { /* STOP_IF_BAD_SPRITE(sprite); */ rinfo[script]->sprite = sprite; } void dc_draw_hard_sprite(int script, int* yield, int* preturnint, int sprite) { STOP_IF_BAD_SPRITE(sprite); update_play_changes(); int l = sprite; rect mhard; rect_copy(&mhard, &k[seq[spr[l].pseq].frame[spr[l].pframe]].hardbox); rect_offset(&mhard, (spr[l].x- 20), spr[l].y); fill_hardxy(mhard); fill_back_sprites(); fill_hard_sprites(); } void dc_activate_bow(int script, int* yield, int* preturnint) { spr[1].seq = 0; spr[1].pseq = 100+spr[1].dir; spr[1].pframe = 1; bow.active = /*true*/1; bow.script = script; bow.hitme = /*false*/0; bow.time = 0; /* bowsound->Release(); //lpDS->DuplicateSoundBuffer(ssound[42].sound,&bowsound); //bowsound->Play(0, 0, DSBPLAY_LOOPING); */ *yield = 1; } void dc_disable_all_sprites(int script, int* yield, int* preturnint) { int jj; for (jj = 1; jj < last_sprite_created; jj++) if (spr[jj].active) spr[jj].disabled = /*true*/1; } void dc_draw_background(int script, int* yield, int* preturnint) { // (sprite, direction, until, nohard); draw_map_game_background(); } void dc_draw_hard_map(int script, int* yield, int* preturnint) { // (sprite, direction, until, nohard); log_info("Drawing hard map.."); update_play_changes(); fill_whole_hard(); fill_hard_sprites(); fill_back_sprites(); } void dc_enable_all_sprites(int script, int* yield, int* preturnint) { int jj; for (jj = 1; jj < last_sprite_created; jj++) if (spr[jj].active) spr[jj].disabled = /*false*/0; } void dc_fade_down(int script, int* yield, int* preturnint) { // (sprite, direction, until, nohard); if (process_upcycle) { log_error("[DinkC] %s:%d: fade_down() called during fade_up(), ignoring fade_down()", rinfo[script]->name, rinfo[script]->debug_line); } else { process_downcycle = /*true*/1; cycle_clock = thisTickCount+1000; cycle_script = script; } *yield = 1; } void dc_fade_up(int script, int* yield, int* preturnint) { // (sprite, direction, until, nohard); if (process_downcycle) { log_error("[DinkC] %s:%d: fade_up() called during fade_down(), forcing fade_up()", rinfo[script]->name, rinfo[script]->debug_line); } process_downcycle = 0; // priority over concurrent fade_down() process_upcycle = /*true*/1; cycle_script = script; *yield = 1; } void dc_get_burn(int script, int* yield, int* preturnint) { *preturnint = 1; } void dc_get_last_bow_power(int script, int* yield, int* preturnint) { *preturnint = bow.last_power; } void dc_get_version(int script, int* yield, int* preturnint) { *preturnint = dversion; } void dc_kill_all_sounds(int script, int* yield, int* preturnint) { kill_repeat_sounds_all(); } void dc_kill_game(int script, int* yield, int* preturnint) { log_info("Was told to kill game, so doing it like a good boy."); /* Send QUIT event to the main game loop, which will cleanly exit */ SDL_Event ev; ev.type = SDL_QUIT; SDL_PushEvent(&ev); *yield = 1; } void dc_kill_this_task(int script, int* yield, int* preturnint) { // (sprite, direction, until, nohard); if (rinfo[script]->proc_return != 0) { run_script(rinfo[script]->proc_return); } kill_script(script); *yield = 1; } void dc_scripts_used(int script, int* yield, int* preturnint) { int m = 0; int i; for (i = 1; i < MAX_SCRIPTS; i++) if (rinfo[i] != NULL) m++; *preturnint = m; } void dc_stopcd(int script, int* yield, int* preturnint) { log_debug("Stopped cd"); killcd(); } void dc_stopmidi(int script, int* yield, int* preturnint) { // (sprite, direction, until, nohard); StopMidi(); } void dc_turn_midi_off(int script, int* yield, int* preturnint) { midi_active = /*false*/0; } void dc_turn_midi_on(int script, int* yield, int* preturnint) { midi_active = /*true*/1; } void dc_count_item(int script, int* yield, int* preturnint, char* dcscript) { int i; *preturnint = 0; for (i = 0; i < NB_ITEMS; i++) { if (play.item[i].active && compare(play.item[i].name, dcscript)) returnint++; } } void dc_count_magic(int script, int* yield, int* preturnint, char* dcscript) { int i; *preturnint = 0; for (i = 0; i < NB_MITEMS; i++) { if (play.mitem[i].active && compare(play.mitem[i].name, dcscript)) returnint++; } } void dc_compare_sprite_script(int script, int* yield, int* preturnint, int sprite, char* dcscript) { *preturnint = 0; STOP_IF_BAD_SPRITE(sprite); if (spr[sprite].active) { if (spr[sprite].script == 0) { log_error("[DinkC] compare_sprite_script: Sprite %d has no script.", sprite); return; } if (rinfo[spr[sprite].script] == NULL) { log_error("[DinkC] compare_sprite_script: script %d for sprite %d was already killed!.", sprite, spr[sprite].script); return; } if (compare(dcscript, rinfo[spr[sprite].script]->name)) { *preturnint = 1; return; } } else { log_error("[DinkC] compare_sprite_script: Can't compare sprite script, sprite not active."); } } void dc_compare_weapon(int script, int* yield, int* preturnint, char* dcscript) { *preturnint = 0; if (*pcur_weapon >= 1 && *pcur_weapon <= NB_ITEMS) { if (compare(play.item[*pcur_weapon - 1].name, dcscript)) *preturnint = 1; } } void dc_compare_magic(int script, int* yield, int* preturnint, char* dcscript) { *preturnint = 0; if (*pcur_magic >= 1 && *pcur_magic <= NB_MITEMS) { if (dversion >= 108) { if (compare(play.mitem[*pcur_magic - 1].name, dcscript)) *preturnint = 1; } else { /* reproduce v1.07 bug: compare with regular item rather than magic item */ if (compare(play.item[*pcur_magic - 1].name, dcscript)) *preturnint = 1; } } } void dc_init(int script, int* yield, int* preturnint, char* dink_ini_line) { figure_out(dink_ini_line); } void dc_dink_can_walk_off_screen(int script, int* yield, int* preturnint, int can_walk_off_screen_p) { walk_off_screen = can_walk_off_screen_p; } void dc_push_active(int script, int* yield, int* preturnint, int dink_can_push_p) { push_active = dink_can_push_p; } void dc_stop_entire_game(int script, int* yield, int* preturnint, int stop_p) { stop_entire_game = stop_p; SDL_BlitSurface(GFX_lpDDSBack, NULL, GFX_lpDDSTwo, NULL); } void dc_editor_type(int script, int* yield, int* preturnint, int editor_sprite, int type) { if (editor_sprite < 0 || editor_sprite >= 100) return; *preturnint = change_edit_char(editor_sprite, type, &play.spmap[*pmap].type[editor_sprite]); } void dc_editor_seq(int script, int* yield, int* preturnint, int editor_sprite, int seq) { if (editor_sprite < 0 || editor_sprite >= 100) return; *preturnint = change_edit(editor_sprite, seq, &play.spmap[*pmap].seq[editor_sprite]); } void dc_editor_frame(int script, int* yield, int* preturnint, int editor_sprite, int frame) { if (editor_sprite < 0 || editor_sprite >= 100) return; *preturnint = change_edit_char(editor_sprite, frame, &play.spmap[*pmap].frame[editor_sprite]); } void dc_move(int script, int* yield, int* preturnint, int sprite, int direction, int destination_limit, int ignore_hardness_p) { STOP_IF_BAD_SPRITE(sprite); spr[sprite].move_active = /*true*/1; spr[sprite].move_dir = direction; spr[sprite].move_num = destination_limit; spr[sprite].move_nohard = ignore_hardness_p; spr[sprite].move_script = 0; log_debug("Moving: Sprite %d, dir %d, num %d", sprite, direction, destination_limit); } void dc_spawn(int script, int* yield, int* preturnint, char* dcscript) { int mysc = load_script(dcscript, 1000, /*true*/1); if (mysc == 0) { *preturnint = 0; return; } locate(mysc, "MAIN"); int tempreturn = mysc; run_script(mysc); *preturnint = tempreturn; } void dc_run_script_by_number(int script, int* yield, int* preturnint, int script_index, char* funcname) { if (locate(script_index, funcname)) run_script(script_index); } void dc_playmidi(int script, int* yield, int* preturnint, char* midi_file) { //StopMidi(); int regm = atol(midi_file); log_debug("Processing playmidi command."); if (regm > 1000) //cd directive { int cd_track = regm - 1000; log_info("playmidi - cd play command detected."); if (cd_inserted) { if (cd_track == last_cd_track && cdplaying()) { *yield = 1; return; } log_info("Playing CD track %d.", cd_track); if (PlayCD(cd_track) >= 0) return; } else { //cd isn't instered, can't play CD song!!! char buf[10+4+1]; sprintf(buf, "%d.mid", cd_track); log_info("Playing midi %s.", buf); PlayMidi(buf); // then try to play 'midi_file' as well: // (necessary for START.c:playmidi("1003.mid")) } } log_info("Playing midi %s.", midi_file); PlayMidi(midi_file); } void dc_playsound(int script, int* yield, int* preturnint, int sound_number, int min_speed, int rand_speed_to_add, int sprite, int repeat_p) { if (sprite < 0 || sprite >= MAX_SPRITES_AT_ONCE) sprite = 0; // no "3d" volume effect... and no segfault :p if (sound_on) *preturnint = playsound(sound_number, min_speed, rand_speed_to_add, sprite, repeat_p); else *preturnint = 0; } void dc_sound_set_survive(int script, int* yield, int* preturnint, int sound_bank, int survive_p) { //let's set one sound to survive if (sound_on && sound_bank > 0) sound_set_survive(sound_bank, survive_p); } void dc_sound_set_vol(int script, int* yield, int* preturnint, int sound_bank, int vol) { if (sound_on && sound_bank > 0) sound_set_vol(sound_bank, vol); } void dc_sound_set_kill(int script, int* yield, int* preturnint, int sound_bank) { if (sound_on && sound_bank > 0) sound_set_kill(sound_bank); } void dc_save_game(int script, int* yield, int* preturnint, int game_slot) { save_game(game_slot); } void dc_force_vision(int script, int* yield, int* preturnint, int vision) { *pvision = vision; rinfo[script]->sprite = 1000; fill_whole_hard(); draw_map_game(); } void dc_fill_screen(int script, int* yield, int* preturnint, int palette_index) { fill_screen(palette_index); } void dc_load_game(int script, int* yield, int* preturnint, int game_slot) { kill_all_scripts_for_real(); *preturnint = load_game(game_slot); log_info("load completed."); if (rinfo[script] == NULL) log_error("[DinkC] Script %d is suddenly null!", script); *pupdate_status = 1; draw_status_all(); *yield = 1; } void dc_game_exist(int script, int* yield, int* preturnint, int game_slot) { FILE *fp; if ((fp = paths_savegame_fopen(game_slot, "rb")) != NULL) { fclose(fp); *preturnint = 1; } else { *preturnint = 0; } } void dc_move_stop(int script, int* yield, int* preturnint, int sprite, int direction, int destination_limit, int ignore_hardness_p) { STOP_IF_BAD_SPRITE(sprite); spr[sprite].move_active = /*true*/1; spr[sprite].move_dir = direction; spr[sprite].move_num = destination_limit; spr[sprite].move_nohard = ignore_hardness_p; spr[sprite].move_script = script; log_debug("Move_stop: Sprite %d, dir %d, num %d", sprite, direction, destination_limit); *yield = 1; } void dc_load_sound(int script, int* yield, int* preturnint, char* wav_file, int sound_index) { if (sound_on) { log_info("getting %s..", wav_file); CreateBufferFromWaveFile(wav_file, sound_index); } } void dc_debug(int script, int* yield, int* preturnint, char* text) { /* Convert from Latin-1 (.c) to UTF-8 (SDL) since the message is shown on the screen in debug mode */ char* buf = latin1_to_utf8(text); decipher_string(&buf, script); log_debug(buf); free(buf); } void dc_busy(int script, int* yield, int* preturnint, int sprite) { STOP_IF_BAD_SPRITE(sprite); *preturnint = does_sprite_have_text(nlist[0]); log_debug("Busy: Return int is %d and %d. Nlist got %d.", *preturnint, does_sprite_have_text(sprite), sprite); } void dc_make_global_int(int script, int* yield, int* preturnint, char* varname, int default_val) { make_int(varname, default_val, 0, script); } void dc_inside_box(int script, int* yield, int* preturnint, int x, int y, int left, int right, int top, int bottom) { rect myrect; rect_set(&myrect, left, right, top, bottom); *preturnint = inside_box(x, y, myrect); log_debug("Inbox is int is %d and %d. Nlist got %d.", *preturnint, x, y); } void dc_random(int script, int* yield, int* preturnint, int range, int base) { *preturnint = (rand() % range) + base; } void dc_initfont(int script, int* yield, int* preturnint, char* fontname) { initfont(fontname); log_info("Initted font %s", fontname); } void dc_set_mode(int script, int* yield, int* preturnint, int newmode) { mode = newmode; *preturnint = mode; } void dc_kill_shadow(int script, int* yield, int* preturnint, int sprite) { /* STOP_IF_BAD_SPRITE(sprite); */ int jj; for (jj = 1; jj <= last_sprite_created; jj++) { if (spr[jj].brain == 15 && spr[jj].brain_parm == sprite) { spr[jj].active = 0; } } } void dc_create_sprite(int script, int* yield, int* preturnint, int x, int y, int brain, int sequence, int frame) { *preturnint = add_sprite_dumb(x, y, brain, sequence, frame, 100/*size*/); } void dc_sp(int script, int* yield, int* preturnint, int editor_sprite) { int i = find_sprite(editor_sprite); if (i != 0) { log_debug("Sp returned %d.", i); *preturnint = i; return; } if (last_sprite_created == 1) log_warn("you can't call SP() from a screen-ref," " no sprites have been created yet."); *preturnint = 0; /* not found */ } void dc_is_script_attached(int script, int* yield, int* preturnint, int sprite) { STOP_IF_BAD_SPRITE(sprite); *preturnint = spr[sprite].script; } void dc_get_sprite_with_this_brain(int script, int* yield, int* preturnint, int brain, int sprite_ignore) { int i; for (i = 1; i <= last_sprite_created; i++) { if (spr[i].brain == brain && i != sprite_ignore && spr[i].active == 1) { log_debug("Ok, sprite with brain %d is %d", brain, i); *preturnint = i; return; } } *preturnint = 0; /* not found */ } void dc_get_rand_sprite_with_this_brain(int script, int* yield, int* preturnint, int brain, int sprite_ignore) { int i; int nb_matches = 0; for (i = 1; i <= last_sprite_created; i++) { if (spr[i].brain == brain && i != sprite_ignore && spr[i].active == 1) nb_matches++; } if (nb_matches == 0) { log_debug("Get rand brain can't find any brains with %d.", brain); *preturnint = 0; return; } int mypick = (rand() % nb_matches) + 1; int ii; int cur_match = 0; for (ii = 1; ii <= last_sprite_created; ii++) { if (spr[ii].brain == brain && ii != sprite_ignore && spr[ii].active == 1) { cur_match++; if (cur_match == mypick) { *preturnint = ii; return; } } } *preturnint = 0; /* not found */ } /* BIG FAT WARNING: in DinkC, buttons are in [1, 10] (not [0, 9]) */ void dc_set_button(int script, int* yield, int* preturnint, int button, int function) { input_set_button_action(button-1, function); } void dc_hurt(int script, int* yield, int* preturnint, int sprite, int damage) { STOP_IF_BAD_SPRITE(sprite); if (dversion >= 108) { // With v1.07 hurt(&sthing, -1) would run hit(), with v1.08 it // doesn't (after redink1 tried to fix a game freeze bug that I // can't reproduce) if (damage < 0) return; } if (hurt_thing(sprite, damage, 0) > 0) random_blood(spr[sprite].x, spr[sprite].y-40, sprite); if (spr[sprite].nohit != 1 && spr[sprite].script != 0 && locate(spr[sprite].script, "HIT")) { if (rinfo[script]->sprite != 1000) { *penemy_sprite = rinfo[script]->sprite; //redink1 addition of missle_source stuff if (dversion >= 108) *pmissle_source = rinfo[script]->sprite; } kill_returning_stuff(spr[sprite].script); run_script(spr[sprite].script); } } void dc_screenlock(int script, int* yield, int* preturnint, int param) { if (dversion >= 108) { // returns the screenlock value to DinkC if (param == 0 || param == 1) screenlock = param; *preturnint = screenlock; /* Note: redink1's v1.08 always set returnint, even if too many parameters were passed. Since this breaks the logic of DinkC interpreter clarification (return a variable value when bad parameters), we won't reproduce this particular bug here. AFAICS no D-Mod abused 'screenlock' this way. */ } else { screenlock = param; } } /****************/ /* v1.08-only */ /* */ /****************/ void dc_sp_blood_num(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); change_sprite (sprite, sparg, &spr[sprite].bloodnum); *preturnint = spr[sprite].bloodseq; } void dc_sp_blood_seq(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); change_sprite (sprite, sparg, &spr[sprite].bloodseq); *preturnint = spr[sprite].bloodseq; } void dc_sp_clip_bottom(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); change_sprite (sprite, sparg, &spr[sprite].alt.bottom); *preturnint = spr[sprite].alt.bottom; } void dc_sp_clip_left(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); change_sprite (sprite, sparg, &spr[sprite].alt.left); *preturnint = spr[sprite].alt.left; } void dc_sp_clip_right(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); change_sprite (sprite, sparg, &spr[sprite].alt.right); *preturnint = spr[sprite].alt.right; } void dc_sp_clip_top(int script, int* yield, int* preturnint, int sprite, int sparg) { RETURN_NEG_IF_BAD_SPRITE(sprite); change_sprite (sprite, sparg, &spr[sprite].alt.top); *preturnint = spr[sprite].alt.top; } void dc_sp_custom(int script, int* yield, int* preturnint, char* key, int sprite, int val) { RETURN_NEG_IF_BAD_SPRITE(sprite); if (spr[sprite].active == 0) { *preturnint = -1; } else { // Set the value if (val != -1) dinkc_sp_custom_set(spr[sprite].custom, key, val); *preturnint = dinkc_sp_custom_get(spr[sprite].custom, key); } } /** * Like sp_mx but use change_sprite_noreturn, so allow setting the * value to -1. */ void dc_sp_move_x(int script, int* yield, int* preturnint, int sprite, int dx) { STOP_IF_BAD_SPRITE(sprite); change_sprite_noreturn (sprite, dx, &spr[sprite].mx); } /** * Like sp_my but use change_sprite_noreturn, so allow setting the * value to -1. */ void dc_sp_move_y(int script, int* yield, int* preturnint, int sprite, int dy) { STOP_IF_BAD_SPRITE(sprite); change_sprite_noreturn (sprite, dy, &spr[sprite].my); } void dc_sp_freeze(int script, int* yield, int* preturnint, int sprite, int frozen_p) { STOP_IF_BAD_SPRITE(sprite); // Set the value if (frozen_p == 0) spr[sprite].freeze = 0; else if (frozen_p == 1) spr[sprite].freeze = script; /* else -> invalid value */ // Return the (normalized) value *preturnint = (spr[sprite].freeze > 0); } void dc_clear_editor_info(int script, int* yield, int* preturnint) { int i; for (i = 0; i < 769; i++) { int j; for (j = 0; j < 100; j++) { play.spmap[i].seq[j] = 0; play.spmap[i].frame[j] = 0; play.spmap[i].type[j] = 0; play.spmap[i].last_time = 0; } } *preturnint = 1; } void dc_get_date_day(int script, int* yield, int* preturnint) { char mytime[5]; time_t ct; struct tm* time_now; time (&ct); time_now = localtime (&ct); strftime (mytime, 5, "%d", time_now); *preturnint = atoi (mytime); } void dc_get_date_month(int script, int* yield, int* preturnint) { char mytime[5]; time_t ct; struct tm* time_now; time (&ct); time_now = localtime (&ct); strftime (mytime, 5, "%m", time_now); *preturnint = atoi (mytime); } void dc_get_date_year(int script, int* yield, int* preturnint) { char mytime[5]; time_t ct; struct tm* time_now; time (&ct); time_now = localtime (&ct); strftime (mytime, 5, "%Y", time_now); *preturnint = atoi (mytime); } void dc_get_time_game(int script, int* yield, int* preturnint) { time_t ct; time (&ct); *preturnint = play.minutes + (difftime (ct, time_start) / 60); } void dc_get_time_real(int script, int* yield, int* preturnint) { char mytime[5]; time_t ct; struct tm* time_now; time (&ct); time_now = localtime (&ct); strftime (mytime, 5, "%M", time_now); *preturnint = atoi (mytime); strftime (mytime, 5, "%H", time_now); *preturnint += 60 * atoi (mytime); } void dc_get_truecolor(int script, int* yield, int* preturnint) { *preturnint = truecolor; } void dc_show_console(int script, int* yield, int* preturnint) { console_active = 1; } void dc_show_inventory(int script, int* yield, int* preturnint) { show_inventory = 1; } void dc_var_used(int script, int* yield, int* preturnint) { int m = 0; int i; for (i = 1; i < MAX_VARS; i++) if (play.var[i].active == 1) m++; *preturnint = m; } void dc_loopmidi(int script, int* yield, int* preturnint, int loop_midi) { loopmidi(loop_midi); } void dc_math_abs(int script, int* yield, int* preturnint, int val) { *preturnint = abs(val); } void dc_math_sqrt(int script, int* yield, int* preturnint, int val) { *preturnint = sqrt(abs(val)); } void dc_math_mod(int script, int* yield, int* preturnint, int val, int div) { *preturnint = (val % div); } void dc_make_global_function(int script, int* yield, int* preturnint, char* dcscript, char* procname) { make_function(dcscript, procname); } void dc_set_save_game_info(int script, int* yield, int* preturnint, char* info) { strncpy(save_game_info, info, LEN_SAVE_GAME_INFO); save_game_info[LEN_SAVE_GAME_INFO - 1] = '\0'; } void dc_load_map(int script, int* yield, int* preturnint, char* mapdat_file, char* dinkdat_file) { // load a new map/dink.dat strcpy(current_map, mapdat_file); strcpy(current_dat, dinkdat_file); load_info(); } void dc_load_tile(int script, int* yield, int* preturnint, char* tileset_file, int tileset_index) { // load new tiles if (tileset_index >= 1 && tileset_index <= GFX_TILES_NB_SETS) { //Load in the new tiles... tiles_load_slot(tileset_file, tileset_index); //Store in save game strncpy(play.tile[tileset_index].file, tileset_file, 50); } else { log_error("[DinkC] %s:%d:%s: dc_load_tile: invalid tileset index '%d'", rinfo[script]->name, rinfo[script]->debug_line, cur_funcname, tileset_index); } } void dc_map_tile(int script, int* yield, int* preturnint, int tile_position, int tile_index) { // developers can change or see what tile is at any given position // Yeah... they can only modify valid tiles if (tile_position >= 1 && tile_position <= 96) { int max = GFX_TILES_NB_SQUARES - 1; if (tile_index >= 0 && tile_index <= max) pam.t[tile_position - 1].square_full_idx0 = tile_index; else log_error("[DinkC] %s:%d:%s: dc_map_tile: invalid tile index '%d'", rinfo[script]->name, rinfo[script]->debug_line, cur_funcname, tile_index); *preturnint = pam.t[tile_position - 1].square_full_idx0; } } void dc_map_hard_tile(int script, int* yield, int* preturnint, int tile_position, int hard_tile_index) { // developers can retrieve/modify a hard tile // Yeah... they can only modify valid tiles if (tile_position >= 1 && tile_position <= 96) { //Only change the value if it is greater than 0... if (hard_tile_index > 0) pam.t[tile_position - 1].althard = hard_tile_index; *preturnint = pam.t[tile_position - 1].althard; } } void dc_load_palette(int script, int* yield, int* preturnint, char* bmp_file) { // load a palette from any bmp if (gfx_palette_set_from_bmp(bmp_file) < 0) log_error("[DinkC] Couldn't load palette from '%s': %s", bmp_file, SDL_GetError()); gfx_palette_get_phys(GFX_real_pal); //Store in save game strncpy(play.palette, slist[0], 50); } void dc_get_item(int script, int* yield, int* preturnint, char* dcscript) { // get index of specified item *preturnint = 0; { int i = 0; for (; i < NB_ITEMS; i++) { if (play.item[i].active && compare(play.item[i].name, dcscript)) { *preturnint = i + 1; break; } } } } void dc_get_magic(int script, int* yield, int* preturnint, char* dcscript) { // get index of specified magic spell *preturnint = 0; { int i = 0; for (; i < NB_MITEMS; i++) { if (play.mitem[i].active && compare(play.mitem[i].name, dcscript)) { *preturnint = i + 1; break; } } } } void dc_set_font_color(int script, int* yield, int* preturnint, int index, int r, int g, int b) { // sets font color set_font_color(index, r, g, b); } void dc_get_next_sprite_with_this_brain(int script, int* yield, int* preturnint, int brain, int sprite_ignore, int sprite_start_with) { // make Paul Pliska's life more fulfilling { int i = sprite_start_with; for (; i <= last_sprite_created; i++) { if ((spr[i].brain == brain) && (i != sprite_ignore)) if (spr[i].active == 1) { log_debug("Ok, sprite with brain %d is %d", brain, i); *preturnint = i; return; } } } log_debug("Ok, sprite with brain %d is 0", brain); *preturnint = 0; /* not found */ } void dc_set_smooth_follow(int script, int* yield, int* preturnint, int smooth_p) { if (smooth_p == 0) smooth_follow = 0; else if (smooth_p == 1) smooth_follow = 1; } void dc_set_dink_base_push(int script, int* yield, int* preturnint, int base_sequence) { dink_base_push = base_sequence; } void dc_callback_kill(int script, int* yield, int* preturnint, int callback_index) { log_debug("setting callback random"); kill_callback(callback_index); } /****************/ /* Hash table */ /* */ /****************/ /* Map DinkC function with C function */ #define NB_COMMON_ARGS 3 struct binding { char* funcname; /* name of the function, as string */ void* func; /* pointer to the C function */ int params[10]; /* DinkC specification of params e.g. {2,1,1,0,0,0,0,0,0,0} */ enum dinkc_parser_state badparams_dcps; /* if the DinkC script has bad arguments, skip line or yield? */ int badparams_returnint_p; /* overwrite returnint if bad arguments? */ int badparams_returnint; /* value for returnint if badparams_returnint_p is 1 */ }; /* Hash table of bindings, build dynamically (depending on 'dversion', not statically) */ Hash_table* bindings = NULL; /* Auxiliary functions for hash */ static size_t dinkc_bindings_hasher(const void *x, size_t tablesize) { return hash_string(((struct binding*)x)->funcname, tablesize); // We could also call 'hash_pjw' from module 'hash-pjw' } static bool dinkc_bindings_comparator(const void* a, const void* b) { return !strcmp(((struct binding*)a)->funcname, ((struct binding*)b)->funcname); } /** * Search a binding by function name */ struct binding* dinkc_bindings_lookup(dinkc_sp_custom hash, char* funcname) { struct binding search; struct binding *result; char* lcfuncname = strdup(funcname); char* pc; for (pc = lcfuncname; *pc != '\0'; pc++) *pc = tolower(*pc); search.funcname = lcfuncname; result = hash_lookup(hash, &search); free(lcfuncname); return result; } /** * Add a new binding to hash table 'hash'. */ static void dinkc_bindings_add(Hash_table* hash, struct binding* pbd) { void* slot = dinkc_bindings_lookup(hash, pbd->funcname); if (slot != NULL) { log_fatal("Internal error: attempting to redeclare DinkC function %s", pbd->funcname); exit(EXIT_FAILURE); } /* Copy uninitialized binding in hash table */ struct binding* newslot = malloc(sizeof(struct binding)); *newslot = *pbd; if (hash_insert(hash, newslot) == NULL) { log_fatal("Not enough memory to declare DinkC function %s", pbd->funcname); exit(EXIT_FAILURE); } } /** * Add a DinkC binding * * Simple macro to allow using struct initializer e.g. {2,1,1,0....} * when declaring a DinkC function. */ #define DCBD_ADD(name, ...) \ { \ struct binding bd = { #name, dc_ ## name, __VA_ARGS__ }; \ dinkc_bindings_add(bindings, &bd); \ } /** * Map DinkC functions to C functions, with their arguments */ void dinkc_bindings_init() { /* Set all string params pointers to NULL */ int i = 0; for (; i < 10; i++) { /* alloc empty strings; will be replaced as needed in get_parm(...) */ slist[i] = strdup(""); } Hash_tuning* default_tuner = NULL; int start_size = 400; /* ~nbfuncs*2 to try and avoid collisions */ bindings = hash_initialize(start_size, default_tuner, dinkc_bindings_hasher, dinkc_bindings_comparator, free); /* funcname, params, badparams_dcps, badparams_returnint_p, badparams_returnint */ DCBD_ADD(sp_active, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_attack_hit_sound, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_attack_hit_sound_speed, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_attack_wait, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_base_attack, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_base_die, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_base_hit, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_base_idle, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_base_walk, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_brain, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_brain_parm, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_brain_parm2, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_defense, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_dir, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_disabled, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_distance, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_exp, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_flying, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_follow, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_frame, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_frame_delay, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_gold, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_hard, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_hitpoints, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_move_nohard, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_mx, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_my, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_noclip, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_nocontrol, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_nodraw, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_nohit, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_notouch, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_pframe, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_picfreeze, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_pseq, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_que, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_range, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_reverse, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_seq, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_size, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_sound, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_speed, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_strength, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_target, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_timing, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_touch_damage, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_x, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_y, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_kill, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_editor_num, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_kill_wait, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_script, {1,2,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); /* sp_base_death is an alias for sp_base_die */ struct binding bd_sp_base_death = *dinkc_bindings_lookup(bindings, "sp_base_die"); bd_sp_base_death.funcname = "sp_base_death"; dinkc_bindings_add(bindings, &bd_sp_base_death); DCBD_ADD(unfreeze, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(freeze, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(set_callback_random, {2,1,1,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(set_dink_speed, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(reset_timer, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(set_keep_mouse, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(add_item, {2,1,1,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(add_magic, {2,1,1,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(add_exp, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(kill_this_item, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(kill_this_magic, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(show_bmp, {2,1,1,0,0,0,0,0,0,0}, DCPS_YIELD , 0, 0); DCBD_ADD(copy_bmp_to_screen, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(wait_for_button, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(stop_wait_for_button, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(draw_screen, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(free_items, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(free_magic, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(kill_cur_item, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(kill_cur_magic, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(draw_status, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(arm_weapon, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(arm_magic, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(load_screen, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(say, {2,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(say_stop, {2,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(say_stop_npc, {2,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(say_stop_xy, {2,1,1,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(say_xy, {2,1,1,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(restart_game, {-1,0,0,0,0,0,0,0,0,0}, -1 , 0, 0); DCBD_ADD(wait, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(preload_seq, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(script_attach, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(draw_hard_sprite, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(activate_bow, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(disable_all_sprites, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(draw_background, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(draw_hard_map, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(enable_all_sprites, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(fade_down, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(fade_up, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_burn, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_last_bow_power, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_version, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(kill_all_sounds, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(kill_game, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(kill_this_task, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(scripts_used, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(stopcd, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(stopmidi, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(turn_midi_off, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(turn_midi_on, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(count_item, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(count_magic, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(compare_sprite_script, {1,2,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(compare_weapon, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(compare_magic, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(init, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(dink_can_walk_off_screen, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(push_active, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(stop_entire_game, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(editor_type, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(editor_seq, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(editor_frame, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(move, {1,1,1,1,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(spawn, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(run_script_by_number, {1,2,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(playmidi, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(playsound, {1,1,1,1,1,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, 0); DCBD_ADD(sound_set_survive, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(sound_set_vol, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(sound_set_kill, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(save_game, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(force_vision, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(fill_screen, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(load_game, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(game_exist, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(move_stop, {1,1,1,1,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(load_sound, {2,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(debug, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(busy, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(make_global_int, {2,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(inside_box, {1,1,1,1,1,1,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(random, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(initfont, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(set_mode, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(kill_shadow, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(create_sprite, {1,1,1,1,1,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, 0); DCBD_ADD(sp, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, 0); DCBD_ADD(is_script_attached, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_sprite_with_this_brain, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, 0); DCBD_ADD(get_rand_sprite_with_this_brain, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, 0); DCBD_ADD(set_button, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(hurt, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(screenlock, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); if (dversion >= 108) { DCBD_ADD(sp_blood_num, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_blood_seq, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_clip_bottom, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_clip_left, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_clip_right, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_clip_top, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_custom, {2,1,1,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(sp_move_x, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(sp_move_y, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(sp_freeze, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(clear_editor_info, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_date_day, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_date_month, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_date_year, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_time_game, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_time_real, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_truecolor, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(show_console, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(show_inventory, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(var_used, {-1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(loopmidi, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(math_abs, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(math_sqrt, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(math_mod, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(make_global_function, {2,2,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(set_save_game_info, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(load_map, {2,2,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(load_tile, {2,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(map_tile, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(map_hard_tile, {1,1,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(load_palette, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_item, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(get_magic, {2,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(set_font_color, {1,1,1,1,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(set_smooth_follow, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, -1); DCBD_ADD(set_dink_base_push, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(callback_kill, {1,0,0,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 0, 0); DCBD_ADD(get_next_sprite_with_this_brain, {1,1,1,0,0,0,0,0,0,0}, DCPS_GOTO_NEXTLINE, 1, 0); } } void dinkc_bindings_quit() { if (bindings != NULL) hash_free(bindings); bindings = NULL; int i = 0; for (; i < 10; i++) { if (slist[i] != NULL) free(slist[i]); slist[i] = NULL; } } /******************/ /* DinkC parser */ /* */ /******************/ void attach(void) { /* Make sure the "system" variable exists - otherwise we might use a NULL pointer below */ char* var_names[22] = { "&life", "&vision", "&result", "&speed", "&timing", "&lifemax", "&exp", "&strength", "&defense", "&gold", "&magic", "&level", "&player_map", "&cur_weapon", "&cur_magic", "&last_text", "&magic_level", "&update_status", "&missile_target", "&enemy_sprite", "&magic_cost", "&missle_source" }; int n, i; for (n = 0; n < 22; n++) { if (!var_exists(var_names[n], 0)) /* 0 = global scope */ make_int(var_names[n], 0, 0, -1); /* TODO: setting script to -1 is asking for troubles... */ } for (i = 1; i < MAX_VARS; i++) { if (compare("&life", play.var[i].name)) plife = &play.var[i].var; if (compare("&vision", play.var[i].name)) pvision = &play.var[i].var; if (compare("&result", play.var[i].name)) presult = &play.var[i].var; if (compare("&speed", play.var[i].name)) pspeed = &play.var[i].var; if (compare("&timing", play.var[i].name)) ptiming = &play.var[i].var; if (compare("&lifemax", play.var[i].name)) plifemax = &play.var[i].var; if (compare("&exp", play.var[i].name)) pexper = &play.var[i].var; if (compare("&strength", play.var[i].name)) pstrength = &play.var[i].var; if (compare("&defense", play.var[i].name)) pdefense = &play.var[i].var; if (compare("&gold", play.var[i].name)) pgold = &play.var[i].var; if (compare("&magic", play.var[i].name)) pmagic = &play.var[i].var; if (compare("&level", play.var[i].name)) plevel = &play.var[i].var; if (compare("&player_map", play.var[i].name)) pmap = &play.var[i].var; if (compare("&cur_weapon", play.var[i].name)) pcur_weapon = &play.var[i].var; if (compare("&cur_magic", play.var[i].name)) pcur_magic = &play.var[i].var; if (compare("&last_text", play.var[i].name)) plast_text = &play.var[i].var; if (compare("&magic_level", play.var[i].name)) pmagic_level = &play.var[i].var; if (compare("&update_status", play.var[i].name)) pupdate_status = &play.var[i].var; if (compare("&missile_target", play.var[i].name)) pmissile_target = &play.var[i].var; if (compare("&enemy_sprite", play.var[i].name)) penemy_sprite = &play.var[i].var; if (compare("&magic_cost", play.var[i].name)) pmagic_cost = &play.var[i].var; if (compare("&missle_source", play.var[i].name)) pmissle_source = &play.var[i].var; } } /** * Process DinkC dialog choice stanza */ /*bool*/int talk_get(int script) { char* line = NULL; int cur = 1; int retnum = 0; clear_talk(); talk.newy = -5000; while(1) { redo: line = read_next_line(script); if (line == NULL) line = strdup(""); // compatibility strip_beginning_spaces(line); //Msg("Comparing to %s.", line); char* word = get_word(line, 1); if (compare(word, "set_y")) { free(word); word = get_word(line, 2); talk.newy = atol(word); free(word); free(line); goto redo; } if (compare(word, "set_title_color")) { free(word); word = get_word(line, 2); talk.color = atol(word); free(word); free(line); goto redo; } free(word); strip_beginning_spaces(line); if (compare(line, "\n")) { free(line); goto redo; } char* directive = NULL; morestuff: directive = separate_string(line, 1, '('); strip_beginning_spaces(directive); if (compare(directive, "title_start")) { free(line); while((line = read_next_line(script)) != NULL) { strip_beginning_spaces(line); free(directive); directive = separate_string(line, 1, '('); if (directive != NULL) { strip_beginning_spaces(directive); if (compare(directive, "title_end")) { replace_norealloc("\n\n\n\n", "\n \n", talk.buffer); replace_norealloc("\n\n", "\n", talk.buffer); free(directive); free(line); goto redo; } } /* drop '\n', this messes translations */ line[strlen(line)-1] = '\0'; /* Translate text (before variable substitution) */ char* translation = i18n_translate(rinfo[script]->name, rinfo[script]->debug_line, line); decipher_string(&translation, script); int cur_len = strlen(talk.buffer); strncat(talk.buffer, translation, TALK_TITLE_BUFSIZ - 1 - cur_len - 1); free(translation); /* put '\n' back */ strcat(talk.buffer, "\n"); talk.buffer[TALK_TITLE_BUFSIZ-1] = '\0'; free(line); } free(directive); goto redo; } if (compare(directive, "choice_end")) { if (cur-1 == 0) { log_debug("Error: choice() has 0 options in script %s, offset %d.", rinfo[script]->name, rinfo[script]->current); free(directive); free(line); return /*false*/0; } //all done, lets jam //Msg("found choice_end, leaving!"); talk.last = cur-1; talk.cur = 1; talk.active = /*true*/1; talk.page = 1; talk.cur_view = 1; talk.script = script; free(directive); free(line); return /*true*/1; } free(directive); char* condition = separate_string(line, 1, '"'); strip_beginning_spaces(condition); if (strlen(condition) > 2) { //found conditional statement if (strchr(condition, '(') == NULL) { log_error("[DinkC] Error with choice() statement in script %s, offset %d. (%s?)", rinfo[script]->name, rinfo[script]->current, condition); free(condition); free(line); return /*false*/0; } char* temp = separate_string(condition, 2, '('); free(condition); condition = separate_string(temp, 1, ')'); free(temp); //Msg("Running %s through var figure..", check); if (var_figure(condition, script) == 0) { log_debug("Answer is no."); retnum++; free(condition); free(line); goto redo; //said NO to statement } //Msg("Answer is yes."); free(condition); /* Resume processing stripping the first condition (there may be several conditions on a single dialog ligne, which are AND'ed) */ char* p = strchr(line, ')') + 1; int i = 0; for (; *p != '\0'; i++, p++) line[i] = *p; line[i] = '\0'; goto morestuff; } free(condition); retnum++; char* text = separate_string(line, 2, '"'); if (strlen(text) > 0) { /* Translate text (before variable substitution) */ char* translation = i18n_translate(rinfo[script]->name, rinfo[script]->debug_line, text); strip_beginning_spaces(translation); decipher_savegame = retnum; decipher_string(&translation, script); decipher_savegame = 0; strncpy(talk.line[cur], translation, TALK_LINE_BUFSIZ-1); talk.line[cur][TALK_LINE_BUFSIZ-1] = '\0'; free(translation); } else { /* Handle empty text separately because _("") has a special meaning (returns .mo meta-data). */ strcpy(talk.line[cur], ""); } free(text); talk.line_return[cur] = retnum; cur++; free(line); } } /** * Utility function for 'process_line', to separate and store the current procedure arguments. * * proc_name: named of the called function * script: script id * str_params: string to parse (what was after the function name) * spec: describe the function's parameters: * 1=int * 2=string * 0=no more args (10 args max) * * Known compatibility issue: passing no argument to a function * expecting 1 int argument is considered valid.. * * Return: 0 if parse error, 1 if success */ int get_parms(char proc_name[20], int script, char *str_params, int* spec) { /* Clean-up parameters */ memset(nlist, 0, 10 * sizeof (int)); { int i = 0; for (; i < 10; i++) slist[i][0] = '\0'; } /* Safety */ char* limit = str_params + strlen(str_params); strip_beginning_spaces(str_params); if (str_params[0] == '(') { //Msg("Found first (."); str_params++; } else { log_error("[DinkC] Missing '(' in %s, offset %d.", rinfo[script]->name, rinfo[script]->current); return 0; } int i = 0; for (; i < 10; i++) { strip_beginning_spaces(str_params); if (spec[i] == 1) // type=int { // Get next parameter (until ',' or ')' is reached) char* parm = NULL; if (strchr(str_params, ',') != NULL) parm = separate_string(str_params, 1, ','); else if (strchr(str_params, ')') != NULL) parm = separate_string(str_params, 1, ')'); else parm = strdup(""); // move to next param str_params += strlen(parm); int intval = -1; if (parm[0] == '&') { replace_norealloc(" ", "", parm); intval = decipher(parm, script); } else { intval = atol(parm); } // store parameter of type 'int' nlist[i] = intval; free(parm); } else if (spec[i] == 2) // type=string { // Checking for string char* parm = NULL; parm = separate_string(str_params, 2, '"'); // replace DinkC string parameter free(slist[i]); slist[i] = parm; // move to next param str_params += strlen(parm) + 2; // 2x" if (str_params > limit) str_params = limit; } if ((i+1) == 10 || spec[i+1] == 0) // this was the last arg { //finish strip_beginning_spaces(str_params); if (str_params[0] == ')') { str_params++; } else { return 0; } strip_beginning_spaces(str_params); return 1; } //got a parm, but there is more to get, lets make sure there is a comma there strip_beginning_spaces(str_params); if (str_params[0] == ',') { str_params++; } else { return 0; } } return 1; } /** * Are these 2 function signatures identical? */ static int signatures_eq_p(int* params1, int* params2) { int i = 0; for (; i < 10; i++) if (params1[i] != params2[i]) return 0; return 1; } /** * Process one line of DinkC and returns directive to the DinkC * interpreter. * * Cf. doc/HACKING_dinkc.txt for understanding in progress ;) **/ enum dinkc_parser_state process_line(int script, char *s, /*bool*/int doelse) { char *h, *p; char* ev[3]; memset(&ev, 0, sizeof(ev)); if (rinfo[script]->level < 1) rinfo[script]->level = 1; h = s; if (h[0] == '\0') return 0; if ((h[0] == '/') && (h[1] == '/')) { //Msg("It was a comment!"); goto bad; } /* Cut line */ ev[0] = separate_string(h, 1, ' '); ev[1] = separate_string(h, 2, ' '); ev[2] = separate_string(h, 3, ' '); /* Prepare free on return */ #define PL_RETURN(intval) {free(ev[0]), free(ev[1]), free(ev[2]); return intval;} if (compare(ev[0], "VOID")) { if (rinfo[script]->proc_return != 0) { run_script(rinfo[script]->proc_return); kill_script(script); } PL_RETURN(DCPS_YIELD); } /* goto label? */ if (ev[0][strlen(ev[0]) -1] == ':' && strlen(ev[1]) < 2) { if (dversion >= 108) { /* Attempt to avoid considering: say("bonus: 5 points", 1); // would not display any text at all! as a label */ if (strncmp (ev[0], "say", 3) != 0) { PL_RETURN(0); //its a label } } else { PL_RETURN(0); //its a label } } /** Expression between parenthesis **/ if (ev[0][0] == '(') { //this procedure has been passed a conditional statement finder //what kind of conditional statement is it? p = h; char* temp = separate_string(h, 2, ')'); free(ev[0]); ev[0] = separate_string(h, 1, ')'); // Msg("Ok, turned h %s to ev1 %s.",h,ev[0]); p += strlen(ev[0]) + 1; strip_beginning_spaces(p); if (strchr(temp, '=') != NULL) { h++; strip_beginning_spaces(h); process_line(script, h, /*false*/0); replace_norealloc("==", "", temp); char* expr = xmalloc(20 + 4 + strlen(temp) + 1); sprintf(expr, "%d == %s", returnint, temp); returnint = var_figure(expr, script); strcpy(h, "\n"); free(expr); free(temp); PL_RETURN(0); } if (strchr(temp, '>') != NULL) { h++; strip_beginning_spaces(h); process_line(script, h, /*false*/0); replace_norealloc("==", "", temp); char* expr = xmalloc(20 + 3 + strlen(temp) + 1); sprintf(expr, "%d > %s", returnint, temp); returnint = var_figure(expr, script); strcpy(h, "\n"); free(expr); free(temp); PL_RETURN(0); } if (strchr(temp, '<') != NULL) { h++; strip_beginning_spaces(h); process_line(script, h, /*false*/0); replace_norealloc("==", "", temp); char* expr = xmalloc(20 + 3 + strlen(temp) + 1); sprintf(expr, "%d < %s", returnint, temp); returnint = var_figure(expr, script); strcpy(h, "\n"); free(expr); free(temp); PL_RETURN(0); } /* Beuc: This should be converted to a set of "if ... else * if... else if ..." and multi-character constants should be * removed. However, this may cause the interpreter to behave * differently, so be careful. */ /* For now, I'll rewrite the code in an equivalent warning-free * inelegant way: strchr(str, 'ab') <=> strchr(str, 'b') */ /* if (strchr (temp, '<=') != NULL) */ if (strchr(temp, '=') != NULL) { h++; strip_beginning_spaces(h); process_line(script, h, /*false*/0); replace_norealloc("==", "", temp); char* expr = xmalloc(20 + 4 + strlen(temp) + 1); sprintf(expr, "%d <= %s", returnint, temp); returnint = var_figure(expr, script); strcpy(h, "\n"); free(expr); free(temp); PL_RETURN(0); } /* if (strchr (temp, '>=') != NULL) */ if (strchr (temp, '=') != NULL) { h++; strip_beginning_spaces(h); process_line(script, h, /*false*/0); replace_norealloc("==", "", temp); char* expr = xmalloc(20 + 4 + strlen(temp) + 1); sprintf(expr, "%d >= %s", returnint, temp); returnint = var_figure(expr, script); strcpy(h, "\n"); free(expr); free(temp); PL_RETURN(0); } /* if (strchr (temp, '!=') != NULL) */ if (strchr (temp, '=') != NULL) { h++; strip_beginning_spaces(h); process_line(script, h, /*false*/0); replace_norealloc("==", "", temp); char* expr = xmalloc(20 + 4 + strlen(temp) + 1); sprintf(expr, "%d != %s", returnint, temp); returnint = var_figure(expr, script); strcpy(h, "\n"); free(expr); free(temp); PL_RETURN(0); } free(temp); if (p[0] == ')') { //its a procedure in the if statement!!! h++; p++; char* line_copy = strdup(p); process_line(script, h, /*false*/0); log_debug("Returned %d for the returnint", returnint); strcpy(s, line_copy); /* strlen(s) >= strlen(line_copy) */ free(line_copy); h = s; PL_RETURN(0); } else { h++; char* expr = separate_string(h, 1,')'); h += strlen(expr) + 1; returnint = var_figure(expr, script); free(expr); strcpy_nooverlap(s, h); PL_RETURN(0); } strip_beginning_spaces(h); strip_beginning_spaces(ev[0]); s = h; } /* END expression between parenthesis */ if (strchr(ev[0], '(') != NULL) { //Msg("Has a (, lets change it"); free(ev[0]); ev[0] = separate_string(h, 1, '('); //Msg("Ok, first is now %s",ev[0]); } /** { Bloc } **/ char first = ev[0][0]; if (first == '{') { rinfo[script]->level++; //Msg("Went up level, now at %d.", rinfo[script]->level); h++; if (rinfo[script]->skipnext) { /* Skip the whole { section } */ rinfo[script]->skipnext = /*false*/0; rinfo[script]->onlevel = ( rinfo[script]->level - 1); } goto good; } if (first == '}') { rinfo[script]->level--; //Msg("Went down a level, now at %d.", rinfo[script]->level); h++; if (rinfo[script]->onlevel > 0 && rinfo[script]->level == rinfo[script]->onlevel) { /* Finished skipping the { section }, preparing to run 'else' */ strip_beginning_spaces(h); strcpy_nooverlap(s, h); PL_RETURN(DCPS_DOELSE_ONCE); } goto good; } /* Fix if there are too many closing '}' */ if (rinfo[script]->level < 0) { rinfo[script]->level = 0; } /* Note: that's the 2nd time we compare with "VOID" - cf. above. However ev[0] was modified in between, so this section may still be called if the first comparison didn't match. */ if (compare(ev[0], "void")) { // Msg("Next procedure starting, lets quit"); strcpy_nooverlap(s, h); if (rinfo[script]->proc_return != 0) { run_script(rinfo[script]->proc_return); kill_script(script); } PL_RETURN(DCPS_YIELD); } /* Stop processing if we're skipping the current { section } */ if (rinfo[script]->onlevel > 0 && rinfo[script]->level > rinfo[script]->onlevel) { PL_RETURN(0); } rinfo[script]->onlevel = 0; /* Skip the current line if the previous 'if' or 'else' said so */ if (rinfo[script]->skipnext) { //sorry, can't do it, you were told to skip the next thing rinfo[script]->skipnext = /*false*/0; strcpy(s, "\n"); /* jump to next line */ //PL_RETURN(3); PL_RETURN(DCPS_DOELSE_ONCE); } if (compare(ev[0], "void")) { log_error("[DinkC] Missing } in %s, offset %d.", rinfo[script]->name,rinfo[script]->current); strcpy_nooverlap(s, h); PL_RETURN(DCPS_YIELD); } /** if **/ if (compare(ev[0], "if")) { h += strlen(ev[0]); strip_beginning_spaces(h); process_line(script, h, /*false*/0); // Result is 'returnint' if (returnint != 0) { log_debug("If returned true"); } else { //don't do it! rinfo[script]->skipnext = /*true*/1; log_debug("If returned false, skipping next thing"); } strcpy_nooverlap(s, h); //g("continuing to run line %s..", h); //PL_RETURN(5); PL_RETURN(DCPS_DOELSE_ONCE); /* state 5 should actually be state DCPS_CONTINUE, but keeping it that way (e.g. with doelse=1 for the next line) for compatibility, just in case somebody abused it */ } if (compare(ev[0], "else")) { //Msg("Found else!"); h += strlen(ev[0]); if (doelse) { // Yes to else } else { // No to else... // they shouldn't run the next thing rinfo[script]->skipnext = /*true*/1; } strcpy_nooverlap(s, h); PL_RETURN(1); } /** Dialog **/ if (compare(ev[0], "choice_start")) { kill_text_owned_by(1); if (talk_get(script)) { // Question(s) gathered successfully PL_RETURN(DCPS_YIELD); } PL_RETURN(0); } /** Jump **/ if (compare(ev[0], "goto")) { locate_goto(ev[1], script); PL_RETURN(0); } /** Definition **/ if (compare(ev[0], "int")) { int_prepare(h, script); h += strlen(ev[0]); if (strchr(h, '=') != NULL) { strip_beginning_spaces(h); //Msg("Found =...continuing equation"); strcpy_nooverlap(s, h); PL_RETURN(DCPS_CONTINUE); } else { PL_RETURN(DCPS_GOTO_NEXTLINE); } } /** "return;" and "return something;" **/ if (compare(ev[0], "return;")) { log_debug("Found return; statement"); if (rinfo[script]->proc_return != 0) { bKeepReturnInt = 1; /* v1.08 */ run_script(rinfo[script]->proc_return); kill_script(script); } PL_RETURN(DCPS_YIELD); } if (dversion >= 108) { /* "return", without trailing ';' */ /* added so we can have return values and crap. */ /* see also "return;" above */ if (compare (ev[0], "return")) { log_debug("Found return; statement"); h += strlen(ev[0]); strip_beginning_spaces (h); process_line (script, h, 0); if (rinfo[script]->proc_return != 0) { bKeepReturnInt = 1; run_script (rinfo[script]->proc_return); kill_script (script); } PL_RETURN(DCPS_YIELD); } } /********************/ /* DinkC bindings */ /* */ /********************/ /** Lookup bindings **/ char* funcname = ev[0]; char* str_args = h + strlen(ev[0]); struct binding* pbd = NULL; pbd = dinkc_bindings_lookup(bindings, funcname); if (pbd != NULL) { /* Common arguments */ int* yield = alloca(sizeof(int)*1); yield[0] = 0; /* don't yield by default) */ /* Specific arguments */ int* params = pbd->params; if (params[0] != -1) /* no args == no checks*/ { if (!get_parms(funcname, script, str_args, params)) { /* Invalid parameters in the DinkC script - output an error message */ int i = 0; while (params[i] != 0 && i < 10) i++; log_error("[DinkC] %s:%d: procedure '%s' takes %d parameters", rinfo[script]->name, rinfo[script]->debug_line, funcname, i); /* Set 'returnint' if necessary */ if (pbd->badparams_returnint_p == 1) returnint = pbd->badparams_returnint; /* Fallback parser state */ PL_RETURN(pbd->badparams_dcps); } } /* Call C function */ cur_funcname = pbd->funcname; /* for error messages */ int sig_void[10] = {-1,0,0,0,0,0,0,0,0,0}; int sig_int[10] = {1,0,0,0,0,0,0,0,0,0}; int sig_str[10] = {2,0,0,0,0,0,0,0,0,0}; int sig_int_int[10] = {1,1,0,0,0,0,0,0,0,0}; int sig_int_str[10] = {1,2,0,0,0,0,0,0,0,0}; int sig_str_int[10] = {2,1,0,0,0,0,0,0,0,0}; int sig_str_str[10] = {2,2,0,0,0,0,0,0,0,0}; int sig_int_int_int[10] = {1,1,1,0,0,0,0,0,0,0}; int sig_str_int_int[10] = {2,1,1,0,0,0,0,0,0,0}; int sig_int_int_int_int[10] = {1,1,1,1,0,0,0,0,0,0}; int sig_int_int_int_int_int[10] = {1,1,1,1,1,0,0,0,0,0}; int sig_int_int_int_int_int_int[10] = {1,1,1,1,1,1,0,0,0,0}; /* {-1,0,0,0,0,0,0,0,0,0} */ if (signatures_eq_p(pbd->params, sig_void)) { void (*pf)(int, int*, int*) = pbd->func; (*pf)(script, yield, &returnint); } /* {1,0,0,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_int)) { void (*pf)(int, int*, int* , int) = pbd->func; (*pf)(script, yield, &returnint , nlist[0]); } /* {2,0,0,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_str)) { void (*pf)(int, int*, int* , char*) = pbd->func; (*pf)(script, yield, &returnint , slist[0]); } /* {1,1,0,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_int_int)) { void (*pf)(int, int*, int* , int, int) = pbd->func; (*pf)(script, yield, &returnint , nlist[0], nlist[1]); } /* {1,2,0,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_int_str)) { void (*pf)(int, int*, int* , int, char*) = pbd->func; (*pf)(script, yield, &returnint , nlist[0], slist[1]); } /* {2,1,0,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_str_int)) { void (*pf)(int, int*, int* , char*, int) = pbd->func; (*pf)(script, yield, &returnint , slist[0], nlist[1]); } /* {2,2,0,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_str_str)) { void (*pf)(int, int*, int* , char*, int) = pbd->func; (*pf)(script, yield, &returnint , slist[0], nlist[1]); } /* {1,1,1,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_int_int_int)) { void (*pf)(int, int*, int* , int, int, int) = pbd->func; (*pf)(script, yield, &returnint , nlist[0], nlist[1], nlist[2]); } /* {2,2,1,0,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_str_int_int)) { void (*pf)(int, int*, int* , char*, int, int) = pbd->func; (*pf)(script, yield, &returnint , slist[0], nlist[1], nlist[2]); } /* {1,1,1,1,0,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_int_int_int_int)) { void (*pf)(int, int*, int* , int, int, int, int) = pbd->func; (*pf)(script, yield, &returnint , nlist[0], nlist[1], nlist[2], nlist[3]); } /* {1,1,1,1,1,0,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_int_int_int_int_int)) { void (*pf)(int, int*, int* , int, int, int, int, int) = pbd->func; (*pf)(script, yield, &returnint , nlist[0], nlist[1], nlist[2], nlist[3], nlist[4]); } /* {1,1,1,1,1,1,0,0,0,0} */ else if (signatures_eq_p(pbd->params, sig_int_int_int_int_int_int)) { void (*pf)(int, int*, int* , int, int, int, int, int, int) = pbd->func; (*pf)(script, yield, &returnint , nlist[0], nlist[1], nlist[2], nlist[3], nlist[4], nlist[5]); } else { log_fatal("Internal error: DinkC function %s has unknown signature", pbd->funcname); exit(EXIT_FAILURE); } cur_funcname = ""; /* the function can manipulation returnint through argument #3 */ if (*yield == 0) { PL_RETURN(DCPS_GOTO_NEXTLINE); } else if (*yield == 1) { PL_RETURN(DCPS_YIELD); } else { log_fatal("Internal error: DinkC function %s requested invalid state %d", pbd->funcname, *yield); exit(EXIT_FAILURE); } } /***************/ /** Operators **/ /** **/ /***************/ /* Beware: this works on ev[1], not ev[0]; position in the code is critical! */ if (compare(ev[1], "=")) { h += strlen(ev[0]); strip_beginning_spaces(h); h++; strip_beginning_spaces(h); var_equals(ev[0], ev[2], '=', script, h); strcpy_nooverlap(s, h); PL_RETURN(0); } if (compare(ev[1], "+=")) { h += strlen(ev[0]); strip_beginning_spaces(h); h += 2; strip_beginning_spaces(h); var_equals(ev[0], ev[2], '+', script, h); strcpy_nooverlap(s, h); PL_RETURN(0); } if (compare(ev[1], "*=")) { h += strlen(ev[0]); strip_beginning_spaces(h); h += 2; strip_beginning_spaces(h); var_equals(ev[0], ev[2], '*', script, h); strcpy_nooverlap(s, h); PL_RETURN(0); } if (compare(ev[1], "-=")) { h += strlen(ev[0]); strip_beginning_spaces(h); h += 2; strip_beginning_spaces(h); var_equals(ev[0], ev[2], '-', script, h); strcpy_nooverlap(s, h); PL_RETURN(0); } if (compare(ev[1], "/") || (dversion >= 108 && compare(ev[1], "/="))) { h += strlen(ev[0]); strip_beginning_spaces(h); h++; strip_beginning_spaces(h); var_equals(ev[0], ev[2], '/', script, h); strcpy_nooverlap(s, h); PL_RETURN(0); } if (compare(ev[1], "*")) { h += strlen(ev[0]); strip_beginning_spaces(h); h++; strip_beginning_spaces(h); var_equals(ev[0], ev[2], '*', script, h); strcpy_nooverlap(s, h); PL_RETURN(0); } /***************************************/ /** New DinkC user-defined procedures **/ /** **/ /***************************************/ if (dversion >= 108) { if (compare (ev[0], "external")) { h += strlen(ev[0]); int p[20] = { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; { int i = 0; for (; i < 10; i++) slist[i][0] = '\0'; } get_parms(ev[0], script, h, p); if (strlen(slist[0]) > 0 && strlen(slist[1]) > 0) { int myscript1 = load_script(slist[0], rinfo[script]->sprite, 0); if (myscript1 == 0) { log_error("[DinkC] external: Couldn't find %s.c (for procedure %s)", slist[0], slist[1]); PL_RETURN(0); } rinfo[myscript1]->arg1 = nlist[2]; rinfo[myscript1]->arg2 = nlist[3]; rinfo[myscript1]->arg3 = nlist[4]; rinfo[myscript1]->arg4 = nlist[5]; rinfo[myscript1]->arg5 = nlist[6]; rinfo[myscript1]->arg6 = nlist[7]; rinfo[myscript1]->arg7 = nlist[8]; rinfo[myscript1]->arg8 = nlist[9]; if (locate (myscript1, slist[1])) { rinfo[myscript1]->proc_return = script; run_script (myscript1); PL_RETURN(DCPS_YIELD); } else { log_error("[DinkC] external: Couldn't find procedure %s in %s.", slist[1], slist[0]); kill_script (myscript1); } } strcpy (s, h); PL_RETURN(0); } if (strchr (h, '(') != NULL) { //lets attempt to run a procedure int myscript = load_script (rinfo[script]->name, rinfo[script]->sprite, 0); h += strlen(ev[0]); int p[20] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; get_parms(ev[0], script, h, p); if (locate(myscript, ev[0])) { /* Custom procedure in the current script */ rinfo[myscript]->arg1 = nlist[0]; rinfo[myscript]->arg2 = nlist[1]; rinfo[myscript]->arg3 = nlist[2]; rinfo[myscript]->arg4 = nlist[3]; rinfo[myscript]->arg5 = nlist[4]; rinfo[myscript]->arg6 = nlist[5]; rinfo[myscript]->arg7 = nlist[6]; rinfo[myscript]->arg8 = nlist[7]; rinfo[myscript]->arg9 = nlist[8]; rinfo[myscript]->proc_return = script; run_script(myscript); PL_RETURN(DCPS_YIELD); } else { /* Try custom global procedure */ int i = 0; for (; i < 100; i++) { /* Skip empty slots */ if (strlen (play.func[i].func) == 0) continue; if (compare(play.func[i].func, ev[0])) { myscript = load_script(play.func[i].file, rinfo[script]->sprite, 0); rinfo[myscript]->arg1 = nlist[0]; rinfo[myscript]->arg2 = nlist[1]; rinfo[myscript]->arg3 = nlist[2]; rinfo[myscript]->arg4 = nlist[3]; rinfo[myscript]->arg5 = nlist[4]; rinfo[myscript]->arg6 = nlist[5]; rinfo[myscript]->arg7 = nlist[6]; rinfo[myscript]->arg8 = nlist[7]; rinfo[myscript]->arg9 = nlist[8]; if (locate(myscript, ev[0])) { rinfo[myscript]->proc_return = script; run_script (myscript); PL_RETURN(DCPS_YIELD); } break; } } log_error("[DinkC] Procedure void %s( void ); not found in script %s. (word 2 was %s)", ev[0], ev[1], rinfo[myscript] != NULL ? rinfo[myscript]->name : ""); kill_script (myscript); } /*seperate_string(h, 1,'(',line); int myscript = load_script(rinfo[script]->name, rinfo[script]->sprite, false); if (locate( myscript, line)) { rinfo[myscript]->proc_return = script; run_script(myscript); PL_RETURN(DCPS_YIELD); } else { Msg("ERROR: Procedure void %s( void ); not found in script %s. (word 2 was %s) ", line, ev[1], rinfo[myscript]->name); kill_script(myscript); } */ PL_RETURN(0); } } else { /* v1.07 function that are implemented differently than in v1.08 */ if (compare(ev[0], "external")) { h += strlen(ev[0]); int p[20] = {2,2,0,0,0,0,0,0,0,0}; if (get_parms(ev[0], script, h, p)) { int myscript1 = load_script(slist[0], rinfo[script]->sprite, /*false*/0); if (myscript1 == 0) { log_error("[DinkC] external: Couldn't find %s.c (for procedure %s)", slist[0], slist[1]); PL_RETURN(0); } if (locate(myscript1, slist[1])) { rinfo[myscript1]->proc_return = script; run_script(myscript1); PL_RETURN(DCPS_YIELD); } else { log_error("[DinkC] external: Couldn't find procedure %s in %s.", slist[1], slist[0]); kill_script(myscript1); } } else { log_error("[DinkC] %s: procedure 'external' takes 2 parameters (offset %d)", rinfo[script]->name, rinfo[script]->current); } strcpy_nooverlap(s, h); PL_RETURN(0); } if (strchr(h, '(') != NULL) { //lets attempt to run a procedure char* proc = separate_string(h, 1, '('); int myscript = load_script(rinfo[script]->name, rinfo[script]->sprite, /*false*/0); if (locate(myscript, proc)) { rinfo[myscript]->proc_return = script; run_script(myscript); free(proc); PL_RETURN(DCPS_YIELD); } else { log_error("[DinkC] Procedure void %s( void ); not found in script %s. (word 2 was %s) ", proc, ev[1], rinfo[myscript]->name); kill_script(myscript); } free(proc); PL_RETURN(0); } log_error("[DinkC] \"%s\" unknown in %s, offset %d.", ev[0], rinfo[script]->name,rinfo[script]->current); //in a thingie, ready to go } bad: strcpy(s, "\n"); /* jump to next line */ //PL_RETURN(0); PL_RETURN(DCPS_CONTINUE); good: strcpy_nooverlap(s, h); //s = h //Msg("ok, continuing with running %s..",s); PL_RETURN(DCPS_CONTINUE); } freedink-108.4+dfsg/src/freedinkedit.60000644000175000017500000000243412421730244015335 0ustar meme.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.10. .TH FREEDINK "6" "October 2014" "FreeDink 108.4" "Games" .SH NAME FreeDink \- adventure and role-playing game (editor) .SH SYNOPSIS .B freedinkedit [\fIOPTIONS\fR]... .SH DESCRIPTION Edit the Dink Smallwood game or one of its D\-Mods. .TP \fB\-h\fR, \fB\-\-help\fR Display this help screen .TP \fB\-v\fR, \fB\-\-version\fR Display the version .TP \fB\-g\fR, \fB\-\-game\fR Specify a DMod directory .TP \fB\-r\fR, \fB\-\-refdir\fR Specify base directory for dink/graphics, D\-Mods, etc. .TP \fB\-d\fR, \fB\-\-debug\fR Explain what is being done .TP \fB\-i\fR, \fB\-\-noini\fR Do not attempt to write dinksmallwood.ini .TP \fB\-j\fR, \fB\-\-nojoy\fR Do not attempt to use joystick .TP \fB\-s\fR, \fB\-\-nosound\fR Do not play sound .TP \fB\-t\fR, \fB\-\-truecolor\fR Allow more colours (for recent D\-Mod graphics) .TP \fB\-w\fR, \fB\-\-window\fR Use windowed mode instead of screen mode .TP \fB\-7\fR, \fB\-\-v1\fR.07 Enable v1.07 compatibility mode .SH "REPORTING BUGS" Report bugs to bug\-freedink@gnu.org. .PP .br FreeDink is free software, and you are welcome to redistribute it under certain conditions; see the GNU GPL for details. http://gnu.org/licenses/gpl.html .br There is NO WARRANTY, to the extent permitted by law. freedink-108.4+dfsg/src/paths.h0000644000175000017500000000366412420231175014105 0ustar meme/** * Compute and store the search paths * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _PATH_H #define _PATH_H #ifdef __cplusplus extern "C" { #endif #include extern void paths_init(char* argv0, char* refdir_opt, char* dmoddir_opt); extern const char *paths_getdmoddir(void); extern const char *paths_getdmodname(void); extern const char *paths_getfallbackdir(void); extern const char *paths_getdefaultpkgdatadir(void); extern const char *paths_getpkgdatadir(void); extern const char *paths_getexedir(void); extern const char *paths_getexefile(void); extern char* paths_dmodfile(char* file); extern char* paths_fallbackfile(char* file); extern char* paths_defaultpkgdatafile(char* file); extern char* paths_pkgdatafile(char* file); extern char* paths_exedirfile(char* file); extern FILE* paths_dmodfile_fopen(char* file, char* mode); extern FILE* paths_fallbackfile_fopen(char* file, char* mode); extern FILE* paths_defaultpkgdatafile_fopen(char* file, char* mode); extern FILE* paths_pkgdatafile_fopen(char* file, char* mode); extern FILE* paths_exedirfile_fopen(char* file, char* mode); extern FILE* paths_savegame_fopen(int num, char* mode); extern void paths_quit(void); #ifdef __cplusplus } #endif #endif freedink-108.4+dfsg/src/freedink_xpm.h0000644000175000017500000000012512330466347015441 0ustar meme#ifndef _FREEDINK_XPM_H #define _FREEDINK_XPM_H extern char * freedink_xpm[]; #endif freedink-108.4+dfsg/src/update_frame.h0000644000175000017500000000155012330466347015425 0ustar meme/** * FreeDink (not FreeDinkEdit) screen update * Copyright (C) 2005, 2007 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _UPDATE_FRAME_H #define _UPDATE_FRAME_H extern void updateFrame(void); #endif freedink-108.4+dfsg/src/meminfo.h0000644000175000017500000000151112330466347014420 0ustar meme/** * Memory statistics * Copyright (C) 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifndef _MEMINFO_H #define _MEMINFO_H extern void meminfo_log_mallinfo(void); #endif freedink-108.4+dfsg/src/binreloc.c0000644000175000017500000004513112420231175014551 0ustar meme/* * BinReloc - a library for creating relocatable executables * Written by: Hongli Lai * http://autopackage.org/ * * This source code is public domain. You can relicense this code * under whatever license you want. * * See http://autopackage.org/docs/binreloc/ for * more information and how to use this. */ /* See doc/binreloc.txt for FreeDink-related specifics */ #ifndef __BINRELOC_C__ #define __BINRELOC_C__ #include #ifdef ENABLE_BINRELOC #include #include #include #endif /* ENABLE_BINRELOC */ #include #include #include #include #include "binreloc.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** @internal * Find the canonical filename of the executable. Returns the filename * (which must be freed) or NULL on error. If the parameter 'error' is * not NULL, the error code will be stored there, if an error occured. */ static char * _br_find_exe (BrInitError *error) { #ifndef ENABLE_BINRELOC if (error) *error = BR_INIT_ERROR_DISABLED; return NULL; #else char *path, *path2, *line, *result; size_t buf_size; ssize_t size; struct stat stat_buf; FILE *f; /* Read from /proc/self/exe (symlink) */ if (sizeof (path) > SSIZE_MAX) buf_size = SSIZE_MAX - 1; else buf_size = PATH_MAX - 1; path = (char *) malloc (buf_size); if (path == NULL) { /* Cannot allocate memory. */ if (error) *error = BR_INIT_ERROR_NOMEM; return NULL; } path2 = (char *) malloc (buf_size); if (path2 == NULL) { /* Cannot allocate memory. */ if (error) *error = BR_INIT_ERROR_NOMEM; free (path); return NULL; } strncpy (path2, "/proc/self/exe", buf_size - 1); while (1) { int i; size = readlink (path2, path, buf_size - 1); if (size == -1) { /* Error. */ free (path2); break; } /* readlink() success. */ path[size] = '\0'; /* Check whether the symlink's target is also a symlink. * We want to get the final target. */ i = stat (path, &stat_buf); if (i == -1) { /* Error. */ free (path2); break; } /* stat() success. */ if (!S_ISLNK (stat_buf.st_mode)) { /* path is not a symlink. Done. */ free (path2); return path; } /* path is a symlink. Continue loop and resolve this. */ strncpy (path, path2, buf_size - 1); } /* readlink() or stat() failed; this can happen when the program is * running in Valgrind 2.2. Read from /proc/self/maps as fallback. */ buf_size = PATH_MAX + 128; line = (char *) realloc (path, buf_size); if (line == NULL) { /* Cannot allocate memory. */ free (path); if (error) *error = BR_INIT_ERROR_NOMEM; return NULL; } f = fopen ("/proc/self/maps", "r"); if (f == NULL) { free (line); if (error) *error = BR_INIT_ERROR_OPEN_MAPS; return NULL; } /* The first entry should be the executable name. */ result = fgets (line, (int) buf_size, f); if (result == NULL) { fclose (f); free (line); if (error) *error = BR_INIT_ERROR_READ_MAPS; return NULL; } /* Get rid of newline character. */ buf_size = strlen (line); if (buf_size <= 0) { /* Huh? An empty string? */ fclose (f); free (line); if (error) *error = BR_INIT_ERROR_INVALID_MAPS; return NULL; } if (line[buf_size - 1] == 10) line[buf_size - 1] = 0; /* Extract the filename; it is always an absolute path. */ path = strchr (line, '/'); /* Sanity check. */ if (strstr (line, " r-xp ") == NULL || path == NULL) { fclose (f); free (line); if (error) *error = BR_INIT_ERROR_INVALID_MAPS; return NULL; } path = strdup (path); free (line); fclose (f); return path; #endif /* ENABLE_BINRELOC */ } /** @internal * Find the canonical filename of the executable which owns symbol. * Returns a filename which must be freed, or NULL on error. */ static char * _br_find_exe_for_symbol (const void *symbol, BrInitError *error) { #ifndef ENABLE_BINRELOC if (error) *error = BR_INIT_ERROR_DISABLED; return (char *) NULL; #else #define SIZE PATH_MAX + 100 FILE *f; size_t address_string_len; char *address_string, line[SIZE], *found; if (symbol == NULL) return (char *) NULL; f = fopen ("/proc/self/maps", "r"); if (f == NULL) return (char *) NULL; address_string_len = 4; address_string = (char *) malloc (address_string_len); found = (char *) NULL; while (!feof (f)) { char *start_addr, *end_addr, *end_addr_end, *file; void *start_addr_p, *end_addr_p; size_t len; if (fgets (line, SIZE, f) == NULL) break; /* Sanity check. */ if (strstr (line, " r-xp ") == NULL || strchr (line, '/') == NULL) continue; /* Parse line. */ start_addr = line; end_addr = strchr (line, '-'); file = strchr (line, '/'); /* More sanity check. */ if (!(file > end_addr && end_addr != NULL && end_addr[0] == '-')) continue; end_addr[0] = '\0'; end_addr++; end_addr_end = strchr (end_addr, ' '); if (end_addr_end == NULL) continue; end_addr_end[0] = '\0'; len = strlen (file); if (len == 0) continue; if (file[len - 1] == '\n') file[len - 1] = '\0'; /* Get rid of "(deleted)" from the filename. */ len = strlen (file); if (len > 10 && strcmp (file + len - 10, " (deleted)") == 0) file[len - 10] = '\0'; /* I don't know whether this can happen but better safe than sorry. */ len = strlen (start_addr); if (len != strlen (end_addr)) continue; /* Transform the addresses into a string in the form of 0xdeadbeef, * then transform that into a pointer. */ if (address_string_len < len + 3) { address_string_len = len + 3; address_string = (char *) realloc (address_string, address_string_len); } memcpy (address_string, "0x", 2); memcpy (address_string + 2, start_addr, len); address_string[2 + len] = '\0'; sscanf (address_string, "%p", &start_addr_p); memcpy (address_string, "0x", 2); memcpy (address_string + 2, end_addr, len); address_string[2 + len] = '\0'; sscanf (address_string, "%p", &end_addr_p); if (symbol >= start_addr_p && symbol < end_addr_p) { found = file; break; } } free (address_string); fclose (f); if (found == NULL) return (char *) NULL; else return strdup (found); #endif /* ENABLE_BINRELOC */ } #ifndef BINRELOC_RUNNING_DOXYGEN #undef NULL #define NULL ((void *) 0) /* typecasted as char* for C++ type safeness */ #endif static char *exe = (char *) NULL; /** Initialize the BinReloc library (for applications). * * This function must be called before using any other BinReloc functions. * It attempts to locate the application's canonical filename. * * @note If you want to use BinReloc for a library, then you should call * br_init_lib() instead. * * @param error If BinReloc failed to initialize, then the error code will * be stored in this variable. Set to NULL if you want to * ignore this. See #BrInitError for a list of error codes. * * @returns 1 on success, 0 if BinReloc failed to initialize. */ int br_init (BrInitError *error) { exe = _br_find_exe (error); return exe != NULL; } /** Initialize the BinReloc library (for libraries). * * This function must be called before using any other BinReloc functions. * It attempts to locate the calling library's canonical filename. * * @note The BinReloc source code MUST be included in your library, or this * function won't work correctly. * * @param error If BinReloc failed to initialize, then the error code will * be stored in this variable. Set to NULL if you want to * ignore this. See #BrInitError for a list of error codes. * * @returns 1 on success, 0 if a filename cannot be found. */ int br_init_lib (BrInitError *error) { exe = _br_find_exe_for_symbol ((const void *) "", error); return exe != NULL; } /** Find the canonical filename of the current application. * * @param default_exe A default filename which will be used as fallback. * @returns A string containing the application's canonical filename, * which must be freed when no longer necessary. If BinReloc is * not initialized, or if br_init() failed, then a copy of * default_exe will be returned. If default_exe is NULL, then * NULL will be returned. */ char * br_find_exe (const char *default_exe) { if (exe == (char *) NULL) { /* BinReloc is not initialized. */ if (default_exe != (const char *) NULL) return strdup (default_exe); else return (char *) NULL; } return strdup (exe); } /** Locate the directory in which the current application is installed. * * The prefix is generated by the following pseudo-code evaluation: * \code * dirname(exename) * \endcode * * @param default_dir A default directory which will used as fallback. * @return A string containing the directory, which must be freed when no * longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_dir * will be returned. If default_dir is NULL, then NULL will be * returned. */ char * br_find_exe_dir (const char *default_dir) { if (exe == NULL) { /* BinReloc not initialized. */ if (default_dir != NULL) return strdup (default_dir); else return NULL; } return br_dirname (exe); } /** Locate the prefix in which the current application is installed. * * The prefix is generated by the following pseudo-code evaluation: * \code * dirname(dirname(exename)) * \endcode * * @param default_prefix A default prefix which will used as fallback. * @return A string containing the prefix, which must be freed when no * longer necessary. If BinReloc is not initialized, or if * the initialization function failed, then a copy of default_prefix * will be returned. If default_prefix is NULL, then NULL will be returned. */ char * br_find_prefix (const char *default_prefix) { char *dir1, *dir2; if (exe == (char *) NULL) { /* BinReloc not initialized. */ if (default_prefix != (const char *) NULL) return strdup (default_prefix); else return (char *) NULL; } dir1 = br_dirname (exe); dir2 = br_dirname (dir1); free (dir1); return dir2; } /** Locate the application's binary folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/bin" * \endcode * * @param default_bin_dir A default path which will used as fallback. * @return A string containing the bin folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if * the initialization function failed, then a copy of default_bin_dir will * be returned. If default_bin_dir is NULL, then NULL will be returned. */ char * br_find_bin_dir (const char *default_bin_dir) { char *prefix, *dir; prefix = br_find_prefix ((const char *) NULL); if (prefix == (char *) NULL) { /* BinReloc not initialized. */ if (default_bin_dir != (const char *) NULL) return strdup (default_bin_dir); else return (char *) NULL; } dir = br_build_path (prefix, "bin"); free (prefix); return dir; } /** Locate the application's superuser binary folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/sbin" * \endcode * * @param default_sbin_dir A default path which will used as fallback. * @return A string containing the sbin folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_sbin_dir will * be returned. If default_bin_dir is NULL, then NULL will be returned. */ char * br_find_sbin_dir (const char *default_sbin_dir) { char *prefix, *dir; prefix = br_find_prefix ((const char *) NULL); if (prefix == (char *) NULL) { /* BinReloc not initialized. */ if (default_sbin_dir != (const char *) NULL) return strdup (default_sbin_dir); else return (char *) NULL; } dir = br_build_path (prefix, "sbin"); free (prefix); return dir; } /** Locate the application's data folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/share" * \endcode * * @param default_data_dir A default path which will used as fallback. * @return A string containing the data folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_data_dir * will be returned. If default_data_dir is NULL, then NULL will be * returned. */ char * br_find_data_dir (const char *default_data_dir) { char *prefix, *dir; prefix = br_find_prefix ((const char *) NULL); if (prefix == (char *) NULL) { /* BinReloc not initialized. */ if (default_data_dir != (const char *) NULL) return strdup (default_data_dir); else return (char *) NULL; } dir = br_build_path (prefix, "share"); free (prefix); return dir; } /** Locate the application's localization folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/share/locale" * \endcode * * @param default_locale_dir A default path which will used as fallback. * @return A string containing the localization folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_locale_dir will be returned. * If default_locale_dir is NULL, then NULL will be returned. */ char * br_find_locale_dir (const char *default_locale_dir) { char *data_dir, *dir; data_dir = br_find_data_dir ((const char *) NULL); if (data_dir == (char *) NULL) { /* BinReloc not initialized. */ if (default_locale_dir != (const char *) NULL) return strdup (default_locale_dir); else return (char *) NULL; } dir = br_build_path (data_dir, "locale"); free (data_dir); return dir; } /** Locate the application's library folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/lib" * \endcode * * @param default_lib_dir A default path which will used as fallback. * @return A string containing the library folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the initialization * function failed, then a copy of default_lib_dir will be returned. * If default_lib_dir is NULL, then NULL will be returned. */ char * br_find_lib_dir (const char *default_lib_dir) { char *prefix, *dir; prefix = br_find_prefix ((const char *) NULL); if (prefix == (char *) NULL) { /* BinReloc not initialized. */ if (default_lib_dir != (const char *) NULL) return strdup (default_lib_dir); else return (char *) NULL; } dir = br_build_path (prefix, "lib"); free (prefix); return dir; } /** Locate the application's libexec folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/libexec" * \endcode * * @param default_libexec_dir A default path which will used as fallback. * @return A string containing the libexec folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the initialization * function failed, then a copy of default_libexec_dir will be returned. * If default_libexec_dir is NULL, then NULL will be returned. */ char * br_find_libexec_dir (const char *default_libexec_dir) { char *prefix, *dir; prefix = br_find_prefix ((const char *) NULL); if (prefix == (char *) NULL) { /* BinReloc not initialized. */ if (default_libexec_dir != (const char *) NULL) return strdup (default_libexec_dir); else return (char *) NULL; } dir = br_build_path (prefix, "libexec"); free (prefix); return dir; } /** Locate the application's configuration files folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/etc" * \endcode * * @param default_etc_dir A default path which will used as fallback. * @return A string containing the etc folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the initialization * function failed, then a copy of default_etc_dir will be returned. * If default_etc_dir is NULL, then NULL will be returned. */ char * br_find_etc_dir (const char *default_etc_dir) { char *prefix, *dir; prefix = br_find_prefix ((const char *) NULL); if (prefix == (char *) NULL) { /* BinReloc not initialized. */ if (default_etc_dir != (const char *) NULL) return strdup (default_etc_dir); else return (char *) NULL; } dir = br_build_path (prefix, "etc"); free (prefix); return dir; } /*********************** * Utility functions ***********************/ /** Concatenate str1 and str2 to a newly allocated string. * * @param str1 A string. * @param str2 Another string. * @returns A newly-allocated string. This string should be freed when no longer needed. */ char * br_strcat (const char *str1, const char *str2) { char *result; size_t len1, len2; if (str1 == NULL) str1 = ""; if (str2 == NULL) str2 = ""; len1 = strlen (str1); len2 = strlen (str2); result = (char *) malloc (len1 + len2 + 1); memcpy (result, str1, len1); memcpy (result + len1, str2, len2); result[len1 + len2] = '\0'; return result; } char * br_build_path (const char *dir, const char *file) { char *dir2, *result; size_t len; int must_free = 0; len = strlen (dir); if (len > 0 && dir[len - 1] != '/') { dir2 = br_strcat (dir, "/"); must_free = 1; } else dir2 = (char *) dir; result = br_strcat (dir2, file); if (must_free) free (dir2); return result; } /* Emulates glibc's strndup() */ static char * br_strndup (const char *str, size_t size) { char *result = (char *) NULL; size_t len; if (str == (const char *) NULL) return (char *) NULL; len = strlen (str); if (len == 0) return strdup (""); if (size > len) size = len; result = (char *) malloc (len + 1); memcpy (result, str, size); result[size] = '\0'; return result; } /** Extracts the directory component of a path. * * Similar to g_dirname() or the dirname commandline application. * * Example: * \code * br_dirname ("/usr/local/foobar"); --> Returns: "/usr/local" * \endcode * * @param path A path. * @returns A directory name. This string should be freed when no longer needed. */ char * br_dirname (const char *path) { char *end, *result; if (path == (const char *) NULL) return (char *) NULL; end = strrchr (path, '/'); if (end == (const char *) NULL) return strdup ("."); while (end > path && *end == '/') end--; result = br_strndup (path, end - path + 1); if (result[0] == 0) { free (result); return strdup ("/"); } else return result; } #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __BINRELOC_C__ */ freedink-108.4+dfsg/src/gfx.c0000644000175000017500000005150012420231175013535 0ustar meme/** * Graphics * Copyright (C) 2007, 2008, 2009 Sylvain Beucler * This file is part of GNU FreeDink * GNU FreeDink 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 3 of the * License, or (at your option) any later version. * GNU FreeDink 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, see * . */ #ifdef HAVE_CONFIG_H #include #endif #include /* putenv */ #include #include #include "SDL.h" #include "SDL_image.h" #include "SDL_rotozoom.h" #include "freedink_xpm.h" #include "io_util.h" #include "gfx.h" #include "gfx_fade.h" #include "gfx_fonts.h" #include "gfx_palette.h" #include "gfx_sprites.h" #include "gfx_tiles.h" #include "init.h" #include "paths.h" #include "log.h" /* Is the screen depth more than 8bit? */ int truecolor = 0; // // DELETEME // LPDIRECTDRAW lpDD = NULL; // DirectDraw object // //LPDIxRECTDRAWSURFACE lpDDSOne; // Offscreen surface 1 // LPDIRECTDRAWSURFACE lpDDSPrimary = NULL; // DirectDraw primary surface // LPDIRECTDRAWSURFACE lpDDSBack = NULL; // DirectDraw back surface // LPDIRECTDRAWSURFACE lpDDSTwo = NULL; // Offscreen surface 2 // LPDIRECTDRAWSURFACE lpDDSTrick = NULL; // Offscreen surface 2 // LPDIRECTDRAWSURFACE lpDDSTrick2 = NULL; // Offscreen surface 2 SDL_Surface *GFX_lpDDSBack = NULL; /* Backbuffer and link to physical screen*/ /* GFX_lpDDSTwo: holds the base scene */ /* Rationale attempt :*/ /* lpDDSTwo contains the background, which is reused for each new frame. It is overwritten when switching to another screen. However, it can change during a screen: 1) animated tiles (water & fire) 2) when a sprite is written on the background (eg when an enemy dies) 3) with various hacks such as fill_screen() (and maybe copy_bmp_to_screen()). */ /* Those changes may conflict with each other (eg: an animated tile overwrites half the carcass of a dead enemy). We might want to fix that. */ /* After the background is done, all the other operations are applied on lpDDSBack, the double buffer which is directly used by the physical screen. */ SDL_Surface *GFX_lpDDSTwo = NULL; /* Beuc: apparently used for the scrolling screen transition and more generaly as temporary buffers. Only used by the game, not the editor. */ /* Used in freedink.cpp only + as a local/independent temporary buffer in show_bmp©_bmp&process_show_bmp&load_sprite* */ SDL_Surface *GFX_lpDDSTrick = NULL; /* Used in freedink.cpp and update_frame.cpp */ SDL_Surface *GFX_lpDDSTrick2 = NULL; /* Reference palette: this is the canonical Dink palette, loaded from TS01.bmp (for freedink) and esplash.bmp (for freedinkedit). The physical screen may be changed (e.g. show_bmp()), but this canonical palette will stay constant. */ /* PALETTEENTRY real_pal[256]; */ SDL_Color GFX_real_pal[256]; /* True color fade in [0,256]; 0 is completely dark, 256 is unaltered */ double truecolor_fade_brightness = 256; /* Time elapsed since last fade computation; -1 is disabled */ Uint32 truecolor_fade_lasttick = -1; static int cur_video_flags = 0; /** * Check if the graphics system is initialized, so we know if we can * use it to display error messages to the user */ static enum gfx_init_state init_state = GFX_NOT_INITIALIZED; enum gfx_init_state gfx_get_init_state() { return init_state; } void gfx_dumpflags(Uint32 flags) { char buf[256]; // enough to display all flags sprintf(buf, "0x%8.8x", flags); strcat(buf, " "); char c[2] = "x"; int i = 32-1; for (; i >= 0; i--) { unsigned int b = flags >> i; c[0] = '0' + (b & 0x1); strcat(buf, c); } if (flags & SDL_HWSURFACE) strcat(buf, " SDL_HWSURFACE"); else strcat(buf, " SDL_SWSURFACE"); if (flags & SDL_HWPALETTE) strcat(buf, " | SDL_HWPALETTE"); if (flags & SDL_FULLSCREEN) strcat(buf, " | SDL_FULLSCREEN"); if (flags & SDL_DOUBLEBUF) strcat(buf, " | SDL_DOUBLEBUF"); if (flags & SDL_SRCCOLORKEY) strcat(buf, " | SDL_SRCCOLORKEY"); if (flags & SDL_SRCALPHA) strcat(buf, " | SDL_SRCALPHA"); if (flags & SDL_RLEACCEL) strcat(buf, " | SDL_RLEACCEL"); if (flags & SDL_RLEACCELOK) strcat(buf, " | SDL_RLEACCELOK"); log_info(buf); } /** * Graphics subsystem initalization */ int gfx_init(enum gfx_windowed_state windowed, char* splash_path) { /* Initialization in progress */ init_state = GFX_INITIALIZING_VIDEO; /* Init graphics subsystem */ if (SDL_WasInit(SDL_INIT_VIDEO) == 0 && SDL_InitSubSystem(SDL_INIT_VIDEO) == -1) { init_set_error_msg("Video initialization error: %s", SDL_GetError()); return -1; } const SDL_VideoInfo* info = SDL_GetVideoInfo(); if (info->wm_available) { SDL_Surface *icon = NULL; SDL_WM_SetCaption(PACKAGE_STRING, NULL); if ((icon = IMG_ReadXPMFromArray(freedink_xpm)) == NULL) { log_error("Error loading icon: %s", IMG_GetError()); } else { SDL_WM_SetIcon(icon, NULL); SDL_FreeSurface(icon); } } /* SDL_HWSURFACE gives direct 2D memory access if that's possible */ /* SDL_DOUBLEBUF is supposed to enable hardware double-buffering and is a pre-requisite for SDL_Flip to use hardware, see http://www.libsdl.org/cgi/docwiki.cgi/FAQ_20Hardware_20Surfaces_20Flickering */ int flags = SDL_HWSURFACE | SDL_DOUBLEBUF; if (windowed != GFX_WINDOWED) flags |= SDL_FULLSCREEN; int bits_per_pixel = 8; if (truecolor) { /* Recommended depth: */ log_info("Recommended depth is %d", info->vfmt->BitsPerPixel); bits_per_pixel = info->vfmt->BitsPerPixel; if (bits_per_pixel < 15) { /* Running truecolor mode in 8bit resolution? Let's emulate, the user must know what he's doing. */ bits_per_pixel = 15; log_info("Emulating truecolor mode within 8bit mode"); } } else { /* SDL_HWPALETTE makes sure we can use all the colors we need (override system palette reserved colors?) */ flags |= SDL_HWPALETTE; } log_info("Requesting depth %d", bits_per_pixel); putenv("SDL_VIDEO_CENTERED=1"); putenv("SDL_ASPECT_RATIO=4:3"); /* used by PSP to keep aspect ratio */ if (GFX_lpDDSBack == NULL) { /* Hardware mode */ log_info("Requesting video flags: "); gfx_dumpflags(flags); GFX_lpDDSBack = SDL_SetVideoMode(640, 480, bits_per_pixel, flags); if (GFX_lpDDSBack == NULL) log_warn("Unable to use hardware mode: %s", SDL_GetError()); } if (GFX_lpDDSBack == NULL) { /* Software mode - in theory SDL automatically fallbacks to software mode if hardware mode isn't available, but some architectures need to do it explicitely, e.g. PSP's 640x480stretch mode that only work with SDL_SWSURFACE|SDL_FULLSCREEN */ flags &= ~SDL_HWSURFACE; flags &= ~SDL_DOUBLEBUF; flags |= SDL_SWSURFACE; log_info("Requesting video flags: "); gfx_dumpflags(flags); GFX_lpDDSBack = SDL_SetVideoMode(640, 480, bits_per_pixel, flags); if (GFX_lpDDSBack == NULL) log_error("Unable to use software fullscreen mode: %s", SDL_GetError()); } if (GFX_lpDDSBack == NULL) { init_set_error_msg("Unable to set 640x480 video: %s\n", SDL_GetError()); return -1; } log_info("Obtained video flags: "); gfx_dumpflags(flags); cur_video_flags = flags; log_info("Video format: %d-bit R=0x%08x G=0x%08x B=0x%08x A=0x%08x", GFX_lpDDSBack->format->BitsPerPixel, GFX_lpDDSBack->format->Rmask, GFX_lpDDSBack->format->Gmask, GFX_lpDDSBack->format->Bmask, GFX_lpDDSBack->format->Amask); char buf[1024]; if (SDL_VideoDriverName(buf, 1024) != NULL) log_info("INFO: Video driver is '%s'", buf); else log_info("INFO: Unable to determine video driver name"); if (GFX_lpDDSBack->flags & SDL_HWSURFACE) log_info("INFO: Using hardware video mode."); else log_info("INFO: Not using a hardware video mode."); log_info("INFO: SDL depth is %d", bits_per_pixel); /* Hide mouse */ SDL_ShowCursor(SDL_DISABLE); /* Disable Alt-Tab and any other window-manager shortcuts */ /* SDL_WM_GrabInput(SDL_GRAB_ON); */ /* Default palette (may be used by early init error messages) */ gfx_palette_reset(); /* Create and set the physical palette */ if (gfx_palette_set_from_bmp("Tiles/Ts01.bmp") < 0) log_error("Failed to load default palette from Tiles/Ts01.bmp"); /* Set the reference palette */ gfx_palette_get_phys(GFX_real_pal); /* Initialize graphic buffers */ /* When a new image is loaded in DX, it's color-converted using the main palette (possibly altering the colors to match the palette); currently we emulate that by wrapping SDL_LoadBMP, converting image to the internal palette at load time - and we never change the buffer's palette again, so we're sure there isn't any conversion even if we change the screen palette: */ if (!truecolor) SDL_SetPalette(GFX_lpDDSBack, SDL_LOGPAL, GFX_real_pal, 0, 256); GFX_lpDDSTwo = SDL_DisplayFormat(GFX_lpDDSBack); GFX_lpDDSTrick = SDL_DisplayFormat(GFX_lpDDSBack); GFX_lpDDSTrick2 = SDL_DisplayFormat(GFX_lpDDSBack); /* Display splash picture, as early as possible */ { char* fullpath = paths_dmodfile(splash_path); if (!exist(fullpath)) { free(fullpath); fullpath = paths_fallbackfile(splash_path); } SDL_Surface* splash = load_bmp(fullpath); free(fullpath); if (splash == NULL) { log_error("Cannot load base graphics %s", splash_path); } else { /* Copy splash to the background buffer so that D-Mod can start an effect from it (e.g. Pilgrim Quest's burning splash screen effect) */ SDL_BlitSurface(splash, NULL, GFX_lpDDSTwo, NULL); SDL_FreeSurface(splash); } /* Copy splash screen (again) to the screen during loading time */ SDL_BlitSurface(GFX_lpDDSTwo, NULL, GFX_lpDDSBack, NULL); flip_it(); } /* Fonts system, default fonts */ init_state = GFX_INITIALIZING_FONTS; if (gfx_fonts_init() < 0) return -1; /* error message set in gfx_fonts_init */ /* Compute fade cache if necessary */ gfx_fade_init(); /* Mouse */ /* Center mouse and reset relative positionning */ SDL_WarpMouse(320, 240); SDL_PumpEvents(); SDL_GetRelativeMouseState(NULL, NULL); /* SDL_MouseMotionEvent: If the cursor is hidden (SDL_ShowCursor(0)) and the input is grabbed (SDL_WM_GrabInput(SDL_GRAB_ON)), then the mouse will give relative motion events even when the cursor reaches the edge of the screen. This is currently only implemented on Windows and Linux/Unix-alikes. */ /* So it's not portable and it blocks Alt+Tab, so let's try something else - maybe enable it as a command line option. */ /* SDL_WM_GrabInput(SDL_GRAB_ON); */ /* make all pointers to NULL */ memset(&gfx_tiles, 0, sizeof(gfx_tiles)); memset(&k, 0, sizeof(k)); memset(&GFX_k, 0, sizeof(GFX_k)); memset(&seq, 0, sizeof(seq)); /* Load the tiles from the BMPs */ tiles_load_default(); init_state = GFX_INITIALIZED; return 0; } /** * Failsafe graphics mode to display initialization error messages */ int gfx_init_failsafe() { /* Init graphics subsystem */ if (SDL_WasInit(SDL_INIT_VIDEO) == 0 && SDL_InitSubSystem(SDL_INIT_VIDEO) == -1) { log_fatal("Unable to init failsafe video: %s", SDL_GetError()); return -1; } const SDL_VideoInfo* info = SDL_GetVideoInfo(); if (info->wm_available) { SDL_WM_SetCaption(PACKAGE_STRING " - Initialization error", NULL); SDL_Surface *icon = IMG_ReadXPMFromArray(freedink_xpm); if (icon != NULL) { SDL_WM_SetIcon(icon, NULL); SDL_FreeSurface(icon); } } putenv("SDL_VIDEO_CENTERED=1"); putenv("SDL_ASPECT_RATIO=4:3"); /* used by PSP to keep aspect ratio */ #ifdef _PSP //GFX_lpDDSBack = SDL_SetVideoMode(480, 272, 32, SDL_HWSURFACE | SDL_FULLSCREEN); GFX_lpDDSBack = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE | SDL_FULLSCREEN); #else GFX_lpDDSBack = SDL_SetVideoMode(640, 480, 0, SDL_DOUBLEBUF); #endif if (GFX_lpDDSBack == NULL) { log_fatal("Unable to set failsafe video mode: %s", SDL_GetError()); return -1; } if (GFX_lpDDSBack->format->BitsPerPixel > 8) truecolor = 1; /* Default physical and reference palettes */ gfx_palette_reset(); gfx_palette_get_phys(GFX_real_pal); /* Set palette immediately (don't wait for flip_it()) */ SDL_SetPalette(GFX_lpDDSBack, SDL_PHYSPAL|SDL_LOGPAL, GFX_real_pal, 0, 256); return gfx_fonts_init_failsafe(); } /** * Unload graphics subsystem */ void gfx_quit() { init_state = GFX_QUITTING; gfx_fade_quit(); gfx_fonts_quit(); tiles_unload_all(); sprites_unload(); if (GFX_lpDDSBack != NULL) SDL_FreeSurface(GFX_lpDDSBack); if (GFX_lpDDSTwo != NULL) SDL_FreeSurface(GFX_lpDDSTwo); if (GFX_lpDDSTrick != NULL) SDL_FreeSurface(GFX_lpDDSTrick); if (GFX_lpDDSTrick2 != NULL) SDL_FreeSurface(GFX_lpDDSTrick2); GFX_lpDDSBack = NULL; GFX_lpDDSTwo = NULL; GFX_lpDDSTrick = NULL; GFX_lpDDSTrick2 = NULL; init_state = GFX_NOT_INITIALIZED; SDL_QuitSubSystem(SDL_INIT_VIDEO); } /* LoadBMP wrapper. Load a new graphic from file, and apply the reference palette so that all subsequent blits are faster (color convertion is avoided) - although the initial loading time will be somewhat longer. */ static SDL_Surface* load_bmp_internal(char *filename, SDL_RWops *rw, int from_mem) { SDL_Surface *image; if (from_mem == 1) { image = IMG_Load_RW(rw, 1); } else { ciconvert(filename); image = IMG_Load(filename); } if (image == NULL) { /* fprintf(stderr, "load_bmp_internal: %s\n", SDL_GetError()); */ /* Maybe it's just because we're at the end of a sequence */ return NULL; } if (!truecolor) { /* Make a copy of the surface using the screen format (in particular: same color depth, which is needed when importing 24bit graphics in 8bit mode). */ /* This copy is also necessary to make a palette conversion from the Dink palette (the one from the .bmp) to the 'DX-bug-messed' Dink palette (GFX_real_pal with overwritten indexes 0 and 255). */ /* converted = SDL_ConvertSurface(image, image->format, image->flags); */ SDL_Surface *converted = SDL_DisplayFormat(image); /* TODO: the following is probably unnecessary, I think that's exactly what SDL_DisplayFormat does: convert the surface to the screen's logical palette. Cf. test/sdl/paltest.c. */ { /* In the end, the image must use the reference palette: that way no mistaken color conversion will occur during blits to other surfaces/buffers. Blits should also be faster(?). Alternatively we could replace SDL_BlitSurface with a wrapper that sets identical palettes before the blits. */ SDL_SetPalette(converted, SDL_LOGPAL, GFX_real_pal, 0, 256); /* Blit the copy back to the original, with a potentially different palette, which triggers color conversion to image's palette. */ SDL_BlitSurface(image, NULL, converted, NULL); } SDL_FreeSurface(image); image = NULL; return converted; } else { /* In truecolor mode, converting a 8bit image to truecolor does not bring noticeable performance increase or decrease, but does increase memory usage by at least 10MB so let's use the loaded image as-is. No need for palette conversion either. */ return image; } } /* LoadBMP wrapper, from file */ SDL_Surface* load_bmp(char *filename) { return load_bmp_internal(filename, NULL, 0); } /* LoadBMP wrapper, from FILE pointer */ SDL_Surface* load_bmp_from_fp(FILE* in) { if (in == NULL) return NULL; SDL_RWops *rw = SDL_RWFromFP(in, /*autoclose=*/1); return load_bmp_internal(NULL, rw, 1); } /* LoadBMP wrapper, from memory */ SDL_Surface* load_bmp_from_mem(SDL_RWops *rw) { return load_bmp_internal(NULL, rw, 1); } /** * Temporary disable src's transparency and blit it to dst */ int gfx_blit_nocolorkey(SDL_Surface *src, SDL_Rect *src_rect, SDL_Surface *dst, SDL_Rect *dst_rect) { int retval = -1; Uint32 colorkey_flags, colorkey, alpha_flags, alpha; colorkey_flags = src->flags & (SDL_SRCCOLORKEY|SDL_RLEACCEL); #if SDL_VERSION_ATLEAST(1, 3, 0) SDL_GetColorKey(src, &colorkey); /* 1.3 TODO: alpha */ #else colorkey = src->format->colorkey; alpha_flags = src->flags & (SDL_SRCALPHA|SDL_RLEACCEL); alpha = src->format->alpha; #endif SDL_SetColorKey(src, 0, -1); SDL_SetAlpha(src, 0, -1); retval = SDL_BlitSurface(src, src_rect, dst, dst_rect); SDL_SetColorKey(src, colorkey_flags, colorkey); SDL_SetAlpha(src, alpha_flags, alpha); return retval; } /** * Blit and resize so that 'src' fits in 'dst_rect' */ int gfx_blit_stretch(SDL_Surface *src_surf, SDL_Rect *src_rect, SDL_Surface *dst_surf, SDL_Rect *dst_rect) { int retval = -1; SDL_Rect src_rect_if_null; if (src_rect == NULL) { src_rect = &src_rect_if_null; src_rect->x = 0; src_rect->y = 0; src_rect->w = src_surf->w; src_rect->h = src_surf->h; } double sx = 1.0 * dst_rect->w / src_rect->w; double sy = 1.0 * dst_rect->h / src_rect->h; /* In principle, double's are precise up to 15 decimal digits */ if (fabs(sx-1) > 1e-10 || fabs(sy-1) > 1e-10) { SDL_Surface *scaled = zoomSurface(src_surf, sx, sy, SMOOTHING_OFF); /* Keep the same transparency / alpha parameters (SDL_gfx bug, report submitted to the author: SDL_gfx adds transparency to non-transparent surfaces) */ int colorkey_flag = src_surf->flags & SDL_SRCCOLORKEY; Uint8 r, g, b, a; #if SDL_VERSION_ATLEAST(1, 3, 0) Uint32 colorkey; SDL_GetColorKey(src_surf, &colorkey); # else Uint32 colorkey = src_surf->format->colorkey; #endif SDL_GetRGBA(colorkey, src_surf->format, &r, &g, &b, &a); SDL_SetColorKey(scaled, colorkey_flag, SDL_MapRGBA(scaled->format, r, g, b, a)); /* Don't mess with alpha transparency, though: */ /* int alpha_flag = src->flags & SDL_SRCALPHA; */ /* int alpha = src->format->alpha; */ /* SDL_SetAlpha(scaled, alpha_flag, alpha); */ src_rect->x = (int) round(src_rect->x * sx); src_rect->y = (int) round(src_rect->y * sy); src_rect->w = (int) round(src_rect->w * sx); src_rect->h = (int) round(src_rect->h * sy); retval = SDL_BlitSurface(scaled, src_rect, dst_surf, dst_rect); SDL_FreeSurface(scaled); } else { /* No scaling */ retval = SDL_BlitSurface(src_surf, src_rect, dst_surf, dst_rect); } return retval; } /** * Refresh the physical screen, and apply a new palette or fade effect * if needed */ void flip_it(void) { /* We work directly on either lpDDSBack (no lpDDSPrimary as in the original game): the double buffer (Back) is directly managed by SDL; SDL_Flip is used to refresh the physical screen. */ if (!truecolor) gfx_palette_apply_phys(); if (truecolor_fade_brightness < 256) gfx_fade_apply(truecolor_fade_brightness); SDL_Flip(GFX_lpDDSBack); } /* Like SDL_WM_ToggleFullScreen(), except that it works under more platforms */ void gfx_toggle_fullscreen(void) { if ((cur_video_flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) cur_video_flags &= ~SDL_FULLSCREEN; else cur_video_flags |= SDL_FULLSCREEN; GFX_lpDDSBack = SDL_SetVideoMode(640, 480, GFX_lpDDSBack->format->BitsPerPixel, cur_video_flags); /* Palette was lost in the process */ if (!truecolor) SDL_SetPalette(GFX_lpDDSBack, SDL_LOGPAL, GFX_real_pal, 0, 256); gfx_palette_restore_phys(); } /** * Print GFX memory usage */ void gfx_log_meminfo() { int total = 0; { int sum = 0; sum = GFX_lpDDSBack->h * GFX_lpDDSBack->pitch; log_debug("GFX screen = %8d", sum); total += sum; } { int sum = 0; SDL_Surface* s = NULL; s = GFX_lpDDSTwo; sum += s->h * s->pitch; s = GFX_lpDDSTrick; sum += s->h * s->pitch; s = GFX_lpDDSTrick2; sum += s->h * s->pitch; log_debug("GFX buf = %8d", sum); total += sum; } { int sum = 0; int i = 0; SDL_Surface* s = NULL; for (; i < MAX_SPRITES; i++) { s = GFX_k[i].k; if (s != NULL) sum += s->h * s->pitch; // Note: this does not take SDL_RLEACCEL into account } log_debug("GFX bmp = %8d", sum); total += sum; } { int sum = 0; int i = 0; SDL_Surface* s = NULL; for (; i < GFX_TILES_NB_SETS+1; i++) { s = gfx_tiles[i]; if (s != NULL) sum += s->h * s->pitch; } log_debug("GFX tiles = %8d", sum); total += sum; } log_debug("GFX total = %8d (+ ~150kB fonts)", total); } freedink-108.4+dfsg/po/0000755000175000017500000000000012421730246012437 5ustar memefreedink-108.4+dfsg/po/ca.po0000644000175000017500000001266612421730246013375 0ustar meme# Catalan translations for GNU FreeDink package. # Copyright (2012) # This file is distributed under the same license as the FreeDink package. # Àngel Mompó , 2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-13 16:37+0100\n" "Last-Translator: Àngel Mompó \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Sintaxi: %s [OPCIONS]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Inicia el joc Dink Smallwood o un dels seus D-Mods." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Edita el joc Dink Smallwood o un dels seus D-Mods." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Mostra aquesta pantalla d'ajuda\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Mostra la versió\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Especifica el directori d'un D-Mod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Especifica la carpeta base del dink/gràfics, D-Mods, etc.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Explica el que s'està fent\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini No prova d'escriure al dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy No prova de fer servir cap palanca de control\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Desactiva el so\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Permet més colors (per a gràfics de D-Mod recents)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Fes servir el mode de finestra en comptes de la pantalla completa\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Habilita la compatibilitat amb la V1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Informeu de les fallades a %s.\n" "Informeu dels errors de traducció a \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Nota: -nomovie s'accepta per compatibilitat, però no fa res.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$No veig res aquí." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Com?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Estic força segur que no pot parlar-hi ni fer-ho servir." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Què?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$M'estic avorrint." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Aquí no hi passa gaire res." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$No en sé res de màgia." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$No sóc cap mag!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Necessito aprendre màgia abans de provar de fer això." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Estic fent gestos com un ximple per res!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$No ha passat res." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hocus pocus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Ataca" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Parla/Examina" #: src/dinkc.c:689 msgid "Magic" msgstr "Màgia" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Inventari" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Menú principal" #: src/dinkc.c:692 msgid "Map" msgstr "Mapa" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "No es fa servir" #: src/dinkc.c:697 msgid "Down" msgstr "Avall" #: src/dinkc.c:698 msgid "Left" msgstr "Esquerra" #: src/dinkc.c:699 msgid "Right" msgstr "Dreta" #: src/dinkc.c:700 msgid "Up" msgstr "Amunt" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Error: no està mapat" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Ranura %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Ranura %d - Buida" freedink-108.4+dfsg/po/cs.po0000644000175000017500000001275512421730246013416 0ustar meme# Czech translations for freedink game. # Copyright (C) 2010 Contributor # This file is distributed under the same license as the freedink package. # # Marek Černocký , 2010, 2013. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2013-06-07 11:08+0200\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Použití: %s [PŘEPÍNAČE]…\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Spustí hru Dink Smallwood nebo jednu z jejích D-Modů." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Upravit hru Dink Smallwood nebo jednu z jejích D-Modů." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Zobrazit tuto obrazovku s nápovědou\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Zobrazit verzi\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Určit složku D-Modů\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Určit základní složku pro dink/grafiku, D-Mody, atd.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Vysvětlovat, co se dělá\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Nepokoušet se zapsat dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Nepokoušet se použít joystick\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Nehrát hudbu\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Umožnit více barev (pro novější grafiku D-Modů\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Použít režim „v okně“ místo režimu „celá obrazovka“\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Zapnout režim kompatibility v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Chyby hlaste na %s.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Poznámka: Kvůli kompatibilitě je akceptován i přepínač -nomovie, ale nemá žádný efekt.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Nic tu nevidím." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Cože?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Jsem si docela jistý, že tady nemá cenu mluvit nebo toto použít." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Co?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Nudím se." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Tady se nic moc neděje." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Neznám žádnou magii." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Nejsem kouzelník!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Než tohle zkusím, potřebuji se nějakou magii naučit." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Divoce gestikuluji bez nějakého užitku!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Nic se nestalo." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokus pokus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Útok" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Mluvit/zkoumat" #: src/dinkc.c:689 msgid "Magic" msgstr "Magie" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Obrazovka s položkami" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Hlavní nabídka" #: src/dinkc.c:692 msgid "Map" msgstr "Mapa" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Nepoužito" #: src/dinkc.c:697 msgid "Down" msgstr "Dolů" #: src/dinkc.c:698 msgid "Left" msgstr "Vlevo" #: src/dinkc.c:699 msgid "Right" msgstr "Vpravo" #: src/dinkc.c:700 msgid "Up" msgstr "Nahoru" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Chyba: nezmapováno" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Pozice %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Pozice %d – prázdná" freedink-108.4+dfsg/po/en@quot.header0000644000175000017500000000226312352063122015222 0ustar meme# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # freedink-108.4+dfsg/po/es.po0000644000175000017500000001247512421730245013416 0ustar meme# Spanish messages for freedink. # This file is put in the public domain. # Fernando Carmona , 2009. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20100321\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2010-10-02 18:21+0200\n" "Last-Translator: Fernando Carmona \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Modo de empleo: %s [OPCIONES]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Inicia el juego Dink Smallwood o uno de sus D-Mods." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Edita el juego Dink Smallwood o uno de sus D-Mods." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Muestra este mensaje de ayuda\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Muestra la versión\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Especifica el directorio del D-Mod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Especifica el directorio base de dink/gráficos, D-Mods, etc.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Detalla lo que se va haciendo\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Desactiva la escritura de dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Desactiva el uso de joystick\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Desactiva el sonido\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr "" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Emplea el modo ventana en lugar de pantalla completa\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Activa la compatibilidad con la versión v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Informar de errores a %s.\n" "Informar de errores de traducción a \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Nota: -nomovie es aceptado por compatibilidad pero no tiene ningún efecto.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$No veo nada aquí." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$¿Huh?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Te aseguro que no puedo hablar con eso ni usarlo." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$¿Qué?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Me aburro." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$No pasa nada aquí." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$No se de ningún hechizo." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$¡No soy un mago!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Necesito aprender magia antes de intentar esto." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$¡Estoy gesticulando como loco sin ningún sentido!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$No pasó nada." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$¡Hocus pocus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Atacar" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Hablar/Examinar" #: src/dinkc.c:689 msgid "Magic" msgstr "Magia" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Inventario" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Menú Principal" #: src/dinkc.c:692 msgid "Map" msgstr "Mapa" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Sin Uso" #: src/dinkc.c:697 msgid "Down" msgstr "Abajo" #: src/dinkc.c:698 msgid "Left" msgstr "Izquierda" #: src/dinkc.c:699 msgid "Right" msgstr "Derecha" #: src/dinkc.c:700 msgid "Up" msgstr "Arriba" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Error: no mapeado" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Ranura %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Ranura %d - Vacía" freedink-108.4+dfsg/po/eo.gmo0000644000175000017500000000774112421730246013557 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl};: 7v 3 7 > ?Y O ' T ,f H   6 " 3 ? J P [ I` ] '5:p3 +:7$r ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-15 08:26-0300 Last-Translator: Felipe Castro Language-Team: Esperanto Language: eo MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit -7, --v1.07 Ebligi kongruecon al reĝimo v1.07 -d, --debug Klarigi tion, kio estas farata -g, --game Indiki dosierujon kun DMod -h, --help Montrigi tiun ĉi help-ekranon -i, --noini Ne provi skribon al dinksmallwood.ini -j, --nojoy Ne provi uzon de stirstango (joystick) -r, --refdir Indiki bazan dosierujon por dink/graphics, D-Mod, ktp. -s, --nosound Ne ludi sonojn -t, --truecolor Permesi pli da koloroj (por la plejnovaj grafikoj de D-Mod) -v, --version Montrigi la version -w, --window Uzi fenestran reĝimon anstataŭ ekrana reĝimo AtakiMalsupreRedakti la ludon Dink Smallwood aŭ unu el ties D-Mod.Eraro: ne mapitaAĵo-EkranoMaldekstreMagioĈef-MenuoMapoRimarku: -nomovie estas akceptata pro kongrueco, sed ĝi kaŭzas nenion. Raportu misojn al %s. Raportu traduk-erarojn al . DekstreIngo %d - %d:%02d - %sIngo %d - MalplenaLanĉi la ludon Dink Smallwood aŭ unu el ties D-Mod.Paroli/EkzameniNeuzataSupreUzado: %s [MODIFILOJ]... `$Hokus pokus!`$Heh?`$Mi scias neniun magion.`$Mi ne vidas ion ajn ĉi tie.`$Mi bezonas lerni magion antaŭ ol provi tion ĉi.`$Mi enuas.`$Mi estas ege certa ke mi ne povas alparoli aŭ uzi tion.`$Mi sovaĝe gestas por nenio utila!`$Mi ne estas magiisto!`$Ne multo okazas ĉi tie.`$Nenio okazis.`$Kio?freedink-108.4+dfsg/po/cs.gmo0000644000175000017500000001010012421730246013540 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}=} 5 2 @$ Be ; T (9 Mb ) ] 8 > 8D }      b -BIb8z   ';: vG, (: ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2013-06-07 11:08+0200 Last-Translator: Marek Černocký Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; -7, --v1.07 Zapnout režim kompatibility v1.07 -d, --debug Vysvětlovat, co se dělá -g, --game Určit složku D-Modů -h, --help Zobrazit tuto obrazovku s nápovědou -i, --noini Nepokoušet se zapsat dinksmallwood.ini -j, --nojoy Nepokoušet se použít joystick -r, --refdir Určit základní složku pro dink/grafiku, D-Mody, atd. -s, --nosound Nehrát hudbu -t, --truecolor Umožnit více barev (pro novější grafiku D-Modů -v, --version Zobrazit verzi -w, --window Použít režim „v okně“ místo režimu „celá obrazovka“ ÚtokDolůUpravit hru Dink Smallwood nebo jednu z jejích D-Modů.Chyba: nezmapovánoObrazovka s položkamiVlevoMagieHlavní nabídkaMapaPoznámka: Kvůli kompatibilitě je akceptován i přepínač -nomovie, ale nemá žádný efekt. Chyby hlaste na %s. VpravoPozice %d - %d:%02d - %sPozice %d – prázdnáSpustí hru Dink Smallwood nebo jednu z jejích D-Modů.Mluvit/zkoumatNepoužitoNahoruPoužití: %s [PŘEPÍNAČE]… `$Hokus pokus!`$Cože?`$Neznám žádnou magii.`$Nic tu nevidím.`$Než tohle zkusím, potřebuji se nějakou magii naučit.`$Nudím se.`$Jsem si docela jistý, že tady nemá cenu mluvit nebo toto použít.`$Divoce gestikuluji bez nějakého užitku!`$Nejsem kouzelník!`$Tady se nic moc neděje.`$Nic se nestalo.`$Co?freedink-108.4+dfsg/po/id.gmo0000644000175000017500000000765212421730246013551 0ustar meme*l;8311HBz7O*E,pA2 0<A GQ@U4  #;JQk+ .#%@T\< >[ 0 7 F @J O , ( H1 z  8     I !K m s  9     *1"Q3t QGP#g &( $ #')% "! *  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink-1.08.20090918 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2010-01-11 17:56+0000 Last-Translator: Erwid M Jadied Language-Team: Indonesian Language: id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Indonesian X-Poedit-Country: INDONESIA -7, --v1.07 Aktifkan mode compatibilitas v1.07 -d, --debug Menjelaskan apa yang sedang dilakukan -g, --game Tentukan DMod direktori -h, --help Munculkan tampilan bantuan ini -i, --noini Tidak mencoba untuk menulis dinksmallwood.ini -j, --nojoy Tidak mencoba untuk menggunakan joystik -r, --refdir Tentukan direktori dasar untuk dink/grafik,D-Mods,dll. -s, --nosound Tidak memutar suara -v, --version Tampilkan versi -w, --window Menggunakan windowed mode, bukannya mode screen SerangBawahEdit game Dink Smallwood atau salah satu dari D-Modsnya.Kesalahan: tidak dipetakanLayar itemKiriSihirMenu utamaPetaCatatan: -nomovie diterima untuk kompabilitas, tetapi tidak berpengaruh. Laporkan kesalahan (bug) ke: %s. KananSlot %d - %d:%02d - %sSlot %d - KosongMulai game Dink Smallwood atau salah satu dari D-Modsnya.Berbicara/MemeriksaTidak digunakanAtasPenggunaan: %s [OPTIONS]... `$Bim salabim!`$Huh?`$Saya tidak tahu sihir apapun.`$Saya tidak melihat apapun disini`$Saya harus belajar sihir sebelum mencoba hal ini.`$Saya bosan.`$Saya cukup yakin bahwa saya tidak dapat berbicara kepada atau menggunakan itu. `$Saya telah memberi isyarat dengan berbagai cara tetapi tetap sia-sia.`$Saya bukan penyihir!`$Tidak banyak yang terjadi disini.`$Tidak terjadi apapun.`$Apa?freedink-108.4+dfsg/po/hu.gmo0000644000175000017500000001031312421730246013555 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}Fw ? 6 >5 Kt C Z /_ S 2 J a k An      K [F> .<@`s%z< MQo   ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 108.2 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2014-05-30 21:13+0200 Last-Translator: Balázs Úr Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Lokalize 1.5 -7, --v1.07 A v1.07 kompatibilitási mód engedélyezése -d, --debug Annak magyarázata, hogy mi történik -g, --game Egy DMod könyvtár megadása -h, --help Ezen súgóképernyő megjelenítése -i, --noini Ne próbálja meg a dinksmallwood.ini fájlt írni -j, --nojoy Ne próbálja meg a joystick használatát -r, --refdir Alapkönyvtár megadása a dinkhez/grafikákhoz, D-Modokhoz, stb. -s, --nosound Ne játsszon le hangot -t, --truecolor Több szín engedélyezése (az újabb D-Mod grafikákhoz) -v, --version A verzió megjelenítése -w, --window Ablakos mód használata a képernyőmód helyett TámadásLeA Dink Smallwood játék vagy a D-Modok egyikének szerkesztése.Hiba: nincs leképezveElem képernyőBalraVarázslatFőmenüTérképMegjegyzés: a -nomovie elfogadott a kompatibilitáshoz, de nincs hatása. Hibák jelentése ide: %s. Fordítási hibák jelentése: Úr Balázs Jobbra%d. hely - %d:%02d - %s%d. hely - ÜresElindítja a Dink Smallwood játékot vagy a D-Modok egyikét.Beszélgetés/MegvizsgálásNem használtFelHasználat: %s [KAPCSOLÓK]… `$Hókusz-pókusz!`$Huh?`$Nem ismerek semmilyen varázslatot.`$Semmit sem látok itt.`$Meg kell tanulnom varázsolni, mielőtt ezt megpróbálom.`$Unatkozom.`$Egészen biztos vagyok, hogy nem tudok beszélni vele, vagy használni azt.`$Vadul integetek, de hiába!`$Nem vagyok varázsló!`$Nem sok minden történik itt.`$Semmi sem történt.`$Tessék?freedink-108.4+dfsg/po/sr.po0000644000175000017500000001451712421730246013433 0ustar meme# Serbian translation of freedink. # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the freedink package. # Мирослав Николић , 2011, 2013. msgid "" msgstr "" "Project-Id-Version: freedink-1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2013-10-03 09:06+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Употреба: %s [ОПЦИЈЕ]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Покреће игру шумарак Динк или неки од њених Д-модова." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Уређује игру шумарак Динк или неки од њених Д-Модова." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Приказује овај екран помоћи\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Приказује издање програма\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Одређује директоријум ДМода\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Одређује основни директоријум за динк/графику, Д-Модове, итд.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Објашњава шта је урађено\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Не покушава да запише „dinksmallwood.ini“\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Не покушава да користи џојстик\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Не пушта звук\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Допушта још боја (за новије Д-мод графичке)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Користи режим прозора уместо режима екрана\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Укључује в1.07 режим сагалсности\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Грешке програма пријавите %s.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Напомена: „-nomovie“ је прихваћено због сагласности, али нема дејства.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Ништа ти ја овде не видим." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Ааа?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Поприлично сам сигуран да не могу да причам с овим или да га користим." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Шта?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Досадно ми је." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Овде се баш ништа не догађа." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Не познајем никакву магију." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Нисам ти ја чаробњак!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Морам да научим магију да бих испробао ово." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Узалуд машем рукама као суманут!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Ништа се није десило." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Хокус покус!" #: src/dinkc.c:687 msgid "Attack" msgstr "Нападни" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Говори/Испитај" #: src/dinkc.c:689 msgid "Magic" msgstr "Магија" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Приказ ставке" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Главни изборник" #: src/dinkc.c:692 msgid "Map" msgstr "Карта" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Некоришћено" #: src/dinkc.c:697 msgid "Down" msgstr "Доле" #: src/dinkc.c:698 msgid "Left" msgstr "Лево" #: src/dinkc.c:699 msgid "Right" msgstr "Десно" #: src/dinkc.c:700 msgid "Up" msgstr "Горе" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Грешка: није на карти" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Прикључак %d — %d:%02d — %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Прикључак %d — Празно" freedink-108.4+dfsg/po/fi.gmo0000644000175000017500000001033112421730246013537 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}Aj 3 / 6 LG > W /+ Q[ ' K ! , <1 n   b z!K (3CIgw~<H2W ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-11-08 16:29+0200 Last-Translator: Jorma Karvonen Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; -7, --v1.07 Ota käyttöön v1.07-yhteensopivuustila -d, --debug Selitä mitä ollaan tehty -g, --game Määritä DMod-kansio -h, --help Näytä tämä opastenäyttö -i, --noini Älä yritä kirjoittaa tiedostoa dinksmallwood.ini -j, --nojoy Älä yritä käyttää ohjainsauvaaa -r, --refdir Määritä peruskansio dink/graphics, D-Mods-moduuleille, jne. -s, --nosound Älä käytä ääniä -t, --truecolor Salli lisää väreäjä (äskeiselle D-Mod-grafiikalle) -v, --version Näytä versio -w, --window Käytä ikkunoitua tilaa kokoruutunäytön sijasta HyökkäysAlasMuokkaa Dink Smallwood-peliä tai yhtä sen D-Mods-moduulia.Virhe: ei kartoitettuEsinenäyttöVasemmalleTaikaPäävalikkoKarttaHuomatus: -nomovie on hyväksytty yhteensopivuussyistä, mutta sillä ei ole mitään vaikutusta. Ilmoita virheistä osoitteeseen %s. Ilmoita käännösvirheistä osoitteeseen OikealleTallennuspaikka %d - %d:%02d - %sTallennuspaikka %d - TyhjäKäynnistää Dink Smallwood-pelin tai yhden sen Dink- eli D-Mods-moduulin.Puhu/TutkiKäyttämätönYlösKäyttö: %s [VALITSIMET]... `$Hokkuspokkus!`$Huh?`$En osaa mitään taikuutta.`$En näe täällä mitään.`$Minun täytyy oppia taikuutta ennen tämän yrittämistä.`$Minulla on tylsää.`$Olen täysin varma, että en voi puhua kohteelle tai käyttää sitä.`$Elehdin villisti ilman että siitä on hyötyä!`$En ole velho!`$Täällä ei paljoa tapahdu.`$Mitään ei tapahdu.`$Mitä?freedink-108.4+dfsg/po/sl.gmo0000644000175000017500000000774112421730246013572 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}AW < + + >. 2m \ + ?) 5i G   2 $ 9 J O Z f Up \ #)A4S $ 1.C!r ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2013-01-05 09:49+0100 Last-Translator: Klemen Košir Language-Team: Slovenian Language: sl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.5.4 -7, --v1.07 Omogoči združljivost z različico 1.07 -d, --debug Prikaže podatke o razhroščevanju -g, --game Navedite mapo DMod -h, --help Prikaže to pomoč -i, --noini Ne zapiše datoteke dinksmallwood.ini -j, --nojoy Ne uporabi igralne palice -r, --refdir Navedite osnovno mapo za igro Dink Smallwood, grafiko, D-Mode, itd. -s, --nosound Ne predvajaj zvoka -t, --truecolor Uporabi več barv (za grafiko D-Modov) -v, --version Prikaže različico programa -w, --window Uporabi okenski način namesto celozaslonskega NapadDolUredi igro Dink Smallwood ali enega izmed D-Modov.Napaka: ni določenoSeznam predmetovLevoČarovnijaGlavni meniZemljevidOpomba: možnost -nomovie je uporabljena zaradi združljivosti, vendar nima učinka. Napake v programu sporočite na: %s. Napake v prevodu sporočite na: DesnoPolje %d - %d:%02d - %sPolje %d - PraznoZažene igro Dink Smallwood ali enega izmed D-Modov.Govori/PreiščiNeuporabljenoGorUporaba: %s [MOŽNOSTI] ... `$Čira čara!`$Huh?`$Ne znam čarati.`$Tukaj ničesar ne vidim.`$Najprej se moram naučiti čarati.`$Dolgočasim se.`$S tem se ne morem pogovarjati ali uporabiti.`$Zaman divje pomigujem z rokami!`$Nisem čarovnik!`$Tukaj se ne dogaja veliko.`$Nič se ni zgodilo.`$Kaj?freedink-108.4+dfsg/po/hr.gmo0000644000175000017500000001024112421730246013552 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl} 8 2 /* 4Z A ? U 4g M * K a g Em      H QFH #05N]c1L!)K_} ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-16 22:43+0200 Last-Translator: Tomislav Krznar Language-Team: Croatian Language: hr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2) X-Generator: Lokalize 1.4 -7, --v1.07 Omogući kompatibilnost s v1.07 -d, --debug Pojasni što program radi -g, --game Navedi DMod direktorij -h, --help Prikaži ovaj ekran pomoći -i, --noini Ne pokušavaj pisati u dinksmallwood.ini -j, --nojoy Ne pokušavaj koristiti igraću palicu -r, --refdir Navedi osnovni direktorij za dink/grafiku, modifikacije itd. -s, --nosound Nemoj reproducirati zvukove -t, --truecolor Dozvoli više boja (za grafiku novijih modifikacija) -v, --version Prikaži inačicu -w, --window Koristi prikaz u prozoru umjesto na cijelom ekranu NapadDoljeUredi igru Dink Smallwood ili jednu od njezinih modifikacija (D-Mod).Greška: nije pridruženaInventarLijevoČarolijaGlavni izbornikKartaNapomena: -nomovie se prihvaća zbog kompatibilnosti, no nema utjecaja. Prijavite greške na %s. Prijavite greške prijevoda na . DesnoPolje %d - %d:%02d - %sPolje %d - PraznoPokreće igru Dink Smallwood ili jednu od njezinih modifikacija (D-Mod).Pričaj/PregledajNekorištenoGoreUporaba: %s [OPCIJE]... `$Hokus pokus!`$Ha?`$Ne znam nikakve čarolije.`$Ovdje ne vidim ništa.`$Moram naučiti čarolije prije nego probam ovo.`$Dosadno mi je.`$Poprilično sam siguran da s tim ne mogu pričati ili drukčije koristiti.`$Mašem kao manijak bez učinka!`$Nisam čarobnjak!`$Ovdje se ne događa ništa.`$Ništa se nije dogodilo.`$Molim?freedink-108.4+dfsg/po/eu.po0000644000175000017500000001355312421730246013417 0ustar meme# Basque translation of freedink-1.08.20120427. # Copyright (C) 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the freedink package. # Gorka Azkarate Zubiaur , 2012. msgid "" msgstr "" "Project-Id-Version: freedink-1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-11-04 17:43+0200\n" "Last-Translator: Gorka Azkarate Zubiaur \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.0\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Erabilera: %s [OPTIONS]...\n" #: src/init.c:110 #, fuzzy, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Hasi Dink Smallwood jolasa edo bere D-Mods horietako bat.\n" #: src/init.c:112 #, fuzzy, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Editatu Dink Smallwood jolasa edo bere D-Mod horietako bat.\n" #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Erakutsi laguntza-pantaila hau\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Erakutsi bertsioa\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Zehaztu DMod direktorioa\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Zehaztu oinarrizko direktorioa honako hauetarako: dink/graphics, D-Mods, etab.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Azaldu zer ari den gertatzen\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Ez saiatu hau editatzen: dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Ez erabili joystick-ik\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Ez dadila soinurik entzun\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Onartu kolore gehiago (azken D-Mod graphics bertsioetarako)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Erabili leihodun modua pantailadun modua erabili beharrean\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Gaitu v1.07 bateratzeko modua\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Arazoen berri %s horri eman.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Oharra: -nomovie onartu egiten da bateratzeko, baina ez du ondoriorik.\n" #: src/freedink.c:2685 #, fuzzy msgid "`$I don't see anything here." msgstr "`$Nik ez dut hemen ezer ikusten.\n" #: src/freedink.c:2686 #, fuzzy msgid "`$Huh?" msgstr "`$Huh?\n" #: src/freedink.c:2687 #, fuzzy msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Nahiko ziur dakit mintza naitekeela horrekin edo erabil dezakedala hori.\n" #: src/freedink.c:2688 #, fuzzy msgid "`$What?" msgstr "`$Zer?\n" #: src/freedink.c:2689 #, fuzzy msgid "`$I'm bored." msgstr "`$Aspertuta nago.\n" #: src/freedink.c:2690 #, fuzzy msgid "`$Not much happening here." msgstr "`$Hemen ez da gauza handirik gertatzen ari.\n" #: src/freedink.c:2798 #, fuzzy msgid "`$I don't know any magic." msgstr "`$Nik ez dakit beste munduko trikimailu magikorik.\n" #: src/freedink.c:2799 #, fuzzy msgid "`$I'm no wizard!" msgstr "`$Ez nauzu sorgin!\n" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Horrekin saiatu baino lehenago magia ikasi beharko nuke." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Imintzioka eta keinuka ari natzaizu ez alferrik!" #: src/freedink.c:2802 #, fuzzy msgid "`$Nothing happened." msgstr "`$Ez da ezer gertatu.\n" #: src/freedink.c:2803 #, fuzzy msgid "`$Hocus pocus!" msgstr "`$Atzilla motzilla!\n" #: src/dinkc.c:687 #, fuzzy msgid "Attack" msgstr "Ekin\n" #: src/dinkc.c:688 #, fuzzy msgid "Talk/Examine" msgstr "Mintzatu/Aztertu\n" #: src/dinkc.c:689 #, fuzzy msgid "Magic" msgstr "Magikoa\n" #: src/dinkc.c:690 #, fuzzy msgid "Item Screen" msgstr "Pantaila bat\n" #: src/dinkc.c:691 #, fuzzy msgid "Main Menu" msgstr "Menu nagusia\n" #: src/dinkc.c:692 #, fuzzy msgid "Map" msgstr "Mapa\n" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 #, fuzzy msgid "Unused" msgstr "Erabili gabea\n" #: src/dinkc.c:697 #, fuzzy msgid "Down" msgstr "Behean\n" #: src/dinkc.c:698 #, fuzzy msgid "Left" msgstr "Ezkerretan\n" #: src/dinkc.c:699 #, fuzzy msgid "Right" msgstr "Eskuinetan\n" #: src/dinkc.c:700 #, fuzzy msgid "Up" msgstr "Goian\n" #: src/dinkc.c:701 #, fuzzy msgid "Error: not mapped" msgstr "Errorea: mapan sartu gabea\n" #: src/dinkc.c:712 #, fuzzy, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Slot %d - %d:%02d - %s\n" #: src/dinkc.c:715 #, fuzzy, c-format msgid "Slot %d - Empty" msgstr "Slot %d - Hutsik\n" freedink-108.4+dfsg/po/fr.po0000644000175000017500000001275412421730245013416 0ustar meme# French translations for GNU FreeDink package # Traductions françaises du paquet GNU FreeDink. # This file is put in the public domain. # Sylvain Beucler , 2008, 2009, 2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-11-04 14:47+0100\n" "Last-Translator: Sylvain Beucler \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Pootle 1.2.1\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Usage: %s [OPTIONS]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Lance le jeu Dink Smallwood ou un de ses D-Mods." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Modifie le jeu Dink Smallwood ou un de ses D-Mods." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Affiche cet écran d'aide\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Affiche la version\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Specifie le dossier d'un D-Mod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Spécifie le répertoire de base pour dink/graphics, les D-Mods, etc.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Explique ce qui se passe\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini N'essaie pas d'écreire dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy N'essaie pas d'utiliser la manette de jeu\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Coupe le son\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Permet davantage de couleurs (pour les graphismes des D-Mod récents)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Utilise le mode fenêtré plutôt que le plein écran\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Active le mode de compatibilité v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Rapportez les anomalies à %s.\n" "Rapportez les erreurs de traduction à beuc@beuc.net\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Note: -nomovie est accepté pour des raisons de compatibilité, mais n'a aucun effet.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Je ne vois rien par ici." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Hein?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Je ne pense pas pouvoir parler à ce truc-là, ou l'utiliser." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Quoi?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Je m'ennuie." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Pas grand chose par ici." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Je ne connais aucun sort." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Je ne suis pas magicien!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Je dois apprendre un sort avant d'essayer ça." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Je m'excite bêtement pour rien!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Rien n'est arrivé." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hocus pocus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Attaquer" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Parler/examiner" #: src/dinkc.c:689 msgid "Magic" msgstr "Magie" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Inventaire" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Menu principal" #: src/dinkc.c:692 msgid "Map" msgstr "Carte" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Inutilisé" #: src/dinkc.c:697 msgid "Down" msgstr "Bas" #: src/dinkc.c:698 msgid "Left" msgstr "Gauche" #: src/dinkc.c:699 msgid "Right" msgstr "Droite" #: src/dinkc.c:700 msgid "Up" msgstr "Haut" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Erreur: non attribué" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Emplacement %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Emplacement %d - Vide" freedink-108.4+dfsg/po/pt_BR.po0000644000175000017500000001274112421730246014012 0ustar meme# Brazilian Portuguese translation for freedink. # Copyright (C) 2013 Enrico Nicoletto # This file is distributed under the same license as the freedink package. # Enrico Nicoletto , 2013. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2013-02-21 23:10-0300\n" "Last-Translator: Enrico Nicoletto \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Utilização: %s [OPÇÕES]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Inicia o jogo Dink Smallwood ou um de seus D-Mods." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Edita o jogo Dink Smallwood ou um de seus D-Mods." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Exibe esta tela de ajuda\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Exibe a versão\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Especifica um diretório DMod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Especifica diretório base para dink/gráficos, D-Mods, etc.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Explica o que está sendo feito\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Não tenta escrever dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Não tenta utilizar joystick\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Não reproduz sons\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Permite mais cores (para gráficos D-Mod recentes)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Usa modo de janela ao invés de tela cheia\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Ativa o modo de compatibilidade v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Informe erros para %s.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Observação: -nomovie é aceito por compatibilidade, mas não possui efeito.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Eu não vejo nada aqui." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Hâ?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Estou bastante certo de que eu não posso falar com, ou usar, isto." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$O quê?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Estou entediado." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Não está acontecendo muita coisa por aqui." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Eu não conheço nenhuma mágica." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$IEu não sou nenhum mago!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Eu preciso aprender mágica antes de tentar isto." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Estou gesticulando que nem louco sem nenhum resultado!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Não aconteceu nada." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hocus pocus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Ataque" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Falar/Examinar" #: src/dinkc.c:689 msgid "Magic" msgstr "Mágica" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Tela de ítem" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Menu principal" #: src/dinkc.c:692 msgid "Map" msgstr "Mapa" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Não utilizado" #: src/dinkc.c:697 msgid "Down" msgstr "Abaixo" #: src/dinkc.c:698 msgid "Left" msgstr "Esquerda" #: src/dinkc.c:699 msgid "Right" msgstr "Direita" #: src/dinkc.c:700 msgid "Up" msgstr "Acima" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Erro: não mapeado" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Posição %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Posição %d - Vazia" freedink-108.4+dfsg/po/id.po0000644000175000017500000001271312421730246013377 0ustar meme# Terjemah pesan berbahasa Indonesia untuk freedink. # Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the freedink package. # Erwid M Jadied , 2010. # msgid "" msgstr "" "Project-Id-Version: freedink-1.08.20090918\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2010-01-11 17:56+0000\n" "Last-Translator: Erwid M Jadied \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Indonesian\n" "X-Poedit-Country: INDONESIA\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Penggunaan: %s [OPTIONS]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Mulai game Dink Smallwood atau salah satu dari D-Modsnya." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Edit game Dink Smallwood atau salah satu dari D-Modsnya." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Munculkan tampilan bantuan ini\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Tampilkan versi\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Tentukan DMod direktori\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Tentukan direktori dasar untuk dink/grafik,D-Mods,dll.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Menjelaskan apa yang sedang dilakukan\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Tidak mencoba untuk menulis dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Tidak mencoba untuk menggunakan joystik\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Tidak memutar suara\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr "" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Menggunakan windowed mode, bukannya mode screen\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Aktifkan mode compatibilitas v1.07 \n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Laporkan kesalahan (bug) ke: %s.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Catatan: -nomovie diterima untuk kompabilitas, tetapi tidak berpengaruh.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Saya tidak melihat apapun disini" #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Huh?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Saya cukup yakin bahwa saya tidak dapat berbicara kepada atau menggunakan itu. " #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Apa?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Saya bosan." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Tidak banyak yang terjadi disini." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Saya tidak tahu sihir apapun." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Saya bukan penyihir!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Saya harus belajar sihir sebelum mencoba hal ini." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Saya telah memberi isyarat dengan berbagai cara tetapi tetap sia-sia." #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Tidak terjadi apapun." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Bim salabim!" #: src/dinkc.c:687 msgid "Attack" msgstr "Serang" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Berbicara/Memeriksa" #: src/dinkc.c:689 msgid "Magic" msgstr "Sihir" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Layar item" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Menu utama" #: src/dinkc.c:692 msgid "Map" msgstr "Peta" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Tidak digunakan" #: src/dinkc.c:697 msgid "Down" msgstr "Bawah" #: src/dinkc.c:698 msgid "Left" msgstr "Kiri" #: src/dinkc.c:699 msgid "Right" msgstr "Kanan" #: src/dinkc.c:700 msgid "Up" msgstr "Atas" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Kesalahan: tidak dipetakan" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Slot %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Slot %d - Kosong" freedink-108.4+dfsg/po/vi.po0000644000175000017500000001410312421730246013414 0ustar meme# Vietnamese translation for Free Dink. # Copyright © 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the freedink package. # Clytie Siddall , 2009-2010. # Trần Ngọc Quân , 2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-24 14:02+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Team-Website: \n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.8\n" "X-Poedit-Language: Vietnamese\n" "X-Poedit-Country: VIET NAM\n" "X-Poedit-SourceCharset: utf-8\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Cách dùng: %s [CÁC_TÙY_CHỌN]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Khởi chạy trò chơi Dink Smallwood hay một bản sửa đổi D-Mod của nó." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Chỉnh sửa trò chơi Dink Smallwood hay một bản sửa đổi D-Mod của nó." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Hiển thị trợ giúp này\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Hiển thị phiên bản\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Ghi rõ một thư mục DMod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Ghi rõ thư mục cơ bản cho dink, các đồ họa và bản sửa đổi D-Mod v.v.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Giải thích những gì đang làm\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Không thử ghi tập tin \"dinksmallwood.ini\"\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Không nên thử sử dụng cần chơi\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Không nên phát âm thanh\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Cho phép thêm nhiều màu hơn (cho đồ họa D-Mod mới đây)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Dùng chế độ cửa sổ thay cho chế độ màn hình\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Bật chế độ tương thích với phiên bản 1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Hãy gửi thông báo liên quan đến:\n" "\tlỗi phần mềm cho %s\n" "\tlỗi dịch cho \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Ghi chú: tuỳ chọn \"-nomovie\" (không phim) được chấp nhận để tương thích nhưng không hiệu quả.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Tôi chưa thấy gì ở đây cả." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Hừm?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Chắc là không thể liên lạc với hoặc sử dụng đó." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Cái gì ?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Buồn tẻ." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Ở đây có ít kết quả." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Không quen với ma thuật." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Không phải nhà chuyên môn!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Cần học ma thuật trước khi thử ở đây." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Chọc tức!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Không có gì xảy ra." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Thấy đi!" #: src/dinkc.c:687 msgid "Attack" msgstr "Tấn công" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Nói/Xem" #: src/dinkc.c:689 msgid "Magic" msgstr "Thuật" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Màn hình mục" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Trình Đơn Chính" #: src/dinkc.c:692 msgid "Map" msgstr "Bản đồ" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Chưa dùng" #: src/dinkc.c:697 msgid "Down" msgstr "Xuống" #: src/dinkc.c:698 msgid "Left" msgstr "Trái" #: src/dinkc.c:699 msgid "Right" msgstr "Phải" #: src/dinkc.c:700 msgid "Up" msgstr "Lên" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Lỗi: chưa ánh xạ" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Khe %d — %d:%02d — %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Khe %d — Trống" freedink-108.4+dfsg/po/da.po0000644000175000017500000001273312421730246013371 0ustar meme# Danish translation freedink front. # This file is put in the public domain. # Joe Hansen , 2009, 2010, 2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-14 19:30+01:00\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Brug: %s [TILVALG]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Start spillet Dink Smallwood eller et af dets udvidelser." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Rediger i spillet Dink Smallwood eller et af dets udvidelser." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Vis denne hjælpeskærm\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Vis versionsnummeret\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Angiv en DMod-mappe\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Angiv basemappe for dink/grafik, D-Mods, et cetera.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Forklar hvad der sker\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Forsøg ikke at skrive dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Forsøg ikke at bruge joystick\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Brug ikke lyd\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Tillad flere farver (for nyere D-Mod-grafik)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Brug vinduetilstand i steden for skærmtilstand\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Slå kompatibilitetstilstand til for version 1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Anmeld fejl til %s.\n" "\n" "Oversættelsesrettelser kan sendes til:\n" "Joe Hansen , 2009.\n" "\n" "Dansk-gruppen \n" "Mere info: http://www.dansk-gruppen.dk\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Bemærk: -nomovie accepteres for kompatibilitetens skyld, men har ingen effekt.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$I ser ikke noget her." # Huh, Jeg tror sådan noget som "Ah hva" eller tilsvarende kan due her #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Ah hva?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Jeg er ret sikker på, at jeg ikke kan tale til eller bruge det." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Hvad?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Jeg keder mig." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Der sker ikke meget her." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Jeg kender ikke til magi." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Jeg er ikke troldmand!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Jeg må lære om magi, før jeg kan bruge denne." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Jeg gestikulerer vildt uden effekt!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Intet skete." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokus pokus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Angrib" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Snak/undersøg" #: src/dinkc.c:689 msgid "Magic" msgstr "Magi" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Udstyrsskærm" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Hovedmenu" #: src/dinkc.c:692 msgid "Map" msgstr "Kort" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Ubrugt" #: src/dinkc.c:697 msgid "Down" msgstr "Ned" #: src/dinkc.c:698 msgid "Left" msgstr "Venstre" #: src/dinkc.c:699 msgid "Right" msgstr "Højre" #: src/dinkc.c:700 msgid "Up" msgstr "Op" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Fejl: ikke kortlagt" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Plads %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Plads %d - Tom" freedink-108.4+dfsg/po/it.po0000644000175000017500000001262112421730246013415 0ustar meme# ITALIAN TRANSLATION OF FREEDINK. # COPYRIGHT (C) 2010 THE FREEDINK'S COPYRIGHT HOLDER # This file is distributed under the same license as the freedink package. # Vincenzo Campanella , 2010. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20100321\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2010-10-10 14:30+0200\n" "Last-Translator: Vincenzo Campanella \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Utilizzo: %s [OPZIONI]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Avvia il gioco Dink Smallwood o uno dei suoi D-Mod." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Modifica il gioco Dink Smallwood o uno dei suoi D-Mod." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Mostra questa schermata di aiuto\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Mostra la versione\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Specifica una directory DMod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Specifica la directory di base per dink/graphics, D-Mod, ecc.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Spiega quanto viene fatto\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Non tentare di scrivere il file dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Non tentare di utilizzare un joystick\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Senza sonoro\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr "" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Utilizza la modalità finestra anziché la modalità schermo\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Abilita la modalità di compabilità con v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Segnalare i problemi a %s.\n" "Segnalare i problemi di traduzione a tp@lists.linux.it.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Nota: -nomovie viene accettato per motivi di compatibilità, ma non ha alcun effetto.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Non vedo nulla qui." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Come, prego?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Sono abbastanza sicuro di non poterlo utilizzare e di non poterci parlare." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Cosa?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Mi sto annoiando." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Non succede molto qui." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Non conosco alcuna magia." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Non sono un mago." #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Prima di provarci devo imparare la magia." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Sto facendo segni all'impazzata inutilmente." #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Non è successo nulla." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hocus pocus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Attacca" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Parla/esamina" #: src/dinkc.c:689 msgid "Magic" msgstr "Magia" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Schermata dell'oggetto" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Menù principale" #: src/dinkc.c:692 msgid "Map" msgstr "Mappa" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Inutilizzato" #: src/dinkc.c:697 msgid "Down" msgstr "Giù" #: src/dinkc.c:698 msgid "Left" msgstr "A sinistra" #: src/dinkc.c:699 msgid "Right" msgstr "A destra" #: src/dinkc.c:700 msgid "Up" msgstr "Su" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Errore: non mappato" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Posto %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Posto %d - Vuoto" freedink-108.4+dfsg/po/nl.gmo0000644000175000017500000000766612421730246013573 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}s>( 3g 2 1 H CI N $ K .M M| 8  0 < B H R LX     6   1 <G`o"v-@*5`x ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-28 22:40+0100 Last-Translator: Koen Torfs Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit -7, --v1.07 v1.07-compatibiliteitsmodus gebruiken -d, --debug Wat gedaan wordt uitleggen -g, --game Een DMod-map specifiëren -h, --help Deze helpboodschap tonen -i, --noini Niet proberen om dinksmallwood.ini te schrijven -j, --nojoy Niet proberen om een joystick te gebruiken -r, --refdir Basismap voor dink/graphics, D-Mods etc. specifiëren -s, --nosound Geen geluid --t, --truecolor Meer kleuren toelaten (voor recente D-Mod graphics) -v, --version De pakketversie tonen -w, --window Venstermodus in plaats van volledig scherm gebruiken AanvallenNaar benedenHet Dink Smallwood-spel of een van zijn D-Mods bewerken.Fout: niet toegewezenItemvensterLinksMagieHoofdmenuKaartNota: -nomovie wordt aanvaard voor compatibiliteit, maar heeft geen effect. Meld bugs via %s. RechtsPlaats %d - %d:%02d - %sPlaats %d - LeegBegint het Dink Smallwood-spel of een van zijn D-Mods.Spreek/OnderzoekOngebruiktNaar bovenGebruik: %s [OPTIES]… `$Hocus pocus!`$Huh?`$Ik ken helemaal niets van magie.`$Er is hier niets te zien.`$Ik moet magie leren voordat ik dit probeer.`$Ik verveel me.`$Ik ben vrij zeker dat ik dit niet kan aanspreken of gebruiken.`$Ik sta hier te zwaaien zonder resultaat!`$Ik ben geen tovenaar!`$Er is hier niets aan de gang.`$Er is niets gebeurd.`$Wat?freedink-108.4+dfsg/po/pt_BR.gmo0000644000175000017500000001002712421730246014151 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}>d 8 6 1 =E 5 U + K; ( C   1 4 G U ^ f u Nz    2M\kq#3E,8r.  ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2013-02-21 23:10-0300 Last-Translator: Enrico Nicoletto Language-Team: Brazilian Portuguese Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.5.4 -7, --v1.07 Ativa o modo de compatibilidade v1.07 -d, --debug Explica o que está sendo feito -g, --game Especifica um diretório DMod -h, --help Exibe esta tela de ajuda -i, --noini Não tenta escrever dinksmallwood.ini -j, --nojoy Não tenta utilizar joystick -r, --refdir Especifica diretório base para dink/gráficos, D-Mods, etc. -s, --nosound Não reproduz sons -t, --truecolor Permite mais cores (para gráficos D-Mod recentes) -v, --version Exibe a versão -w, --window Usa modo de janela ao invés de tela cheia AtaqueAbaixoEdita o jogo Dink Smallwood ou um de seus D-Mods.Erro: não mapeadoTela de ítemEsquerdaMágicaMenu principalMapaObservação: -nomovie é aceito por compatibilidade, mas não possui efeito. Informe erros para %s. DireitaPosição %d - %d:%02d - %sPosição %d - VaziaInicia o jogo Dink Smallwood ou um de seus D-Mods.Falar/ExaminarNão utilizadoAcimaUtilização: %s [OPÇÕES]... `$Hocus pocus!`$Hâ?`$Eu não conheço nenhuma mágica.`$Eu não vejo nada aqui.`$Eu preciso aprender mágica antes de tentar isto.`$Estou entediado.`$Estou bastante certo de que eu não posso falar com, ou usar, isto.`$Estou gesticulando que nem louco sem nenhum resultado!`$IEu não sou nenhum mago!`$Não está acontecendo muita coisa por aqui.`$Não aconteceu nada.`$O quê?freedink-108.4+dfsg/po/sl.po0000644000175000017500000001252112421730246013416 0ustar meme# Slovenian translation for freedink. # This file is put in the public domain. # Klemen Košir , 2011 - 2013. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2013-01-05 09:49+0100\n" "Last-Translator: Klemen Košir \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Uporaba: %s [MOŽNOSTI] ...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Zažene igro Dink Smallwood ali enega izmed D-Modov." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Uredi igro Dink Smallwood ali enega izmed D-Modov." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Prikaže to pomoč\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Prikaže različico programa\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Navedite mapo DMod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Navedite osnovno mapo za igro Dink Smallwood, grafiko, D-Mode, itd.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Prikaže podatke o razhroščevanju\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Ne zapiše datoteke dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Ne uporabi igralne palice\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Ne predvajaj zvoka\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Uporabi več barv (za grafiko D-Modov)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Uporabi okenski način namesto celozaslonskega\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Omogoči združljivost z različico 1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Napake v programu sporočite na: %s.\n" "Napake v prevodu sporočite na: \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Opomba: možnost -nomovie je uporabljena zaradi združljivosti, vendar nima učinka.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Tukaj ničesar ne vidim." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Huh?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$S tem se ne morem pogovarjati ali uporabiti." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Kaj?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Dolgočasim se." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Tukaj se ne dogaja veliko." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Ne znam čarati." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Nisem čarovnik!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Najprej se moram naučiti čarati." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Zaman divje pomigujem z rokami!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Nič se ni zgodilo." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Čira čara!" #: src/dinkc.c:687 msgid "Attack" msgstr "Napad" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Govori/Preišči" #: src/dinkc.c:689 msgid "Magic" msgstr "Čarovnija" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Seznam predmetov" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Glavni meni" #: src/dinkc.c:692 msgid "Map" msgstr "Zemljevid" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Neuporabljeno" #: src/dinkc.c:697 msgid "Down" msgstr "Dol" #: src/dinkc.c:698 msgid "Left" msgstr "Levo" #: src/dinkc.c:699 msgid "Right" msgstr "Desno" #: src/dinkc.c:700 msgid "Up" msgstr "Gor" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Napaka: ni določeno" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Polje %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Polje %d - Prazno" freedink-108.4+dfsg/po/fi.po0000644000175000017500000001331512421730245013377 0ustar meme# Finnish messages for freedink. # This file is put in the public domain. # Copyright © 2009, 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the freedink package. # Jorma Karvonen , 2009, 2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-11-08 16:29+0200\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Käyttö: %s [VALITSIMET]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Käynnistää Dink Smallwood-pelin tai yhden sen Dink- eli D-Mods-moduulin." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Muokkaa Dink Smallwood-peliä tai yhtä sen D-Mods-moduulia." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Näytä tämä opastenäyttö\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Näytä versio\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Määritä DMod-kansio\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Määritä peruskansio dink/graphics, D-Mods-moduuleille, jne.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Selitä mitä ollaan tehty\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Älä yritä kirjoittaa tiedostoa dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Älä yritä käyttää ohjainsauvaaa\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Älä käytä ääniä\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Salli lisää väreäjä (äskeiselle D-Mod-grafiikalle)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Käytä ikkunoitua tilaa kokoruutunäytön sijasta\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Ota käyttöön v1.07-yhteensopivuustila\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Ilmoita virheistä osoitteeseen %s.\n" "Ilmoita käännösvirheistä osoitteeseen \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Huomatus: -nomovie on hyväksytty yhteensopivuussyistä, mutta sillä ei ole mitään vaikutusta.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$En näe täällä mitään." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Huh?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Olen täysin varma, että en voi puhua kohteelle tai käyttää sitä." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Mitä?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Minulla on tylsää." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Täällä ei paljoa tapahdu." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$En osaa mitään taikuutta." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$En ole velho!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Minun täytyy oppia taikuutta ennen tämän yrittämistä." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Elehdin villisti ilman että siitä on hyötyä!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Mitään ei tapahdu." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokkuspokkus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Hyökkäys" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Puhu/Tutki" #: src/dinkc.c:689 msgid "Magic" msgstr "Taika" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Esinenäyttö" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Päävalikko" #: src/dinkc.c:692 msgid "Map" msgstr "Kartta" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Käyttämätön" #: src/dinkc.c:697 msgid "Down" msgstr "Alas" #: src/dinkc.c:698 msgid "Left" msgstr "Vasemmalle" #: src/dinkc.c:699 msgid "Right" msgstr "Oikealle" #: src/dinkc.c:700 msgid "Up" msgstr "Ylös" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Virhe: ei kartoitettu" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Tallennuspaikka %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Tallennuspaikka %d - Tyhjä" freedink-108.4+dfsg/po/ru.gmo0000644000175000017500000001153212421730246013573 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}U H <> ?{ Q X gf 4 p 6t Y X!6z   T  P7+ 7 .78+pb80'( P ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 108.2 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2014-05-30 19:03+0400 Last-Translator: Yuri Kozlov Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 1.5 -7, --v1.07 включить режим совместимости v1.07 -d, --debug объяснять, что происходит -g, --game <кат> задать каталог DMod -h, --help показать эту справку -i, --noini не пытаться записать dinksmallwood.ini -j, --nojoy не пытаться использовать джойстик -r, --refdir <кат> задать базовый каталог dink/graphics, D-Mods и т. д. -s, --nosound выключить звук -t, --truecolor использовать больше цветов (в новой графике D-Mod) -v, --version показать версию -w, --window запускать в окне, а не на весь экран АтаковатьВнизРедактировать игру Dink Smallwood game или один из её D-Mod.Ошибка: действие не назначеноПредметыВлевоМагияГлавное менюКартаЗамечание: параметр -nomovie принимается только для совместимости и ничего не изменяет. Сообщения об ошибках отправляйте по адресу %s. ВправоМесто %d — %d:%02d — %sМесто %d — ПустоЗапустить игру Dink Smallwood game или один из её D-Mod.Поговорить/ИсследоватьНе используетсяВверхИспользование: %s [ПАРАМЕТРЫ]… `$Фокус покус!`$Ась?`$Я не знаю никаких заклинаний.`$Я ничего здесь не вижу.`$Чтобы это попробовать, мне нужно выучить заклинание.`$Мне надоедают.`$Я абсолютно уверен, что не могу с этим поговорить или использовать его.`$Я напрасно размахиваю руками!`$Я не волшебник!`$Тут ничего не происходит.`$Ничего не произошло.`$Что?freedink-108.4+dfsg/po/POTFILES.in0000644000175000017500000000014112420231175014204 0ustar meme# List of source files which contain translatable strings. src/init.c src/freedink.c src/dinkc.c freedink-108.4+dfsg/po/boldquot.sed0000644000175000017500000000033112352063122014755 0ustar memes/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g freedink-108.4+dfsg/po/quot.sed0000644000175000017500000000023112352063122014113 0ustar memes/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g freedink-108.4+dfsg/po/freedink.pot0000644000175000017500000000770512421725374014771 0ustar meme# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Contributor # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: freedink 108.4\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "" #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "" #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr "" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr "" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr "" #: src/init.c:119 #, c-format msgid "" " -r, --refdir Specify base directory for dink/graphics, D-Mods, " "etc.\n" msgstr "" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr "" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr "" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr "" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr "" #: src/init.c:125 #, c-format msgid "" " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr "" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr "" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr "" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "" #: src/freedink.c:2686 msgid "`$Huh?" msgstr "" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "" #: src/freedink.c:2688 msgid "`$What?" msgstr "" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "" #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "" #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "" #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "" #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "" #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "" #: src/dinkc.c:687 msgid "Attack" msgstr "" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "" #: src/dinkc.c:689 msgid "Magic" msgstr "" #: src/dinkc.c:690 msgid "Item Screen" msgstr "" #: src/dinkc.c:691 msgid "Main Menu" msgstr "" #: src/dinkc.c:692 msgid "Map" msgstr "" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "" #: src/dinkc.c:697 msgid "Down" msgstr "" #: src/dinkc.c:698 msgid "Left" msgstr "" #: src/dinkc.c:699 msgid "Right" msgstr "" #: src/dinkc.c:700 msgid "Up" msgstr "" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "" freedink-108.4+dfsg/po/ru.po0000644000175000017500000001437612421730246013440 0ustar meme# Russian translation for freedink. # Copyright (C) 2014 Yuri Kozlov # This file is distributed under the same license as the freedink package. # # Yuri Kozlov , 2014. msgid "" msgstr "" "Project-Id-Version: freedink 108.2\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2014-05-30 19:03+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.5\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Использование: %s [ПАРАМЕТРЫ]…\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Запустить игру Dink Smallwood game или один из её D-Mod." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Редактировать игру Dink Smallwood game или один из её D-Mod." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help показать эту справку\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version показать версию\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game <кат> задать каталог DMod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir <кат> задать базовый каталог dink/graphics, D-Mods и т. д.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug объяснять, что происходит\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini не пытаться записать dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy не пытаться использовать джойстик\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound выключить звук\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor использовать больше цветов (в новой графике D-Mod)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window запускать в окне, а не на весь экран\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 включить режим совместимости v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Сообщения об ошибках отправляйте по адресу %s.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Замечание: параметр -nomovie принимается только для совместимости и ничего не изменяет.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Я ничего здесь не вижу." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Ась?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Я абсолютно уверен, что не могу с этим поговорить или использовать его." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Что?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Мне надоедают." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Тут ничего не происходит." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Я не знаю никаких заклинаний." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Я не волшебник!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Чтобы это попробовать, мне нужно выучить заклинание." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Я напрасно размахиваю руками!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Ничего не произошло." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Фокус покус!" #: src/dinkc.c:687 msgid "Attack" msgstr "Атаковать" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Поговорить/Исследовать" #: src/dinkc.c:689 msgid "Magic" msgstr "Магия" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Предметы" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Главное меню" #: src/dinkc.c:692 msgid "Map" msgstr "Карта" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Не используется" #: src/dinkc.c:697 msgid "Down" msgstr "Вниз" #: src/dinkc.c:698 msgid "Left" msgstr "Влево" #: src/dinkc.c:699 msgid "Right" msgstr "Вправо" #: src/dinkc.c:700 msgid "Up" msgstr "Вверх" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Ошибка: действие не назначено" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Место %d — %d:%02d — %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Место %d — Пусто" freedink-108.4+dfsg/po/hr.po0000644000175000017500000001313212421730246013410 0ustar meme# Translation of freedink to Croatian. # Copyright (C) 2012 Contributor # This file is distributed under the same license as the freedink package. # # Tomislav Krznar , 2012. msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-16 22:43+0200\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "X-Generator: Lokalize 1.4\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Uporaba: %s [OPCIJE]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Pokreće igru Dink Smallwood ili jednu od njezinih modifikacija (D-Mod)." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Uredi igru Dink Smallwood ili jednu od njezinih modifikacija (D-Mod)." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Prikaži ovaj ekran pomoći\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Prikaži inačicu\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Navedi DMod direktorij\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Navedi osnovni direktorij za dink/grafiku, modifikacije itd.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Pojasni što program radi\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Ne pokušavaj pisati u dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Ne pokušavaj koristiti igraću palicu\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Nemoj reproducirati zvukove\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Dozvoli više boja (za grafiku novijih modifikacija)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Koristi prikaz u prozoru umjesto na cijelom ekranu\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Omogući kompatibilnost s v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Prijavite greške na %s.\n" "Prijavite greške prijevoda na .\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Napomena: -nomovie se prihvaća zbog kompatibilnosti, no nema utjecaja.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Ovdje ne vidim ništa." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Ha?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Poprilično sam siguran da s tim ne mogu pričati ili drukčije koristiti." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Molim?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Dosadno mi je." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Ovdje se ne događa ništa." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Ne znam nikakve čarolije." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Nisam čarobnjak!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Moram naučiti čarolije prije nego probam ovo." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Mašem kao manijak bez učinka!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Ništa se nije dogodilo." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokus pokus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Napad" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Pričaj/Pregledaj" #: src/dinkc.c:689 msgid "Magic" msgstr "Čarolija" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Inventar" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Glavni izbornik" #: src/dinkc.c:692 msgid "Map" msgstr "Karta" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Nekorišteno" #: src/dinkc.c:697 msgid "Down" msgstr "Dolje" #: src/dinkc.c:698 msgid "Left" msgstr "Lijevo" #: src/dinkc.c:699 msgid "Right" msgstr "Desno" #: src/dinkc.c:700 msgid "Up" msgstr "Gore" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Greška: nije pridružena" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Polje %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Polje %d - Prazno" freedink-108.4+dfsg/po/de.gmo0000644000175000017500000001012712421730246013534 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}D9 0~ 5 8 I Bh S + N+ )z B  < 4 N [ a g r Tx l :Aa9y  !2=pU$6P ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-30 20:44+0100 Last-Translator: Jakob Kramer Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit -7, --v1.07 Kompatibilitätsmodus für v1.07 aktivieren -d, --debug Erklären, was passiert -g, --game Ein DMod-Verzeichnis angeben -h, --help Diesen Hilfebildschirm anzeigen -i, --noini Nicht versuchen, dinksmallwood.ini zu schreiben. -j, --nojoy Nicht versuchen, den Joystick zu benutzen -r, --refdir Basis-Verzeichnis für dink/graphics, D-Mods, etc. angeben -s, --nosound Keinen Ton spielen -t, --truecolor Mehr Farben erlauben (für aktuellere D-Mod-Grafiken) -v, --version Version anzeigen -w, --window Im Fenster statt im Vollbildmodus starten AngreifenUntenDas Dink-Smallwood-Spiel oder eine seiner D-Mods bearbeiten.Fehler: nichts zugeordnetGegenständeLinksMagieHauptmenüKarteNotiz: -nomovie wird aus Kompatibilitätsgründen akzeptiert, hat aber kein Effekt. Berichten Sie Fehler bitte auf %s und Übersetzungsfehler auf . RechtsSpeicherplatz %d - %d:%02d - %sSpeicherplatz %d - LeerStartet das Dink-Smallwood-Spiel oder eine seiner D-Mods.Sprechen/UntersuchenUnbenutztObenBenutzung: %s [OPTIONEN]... `$Hokuspokus!`$Hm?`$Ich kenne keine Magie.`$Hier ist nichts zu sehen.`$Ich muss Magie erlernen, bevor ich das versuche.`$Mir ist langweilig.`$Ich bin mir ziemlich sicher, dass ich das weder benutzen, noch damit sprechen kann.`$Ich fuchtele erfolglos wild herum!`$Ich bin kein Zauberer!`$Hier passiert nicht viel.`$Es ist nichts passiert.`$Was?freedink-108.4+dfsg/po/es.gmo0000644000175000017500000000756712421730246013571 0ustar meme*l;8311HBz7O*E,pA2 0<A GQ@U4  #;JQk+ .#%@T\G 65 ;l 6 D 5$ WZ , , M Z a 2g     L k)    3   !>OXt1 352F\ m &( $ #')% "! *  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20100321 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2010-10-02 18:21+0200 Last-Translator: Fernando Carmona Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; -7, --v1.07 Activa la compatibilidad con la versión v1.07 -d, --debug Detalla lo que se va haciendo -g, --game Especifica el directorio del D-Mod -h, --help Muestra este mensaje de ayuda -i, --noini Desactiva la escritura de dinksmallwood.ini -j, --nojoy Desactiva el uso de joystick -r, --refdir Especifica el directorio base de dink/gráficos, D-Mods, etc. -s, --nosound Desactiva el sonido -v, --version Muestra la versión -w, --window Emplea el modo ventana en lugar de pantalla completa AtacarAbajoEdita el juego Dink Smallwood o uno de sus D-Mods.Error: no mapeadoInventarioIzquierdaMagiaMenú PrincipalMapaNota: -nomovie es aceptado por compatibilidad pero no tiene ningún efecto. Informar de errores a %s. Informar de errores de traducción a DerechaRanura %d - %d:%02d - %sRanura %d - VacíaInicia el juego Dink Smallwood o uno de sus D-Mods.Hablar/ExaminarSin UsoArribaModo de empleo: %s [OPCIONES]... `$¡Hocus pocus!`$¿Huh?`$No se de ningún hechizo.`$No veo nada aquí.`$Necesito aprender magia antes de intentar esto.`$Me aburro.`$Te aseguro que no puedo hablar con eso ni usarlo.`$¡Estoy gesticulando como loco sin ningún sentido!`$¡No soy un mago!`$No pasa nada aquí.`$No pasó nada.`$¿Qué?freedink-108.4+dfsg/po/stamp-po0000644000175000017500000000001212421730234014110 0ustar memetimestamp freedink-108.4+dfsg/po/da.gmo0000644000175000017500000001002212421730246013522 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}pJ% .p , 0 A 7? Lw & E -1 H_   =     * P/ 5<T9c 2MB^%  ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-14 19:30+01:00 Last-Translator: Joe Hansen Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -7, --v1.07 Slå kompatibilitetstilstand til for version 1.07 -d, --debug Forklar hvad der sker -g, --game Angiv en DMod-mappe -h, --help Vis denne hjælpeskærm -i, --noini Forsøg ikke at skrive dinksmallwood.ini -j, --nojoy Forsøg ikke at bruge joystick -r, --refdir Angiv basemappe for dink/grafik, D-Mods, et cetera. -s, --nosound Brug ikke lyd -t, --truecolor Tillad flere farver (for nyere D-Mod-grafik) -v, --version Vis versionsnummeret -w, --window Brug vinduetilstand i steden for skærmtilstand AngribNedRediger i spillet Dink Smallwood eller et af dets udvidelser.Fejl: ikke kortlagtUdstyrsskærmVenstreMagiHovedmenuKortBemærk: -nomovie accepteres for kompatibilitetens skyld, men har ingen effekt. Anmeld fejl til %s. Oversættelsesrettelser kan sendes til: Joe Hansen , 2009. Dansk-gruppen Mere info: http://www.dansk-gruppen.dk HøjrePlads %d - %d:%02d - %sPlads %d - TomStart spillet Dink Smallwood eller et af dets udvidelser.Snak/undersøgUbrugtOpBrug: %s [TILVALG]... `$Hokus pokus!`$Ah hva?`$Jeg kender ikke til magi.`$I ser ikke noget her.`$Jeg må lære om magi, før jeg kan bruge denne.`$Jeg keder mig.`$Jeg er ret sikker på, at jeg ikke kan tale til eller bruge det.`$Jeg gestikulerer vildt uden effekt!`$Jeg er ikke troldmand!`$Der sker ikke meget her.`$Intet skete.`$Hvad?freedink-108.4+dfsg/po/ChangeLog0000644000175000017500000000105412352056240014207 0ustar meme2010-11-12 gettextize * Rules-quot: Upgrade to gettext-0.18.1. 2008-12-06 gettextize * Makefile.in.in: New file, from gettext-0.17. * boldquot.sed: New file, from gettext-0.17. * en@boldquot.header: New file, from gettext-0.17. * en@quot.header: New file, from gettext-0.17. * insert-header.sin: New file, from gettext-0.17. * quot.sed: New file, from gettext-0.17. * remove-potcdate.sin: New file, from gettext-0.17. * Rules-quot: New file, from gettext-0.17. * POTFILES.in: New file. freedink-108.4+dfsg/po/hu.po0000644000175000017500000001316712421730246013423 0ustar meme# Hungarian translation of freedink. # Copyright (C) 2014 Contributor # This file is distributed under the same license as the freedink package. # # Balázs Úr , 2014. msgid "" msgstr "" "Project-Id-Version: freedink 108.2\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2014-05-30 21:13+0200\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.5\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Használat: %s [KAPCSOLÓK]…\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Elindítja a Dink Smallwood játékot vagy a D-Modok egyikét." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "A Dink Smallwood játék vagy a D-Modok egyikének szerkesztése." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Ezen súgóképernyő megjelenítése\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version A verzió megjelenítése\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Egy DMod könyvtár megadása\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Alapkönyvtár megadása a dinkhez/grafikákhoz, D-Modokhoz, stb.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Annak magyarázata, hogy mi történik\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Ne próbálja meg a dinksmallwood.ini fájlt írni\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Ne próbálja meg a joystick használatát\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Ne játsszon le hangot\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Több szín engedélyezése (az újabb D-Mod grafikákhoz)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Ablakos mód használata a képernyőmód helyett\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 A v1.07 kompatibilitási mód engedélyezése\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Hibák jelentése ide: %s.\n" "Fordítási hibák jelentése: Úr Balázs \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Megjegyzés: a -nomovie elfogadott a kompatibilitáshoz, de nincs hatása.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Semmit sem látok itt." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Huh?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Egészen biztos vagyok, hogy nem tudok beszélni vele, vagy használni azt." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Tessék?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Unatkozom." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Nem sok minden történik itt." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Nem ismerek semmilyen varázslatot." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Nem vagyok varázsló!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Meg kell tanulnom varázsolni, mielőtt ezt megpróbálom." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Vadul integetek, de hiába!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Semmi sem történt." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hókusz-pókusz!" #: src/dinkc.c:687 msgid "Attack" msgstr "Támadás" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Beszélgetés/Megvizsgálás" #: src/dinkc.c:689 msgid "Magic" msgstr "Varázslat" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Elem képernyő" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Főmenü" #: src/dinkc.c:692 msgid "Map" msgstr "Térkép" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Nem használt" #: src/dinkc.c:697 msgid "Down" msgstr "Le" #: src/dinkc.c:698 msgid "Left" msgstr "Balra" #: src/dinkc.c:699 msgid "Right" msgstr "Jobbra" #: src/dinkc.c:700 msgid "Up" msgstr "Fel" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Hiba: nincs leképezve" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "%d. hely - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "%d. hely - Üres" freedink-108.4+dfsg/po/nb.po0000644000175000017500000001302612421730245013377 0ustar meme# Norske oversettelser til pakken GNU FreeDink # Copyright (C) 2008, 2009 Free Software Foundation, Inc. # This file is distributed under the same license as the freedink package. # # Alexander Krivács Schrøder , 2008. # Johnny A. Solbu , 2012 # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-28 15:16+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Bruk: %s [VALG]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Starter Dink Smallwood eller én av spillets D-Moder." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Rediger Dink Smallwood eller én av spillets D-Moder." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Viser denne hjelpeskjermen\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Viser versjonsnummeret\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Velg hvilken D-Mod som skal spilles\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Angi søkesti for «dink/graphics», D-Moder, og så videre.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Forklar hva som forgår\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Ikke skriv til dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Slå av styrepinne\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Slå av lyd\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Tillat flere farger (for nyeste D-Mod-grafikk)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Vis spillet i et vindu istedet for i fullskjerm\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Bruk v1.07-kompatibilitetsmodus\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Rapporter programfeil til %s.\n" "Rapporter feil ved oversettelsen til \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Merk: -nomovie aksepteres av kompatibilitetsårsaker, men har ingen effekt.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Jeg ser ingen ting av interesse her." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Hæ?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Jeg er ganske sikker på at jeg ikke kan snakke med eller bruke det." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Hva?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Jeg kjeder meg." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Det skjer ikke mye her." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Jeg kjenner ikke til noe magi." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Jeg er ingen trollmann!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Før jeg kan prøve dette må jeg lære meg magi." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Jeg veiver hendene mine vilt rundt meg til ingen nytte!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Ingen ting skjedde." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokus pokus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Angrip" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Snakk/undersøk" #: src/dinkc.c:689 msgid "Magic" msgstr "Magi" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Utstyrsmeny" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Hovedmeny" #: src/dinkc.c:692 msgid "Map" msgstr "Kart" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Ubrukt" #: src/dinkc.c:697 msgid "Down" msgstr "Ned" #: src/dinkc.c:698 msgid "Left" msgstr "Venstre" #: src/dinkc.c:699 msgid "Right" msgstr "Høyre" #: src/dinkc.c:700 msgid "Up" msgstr "Opp" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Feil: Ikke assosiert" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Plass %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Plass %d - Tomt" freedink-108.4+dfsg/po/nl.po0000644000175000017500000001244412421730246013415 0ustar meme# Dutch translation of freedink. # Copyright (C) 2010. # This file is put in the public domain. # Koen Torfs , 2010. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-28 22:40+0100\n" "Last-Translator: Koen Torfs \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Gebruik: %s [OPTIES]…\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Begint het Dink Smallwood-spel of een van zijn D-Mods." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Het Dink Smallwood-spel of een van zijn D-Mods bewerken." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Deze helpboodschap tonen\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version De pakketversie tonen\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Een DMod-map specifiëren\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Basismap voor dink/graphics, D-Mods etc. specifiëren\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Wat gedaan wordt uitleggen\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Niet proberen om dinksmallwood.ini te schrijven\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Niet proberen om een joystick te gebruiken\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Geen geluid\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr "--t, --truecolor Meer kleuren toelaten (voor recente D-Mod graphics)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Venstermodus in plaats van volledig scherm gebruiken\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 v1.07-compatibiliteitsmodus gebruiken\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Meld bugs via %s.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Nota: -nomovie wordt aanvaard voor compatibiliteit, maar heeft geen effect.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Er is hier niets te zien." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Huh?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Ik ben vrij zeker dat ik dit niet kan aanspreken of gebruiken." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Wat?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Ik verveel me." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Er is hier niets aan de gang." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Ik ken helemaal niets van magie." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Ik ben geen tovenaar!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Ik moet magie leren voordat ik dit probeer." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Ik sta hier te zwaaien zonder resultaat!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Er is niets gebeurd." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hocus pocus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Aanvallen" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Spreek/Onderzoek" #: src/dinkc.c:689 msgid "Magic" msgstr "Magie" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Itemvenster" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Hoofdmenu" #: src/dinkc.c:692 msgid "Map" msgstr "Kaart" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Ongebruikt" #: src/dinkc.c:697 msgid "Down" msgstr "Naar beneden" #: src/dinkc.c:698 msgid "Left" msgstr "Links" #: src/dinkc.c:699 msgid "Right" msgstr "Rechts" #: src/dinkc.c:700 msgid "Up" msgstr "Naar boven" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Fout: niet toegewezen" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Plaats %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Plaats %d - Leeg" freedink-108.4+dfsg/po/Rules-quot0000644000175000017500000000340012352063122014432 0ustar meme# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header freedink-108.4+dfsg/po/de.po0000644000175000017500000001275312421730246013377 0ustar meme# German translation of freedink. # This file is put in the public domain. # Sarah Evans , 2010. # Jakob Kramer , 2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-30 20:44+0100\n" "Last-Translator: Jakob Kramer \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Benutzung: %s [OPTIONEN]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Startet das Dink-Smallwood-Spiel oder eine seiner D-Mods." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Das Dink-Smallwood-Spiel oder eine seiner D-Mods bearbeiten." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Diesen Hilfebildschirm anzeigen\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Version anzeigen\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Ein DMod-Verzeichnis angeben\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Basis-Verzeichnis für dink/graphics, D-Mods, etc. angeben\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Erklären, was passiert\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Nicht versuchen, dinksmallwood.ini zu schreiben.\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Nicht versuchen, den Joystick zu benutzen\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Keinen Ton spielen\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Mehr Farben erlauben (für aktuellere D-Mod-Grafiken)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Im Fenster statt im Vollbildmodus starten\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Kompatibilitätsmodus für v1.07 aktivieren\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Berichten Sie Fehler bitte auf %s und Übersetzungsfehler auf\n" ".\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Notiz: -nomovie wird aus Kompatibilitätsgründen akzeptiert, hat aber kein Effekt.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Hier ist nichts zu sehen." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Hm?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Ich bin mir ziemlich sicher, dass ich das weder benutzen, noch damit sprechen kann." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Was?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Mir ist langweilig." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Hier passiert nicht viel." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Ich kenne keine Magie." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Ich bin kein Zauberer!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Ich muss Magie erlernen, bevor ich das versuche." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Ich fuchtele erfolglos wild herum!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Es ist nichts passiert." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokuspokus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Angreifen" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Sprechen/Untersuchen" #: src/dinkc.c:689 msgid "Magic" msgstr "Magie" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Gegenstände" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Hauptmenü" #: src/dinkc.c:692 msgid "Map" msgstr "Karte" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Unbenutzt" #: src/dinkc.c:697 msgid "Down" msgstr "Unten" #: src/dinkc.c:698 msgid "Left" msgstr "Links" #: src/dinkc.c:699 msgid "Right" msgstr "Rechts" #: src/dinkc.c:700 msgid "Up" msgstr "Oben" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Fehler: nichts zugeordnet" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Speicherplatz %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Speicherplatz %d - Leer" freedink-108.4+dfsg/po/it.gmo0000644000175000017500000000757512421730246013575 0ustar meme*l;8311HBz7O*E,pA2 0<A GQ@U4  #;JQk+ .#%@Tq\G 2 5I 9 J > VC % + U B J 6O      V S0    3 #2A]+sL./C\u &( $ #')% "! *  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20100321 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2010-10-10 14:30+0200 Last-Translator: Vincenzo Campanella Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -7, --v1.07 Abilita la modalità di compabilità con v1.07 -d, --debug Spiega quanto viene fatto -g, --game Specifica una directory DMod -h, --help Mostra questa schermata di aiuto -i, --noini Non tentare di scrivere il file dinksmallwood.ini -j, --nojoy Non tentare di utilizzare un joystick -r, --refdir Specifica la directory di base per dink/graphics, D-Mod, ecc. -s, --nosound Senza sonoro -v, --version Mostra la versione -w, --window Utilizza la modalità finestra anziché la modalità schermo AttaccaGiùModifica il gioco Dink Smallwood o uno dei suoi D-Mod.Errore: non mappatoSchermata dell'oggettoA sinistraMagiaMenù principaleMappaNota: -nomovie viene accettato per motivi di compatibilità, ma non ha alcun effetto. Segnalare i problemi a %s. Segnalare i problemi di traduzione a tp@lists.linux.it. A destraPosto %d - %d:%02d - %sPosto %d - VuotoAvvia il gioco Dink Smallwood o uno dei suoi D-Mod.Parla/esaminaInutilizzatoSuUtilizzo: %s [OPZIONI]... `$Hocus pocus!`$Come, prego?`$Non conosco alcuna magia.`$Non vedo nulla qui.`$Prima di provarci devo imparare la magia.`$Mi sto annoiando.`$Sono abbastanza sicuro di non poterlo utilizzare e di non poterci parlare.`$Sto facendo segni all'impazzata inutilmente.`$Non sono un mago.`$Non succede molto qui.`$Non è successo nulla.`$Cosa?freedink-108.4+dfsg/po/nb.gmo0000644000175000017500000001001312421730246013535 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}8^ 0 < 3 99 +s U $ G /b H   5  1 = E J T LY Z  50fv} &3'F99 ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-28 15:16+0100 Last-Translator: Johnny A. Solbu Language-Team: Norwegian Bokmaal Language: nb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; -7, --v1.07 Bruk v1.07-kompatibilitetsmodus -d, --debug Forklar hva som forgår -g, --game Velg hvilken D-Mod som skal spilles -h, --help Viser denne hjelpeskjermen -i, --noini Ikke skriv til dinksmallwood.ini -j, --nojoy Slå av styrepinne -r, --refdir Angi søkesti for «dink/graphics», D-Moder, og så videre. -s, --nosound Slå av lyd -t, --truecolor Tillat flere farger (for nyeste D-Mod-grafikk) -v, --version Viser versjonsnummeret -w, --window Vis spillet i et vindu istedet for i fullskjerm AngripNedRediger Dink Smallwood eller én av spillets D-Moder.Feil: Ikke assosiertUtstyrsmenyVenstreMagiHovedmenyKartMerk: -nomovie aksepteres av kompatibilitetsårsaker, men har ingen effekt. Rapporter programfeil til %s. Rapporter feil ved oversettelsen til HøyrePlass %d - %d:%02d - %sPlass %d - TomtStarter Dink Smallwood eller én av spillets D-Moder.Snakk/undersøkUbruktOppBruk: %s [VALG]... `$Hokus pokus!`$Hæ?`$Jeg kjenner ikke til noe magi.`$Jeg ser ingen ting av interesse her.`$Før jeg kan prøve dette må jeg lære meg magi.`$Jeg kjeder meg.`$Jeg er ganske sikker på at jeg ikke kan snakke med eller bruke det.`$Jeg veiver hendene mine vilt rundt meg til ingen nytte!`$Jeg er ingen trollmann!`$Det skjer ikke mye her.`$Ingen ting skjedde.`$Hva?freedink-108.4+dfsg/po/eo.po0000644000175000017500000001262712421730246013412 0ustar meme# Esperanto translation # Copyright (C) 2011, 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the freedink package. # Felipe Castro , 2011, 2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-15 08:26-0300\n" "Last-Translator: Felipe Castro \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Uzado: %s [MODIFILOJ]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Lanĉi la ludon Dink Smallwood aŭ unu el ties D-Mod." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Redakti la ludon Dink Smallwood aŭ unu el ties D-Mod." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Montrigi tiun ĉi help-ekranon\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Montrigi la version\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Indiki dosierujon kun DMod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Indiki bazan dosierujon por dink/graphics, D-Mod, ktp.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Klarigi tion, kio estas farata\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Ne provi skribon al dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Ne provi uzon de stirstango (joystick)\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Ne ludi sonojn\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Permesi pli da koloroj (por la plejnovaj grafikoj de D-Mod)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Uzi fenestran reĝimon anstataŭ ekrana reĝimo\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Ebligi kongruecon al reĝimo v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Raportu misojn al %s.\n" "Raportu traduk-erarojn al .\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Rimarku: -nomovie estas akceptata pro kongrueco, sed ĝi kaŭzas nenion.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Mi ne vidas ion ajn ĉi tie." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Heh?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Mi estas ege certa ke mi ne povas alparoli aŭ uzi tion." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Kio?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Mi enuas." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Ne multo okazas ĉi tie." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Mi scias neniun magion." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Mi ne estas magiisto!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Mi bezonas lerni magion antaŭ ol provi tion ĉi." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Mi sovaĝe gestas por nenio utila!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Nenio okazis." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokus pokus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Ataki" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Paroli/Ekzameni" #: src/dinkc.c:689 msgid "Magic" msgstr "Magio" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Aĵo-Ekrano" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Ĉef-Menuo" #: src/dinkc.c:692 msgid "Map" msgstr "Mapo" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Neuzata" #: src/dinkc.c:697 msgid "Down" msgstr "Malsupre" #: src/dinkc.c:698 msgid "Left" msgstr "Maldekstre" #: src/dinkc.c:699 msgid "Right" msgstr "Dekstre" #: src/dinkc.c:700 msgid "Up" msgstr "Supre" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Eraro: ne mapita" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Ingo %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Ingo %d - Malplena" freedink-108.4+dfsg/po/fr.gmo0000644000175000017500000001007412421730246013554 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}?b 1 7 2 B? B ^ %$ ^J + N $ - 21 d z     V T SZx0 *0Ev?"4 ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-11-04 14:47+0100 Last-Translator: Sylvain Beucler Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Pootle 1.2.1 -7, --v1.07 Active le mode de compatibilité v1.07 -d, --debug Explique ce qui se passe -g, --game Specifie le dossier d'un D-Mod -h, --help Affiche cet écran d'aide -i, --noini N'essaie pas d'écreire dinksmallwood.ini -j, --nojoy N'essaie pas d'utiliser la manette de jeu -r, --refdir Spécifie le répertoire de base pour dink/graphics, les D-Mods, etc. -s, --nosound Coupe le son -t, --truecolor Permet davantage de couleurs (pour les graphismes des D-Mod récents) -v, --version Affiche la version -w, --window Utilise le mode fenêtré plutôt que le plein écran AttaquerBasModifie le jeu Dink Smallwood ou un de ses D-Mods.Erreur: non attribuéInventaireGaucheMagieMenu principalCarteNote: -nomovie est accepté pour des raisons de compatibilité, mais n'a aucun effet. Rapportez les anomalies à %s. Rapportez les erreurs de traduction à beuc@beuc.net DroiteEmplacement %d - %d:%02d - %sEmplacement %d - VideLance le jeu Dink Smallwood ou un de ses D-Mods.Parler/examinerInutiliséHautUsage: %s [OPTIONS]... `$Hocus pocus!`$Hein?`$Je ne connais aucun sort.`$Je ne vois rien par ici.`$Je dois apprendre un sort avant d'essayer ça.`$Je m'ennuie.`$Je ne pense pas pouvoir parler à ce truc-là, ou l'utiliser.`$Je m'excite bêtement pour rien!`$Je ne suis pas magicien!`$Pas grand chose par ici.`$Rien n'est arrivé.`$Quoi?freedink-108.4+dfsg/po/Makefile.in.in0000644000175000017500000003744212352063122015116 0ustar meme# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.18 GETTEXT_MACRO_VERSION = 0.18 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: check-macro-version all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. check-macro-version: @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ package_gnu='GNU '; \ else \ package_gnu=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_gnu}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: freedink-108.4+dfsg/po/el.gmo0000644000175000017500000001130312421730246013541 0ustar meme*l;8311HBz7O*E,pA2 0<A GQ@U4  #;JQk+ .#%@T\q B B Y eb e m. D ? Z! |  e / #*N _l }, W!?a~%(Mhx|OE3e! &( $ #')% "! *  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20100321 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2010-10-12 14:10+0200 Last-Translator: Michael Kotsarinis Language-Team: Greek Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: 2 X-Poedit-Language: Greek X-Poedit-Country: GREECE -7, --v1.07 Ενεργοποίηση λειυοργίας συμβατότητας με την v1.07 -d, --debug Εξήγηση του τι γίνεται -g, --game Ορίστε ένα κατάλογο DMod -h, --help Εμφάνιση αυτής της οθόνης βοήθειας -i, --noini Μην επιχειρήσετε να γράψετε στο dinksmallwood.ini -j, --nojoy Μην προσπαθήσετε να χρησιμοποιήσετε joystick -r, --refdir Ορίστε το βασικό κατάλογο για dink/graphics, D-Mod, κλπ. -s, --nosound Να μην αναπαραχθεί ήχος -v, --version Εμφάνιση της έκδοσης -w, --window Εμφάνιση σε παράθυρο αντί για οθόνη ΕπίθεσηΚάτωΕπεξεργασθείτε το παιχνίδι Dink Smallwood ή ένα από τα D-Mod του.Σφάλμα: μη χαρτογραφημένοΟθόνη αντικειμένουΑριστεράΜαγείαΚεντρικό μενούΧάρτηςΣημείωση: το -nomovie γίνεται δεκτό για λόγους συμβατότητας αλλά δεν έχει αποτέλεσμα. Αναφορά σφαλμάτων σε %s. Αναφορά σφαλμάτων μετάφρασης σε ΔεξιάΘέση %d - %d:%02d - %sΘέση %d - ΚενήΕκκινεί το παιχνίδι Dink Smallwood ή ένα από τα D-Mod του.Συνομιλία/ΕξέτασηΑχρησιμοποίητοΠάνωΧρήση: %s [OPTIONS]... `$Άμπρα κατάμπρα!`$Εε;`$Δεν γνωρίζω μαγικά.`$Δεν βλέπω τίποτα εδώ.`$Πρέπει να μάθω μαγικά πριν το επιχειρήσω.`$Βαριέμαι.`$Είμαι σίγουρος ότι δεν μπορώ να του μιλήσω ή να το χρησιμοποιήσω.`$Χειρονομώ μανιωδώς αλλά χωρίς αποτέλεσμα!`$Δεν είμαι μάγος!`$Δεν γίνονται και πολλά εδώ.`$Τίποτα δε συνέβη.`$Τι;freedink-108.4+dfsg/po/pl.gmo0000644000175000017500000000775412421730246013573 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}8` 4 3 4 67 .n X 0 R' +z J   5 4 R e j q  H (   9#] p}:K) u ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-15 11:10+0100 Last-Translator: Michał Trzebiatowski Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.5.4 -7, --v1.07 Włącz tryb zgodności z v1.07 -d, --debug Wyjaśnianie co się dzieje -g, --game Określ katalog D-Modu -h, --help Wyświetla ten ekran pomocy -i, --noini Nie zapisuj dinksmallwood.ini -j, --nojoy Nie używaj joysticka -r, --refdir Określ podstawowy katalog dla dinka/grafik, D-Modów, itd. -s, --nosound Nie odtwarzaj dźwięku -t, --truecolor Pozwól na więcej kolorów (dla ostatnich grafik D-Modu) -v, --version Wyświetla wersję -w, --window Używaj trybu okna zamiast trybu pełnoekranowego AtakujDółEdytuj grę Dink Smallwood lub jeden z jego D-Modów.Błąd: Nie przyporządkowujeEkran przedmiotówLewoCzarujGłówne menuMapaUwaga: -nomovie jest akceptowane dla zgodności, ale nie ma to wpływu. Błędy proszę zgłaszać na adres %s. PrawoSlot %d - %d:%02d - %sSlot %d - pustyRozpoczyna grę Dink Smallwood lub jeden z jego D-Modów.Rozmawiaj/SprawdźNie używanyGóraUżyj: %s [OPCJE]... `$Hokus pokus!`$Hę?`$Nie umiem czarować.`$Nie widzę tu niczego.`$Muszę nauczyć się czarować przed spróbowaniem tego.`$Nudzę się.`$Jestem całkiem pewien, że nie mogę z tym rozmawiać lub tego używać.`$Dziko gestykuluje na próżno!`$Nie jestem czarodziejem!`$Niewiele się tutaj dzieje.`$Nic się nie stało.`$Co?freedink-108.4+dfsg/po/remove-potcdate.sin0000644000175000017500000000066012352063122016245 0ustar meme# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } freedink-108.4+dfsg/po/en@boldquot.header0000644000175000017500000000247112352063122016064 0ustar meme# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # freedink-108.4+dfsg/po/insert-header.sin0000644000175000017500000000124012352063122015674 0ustar meme# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } freedink-108.4+dfsg/po/LINGUAS0000644000175000017500000000040212421722003013450 0ustar meme# Set of available languages. fr nb fi es pl da vi nl id de el it cs eo sl sr hr ca eu pt_BR ru hu # cf. (gettext.info.gz)po/LINGUAS # ... but disabling because freebsd adds spurious \n and fails check, # plus we don't have any quotes # en@quot en@boldquot freedink-108.4+dfsg/po/vi.gmo0000644000175000017500000001105012421730246013556 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}gQ =n 8 6 G Bd t 4 ^Q 2 U 9EUM xrU+ & '6!XDg"   ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-24 14:02+0700 Last-Translator: Trần Ngọc Quân Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Team-Website: Plural-Forms: nplurals=1; plural=0; X-Generator: LocFactoryEditor 1.8 X-Poedit-Language: Vietnamese X-Poedit-Country: VIET NAM X-Poedit-SourceCharset: utf-8 -7, --v1.07 Bật chế độ tương thích với phiên bản 1.07 -d, --debug Giải thích những gì đang làm -g, --game Ghi rõ một thư mục DMod -h, --help Hiển thị trợ giúp này -i, --noini Không thử ghi tập tin "dinksmallwood.ini" -j, --nojoy Không nên thử sử dụng cần chơi -r, --refdir Ghi rõ thư mục cơ bản cho dink, các đồ họa và bản sửa đổi D-Mod v.v. -s, --nosound Không nên phát âm thanh -t, --truecolor Cho phép thêm nhiều màu hơn (cho đồ họa D-Mod mới đây) -v, --version Hiển thị phiên bản -w, --window Dùng chế độ cửa sổ thay cho chế độ màn hình Tấn côngXuốngChỉnh sửa trò chơi Dink Smallwood hay một bản sửa đổi D-Mod của nó.Lỗi: chưa ánh xạMàn hình mụcTráiThuậtTrình Đơn ChínhBản đồGhi chú: tuỳ chọn "-nomovie" (không phim) được chấp nhận để tương thích nhưng không hiệu quả. Hãy gửi thông báo liên quan đến: lỗi phần mềm cho %s lỗi dịch cho PhảiKhe %d — %d:%02d — %sKhe %d — TrốngKhởi chạy trò chơi Dink Smallwood hay một bản sửa đổi D-Mod của nó.Nói/XemChưa dùngLênCách dùng: %s [CÁC_TÙY_CHỌN]... `$Thấy đi!`$Hừm?`$Không quen với ma thuật.`$Tôi chưa thấy gì ở đây cả.`$Cần học ma thuật trước khi thử ở đây.`$Buồn tẻ.`$Chắc là không thể liên lạc với hoặc sử dụng đó.`$Chọc tức!`$Không phải nhà chuyên môn!`$Ở đây có ít kết quả.`$Không có gì xảy ra.`$Cái gì ?freedink-108.4+dfsg/po/sr.gmo0000644000175000017500000001157112421730246013574 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}R F ML L X Q@ 1 fM I h gv`&! *7 U|`5 (&G`n' 3 L4V0P )=(4(F o ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink-1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2013-10-03 09:06+0200 Last-Translator: Мирослав Николић Language-Team: Serbian Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); -7, --v1.07 Укључује в1.07 режим сагалсности -d, --debug Објашњава шта је урађено -g, --game Одређује директоријум ДМода -h, --help Приказује овај екран помоћи -i, --noini Не покушава да запише „dinksmallwood.ini“ -j, --nojoy Не покушава да користи џојстик -r, --refdir Одређује основни директоријум за динк/графику, Д-Модове, итд. -s, --nosound Не пушта звук -t, --truecolor Допушта још боја (за новије Д-мод графичке) -v, --version Приказује издање програма -w, --window Користи режим прозора уместо режима екрана НападниДолеУређује игру шумарак Динк или неки од њених Д-Модова.Грешка: није на картиПриказ ставкеЛевоМагијаГлавни изборникКартаНапомена: „-nomovie“ је прихваћено због сагласности, али нема дејства. Грешке програма пријавите %s. ДесноПрикључак %d — %d:%02d — %sПрикључак %d — ПразноПокреће игру шумарак Динк или неки од њених Д-модова.Говори/ИспитајНекоришћеноГореУпотреба: %s [ОПЦИЈЕ]... `$Хокус покус!`$Ааа?`$Не познајем никакву магију.`$Ништа ти ја овде не видим.`$Морам да научим магију да бих испробао ово.`$Досадно ми је.`$Поприлично сам сигуран да не могу да причам с овим или да га користим.`$Узалуд машем рукама као суманут!`$Нисам ти ја чаробњак!`$Овде се баш ништа не догађа.`$Ништа се није десило.`$Шта?freedink-108.4+dfsg/po/el.po0000644000175000017500000001425412421730246013405 0ustar meme# Greek translation for freedink. # This file is distributed under the same license as the freedink package. # Michael Kotsarinis , 2010 # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20100321\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2010-10-12 14:10+0200\n" "Last-Translator: Michael Kotsarinis \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: 2\n" "X-Poedit-Language: Greek\n" "X-Poedit-Country: GREECE\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Χρήση: %s [OPTIONS]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Εκκινεί το παιχνίδι Dink Smallwood ή ένα από τα D-Mod του." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Επεξεργασθείτε το παιχνίδι Dink Smallwood ή ένα από τα D-Mod του." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Εμφάνιση αυτής της οθόνης βοήθειας\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Εμφάνιση της έκδοσης\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Ορίστε ένα κατάλογο DMod\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Ορίστε το βασικό κατάλογο για dink/graphics, D-Mod, κλπ.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Εξήγηση του τι γίνεται\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Μην επιχειρήσετε να γράψετε στο dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Μην προσπαθήσετε να χρησιμοποιήσετε joystick\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Να μην αναπαραχθεί ήχος\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr "" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Εμφάνιση σε παράθυρο αντί για οθόνη\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Ενεργοποίηση λειυοργίας συμβατότητας με την v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Αναφορά σφαλμάτων σε %s.\n" "Αναφορά σφαλμάτων μετάφρασης σε \n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Σημείωση: το -nomovie γίνεται δεκτό για λόγους συμβατότητας αλλά δεν έχει αποτέλεσμα.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Δεν βλέπω τίποτα εδώ." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Εε;" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Είμαι σίγουρος ότι δεν μπορώ να του μιλήσω ή να το χρησιμοποιήσω." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Τι;" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Βαριέμαι." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Δεν γίνονται και πολλά εδώ." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Δεν γνωρίζω μαγικά." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Δεν είμαι μάγος!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Πρέπει να μάθω μαγικά πριν το επιχειρήσω." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Χειρονομώ μανιωδώς αλλά χωρίς αποτέλεσμα!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Τίποτα δε συνέβη." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Άμπρα κατάμπρα!" #: src/dinkc.c:687 msgid "Attack" msgstr "Επίθεση" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Συνομιλία/Εξέταση" #: src/dinkc.c:689 msgid "Magic" msgstr "Μαγεία" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Οθόνη αντικειμένου" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Κεντρικό μενού" #: src/dinkc.c:692 msgid "Map" msgstr "Χάρτης" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Αχρησιμοποίητο" #: src/dinkc.c:697 msgid "Down" msgstr "Κάτω" #: src/dinkc.c:698 msgid "Left" msgstr "Αριστερά" #: src/dinkc.c:699 msgid "Right" msgstr "Δεξιά" #: src/dinkc.c:700 msgid "Up" msgstr "Πάνω" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Σφάλμα: μη χαρτογραφημένο" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Θέση %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Θέση %d - Κενή" freedink-108.4+dfsg/po/ca.gmo0000644000175000017500000001001612421730246013524 0ustar meme+t;831&1XB7O*UG,A7>2Cv  @4/ dqx{+ .#Hl}@F 4 ; 8 A1 Fs S ( M7 * Z   2 J ` j s z  > S "(A3S 9 E;Y* ') %! $(*& #" +  -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode AttackDownEdit the Dink Smallwood game or one of its D-Mods.Error: not mappedItem ScreenLeftMagicMain MenuMapNote: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. RightSlot %d - %d:%02d - %sSlot %d - EmptyStarts the Dink Smallwood game or one of its D-Mods.Talk/ExamineUnusedUpUsage: %s [OPTIONS]... `$Hocus pocus!`$Huh?`$I don't know any magic.`$I don't see anything here.`$I need to learn magic before trying this.`$I'm bored.`$I'm fairly sure I can't talk to or use that.`$I'm gesturing wildly to no avail!`$I'm no wizard!`$Not much happening here.`$Nothing happened.`$What?Project-Id-Version: freedink 1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-10-13 16:37+0100 Last-Translator: Àngel Mompó Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n!=1); -7, --v1.07 Habilita la compatibilitat amb la V1.07 -d, --debug Explica el que s'està fent -g, --game Especifica el directori d'un D-Mod -h, --help Mostra aquesta pantalla d'ajuda -i, --noini No prova d'escriure al dinksmallwood.ini -j, --nojoy No prova de fer servir cap palanca de control -r, --refdir Especifica la carpeta base del dink/gràfics, D-Mods, etc. -s, --nosound Desactiva el so -t, --truecolor Permet més colors (per a gràfics de D-Mod recents) -v, --version Mostra la versió -w, --window Fes servir el mode de finestra en comptes de la pantalla completa AtacaAvallEdita el joc Dink Smallwood o un dels seus D-Mods.Error: no està mapatInventariEsquerraMàgiaMenú principalMapaNota: -nomovie s'accepta per compatibilitat, però no fa res. Informeu de les fallades a %s. Informeu dels errors de traducció a DretaRanura %d - %d:%02d - %sRanura %d - BuidaInicia el joc Dink Smallwood o un dels seus D-Mods.Parla/ExaminaNo es fa servirAmuntSintaxi: %s [OPCIONS]... `$Hocus pocus!`$Com?`$No en sé res de màgia.`$No veig res aquí.`$Necessito aprendre màgia abans de provar de fer això.`$M'estic avorrint.`$Estic força segur que no pot parlar-hi ni fer-ho servir.`$Estic fent gestos com un ximple per res!`$No sóc cap mag!`$Aquí no hi passa gaire res.`$No ha passat res.`$Què?freedink-108.4+dfsg/po/pl.po0000644000175000017500000001266712421730246013426 0ustar meme# Polish translation for freedink # Copyright (C) 2008, 2009 Free Software Foundation, Inc. # This file is distributed under the same license as the freedink package. # Michał Trzebiatowski , 2009-2012. # msgid "" msgstr "" "Project-Id-Version: freedink 1.08.20120427\n" "Report-Msgid-Bugs-To: bug-freedink@gnu.org\n" "POT-Creation-Date: 2014-10-22 15:02+0200\n" "PO-Revision-Date: 2012-10-15 11:10+0100\n" "Last-Translator: Michał Trzebiatowski \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: src/init.c:108 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Użyj: %s [OPCJE]...\n" #: src/init.c:110 #, c-format msgid "Starts the Dink Smallwood game or one of its D-Mods." msgstr "Rozpoczyna grę Dink Smallwood lub jeden z jego D-Modów." #: src/init.c:112 #, c-format msgid "Edit the Dink Smallwood game or one of its D-Mods." msgstr "Edytuj grę Dink Smallwood lub jeden z jego D-Modów." #: src/init.c:115 #, c-format msgid " -h, --help Display this help screen\n" msgstr " -h, --help Wyświetla ten ekran pomocy\n" #: src/init.c:116 #, c-format msgid " -v, --version Display the version\n" msgstr " -v, --version Wyświetla wersję\n" #: src/init.c:118 #, c-format msgid " -g, --game Specify a DMod directory\n" msgstr " -g, --game Określ katalog D-Modu\n" #: src/init.c:119 #, c-format msgid " -r, --refdir Specify base directory for dink/graphics, D-Mods, etc.\n" msgstr " -r, --refdir Określ podstawowy katalog dla dinka/grafik, D-Modów, itd.\n" #: src/init.c:121 #, c-format msgid " -d, --debug Explain what is being done\n" msgstr " -d, --debug Wyjaśnianie co się dzieje\n" #: src/init.c:122 #, c-format msgid " -i, --noini Do not attempt to write dinksmallwood.ini\n" msgstr " -i, --noini Nie zapisuj dinksmallwood.ini\n" #: src/init.c:123 #, c-format msgid " -j, --nojoy Do not attempt to use joystick\n" msgstr " -j, --nojoy Nie używaj joysticka\n" #: src/init.c:124 #, c-format msgid " -s, --nosound Do not play sound\n" msgstr " -s, --nosound Nie odtwarzaj dźwięku\n" #: src/init.c:125 #, c-format msgid " -t, --truecolor Allow more colours (for recent D-Mod graphics)\n" msgstr " -t, --truecolor Pozwól na więcej kolorów (dla ostatnich grafik D-Modu)\n" #: src/init.c:126 #, c-format msgid " -w, --window Use windowed mode instead of screen mode\n" msgstr " -w, --window Używaj trybu okna zamiast trybu pełnoekranowego\n" #: src/init.c:127 #, c-format msgid " -7, --v1.07 Enable v1.07 compatibility mode\n" msgstr " -7, --v1.07 Włącz tryb zgodności z v1.07\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying "Report #. translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email #. address). #: src/init.c:137 #, c-format msgid "Report bugs to %s.\n" msgstr "Błędy proszę zgłaszać na adres %s.\n" #: src/init.c:279 #, c-format msgid "Note: -nomovie is accepted for compatiblity, but has no effect.\n" msgstr "Uwaga: -nomovie jest akceptowane dla zgodności, ale nie ma to wpływu.\n" #: src/freedink.c:2685 msgid "`$I don't see anything here." msgstr "`$Nie widzę tu niczego." #: src/freedink.c:2686 msgid "`$Huh?" msgstr "`$Hę?" #: src/freedink.c:2687 msgid "`$I'm fairly sure I can't talk to or use that." msgstr "`$Jestem całkiem pewien, że nie mogę z tym rozmawiać lub tego używać." #: src/freedink.c:2688 msgid "`$What?" msgstr "`$Co?" #: src/freedink.c:2689 msgid "`$I'm bored." msgstr "`$Nudzę się." #: src/freedink.c:2690 msgid "`$Not much happening here." msgstr "`$Niewiele się tutaj dzieje." #: src/freedink.c:2798 msgid "`$I don't know any magic." msgstr "`$Nie umiem czarować." #: src/freedink.c:2799 msgid "`$I'm no wizard!" msgstr "`$Nie jestem czarodziejem!" #: src/freedink.c:2800 msgid "`$I need to learn magic before trying this." msgstr "`$Muszę nauczyć się czarować przed spróbowaniem tego." #: src/freedink.c:2801 msgid "`$I'm gesturing wildly to no avail!" msgstr "`$Dziko gestykuluje na próżno!" #: src/freedink.c:2802 msgid "`$Nothing happened." msgstr "`$Nic się nie stało." #: src/freedink.c:2803 msgid "`$Hocus pocus!" msgstr "`$Hokus pokus!" #: src/dinkc.c:687 msgid "Attack" msgstr "Atakuj" #: src/dinkc.c:688 msgid "Talk/Examine" msgstr "Rozmawiaj/Sprawdź" #: src/dinkc.c:689 msgid "Magic" msgstr "Czaruj" #: src/dinkc.c:690 msgid "Item Screen" msgstr "Ekran przedmiotów" #: src/dinkc.c:691 msgid "Main Menu" msgstr "Główne menu" #: src/dinkc.c:692 msgid "Map" msgstr "Mapa" #: src/dinkc.c:693 src/dinkc.c:694 src/dinkc.c:695 src/dinkc.c:696 msgid "Unused" msgstr "Nie używany" #: src/dinkc.c:697 msgid "Down" msgstr "Dół" #: src/dinkc.c:698 msgid "Left" msgstr "Lewo" #: src/dinkc.c:699 msgid "Right" msgstr "Prawo" #: src/dinkc.c:700 msgid "Up" msgstr "Góra" #: src/dinkc.c:701 msgid "Error: not mapped" msgstr "Błąd: Nie przyporządkowuje" #: src/dinkc.c:712 #, c-format msgid "Slot %d - %d:%02d - %s" msgstr "Slot %d - %d:%02d - %s" #: src/dinkc.c:715 #, c-format msgid "Slot %d - Empty" msgstr "Slot %d - pusty" freedink-108.4+dfsg/po/Makevars0000644000175000017500000000363312352056240014136 0ustar meme# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Contributor # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = $(PACKAGE_BUGREPORT) # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # Use the same options as the Translation Project robot # http://svn.vrijschrift.org/tp-repo/TP/bin/tp-robot MSGMERGE_OPTIONS = --no-wrap freedink-108.4+dfsg/po/eu.gmo0000644000175000017500000000510512421730246013555 0ustar meme,8311(BZ7O*%GP,A@H\+t#651 7<Ct/g2PS)S GU   : 2      -7, --v1.07 Enable v1.07 compatibility mode -d, --debug Explain what is being done -g, --game Specify a DMod directory -h, --help Display this help screen -i, --noini Do not attempt to write dinksmallwood.ini -j, --nojoy Do not attempt to use joystick -r, --refdir Specify base directory for dink/graphics, D-Mods, etc. -s, --nosound Do not play sound -t, --truecolor Allow more colours (for recent D-Mod graphics) -v, --version Display the version -w, --window Use windowed mode instead of screen mode Note: -nomovie is accepted for compatiblity, but has no effect. Report bugs to %s. Usage: %s [OPTIONS]... `$I need to learn magic before trying this.`$I'm gesturing wildly to no avail!Project-Id-Version: freedink-1.08.20120427 Report-Msgid-Bugs-To: bug-freedink@gnu.org POT-Creation-Date: 2014-10-22 15:02+0200 PO-Revision-Date: 2012-11-04 17:43+0200 Last-Translator: Gorka Azkarate Zubiaur Language-Team: Basque Language: eu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Virtaal 0.7.0 -7, --v1.07 Gaitu v1.07 bateratzeko modua -d, --debug Azaldu zer ari den gertatzen -g, --game Zehaztu DMod direktorioa -h, --help Erakutsi laguntza-pantaila hau -i, --noini Ez saiatu hau editatzen: dinksmallwood.ini -j, --nojoy Ez erabili joystick-ik -r, --refdir Zehaztu oinarrizko direktorioa honako hauetarako: dink/graphics, D-Mods, etab. -s, --nosound Ez dadila soinurik entzun -t, --truecolor Onartu kolore gehiago (azken D-Mod graphics bertsioetarako) -v, --version Erakutsi bertsioa -w, --window Erabili leihodun modua pantailadun modua erabili beharrean Oharra: -nomovie onartu egiten da bateratzeko, baina ez du ondoriorik. Arazoen berri %s horri eman. Erabilera: %s [OPTIONS]... `$Horrekin saiatu baino lehenago magia ikasi beharko nuke.`$Imintzioka eta keinuka ari natzaizu ez alferrik!freedink-108.4+dfsg/Makefile.in0000644000175000017500000015073712421727615014111 0ustar meme# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure ABOUT-NLS AUTHORS COPYING ChangeLog \ INSTALL NEWS THANKS autotools/config.guess \ autotools/config.rpath autotools/config.sub autotools/depcomp \ autotools/install-sh autotools/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gnulib/m4/00gnulib.m4 \ $(top_srcdir)/gnulib/m4/absolute-header.m4 \ $(top_srcdir)/gnulib/m4/alloca.m4 \ $(top_srcdir)/gnulib/m4/canonicalize.m4 \ $(top_srcdir)/gnulib/m4/chdir-long.m4 \ $(top_srcdir)/gnulib/m4/close.m4 \ $(top_srcdir)/gnulib/m4/closedir.m4 \ $(top_srcdir)/gnulib/m4/d-ino.m4 \ $(top_srcdir)/gnulib/m4/dirent_h.m4 \ $(top_srcdir)/gnulib/m4/dirfd.m4 \ $(top_srcdir)/gnulib/m4/dirname.m4 \ $(top_srcdir)/gnulib/m4/double-slash-root.m4 \ $(top_srcdir)/gnulib/m4/dup.m4 $(top_srcdir)/gnulib/m4/dup2.m4 \ $(top_srcdir)/gnulib/m4/eealloc.m4 \ $(top_srcdir)/gnulib/m4/environ.m4 \ $(top_srcdir)/gnulib/m4/errno_h.m4 \ $(top_srcdir)/gnulib/m4/error.m4 \ $(top_srcdir)/gnulib/m4/exponentd.m4 \ $(top_srcdir)/gnulib/m4/extensions.m4 \ $(top_srcdir)/gnulib/m4/extern-inline.m4 \ $(top_srcdir)/gnulib/m4/fchdir.m4 \ $(top_srcdir)/gnulib/m4/fcntl-o.m4 \ $(top_srcdir)/gnulib/m4/fcntl.m4 \ $(top_srcdir)/gnulib/m4/fcntl_h.m4 \ $(top_srcdir)/gnulib/m4/fdopendir.m4 \ $(top_srcdir)/gnulib/m4/filenamecat.m4 \ $(top_srcdir)/gnulib/m4/float_h.m4 \ $(top_srcdir)/gnulib/m4/fstat.m4 \ $(top_srcdir)/gnulib/m4/fstatat.m4 \ $(top_srcdir)/gnulib/m4/getcwd-abort-bug.m4 \ $(top_srcdir)/gnulib/m4/getcwd-path-max.m4 \ $(top_srcdir)/gnulib/m4/getcwd.m4 \ $(top_srcdir)/gnulib/m4/getdtablesize.m4 \ $(top_srcdir)/gnulib/m4/getopt.m4 \ $(top_srcdir)/gnulib/m4/gettext.m4 \ $(top_srcdir)/gnulib/m4/gettimeofday.m4 \ $(top_srcdir)/gnulib/m4/gnulib-common.m4 \ $(top_srcdir)/gnulib/m4/gnulib-comp.m4 \ $(top_srcdir)/gnulib/m4/iconv.m4 \ $(top_srcdir)/gnulib/m4/include_next.m4 \ $(top_srcdir)/gnulib/m4/intlmacosx.m4 \ $(top_srcdir)/gnulib/m4/intmax_t.m4 \ $(top_srcdir)/gnulib/m4/inttypes_h.m4 \ $(top_srcdir)/gnulib/m4/largefile.m4 \ $(top_srcdir)/gnulib/m4/lib-ld.m4 \ $(top_srcdir)/gnulib/m4/lib-link.m4 \ $(top_srcdir)/gnulib/m4/lib-prefix.m4 \ $(top_srcdir)/gnulib/m4/longlong.m4 \ $(top_srcdir)/gnulib/m4/lstat.m4 \ $(top_srcdir)/gnulib/m4/malloc.m4 \ $(top_srcdir)/gnulib/m4/malloca.m4 \ $(top_srcdir)/gnulib/m4/memchr.m4 \ $(top_srcdir)/gnulib/m4/mempcpy.m4 \ $(top_srcdir)/gnulib/m4/memrchr.m4 \ $(top_srcdir)/gnulib/m4/mmap-anon.m4 \ $(top_srcdir)/gnulib/m4/mode_t.m4 \ $(top_srcdir)/gnulib/m4/msvc-inval.m4 \ $(top_srcdir)/gnulib/m4/msvc-nothrow.m4 \ $(top_srcdir)/gnulib/m4/multiarch.m4 \ $(top_srcdir)/gnulib/m4/nls.m4 \ $(top_srcdir)/gnulib/m4/nocrash.m4 \ $(top_srcdir)/gnulib/m4/off_t.m4 \ $(top_srcdir)/gnulib/m4/open.m4 \ $(top_srcdir)/gnulib/m4/openat.m4 \ $(top_srcdir)/gnulib/m4/opendir.m4 \ $(top_srcdir)/gnulib/m4/pathmax.m4 \ $(top_srcdir)/gnulib/m4/po.m4 \ $(top_srcdir)/gnulib/m4/printf.m4 \ $(top_srcdir)/gnulib/m4/progtest.m4 \ $(top_srcdir)/gnulib/m4/readdir.m4 \ $(top_srcdir)/gnulib/m4/readlink.m4 \ $(top_srcdir)/gnulib/m4/realloc.m4 \ $(top_srcdir)/gnulib/m4/relocatable-lib.m4 \ $(top_srcdir)/gnulib/m4/relocatable.m4 \ $(top_srcdir)/gnulib/m4/rewinddir.m4 \ $(top_srcdir)/gnulib/m4/same.m4 \ $(top_srcdir)/gnulib/m4/save-cwd.m4 \ $(top_srcdir)/gnulib/m4/setenv.m4 \ $(top_srcdir)/gnulib/m4/size_max.m4 \ $(top_srcdir)/gnulib/m4/ssize_t.m4 \ $(top_srcdir)/gnulib/m4/stat.m4 \ $(top_srcdir)/gnulib/m4/stdbool.m4 \ $(top_srcdir)/gnulib/m4/stddef_h.m4 \ $(top_srcdir)/gnulib/m4/stdint.m4 \ $(top_srcdir)/gnulib/m4/stdint_h.m4 \ $(top_srcdir)/gnulib/m4/stdio_h.m4 \ $(top_srcdir)/gnulib/m4/stdlib_h.m4 \ $(top_srcdir)/gnulib/m4/strcase.m4 \ $(top_srcdir)/gnulib/m4/strdup.m4 \ $(top_srcdir)/gnulib/m4/strerror.m4 \ $(top_srcdir)/gnulib/m4/string_h.m4 \ $(top_srcdir)/gnulib/m4/strings_h.m4 \ $(top_srcdir)/gnulib/m4/strndup.m4 \ $(top_srcdir)/gnulib/m4/strnlen.m4 \ $(top_srcdir)/gnulib/m4/sys_socket_h.m4 \ $(top_srcdir)/gnulib/m4/sys_stat_h.m4 \ $(top_srcdir)/gnulib/m4/sys_time_h.m4 \ $(top_srcdir)/gnulib/m4/sys_types_h.m4 \ $(top_srcdir)/gnulib/m4/time_h.m4 \ $(top_srcdir)/gnulib/m4/unistd-safer.m4 \ $(top_srcdir)/gnulib/m4/unistd_h.m4 \ $(top_srcdir)/gnulib/m4/vasnprintf.m4 \ $(top_srcdir)/gnulib/m4/vasprintf.m4 \ $(top_srcdir)/gnulib/m4/warn-on-use.m4 \ $(top_srcdir)/gnulib/m4/wchar_h.m4 \ $(top_srcdir)/gnulib/m4/wchar_t.m4 \ $(top_srcdir)/gnulib/m4/wint_t.m4 \ $(top_srcdir)/gnulib/m4/xalloc.m4 \ $(top_srcdir)/gnulib/m4/xgetcwd.m4 \ $(top_srcdir)/gnulib/m4/xsize.m4 \ $(top_srcdir)/gnulib/m4/xstrndup.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).zip GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CHECK_CFLAGS = @CHECK_CFLAGS@ CHECK_LIBS = @CHECK_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FLOAT_H = @FLOAT_H@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETOPT_H = @GETOPT_H@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FCNTL = @GNULIB_FCNTL@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFS = @GNULIB_FFS@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBRLEN = @GNULIB_MBRLEN@ GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSINIT = @GNULIB_MBSINIT@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_OPEN = @GNULIB_OPEN@ GNULIB_OPENAT = @GNULIB_OPENAT@ GNULIB_OPENDIR = @GNULIB_OPENDIR@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READDIR = @GNULIB_READDIR@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCPCPY = @GNULIB_WCPCPY@ GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ GNULIB_WCSCAT = @GNULIB_WCSCAT@ GNULIB_WCSCHR = @GNULIB_WCSCHR@ GNULIB_WCSCMP = @GNULIB_WCSCMP@ GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ GNULIB_WCSCPY = @GNULIB_WCSCPY@ GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ GNULIB_WCSDUP = @GNULIB_WCSDUP@ GNULIB_WCSLEN = @GNULIB_WCSLEN@ GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ GNULIB_WCSSPN = @GNULIB_WCSSPN@ GNULIB_WCSSTR = @GNULIB_WCSSTR@ GNULIB_WCSTOK = @GNULIB_WCSTOK@ GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ GNULIB_WCTOB = @GNULIB_WCTOB@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ GNULIB_WMEMSET = @GNULIB_WMEMSET@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DIRENT_H = @HAVE_DIRENT_H@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFS = @HAVE_FFS@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OPENDIR = @HAVE_OPENDIR@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READDIR = @HAVE_READDIR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASECMP = @HAVE_STRCASECMP@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRINGS_H = @HAVE_STRINGS_H@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE__BOOL = @HAVE__BOOL@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM_ENV = @INSTALL_PROGRAM_ENV@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBZIP_CFLAGS = @LIBZIP_CFLAGS@ LIBZIP_LIBS = @LIBZIP_LIBS@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRINGS_H = @NEXT_STRINGS_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ RELOCATABLE = @RELOCATABLE@ RELOCATABLE_BUILD_DIR = @RELOCATABLE_BUILD_DIR@ RELOCATABLE_CONFIG_H_DIR = @RELOCATABLE_CONFIG_H_DIR@ RELOCATABLE_LDFLAGS = @RELOCATABLE_LDFLAGS@ RELOCATABLE_LIBRARY_PATH = @RELOCATABLE_LIBRARY_PATH@ RELOCATABLE_SRC_DIR = @RELOCATABLE_SRC_DIR@ RELOCATABLE_STRIP = @RELOCATABLE_STRIP@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ REPLACE_DIRFD = @REPLACE_DIRFD@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_OPENDIR = @REPLACE_OPENDIR@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WRITE = @REPLACE_WRITE@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDBOOL_H = @STDBOOL_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ UPX = @UPX@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDRES = @WINDRES@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZIP = @ZIP@ ZZIPLIB_CFLAGS = @ZZIPLIB_CFLAGS@ ZZIPLIB_LIBS = @ZZIPLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = gnits # Gnulib: ACLOCAL_AMFLAGS = -I gnulib/m4 SUBDIRS = gnulib/lib gnulib/po nsis po src share # Copy those directly and recursively: # Build system # Documentation # Packaging # Other programs of interest # Developer tools EXTRA_DIST = acsite.m4 bootstrap gnulib/m4/gnulib-cache.m4 doc BUILD \ TRANSLATIONS.txt TROUBLESHOOTING debian freedink.spec psp test \ contrib valgrind all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnits'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnits \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-hook dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am dist-hook: find $(distdir) -name '*~' | xargs -r rm -f # Remove .gitignore files; e.g. they prevent 'git-buildpackage' # from importing ignored files from release tarballs find $(distdir) -name '.gitignore' | xargs -r rm -f # At the end of each line (doubled $), add a \r, so we get \r\n cd $(distdir) && sed 's/$$/\r/' README > README.txt make -C $(distdir)/test/sdl clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: freedink-108.4+dfsg/valgrind/0000755000175000017500000000000012331457777013646 5ustar memefreedink-108.4+dfsg/valgrind/suppressions-debian_testing.txt0000644000175000017500000000030112331457777022133 0ustar meme{ Memcheck:Cond fun:bcmp fun:Map1to1 fun:SDL_MapSurface fun:SDL_LowerBlit fun:SDL_ConvertSurface fun:gfx_init fun:init fun:main } freedink-108.4+dfsg/ChangeLog0000644000175000017500000046430012421727456013613 0ustar meme2014-10-22 Sylvain Beucler * NEWS, configure.ac, doc/release.txt: Prepare 108.4 2014-10-22 Sylvain Beucler * freedink.spec: Sync Fedora 2014-10-22 Sylvain Beucler * debian/changelog, debian/control: Prepare Debian release 2014-10-22 Sylvain Beucler * AUTHORS, po/LINGUAS, po/hu.po: New hungarian translation 2014-10-22 Sylvain Beucler * doc/gnulib.txt: gnulib: fix version used for 108.2 2014-10-22 Sylvain Beucler * autobuild/freedink-exe-mxe.sh: Update woe compilation notes 2014-10-17 Sylvain Beucler * NEWS, src/dinkvar.c: Never recreate an empty hard.dat in the game 2014-10-17 Sylvain Beucler * src/dinkc_bindings.c: sp_script: more detail in error log 2014-06-16 Sylvain Beucler * NEWS, src/freedink.c: Doc update Conflicts: NEWS 2014-06-15 Sylvain Beucler * doc/TODO, src/freedink.c: Update Dink position after the new screen is loaded. This is nonsensical because scripts will then poll Dink's position in the previous screen, but we've got to be compatible. More details at: http://www.dinknetwork.com/forum.cgi?MID=186069#186263 Conflicts: doc/TODO src/freedink.c 2014-06-24 Sylvain Beucler * src/gfx_palette.c: gfx_palette: better error reporting Conflicts: src/gfx_palette.c 2014-06-09 Sylvain Beucler * NEWS, src/dinkc_bindings.c, src/dinkvar.c: load_palette: search for palette in the right place Conflicts: NEWS 2014-06-07 Sylvain Beucler * src/gfx.c: debug: display video format 2014-06-07 Sylvain Beucler * TROUBLESHOOTING, src/sfx.c: audio: log SDL_mixer capabilities 2014-06-07 Sylvain Beucler * src/dinkc.c: DinkC: redefining globals is so common that we can't say it's an error 2014-06-04 Sylvain Beucler * src/dinkc.c: Typo 2014-06-01 Sylvain Beucler * src/check_freedink.c: tests: update copyright notice - that test is actually quite old :) 2014-05-30 Sylvain Beucler * src/check_freedink.c, src/io_util.c: tests: ciconvert 2014-05-30 Sylvain Beucler * AUTHORS, NEWS, po/LINGUAS, po/ru.po: Add Russian translation 2014-05-30 Sylvain Beucler * freedink.spec: rpm: typo 2014-05-29 Sylvain Beucler * src/check_freedink.c: tests: better structure 2014-05-29 Sylvain Beucler * configure.ac, src/Makefile.am, src/check_freedink.c: tests: first simple test with 'check' 2014-05-29 Sylvain Beucler * debian/changelog: debian: bump version 2014-05-29 Sylvain Beucler * src/str_util.c: Typo 2014-05-29 Sylvain Beucler * src/dinkc_bindings.c: Fix potential out-of-bound string access + doc fixes 2014-05-29 Sylvain Beucler * doc/release.txt: Update FreshMeat -> FreeCode 2014-05-29 Sylvain Beucler * freedink.spec: rpm: uniform capitalization 2014-05-29 Sylvain Beucler * : commit 10ec46363d3be16f05f499b298b97bacbc6f0d3f Author: Sylvain Beucler Date: Thu May 29 11:01:39 2014 +0200 2014-05-29 Sylvain Beucler * debian/changelog, doc/release.txt, freedink.spec: packaging: bump dates 2014-05-29 Sylvain Beucler * ChangeLog: ChangeLog update 2014-05-29 Sylvain Beucler * freedink.spec: rpm: lint 2014-05-29 Sylvain Beucler * doc/release.txt: rpm: change package URL again 2014-05-29 Sylvain Beucler * freedink.spec: rpm: typo 2014-05-29 Sylvain Beucler * doc/release.txt: Update ChangeLog later in the release process 2014-05-29 Sylvain Beucler * ChangeLog: Update ChangeLog 2014-05-29 Sylvain Beucler * debian/control: debian: not using intltool quite yet 2014-05-29 Sylvain Beucler * debian/changelog, debian/control, freedink.spec, share/appdata/freedink.appdata.xml, share/applications/freedink.desktop, share/applications/freedinkedit.desktop: Use consistent package description 2014-05-29 Sylvain Beucler * debian/rules: debian: drop reference to my old autotools script 2014-05-29 Sylvain Beucler * doc/release.txt: debian: simplify release process 2014-05-29 Sylvain Beucler * freedink.spec: rpm: fix some .spec warnings 2014-05-28 Sylvain Beucler * NEWS, autobuild/freedink-exe-mxe.sh, doc/gnulib.txt, doc/release.txt, nsis/README: doc fixes 2014-05-28 Sylvain Beucler * freedink.spec: rpm: fix appstream/appdata install 2014-05-28 Sylvain Beucler * gnulib/lib/.gitignore: gnulib update 2014-05-28 Sylvain Beucler * debian/changelog: typo 2014-05-28 Sylvain Beucler * debian/changelog, debian/upstream/signing-key.asc, debian/watch: debian: watch: add pgpsigurlmangle option 2014-05-28 Sylvain Beucler * autobuild/freedink-debs.sh: Clean-up pbuilding 2014-05-27 Sylvain Beucler * NEWS: Tidy NEWS 2014-05-27 Sylvain Beucler * share/appdata/freedink.appdata.xml: Add AppStream/AppData description file (2) 2014-05-27 Sylvain Beucler * share/Makefile.am: Add AppStream/AppData description file 2014-05-27 Sylvain Beucler * BUILD: gnulib: recommend installing rsync to fetch translationproject.org, otherwise it falls back to wget with --quiet where errors are easy to miss (fix sent to gnulib) 2014-05-27 Sylvain Beucler * freedink.spec: Typo 2014-05-27 Sylvain Beucler * debian/control: debian: update reference Git repo 2014-05-27 Sylvain Beucler * autobuild/freedink-debs.sh, autobuild/freedink-rpms.sh, doc/release.txt: Update release procedure 2014-05-27 Sylvain Beucler * ChangeLog, NEWS, configure.ac, debian/changelog, doc/gnulib.txt, doc/release.txt, freedink.spec: Start branch 108.2 2014-05-26 Sylvain Beucler * BUILD, autobuild/freedink-exe-mxe.sh: Refresh build instructions 2014-05-26 Sylvain Beucler * po/Makevars: translations: use the same options as the Translation Project robot 2014-05-26 Sylvain Beucler * po/ca.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po, po/eu.po, po/fi.po, po/fr.po, po/hr.po, po/id.po, po/it.po, po/nb.po, po/nl.po, po/pl.po, po/th.po, po/vi.po: translations: sync with TP 2014-05-24 Sylvain Beucler * debian/changelog, debian/rules: Compile with -O1 on Raspbian to avoid weird segfault 2014-05-24 Sylvain Beucler * Makefile.am: Makefile.am: DEB was removed 2014-05-24 Sylvain Beucler * TROUBLESHOOTING: TROUBLESHOOTING: reference sdl_mixer/fluidsynth memory leak + reorder 2014-05-24 Sylvain Beucler * NEWS, src/sfx.c: Display SDL audio driver in debug mode 2014-05-04 Sylvain Beucler * debian/changelog, debian/copyright, src/SDL_rwops_libzip.c, src/SDL_rwops_libzip.h, src/SDL_rwops_zzip.c, src/SDL_rwops_zzip.h: Centralize copyright information some more 2014-05-04 Sylvain Beucler * debian/update-autotools-config.sh: debian: remove update-autotools-config.sh, we don't use it anymore, and probably nobody needs it, actually 2014-05-04 Sylvain Beucler * DEB, Makefile.am, debian/changelog, debian/gbp.conf: Put back debian/ in releases, since we're using format 3.0 which supports that 2014-05-04 Sylvain Beucler * debian/control: debian: fix package-needs-versioned-debhelper-build-depends 2014-05-04 Sylvain Beucler * debian/README.source: debian: remove obsolete source documentation 2014-05-04 Sylvain Beucler * TROUBLESHOOTING: TROUBLESHOOTING: explain how to enforce aspect ratio on 16:9 screens 2014-05-04 Sylvain Beucler * TROUBLESHOOTING: Remove obsolete TROUBLESHOOTING entries 2014-05-04 Sylvain Beucler * src/gfx_fonts.c: double-free segfault on exit traced to FreeType not freeing system_font, better not free it than risking a segfault leaving the user in 640*480 2014-05-04 Sylvain Beucler * src/gfx_fonts.c: fonts: vgasys_fon can be considered read-only memory 2014-05-04 Sylvain Beucler * valgrind/suppressions-debian_testing.txt: Use Valgrind suppressions file with newer syntax 2014-05-04 Sylvain Beucler * valgrind/suppressions-debian_etch.txt, valgrind/suppressions-debian_lenny.txt: Remove obsolete Valgrind suppressions files 2014-05-02 Sylvain Beucler * po/LINGUAS: FreeBSD: disable en@quot and en@boldquot locales, unused and causing issues 2014-05-02 Sylvain Beucler * BUILD: FreeBSD: link to X11 config 2014-05-01 Sylvain Beucler * gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4: Update gnulib 2014-05-01 Sylvain Beucler * BUILD: Update BUILD instructions 2014-05-01 Sylvain Beucler * src/meminfo.c: Fix compilation on FreeBSD 2014-01-03 Sylvain Beucler * BUILD, freedink.spec: Sync Fedora + fix old changelog weekdays 2013-11-09 Sylvain Beucler * gnulib/lib/.gitignore, gnulib/m4/.gitignore: Gnulib update 2013-11-09 Sylvain Beucler * autobuild/freedink-exe-mxe.sh: 64-bit woe build support 2013-10-20 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/cs.po, po/pt_BR.po, po/sl.po, po/sr.po: Update translations 2013-10-20 Sylvain Beucler * TROUBLESHOOTING: Document issue with laptop accelerometer 2013-10-20 Sylvain Beucler * NEWS: Update NEWS file 2013-10-20 Sylvain Beucler * NEWS, src/dinkc_bindings.c: Properly play Dink's intro screen music 2013-10-20 Sylvain Beucler * TROUBLESHOOTING, doc/midi.txt: Document new fluidsynth backend for SDL-Mixer 2013-10-20 Sylvain Beucler * debian/changelog, debian/compat, debian/control, debian/freedink.xpm, debian/install, debian/rules: Debian packaging: fix Lintian 'hardening-no-relro' + reuse XPM icon from src/ 2013-10-20 Sylvain Beucler * gnulib/m4/gnulib-cache.m4: Update gnulib 2013-10-19 Sylvain Beucler * debian/changelog, debian/control: Update Debian package name for Liberation 2013-10-19 Sylvain Beucler * Makefile.am, autopackage/.gitignore, autopackage/Makefile.am, autopackage/Makefile.autopackage, autopackage/default.apspec.in, autopackage/extract-package.sh, autopackage/skeletons/@libsdl.org/sdl_ttf/skeleton.1, configure.ac: Remove autopackage support - if there's interest in resurrecting it, cf. the superseding Listaller project 2013-10-19 Sylvain Beucler * gentoo/games-rpg/freedink-engine/freedink-engine-1.08.20080920.ebui ld, gentoo/games-rpg/freedink-engine/metadata.xml, gentoo/games-rpg/freedink/freedink-1.08.20080920.ebuild, gentoo/games-rpg/freedink/metadata.xml: Remove obsolete gentoo ebuild - get it from official Gentoo instead :) 2013-10-18 Sylvain Beucler * autobuild/freedink-rpms.sh: Document my RPM build setup 2012-12-20 Sylvain Beucler * autobuild/freedink-exe-mxe.sh: Minor fix to mxe build doc 2012-12-19 Sylvain Beucler * autobuild/freedink-exe-mxe.sh, configure.ac, doc/mxe.txt: Detect SDL and SDL_* with pkg-config; this allows to automatically detect libs for static compilation 2012-12-16 Sylvain Beucler * nsis/README, nsis/freedink-all.nsi: Refresh the NSIS bundle installer 2012-12-16 Sylvain Beucler * autobuild/freedink-exe-mxe.sh, autobuild/freedink-exe.sh: Adapt woe autobuild script for MXE 2012-12-16 Sylvain Beucler * src/Makefile.am: stop.wav and jump.wav have free replacements now, so we can bundle them in freedinkedit.exe 2012-12-16 Sylvain Beucler * src/init.c, src/paths.c: Fix early debugging of paths detection 2012-12-16 Sylvain Beucler * configure.ac, doc/autopackage.txt, doc/cross.txt, doc/fonts.txt, doc/mingw-cross-env.txt, doc/mxe.txt, doc/woe-compile.txt: woe build: update docs 2012-12-09 Sylvain Beucler * doc/release.txt: Precise pbuilder instructions 2012-12-09 Sylvain Beucler * NEWS, configure.ac: Merge 1.08.20121209 2012-12-09 Sylvain Beucler * debian/changelog, debian/patches/install-reloc.patch, debian/patches/series: Release 1.08.20121209 2012-12-09 Sylvain Beucler * ChangeLog, NEWS, configure.ac, debian/changelog, freedink.spec, po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po, po/eu.po, po/fi.po, po/fr.po, po/hr.po, po/id.po, po/it.po, po/nb.po, po/nl.po, po/pl.po, po/sl.po, po/sr.po, po/vi.po: Release 1.08.20121209 2012-12-09 Sylvain Beucler * doc/gnulib.txt, doc/release.txt, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4: Update Gnulib 2012-12-09 Sylvain Beucler * doc/release.txt: Update Fedora Git URL 2012-11-15 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/eu.po, po/fi.po: New Basque translation and updated Finnish translation 2012-11-04 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/ca.po, po/da.po, po/de.po, po/eo.po, po/fr.po, po/hr.po, po/nb.po, po/nl.po, po/pl.po, po/vi.po: Update translations 2012-10-14 Sylvain Beucler * debian/changelog, debian/patches/install-reloc.patch, debian/patches/series: Sync debian/ + prepare next Debian release 2012-10-14 Sylvain Beucler * src/dinkvar.c, src/freedink.c: Mark places where spr[0] might be trashed I'm not sure about fixing this, because often in Dink, bugs like this have side effects, and D-Mods might depend on these side effects. Fixing this miswrite could break some D-Mods :/ If we're sure there's no side effect we can fix them. See also http://bugs.debian.org/688934 (thanks to Bas Wijnen for pointing out) 2012-10-14 Sylvain Beucler * po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po, po/fi.po, po/fr.po, po/hr.po, po/id.po, po/it.po, po/nb.po, po/nl.po, po/pl.po, po/sl.po, po/sr.po, po/vi.po: make update-po 2012-10-14 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/nb.po: Updated Norwegian Bokmaal translation 2012-10-14 Sylvain Beucler * NEWS, src/freedink.c: Fix game freeze when warping in some special situations (thanks Bas Wijnen) 2012-10-14 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/game_engine.h: Factor find_sprite + doc 2012-10-13 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedink.h, src/freedinkedit.c, src/game_engine.h, src/screen.c, src/update_frame.c: Clarify & document warp functions and variables 2012-06-10 Sylvain Beucler * freedink.spec: freedink.spec: reference bundled copy of gnulib 2012-04-27 Sylvain Beucler * debian/changelog: Tidy Debian changelog 2012-04-27 Sylvain Beucler * NEWS, configure.ac: Merve 1.08.20120427 2012-04-27 Sylvain Beucler * ChangeLog, configure.ac, doc/release.txt: Release 1.08.20120427 2012-04-27 Sylvain Beucler * debian/changelog, debian/control, freedink.spec: Update packaging 2012-04-27 Sylvain Beucler * autotools/.gitignore, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4: Update gnulib 2012-04-27 Sylvain Beucler * doc/mingw-cross-env.txt: Update mxe study 2012-04-27 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po, po/fi.po, po/fr.po, po/hr.po, po/id.po, po/it.po, po/nb.po, po/nl.po, po/pl.po, po/sl.po, po/sr.po, po/vi.po: Update translations 2012-01-08 Sylvain Beucler * contrib/ffrextract.c: Fix minor compilation issues in ffrextrat 2012-01-08 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/sr.po: New Serbian translation 2011-07-25 Sylvain Beucler * NEWS: Tidy NEWS file 2011-07-25 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/sl.po: New Slovenian translation 2011-07-25 Sylvain Beucler * doc/release.txt: Fix Fedora package URL 2011-07-25 Sylvain Beucler * NEWS, src/dinkc_bindings.c: Support sp_seq(..., -1) again 2011-06-11 Sylvain Beucler * src/gfx_sprites.c: Not doing dir.ff palette conversion in truecolor mode 2011-06-01 Sylvain Beucler * src/dinkvar.h, src/game_engine.h, src/sfx.h, src/update_frame.c: A couple C headers fixes 2011-05-30 Sylvain Beucler * src/dinkc.c, src/freedinkedit.c, src/update_frame.c: Fix GCC 4.6 warnings 2011-03-26 Sylvain Beucler * debian/changelog, debian/control: Drop Debian support for Lenny 2011-03-26 Sylvain Beucler * NEWS, autobuild/freedink-debs.sh, configure.ac, debian/changelog, debian/compat, debian/copyright, debian/rules, debian/source/format, src/dinkc_bindings.c: Modernize Debian packaging 2011-03-18 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/eo.po: New Esperanto translation 2011-03-18 Sylvain Beucler * src/dinkc_bindings.c: playmidi: play 9.mid when requesting 1009 or 1009.mid 2010-11-14 Sylvain Beucler * debian/changelog, debian/control, doc/release.txt: Sync Debian 2010-11-14 Sylvain Beucler * NEWS, configure.ac: Sync release fixes to trunk 2010-11-14 Sylvain Beucler * ChangeLog, NEWS, configure.ac, doc/release.txt, freedink.spec, po/cs.po, po/da.po, po/de.po, po/el.po, po/es.po, po/fi.po, po/fr.po, po/id.po, po/it.po, po/nb.po, po/nl.po, po/pl.po, po/vi.po: Release 1.08.20101114 2010-11-13 Sylvain Beucler * BUILD, NEWS: Precise gettext+libiconv dependency 2010-11-12 Sylvain Beucler * AUTHORS, NEWS: Update NEWS 2010-11-12 Sylvain Beucler * autobuild/freedink-debs.sh, autobuild/freedink-exe.sh, autobuild/freedink-rpms.sh, autobuild/freedink-snapshot.sh: Sync autobuilder scripts 2010-11-12 Sylvain Beucler * BUILD, configure.ac, doc/cross.txt: Support external gettext under woe 2010-11-12 Sylvain Beucler * debian/changelog, debian/control, debian/rules: Require debhelper 7.4.2 2010-11-12 Sylvain Beucler * doc/bootstrap.txt, doc/cross.txt, doc/release.txt, src/Makefile.am: Release process fixes, notably adding gettext as a new woe dependency 2010-11-12 Sylvain Beucler * Makefile.am, bootstrap, configure.ac, doc/bootstrap.txt, doc/gettext.txt, doc/release.txt, po/.gitignore, po/ChangeLog: Upgrade gettext infrastructure (required by newer gnulib) 2010-11-12 Sylvain Beucler * gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4: Update gnulib 2010-11-12 Sylvain Beucler * Makefile.am, configure.ac, nsis/Makefile.am: Use file-grained EXTRA_DIST for nsis, to avoid shipping installer work files 2010-11-12 Sylvain Beucler * doc/gettext.txt: Remove obsolete gettext info 2010-11-12 Sylvain Beucler * doc/hardware_surfaces.txt, doc/testvidinfo.txt: More doc on hardware surfaces 2010-11-12 Sylvain Beucler * doc/testvidinfo.txt: Added video information for several platforms 2010-11-08 Sylvain Beucler * BUILD, doc/TODO, doc/cross.txt, doc/palettes.txt, src/gfx.c, test/sdl/paltest.c: More docs on palettes 2010-11-06 Sylvain Beucler * doc/TODO, doc/hardware_surfaces.txt: Notes on SDL 1.3 support of server-side X Pixmap 2010-11-01 Sylvain Beucler * doc/TODO, src/freedink.c, src/gfx.c, src/input.c, src/input.h: SDL 1.3 tests 2010-11-01 Sylvain Beucler * src/gfx.c: Dump bit flags in the right order 2010-11-01 Sylvain Beucler * src/bgm.c: Disable unsupported CD-ROM module under SDL 1.3 2010-10-30 Sylvain Beucler * doc/psp/PSP-MEM, doc/psp/PSP-READ2, doc/psp/TODO-PSP, doc/psp/memstat_hungry.c, doc/psp/memstat_mallinfo.c, doc/psp/zooming.patch: Archive some PSP docs 2010-10-30 Sylvain Beucler * AUTHORS, debian/copyright, po/LINGUAS, po/cs.po: New Czech translation 2010-10-30 Sylvain Beucler * debian/changelog, debian/copyright, debian/rules: Sync debian/ 2010-10-30 Sylvain Beucler * po/it.po: Actually commit new Italian translation 2010-10-30 Sylvain Beucler * NEWS, README, doc/mingw-cross-env.txt, doc/release.txt, src/init.c: Doc fixes 2010-10-22 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS: New Italian translation 2010-10-12 Sylvain Beucler * NEWS, po/LINGUAS, po/el.po: Add Greek translation 2010-10-10 Sylvain Beucler * po/es.po: Update Spanish translation 2010-09-20 Sylvain Beucler * NEWS, nsis/AdvUninstLog.nsh, nsis/README, nsis/freedink-all.nsi: Improvements to the NSIS-based woe installer 2010-09-19 Sylvain Beucler * contrib/search_script.c: search_script can now find a substring of a script name, and scripts attached to map screens 2010-08-29 Sylvain Beucler * contrib/.gitignore, contrib/search_music.c: Quick hack: I needed to search where a midi file was used in the map 2010-08-03 Sylvain Beucler * NEWS: Mention high-speed mode in NEWS 2010-08-03 Sylvain Beucler * README, src/dinkc.c, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/game_engine.c, src/game_engine.h, src/gfx_tiles.c, src/init.c, src/update_frame.c: Implement high-speed mode (maintain Tab pressed == triple speed) 2010-08-03 Sylvain Beucler * TRANSLATIONS.txt: Remove references to DFArc in TRANSLATIONS.txt 2010-06-13 Sylvain Beucler * src/dinkvar.c: Typo 2010-06-13 Sylvain Beucler * NEWS, contrib/.gitignore, contrib/search_script.c, src/dinkvar.c, src/dinkvar.h: Add script to find a DinkC script usage in the world map 2010-06-13 Sylvain Beucler * NEWS, src/dinkc_bindings.c, src/update_frame.c: Fix game crash when referencing a sequence >= 1000 2010-06-13 Sylvain Beucler * NEWS, src/gfx_sprites.c: Override transparency for 32bit BMPs 2010-06-13 Sylvain Beucler * NEWS, src/init.c: Mention -t/--truecolor in --help 2010-06-13 Sylvain Beucler * NEWS, src/dinkc.c: Fix buffer overflow in DinkC variable assignment 2010-05-30 Sylvain Beucler * NEWS, po/da.po: Update Danish translation from TP 2010-05-30 Sylvain Beucler * src/dinkini.c: Fix missing newline in a console error 2010-05-30 Sylvain Beucler * TROUBLESHOOTING: Update TROUBLESHOOTING + mention performances issues with KMS 2010-05-20 Sylvain Beucler * doc/memory_usage.txt: exmap news: I managed to run it on recent kernel/compilers 2010-05-20 Sylvain Beucler * configure.ac: Another good reason to use C99 over C89 2010-05-19 Sylvain Beucler * doc/ncc.txt: Explain NCC support 2010-05-19 Sylvain Beucler * configure.ac: Document rationale behind std=c99 2010-05-19 Sylvain Beucler * doc/mingw-cross-env.txt: Document a legitimate use case for .dll's 2010-05-01 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedink.h, src/freedinkedit.c, src/update_frame.c: More variables made static; fix ncc support 2010-05-01 Sylvain Beucler * NEWS: Update NEWS 2010-05-01 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/freedinkedit.c: Make editor-specific variables static (also fixes the last freedinkedit warning) 2010-05-01 Sylvain Beucler * src/freedinkedit.c: Fix 'may be used uninitialized' C warning (variable 'greba' in freedinkedit 2010-05-01 Sylvain Beucler * configure.ac: Tame configure warning: precise that help2man is only necessary if you modify the source code 2010-05-01 Sylvain Beucler * src/fastfile.c: Fix type warning 2010-04-28 Sylvain Beucler * doc/mingw-cross-env.txt, doc/woe-compile.txt: Notes on mingw-cross-env 2010-04-26 Sylvain Beucler * src/game_engine.c: Mention FreeDink on the title screen so players know what engine they use when reporting bugs 2010-04-20 Sylvain Beucler * NEWS, configure.ac: Set version back to UNRELEASED/20100232 2010-04-20 Sylvain Beucler * ChangeLog, NEWS, configure.ac, freedink.spec, po/da.po, po/de.po, po/es.po, po/fi.po, po/fr.po, po/id.po, po/nb.po, po/nl.po, po/pl.po, po/vi.po: Release 1.08.20100420 2010-04-20 Sylvain Beucler * debian/changelog, debian/source/format, doc/cross.txt: sync debian 2010-04-20 Sylvain Beucler * NEWS: Update NEWS 2010-04-20 Sylvain Beucler * doc/cross.txt, doc/mingw-cross-env.txt, doc/woe-compile.txt: Update cross-compilation doc 2010-04-20 Sylvain Beucler * autotools/.gitignore, gnulib/lib/.gitignore, gnulib/m4/.gitignore: Update Gnulib 2010-04-01 Sylvain Beucler * Makefile.am: Include acsite.m4 in releases 2010-03-28 Sylvain Beucler * po/vi.po: Sync vietnamese translation with TP 2010-03-21 Sylvain Beucler * doc/release.txt: .zip are preferrable over .tar.gz at the DN 2010-03-21 Sylvain Beucler * debian/changelog, debian/control, debian/copyright, freedink.spec: Packaging fixes/syncs 2010-03-21 Sylvain Beucler * NEWS, configure.ac: Set version back to UNRELEASED/20100232 2010-03-21 Sylvain Beucler * ChangeLog, NEWS, configure.ac, freedink.spec, po/da.po, po/de.po, po/es.po, po/fi.po, po/fr.po, po/id.po, po/nb.po, po/nl.po, po/pl.po, po/vi.po: Release 1.08.20100321 2010-02-28 Sylvain Beucler * configure.ac, doc/cross.txt: Get a minimal mikmod to work at last 2010-02-28 Sylvain Beucler * AUTHORS, NEWS, po/LINGUAS, po/de.po: Add new German translation 2010-02-28 Sylvain Beucler * configure.ac, doc/cross.txt: Forsake mikmod as .dll for now 2010-02-28 Sylvain Beucler * configure.ac, doc/cross.txt: Support mikmod in static woe builds 2010-02-28 Sylvain Beucler * NEWS, src/dinkc_bindings.c: Fix crash in show_console mode 2010-02-28 Sylvain Beucler * doc/cross.txt: Support cross-compiling libmikmod 2010-02-21 Sylvain Beucler * AUTHORS: Credit Indonesian translator in AUTHORS 2010-02-21 Sylvain Beucler * autobuild/freedink-exe.sh, doc/cross.txt: Update dependencies for woe builds 2010-02-21 Sylvain Beucler * autobuild/freedink-exe.sh, doc/cross.txt: Update dependencies for woe builds 2010-02-21 Sylvain Beucler * Makefile.am: Add instructions for translators - also in the .tar.gz 2010-02-21 Sylvain Beucler * autobuild/freedink-exe.sh, autobuild/freedink-snapshot.sh: Sync autobuild scripts 2010-02-21 Sylvain Beucler * TRANSLATIONS.txt: Add instructions for translators 2010-02-21 Sylvain Beucler * NEWS, po/LINGUAS, po/id.po: New Indonesian translation 2010-02-21 Sylvain Beucler * NEWS, src/dinkc_sp_custom.c: Fix sp_custom so it doesn't always quit the game 2010-02-21 Sylvain Beucler * autotools/.gitignore, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4: Update Gnulib 2010-02-03 Sylvain Beucler * po/LINGUAS, po/nl.po: New Dutch translation from the TP 2010-02-03 Sylvain Beucler * po/nb.po: Sent Norwegian translation to the TP 2010-02-03 Sylvain Beucler * doc/release.txt: Update JeuxLibres.net when making a release 2009-11-13 Sylvain Beucler * AUTHORS, NEWS, debian/copyright, po/LINGUAS, po/Makevars, po/da.po, po/de.po, po/es.po, po/fr.po, po/pl.po, po/vi.po: New translations: es,da,pl,vi; updated French translation 2009-09-30 Sylvain Beucler * doc/release.txt: Add more contact URLs for releases 2009-09-30 Sylvain Beucler * freedink.spec: Sync openSUSE 2009-09-30 Sylvain Beucler * debian/BUILD, debian/README.source, debian/changelog, debian/control, debian/copyright, debian/gbp.conf, debian/rules: Sync debian 2009-09-30 Sylvain Beucler * po/LINGUAS, po/fi.po: Add Finnish translation 2009-09-29 Sylvain Beucler * doc/SDL_gfx-patches/asm_gcc4.3.diff, doc/SDL_gfx-patches/asm_win32_nomingw.diff, doc/SDL_gfx-patches/debian_020_gcc4.3.diff, doc/SDL_gfx-patches/libtool_crosscompile.diff, doc/SDL_gfx-patches/libtool_static.diff, doc/SDL_gfx-patches/scaling-2.diff, doc/SDL_gfx-patches/scaling.diff, doc/SDL_gfx-patches/series, doc/cross.txt: SDL_gfx patches are now included upstream (2.0.20) 2009-09-19 Sylvain Beucler * doc/release.txt: No Makefile in the 'releases/woe' directory 2009-09-19 Sylvain Beucler * autobuild/freedink-debs.sh, autobuild/freedink-exe.sh, autobuild/freedink-rpms.sh: Sync autobuild scripts 2009-09-19 Sylvain Beucler * NEWS, configure.ac: Set version back to UNRELEASED/20090932 2009-09-18 Sylvain Beucler * NEWS, configure.ac, freedink.spec, po/de.po, po/fr.po, po/nb.po: Release 1.08.20090918 2009-09-18 Sylvain Beucler * src/freedink.c, src/freedinkedit.c, src/init.c: Fix crashing when exiting under woe 2009-09-18 Sylvain Beucler * src/fastfile.c, src/fastfile.h: Clarify fastfile module quit 2009-09-17 Sylvain Beucler * doc/cross.txt: Update cross-compilation dependencies, and their build instructions 2009-09-17 Sylvain Beucler * doc/release.txt: Document version scheme 2009-09-16 Sylvain Beucler * doc/release.txt: Improve documentation about release process 2009-09-16 Sylvain Beucler * src/gfx_fonts.c: Fixed slight memory leak in font lookup 2009-09-16 Sylvain Beucler * src/Makefile.am: Correctly locates engine translations under Debian 2009-09-16 Sylvain Beucler * ChangeLog, NEWS, configure.ac, doc/release.txt, freedink.spec, po/de.po, po/fr.po, po/nb.po: Release 1.08.20090916 2009-09-16 Sylvain Beucler * share/README.fonts: Upgrade LiberationSans-Regular.ttf to v1.04.93 2009-09-16 Sylvain Beucler * doc/release.txt: Precise current directory in the release process 2009-09-16 Sylvain Beucler * src/gfx_fonts.c: Detail fontconfig error messages 2009-09-10 Sylvain Beucler * src/freedink.c, src/freedinkedit.c, src/gfx_sprites.c, src/sfx.c: Remove a few unused variables 2009-08-30 Sylvain Beucler * gnulib/lib/.gitignore, gnulib/m4/.gitignore: Update gnulib 2009-08-30 Sylvain Beucler * src/dinkc_bindings.c: Give priority to fade_up() over fade_down() - fix SoB intro in truecolor mode 2009-08-30 Sylvain Beucler * src/dinkc_bindings.c, src/dinkc_sp_custom.c: Fix compilation warnings, including 2 off-by-one memory access 2009-08-30 Sylvain Beucler * src/i18n.c: Fix typo that causes invalid memory access in the translation system 2009-08-30 Sylvain Beucler * doc/fonts.txt, doc/valgrind.txt, valgrind/suppressions-debian_testing.txt: Precisions about font patents and valgrind usage 2009-08-30 Sylvain Beucler * po/de.po, po/fr.po, po/nb.po: PO update 2009-07-17 me * BUILD, README: Make reference to BUILD more visible in README and point to newer freedink-data for the data 2009-07-17 me * src/Makefile.am: Remove 'dink' and 'dinkedit' symlink on uninstall 2009-07-10 Sylvain Beucler * doc/release.txt: More release instructions precisions 2009-07-10 Sylvain Beucler * gnulib/lib/.gitignore, gnulib/m4/.gitignore: Gnulib update 2009-07-10 Sylvain Beucler * src/freedinkedit.c: Fix repeating keys bug in the editor 2009-07-06 Sylvain Beucler * doc/release.txt: Improve release instructions 2009-07-05 Sylvain Beucler * doc/release.txt: Improve release instructions 2009-07-05 Sylvain Beucler * NEWS, src/dinkc_bindings.c, src/i18n.c, src/i18n.h: Support for context in translations 2009-07-05 Sylvain Beucler * src/dinkvar.c: Fix buffer overflow in recent fseek->fread conversion 2009-07-05 Sylvain Beucler * doc/TODO, src/media/README: Update TODO 2009-07-05 Sylvain Beucler * test/sdl/mixer_stream.c: Add standalone test for streaming chunks in SDL_mixer 2009-07-05 Sylvain Beucler * contrib/xpot-tag.pl: xpot: don't miss translatable string when there's a space between the 2nd quote and the comma (missed 1 string in the original game) 2009-07-05 Sylvain Beucler * src/dinkvar.c: Use fread/fwrite instead of fseek for small skips - this greatly improves perfs on PSP 2009-07-05 Sylvain Beucler * src/gfx.c, src/gfx_sprites.c: A little clean-up in sprite loading 2009-07-05 Sylvain Beucler * src/gfx_sprites.c: Cancel dir.ff+png trick - no performance improvement. This reverts commit 2d8ce789e72dcb2707f77f1ecd7c36f4dadfd7f6. 2009-07-04 Sylvain Beucler * src/gfx_sprites.c: Support alternate dir.ff with png's, that I made for the PSP port 2009-07-04 Sylvain Beucler * src/gfx.c, src/gfx_fonts.c: Detect truecolor-ness in fallback mode 2009-07-04 Sylvain Beucler * contrib/ffrextract.c, contrib/ffrpack.cpp, src/Makefile.am, src/dinkc_bindings.c, src/dinkvar.c, src/freedink.c, src/gfx.c, src/gfx.h, src/gfx_fonts.c, src/gfx_palette.c, src/gfx_palette.h, src/gfx_utils.c, src/gfx_utils.h, src/init.c, src/update_frame.c: Encapsulate and simplify physical palette manipulation 2009-07-04 Sylvain Beucler * contrib/.gitignore, contrib/ffrextract.c, contrib/ffrpack.cpp: contrib: adding dir.ff packing tool 2009-07-04 Sylvain Beucler * contrib/ffrextract.c: ffrextract: fix fastfile extraction when there's a dir.ff within the dir.ff 2009-07-03 Sylvain Beucler * src/freedink.c, src/freedinkedit.c, src/sfx.c, src/sfx.h: Reimplement the SFX channels clean-up without threads, because PSP support is suboptimal 2009-07-03 Sylvain Beucler * NEWS: Document RAM optimization 2009-07-03 Sylvain Beucler * src/sfx.c: Sound memory usage: quit playing finished sounds asap 2009-07-03 Sylvain Beucler * src/sfx.c: Sound memory usage: close non-playing channels from a thread 2009-07-03 Sylvain Beucler * src/sfx.c: Sound memory usage: get rid of per-channel fake buffer 2009-07-01 Sylvain Beucler * Makefile.am, configure.ac, debian/changelog, debian/control, debian/copyright, debian/rules, doc/release.txt, src/freedinkedit.c: Fix Debian lintian warnings + sync with Debian packaging 2009-06-14 Sylvain Beucler * debian/BUILD: Deprecate notes about dpkg-shlibdeps warnings, because we don't use libzzip anymore 2009-06-14 Sylvain Beucler * BUILD: Remove libffi from build instructions 2009-05-26 Sylvain Beucler * src/dinkc.c, src/dinkc_bindings.c: Fix crash when calling drap_map_game() 2009-05-24 Sylvain Beucler * autobuild/freedink-rpms.sh, freedink.spec: Include LiberationFont-Sans.ttf in our Fedora builds, to avoid dependencies conflicts due to F11 font renaming 2009-05-21 Sylvain Beucler * Makefile.am, configure.ac, doc/psp.txt, psp/Makefile.PSP.EBOOT, psp/README, src/Makefile.am, src/init.c: Integrate PSP build system 2009-05-21 Sylvain Beucler * doc/psp.txt, src/dinkc.c, src/dinkc_bindings.c, src/gfx_fonts.c: Improve debug messages 2009-04-25 Sylvain Beucler * src/dinkc_bindings.c: Fix crash in a DinkC parsing corner case (introduced in recent clean-up) 2009-04-21 Sylvain Beucler * NEWS, src/dinkc_bindings.c: Log all say_xxx(...) DinkC calls, because it makes it much easier to debug 2009-04-21 Sylvain Beucler * src/dinkc_bindings.c: Expand the text given to say_xy(...) (bug introduced when fixing DinkC buffer overflows) 2009-04-21 Sylvain Beucler * contrib/dmods_mass_extract.sh, contrib/ffrextract.c, src/gfx_sprites.h: Reduce MAX_FRAMES_PER_ABUSED_SEQUENCE from 1000 to 69 (max ever abused in D-Mods), this saves 3.5MB of .bss which comes in handy for PSP1 2009-04-21 Sylvain Beucler * src/dinkc.c, src/dinkvar.c, src/game_engine.h: Drop unused fields from 'struct player_info' 2009-04-20 Sylvain Beucler * configure.ac, src/meminfo.c: Check if 'struct mallinfo' is present for malloc stats - e.g. it's not in mingw32 2009-04-20 Sylvain Beucler * doc/existing_bugs.txt, src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h: Clean-up: rename kill_cur_item_script->kill_item_script, kill_cur_magic_script->kill_mitem_script 2009-04-20 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/game_engine.h, src/update_frame.c: Clean-up: index item[] and item[] from 0 2009-04-19 Sylvain Beucler * src/dinkvar.c, src/game_engine.h: Item's script name is 11 chars instead of 10, thanks to off-by-one overflow on a memory alignment gap 2009-04-19 Sylvain Beucler * src/dinkc_bindings.c: get_next_sprite_with_this_brain didn't work anymore because the (int, int, int) signature was not declared 2009-04-19 Sylvain Beucler * src/gfx.c, src/meminfo.c, src/sfx.c: Remove extra \n in log_debug calls 2009-04-19 Sylvain Beucler * NEWS, src/dinkc.c, src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/freedinkedit.c, src/game_engine.h, src/gfx.c, src/gfx.h, src/gfx_tiles.c, src/gfx_tiles.h, src/screen.c: Clean-up: factor out tiles display, rename hardness-related variables for clarity 2009-04-19 Sylvain Beucler * NEWS, src/Makefile.am, src/dinkc.h, src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/freedinkedit.c, src/game_engine.c, src/game_engine.h, src/gfx_tiles.c, src/screen.c, src/screen.h, src/update_frame.c: Clean-up: factor out sprite sort by queue, new screen.c file for screen display and hardness functions 2009-04-19 Sylvain Beucler * src/meminfo.c, src/meminfo.h: Debug GFX/SFX memory usage when loading a screen (2) 2009-04-18 Sylvain Beucler * doc/psp.txt, src/Makefile.am, src/freedink.h, src/gfx.c, src/gfx.h, src/gfx_tiles.c, src/sfx.c, src/sfx.h: Debug GFX/SFX memory usage when loading a screen 2009-04-17 Sylvain Beucler * doc/memory_usage.txt, src/dinkvar.c, src/dinkvar.h, src/gfx_sprites.c, src/gfx_sprites.h, src/gfx_tiles.c: Reduce BSS data segment by removing unused data or shortening fields 2009-04-16 Sylvain Beucler * NEWS, doc/memory_usage.txt, doc/psp.txt: Doc: mention .bss / data segment size 2009-04-13 Sylvain Beucler * doc/psp.txt: Precise/fix/clean-up psp.txt 2009-04-13 Sylvain Beucler * freedink.spec, src/SDL_rwops_zzip.c, src/dinkvar.h, src/freedink.c, src/game_engine.h, src/gfx.h, src/i18n.c, src/i18n.h, src/io_util.h, src/log.h, src/msgbox.c, src/msgbox.h, src/paths.h, src/str_util.c, src/str_util.h, src/vgasys_fon.c: Update copyright notices 2009-04-13 Sylvain Beucler * src/gfx_fonts.c: Update 'Liberation-Sans not found' error message with new lookup order 2009-04-12 Sylvain Beucler * src/dinkc_bindings.c: Fix regression: now text can be coloured again 2009-04-12 Sylvain Beucler * : Improve PSP background 2009-04-12 Sylvain Beucler * src/io_util.c, src/paths.c, src/paths.h: Allow loading Liberation-Sans from exedir, because bunding resources can be inconvenient and is mainly used for standalone .exe w/o data 2009-04-12 Sylvain Beucler * src/i18n.c, src/log.c: mingw32 fix: use setvbuf instead of setlinebuf 2009-04-12 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c, src/gfx_sprites.c: Fix memory leaks introduces by recent static->malloc changes 2009-04-12 Sylvain Beucler * src/dinkvar.c: Use more common array indexes in figure_out and pre_figure_out 2009-04-12 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c, src/str_util.c: separate_string now always returns an allocated string (no NULL): the return value was never checked in the original code, so there's no disruptive change, and this simplifies the calling code 2009-04-12 Sylvain Beucler * src/dinkc_bindings.c: Fix potential buffer overflow in DinkC arguments processing (slist[]) 2009-04-12 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/game_engine.h: Remove empty fields from dumpable memory structures (dink_dat, map, savegame) and protect against corrupt savegames by forcing string null-termination 2009-04-12 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.h, src/gfx_fonts.c, src/str_util.c: Fix another couple buffer overflows (process_line, talk_get) 2009-04-12 Sylvain Beucler * src/dinkc.c, src/dinkc.h: Fix off-by-1 in 'locate_goto(...)' 2009-04-11 Sylvain Beucler * NEWS, doc/TODO, valgrind/suppressions-debian_lenny.txt: Update Valgrind suppressions to detect invalid memory accesses and leaks 2009-04-11 Sylvain Beucler * doc/TODO, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/fastfile.c, src/i18n.c, src/i18n.h, src/str_util.c, src/str_util.h: Fix potential buffer overflows when reading a DinkC script (separate_string, i18n_translate, decipher_string, talk_get...)) 2009-04-11 Sylvain Beucler * NEWS, doc/existing_bugs.txt, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c, src/dinkvar.c, src/game_engine.h, src/str_util.c, src/str_util.h: Fix potential buffer overflow when reading a DinkC script (replace(...)) 2009-04-11 Sylvain Beucler * src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c: Fix potential buffer overflow when reading a huge DinkC line (get_word()) 2009-04-11 Sylvain Beucler * src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c: Fix potential buffer overflow when reading a huge DinkC line 2009-04-10 Sylvain Beucler * src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c: Store script's last parsed line (instead of parser position ~= next line) to ease debugging 2009-04-10 Sylvain Beucler * src/dinkc.c, src/dinkc_bindings.c: Attempt to make DinkC-related warnings/errors more visible in the log 2009-04-10 Sylvain Beucler * src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c: Count lines in DinkC scripts to ease debugging 2009-04-10 Sylvain Beucler * doc/psp.txt, src/SDL_rwops_libzip.c, src/bgm.c, src/dinkc.c, src/dinkc_bindings.c, src/dinkini.c, src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx.h, src/gfx_fonts.c, src/gfx_sprites.c, src/gfx_tiles.c, src/init.c, src/input.c, src/io_util.c, src/io_util.h, src/log.c, src/log.h, src/paths.c, src/sfx.c, src/update_frame.c: Add small log facility so that text output 1) can be turned off and 2) is classified by priority 2009-04-09 Sylvain Beucler * doc/psp.txt, src/SDL_rwops_zzip.c, src/init.c, src/io_util.c, src/paths.c, src/paths.h: Support .zip resources for PSP 2009-04-05 Sylvain Beucler * src/freedink.c, src/freedinkedit.c, src/gfx_fonts.c, src/init.c: Make [Home] quit properly without crashing 2009-04-05 Sylvain Beucler * src/dinkc.c: Support naming new actions 12/14/16/18 (down/left/right/up) in decipher_string 2009-04-05 Sylvain Beucler * doc/psp.txt, psp/Makefile.PSP.EBOOT, src/bgm.c, src/dinkc_bindings.c, src/dinkini.c, src/game_engine.c, src/gfx.c, src/gfx_sprites.c, src/gfx_tiles.c, src/init.c, src/input.c, src/io_util.c, src/msgbox.c, src/paths.c, src/sfx.c: Allow finiObjects() and other uninitialization procedures to be called twice 2009-03-26 Sylvain Beucler * doc/cross.txt, doc/psp.txt: Documentation: downgrading PSP firmware and first steps with GDB 2009-03-25 Sylvain Beucler * doc/log.txt, doc/psp.txt, gnulib/lib/.gitignore: Docs 2009-03-22 Sylvain Beucler * NEWS, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx.h: Add alternate fullscreen-toggling code that is more portable 2009-03-22 Sylvain Beucler * src/freedink.c, src/input.c, src/input.h: Support mapping joystick buttons to left/right/up/down 2009-03-22 Sylvain Beucler * configure.ac, doc/psp.txt, src/input.c: Doc fixes 2009-03-22 Sylvain Beucler * src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/input.c, src/input.h: More input clean-up; support in FreeDinkedit + clarifications 2009-03-22 Sylvain Beucler * src/dinkc.c, src/dinkc_bindings.c, src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/game_engine.h, src/input.c, src/input.h, src/update_frame.c: More input clean-up; count buttons from 0 internally 2009-03-21 Sylvain Beucler * doc/psp.txt, src/dinkc.c, src/dinkc_bindings.c, src/dinkvar.c, src/freedink.c, src/game_engine.c, src/game_engine.h, src/input.c, src/input.h: Clean-up input/buttons handling code a bit, and provide alternate buttons mapping for PSP 2009-03-17 Sylvain Beucler * src/freedink.c, src/init.c: Remove debug memory stats from initialization 2009-03-17 Sylvain Beucler * configure.ac, doc/psp.txt: Add Tremor (Ogg Vorbis) in the build system 2009-03-16 Sylvain Beucler * doc/psp.txt, psp/Makefile.PSP.EBOOT: Fix build system to use more PSP RAM 2009-03-15 Sylvain Beucler * gnulib/m4/gnulib-cache.m4, src/dinkc.c, src/dinkc.h, src/freedink.c, src/init.c, src/input.c: Fix potential buffer overflows when reading scripts from disk to buffers 2009-03-15 Sylvain Beucler * psp/Makefile.PSP.EBOOT: Add PSP-specific Makefile to generate EBOOT.PBP from the MIPS binary 2009-03-15 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/game_engine.h, src/gfx.c, src/gfx_sprites.c, src/gfx_sprites.h, src/init.h: Clean-up: move structures out of dinkvar, better errors when loading from a dir.ff 2009-03-15 Sylvain Beucler * doc/psp.txt: A bit of research on PSP available heap size 2009-03-15 Sylvain Beucler * src/paths.c: Add a note of warning for packagers who would try to alter the default paths 2009-03-14 Sylvain Beucler * doc/psp.txt, src/bgm.c, src/dinkini.c, src/freedink.c, src/game_engine.c, src/gfx.c, src/init.c, src/input.c, src/io_util.c, src/msgbox.c: Fix joystick button init + clean-ups 2009-03-14 Sylvain Beucler * valgrind/suppressions-debian_lenny.txt, valgrind/suppressions-debian_testing.txt: Update valgrind suppressions 2009-03-14 Sylvain Beucler * doc/existing_bugs.txt, doc/memory_usage.txt, doc/psp.txt, src/dinkc_bindings.c, src/dinkini.c, src/dinkini.h, src/freedink.c, src/freedink.h, src/freedinkedit.c, src/gfx.c, src/gfx_utils.c, src/gfx_utils.h, src/init.c, src/update_frame.c: Improve/clean-up initialization process 2009-03-14 Sylvain Beucler * src/fastfile.c, src/fastfile.h, src/gfx_sprites.c: FastFileLock now returns RWops - this avoids returning an additional malloc'd copy of the file when using non-mmap mode 2009-03-12 Sylvain Beucler * doc/psp.txt, src/freedink.c, src/freedinkedit.c, src/game_engine.c, src/game_engine.h, src/gfx.c, src/gfx.h, src/init.c, src/init.h, src/input.c: Display splash screen earlier during startup 2009-03-12 Sylvain Beucler * src/gfx.c, src/gfx_tiles.c: Better gfx failsafe init + PSP temporary #ifdef's 2009-03-11 Sylvain Beucler * doc/psp.txt, src/Makefile.am, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedinkedit.c, src/game_engine.c, src/game_engine.h, src/gfx_tiles.h, src/init.c, src/input.c: More start-up clean-up 2009-03-11 Sylvain Beucler * doc/psp.txt, src/paths.c: Fix a couple NULL pointer when running on PSP 2009-03-08 Sylvain Beucler * doc/psp.txt: docfix 2009-03-08 Sylvain Beucler * src/fastfile.c: Fix typo 2009-03-08 Sylvain Beucler * configure.ac, doc/psp.txt, src/msgbox.c: Properly order : add them in reverse order (dependencies last) to please limited linkers 2009-03-08 Sylvain Beucler * configure.ac, src/msgbox.c: Disable falling back to 'xmessage' when there's no fork(2) 2009-03-08 Sylvain Beucler * src/fastfile.c: Re-enable mmap-based fastfiles for architectures that support it (was disabled for testing) 2009-03-08 Sylvain Beucler * .gitignore: Ignore another build dir 2009-03-08 Sylvain Beucler * src/SDL_rwops_libzip.c, src/SDL_rwops_zzip.c, src/bgm.c, src/bgm.h, src/dinkc.c, src/dinkc_console.c, src/dinkc_sp_custom.c, src/dinkini.c, src/dinkvar.c, src/dinkvar.h, src/fastfile.c, src/fastfile.h, src/freedink.c, src/freedink.h, src/game_engine.c, src/gfx.c, src/gfx.h, src/gfx_fade.c, src/gfx_fonts.c, src/gfx_fonts.h, src/gfx_sprites.c, src/gfx_sprites.h, src/gfx_tiles.c, src/gfx_tiles.h, src/gfx_utils.c, src/gfx_utils.h, src/init.c, src/init.h, src/input.c, src/input.h, src/io_util.c, src/io_util.h, src/log.c, src/log.h, src/paths.c, src/paths.h, src/rect.c, src/sfx.c, src/sfx.h, src/str_util.c, src/str_util.h, src/update_frame.h: Fix/update copyright notices 2009-03-08 Sylvain Beucler * configure.ac, doc/psp.txt, gnulib/m4/gnulib-cache.m4, src/SDL_rwops_libzip.c, src/bgm.c, src/dinkc_bindings.c, src/dinkc_console.c, src/dinkc_sp_custom.c, src/dinkini.c, src/dinkvar.c, src/fastfile.c, src/fastfile.h, src/freedinkedit.c, src/game_engine.c, src/gfx.c, src/gfx_fade.c, src/gfx_fonts.c, src/gfx_sprites.c, src/gfx_tiles.c, src/gfx_utils.c, src/init.c, src/input.c, src/io_util.c, src/log.c, src/paths.c, src/rect.c, src/sfx.c, src/update_frame.c: First batch of changes for PSP cross-compilation: drop libffi, add fastfile mode without mmap(2), clean-ups, build documentation 2009-03-07 Sylvain Beucler * doc/psp.txt: PSP: taking screenshots 2009-03-06 Sylvain Beucler * configure.ac, doc/psp.txt: Add basic/survival infos about the PSP platform 2009-03-01 Sylvain Beucler * doc/psp.txt: Add instructions to setup a PSP environment to compile SDL-based games 2009-03-01 Sylvain Beucler * configure.ac: Properly check for SDL_ttf 2.0.9 in ./configure (e.g. previous code would fail for SDL_ttf 2.x.8) 2009-02-09 Sylvain Beucler * nsis/freedink-all.nsi: Optimize NSIS installer 2009-02-08 Sylvain Beucler * doc/woe-installers.txt, nsis/AdvUninstLog.nsh, nsis/freedink-all.nsi, nsis/registerExtension.nsh: Add first version of a woe installer using NSIS 2009-02-08 Sylvain Beucler * gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4: Update Gnulib 2009-02-08 Sylvain Beucler * src/woeres.rc.in: Bundle more precise version information in .exe's 2009-02-07 Sylvain Beucler * doc/woe-installers.txt: Initial research on generating woe installers from GNU/Linux 2009-02-04 Sylvain Beucler * : commit 9c2e0442ecea3516974501de47975a946e266e8f Author: Sylvain Beucler Date: Wed Feb 4 22:20:55 2009 +0100 2009-02-04 Sylvain Beucler * : commit 591b5d57660621e42428369e1667deeef80c3ae1 Author: Sylvain Beucler Date: Wed Feb 4 21:45:40 2009 +0100 2009-02-01 Sylvain Beucler * autobuild/freedink-debs.sh, autobuild/freedink-snapshot.sh, debian/copyright, debian/rules, src/dinkc_bindings.c, src/freedink.c, src/freedinkedit.c, src/paths.c, src/update_frame.c: Update some copyright notices 2009-02-01 Sylvain Beucler * src/freedinkedit.c, src/update_frame.c: Fix unsafe uses of sprintf of the form sprintf(buf, "%s foo %d %d", buf, var1, var2); - cf. http://lists.debian.org/debian-devel/2008/12/msg01079.html 2009-01-27 Sylvain Beucler * Makefile.am, doc/release.txt, src/Makefile.am, src/compress.c: Add a few files missing in tarballs 2009-01-27 Sylvain Beucler * doc/release.txt: make symlinks for the woe version during the release 2009-01-27 Sylvain Beucler * doc/TODO: dmod.diz needs to be included in the .pot 2009-01-27 Sylvain Beucler * debian/changelog, debian/copyright, debian/watch: Sync Debian files 2009-01-20 Sylvain Beucler * doc/release.txt: Add step-by-step instructions for new releases 2009-01-20 Sylvain Beucler * ChangeLog, NEWS, configure.ac, freedink.spec, po/de.po, po/fr.po, po/nb.po: Release 1.08.20090120 2009-01-20 Sylvain Beucler * autobuild/freedink-debs.sh, autobuild/freedink-exe.sh, autobuild/freedink-rpms.sh, autobuild/freedink-snapshot.sh: Include some scripts used to build snapshots and binary packages unattended 2009-01-10 Sylvain Beucler * NEWS, configure.ac, freedink.spec, po/de.po, po/fr.po, po/nb.po: Sync last release 2009-01-10 Sylvain Beucler * : commit e6c54d824d104ed630ffbffce4b0d4d5392e8d7c Author: Sylvain Beucler Date: Sat Jan 10 15:56:26 2009 +0100 2009-01-10 Sylvain Beucler * src/dinkc_bindings.c: Return 0 (*preturnint = 0) when get_sprite_with_this_brain, get_rand_sprite_with_this_brain, get_next_sprite_with_this_brain and sp DinkC functions don't find any match. 2009-01-10 Sylvain Beucler * src/dinkc_bindings.c: Add a reminder for the sp_binding data structure 2009-01-09 Sylvain Beucler * ChangeLog, NEWS, configure.ac, freedink.spec, po/de.po, po/fr.po, po/nb.po: Release 1.08.20090109 2008-12-28 Sylvain Beucler * contrib/xtrans.sh: Support conditional dialogs when extracting existing translations 2008-12-17 Sylvain Beucler * contrib/xpot-tag.pl: Don't tag empty strings for translation 2008-12-16 Sylvain Beucler * contrib/xpot-tag.pl: Fix choice_start...choice_end parsing and print an error when the dialog structure isn't properly formatted 2008-12-12 Sylvain Beucler * po/fr.po: Testing Pootle 2008-12-12 Sylvain Beucler * contrib/xpot-tag.pl: Changed the temporary filename from tmp.c to tmp.tag, just in case a D-Mod has a tmp.c script 2008-12-12 Sylvain Beucler * contrib/xpot-tag.pl: Changed the temporary filename from tmp.c to tmp.tag, just in case a D-Mod has a tmp.c script 2008-12-12 Sylvain Beucler * autotools/.gitignore: recreated autotools/ 2008-12-12 Sylvain Beucler * po/LINGUAS, po/nb.po: Add Norwegian translation by Alexander Krivács Schrøder 2008-12-12 Sylvain Beucler * src/init.c: Change locale dir from 'i18n' to 'l10n' which seems more logical 2008-12-12 Sylvain Beucler * contrib/xpot-tag.pl, contrib/xpot.sh, contrib/xtrans.sh, src/dinkc.c, src/dinkc_bindings.c: Reimplement strings tagger in Perl (rather than bash+sed); some clarifications 2008-12-08 Sylvain Beucler * NEWS, configure.ac, contrib/xpot.sh, contrib/xtrans.sh, freedink.spec, po/de.po, po/fr.po: Find a work-around to support 2 PO domains in the .spec file 2008-12-07 Sylvain Beucler * NEWS, gnulib/m4/.gitignore: Update NEWS 2008-12-07 Sylvain Beucler * bootstrap, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, src/gfx.c: Remove 'putenv' gnulib module - issues with mingw (reported at bug-gnulib@gnu.org) 2008-12-07 Sylvain Beucler * doc/SDL_gfx-patches/scaling-2.diff, doc/SDL_gfx-patches/scaling.diff, test/sdl/.gitignore, test/sdl/sdlgfx_resize.c: Add some work on fixing a SDL_gfx bug that shows in FreeDinkedit 2008-12-07 Sylvain Beucler * acsite.m4, configure.ac, doc/binreloc.txt: Rename AM_BINRELOC to AP_BINRELOC to avoid aclocal warning 2008-12-07 Sylvain Beucler * BUILD, Makefile.am, configure.ac, freedink.spec, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, src/bgm.c, src/gfx.c, src/i18n.c, src/str_util.c: Build fixes 2008-12-07 Sylvain Beucler * bootstrap, contrib/xpot.sh, contrib/xtrans.sh, doc/TODO, po/de.po, po/fr.po, src/dinkc_bindings.c, src/i18n.c: More translation fixes 2008-12-07 Sylvain Beucler * contrib/xpot.sh, contrib/xtrans.sh: Extract translatable strings (xpot.sh) and existing translations (xtrans.sh) from a D-Mod: draft versions 2008-12-07 Sylvain Beucler * .gitignore, Makefile.am, configure.ac, gnulib/m4/gnulib-cache.m4, po/.gitignore, po/de.po, po/fr.po, src/.gitignore, src/Makefile.am, src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/gfx_fonts.c, src/i18n.c, src/i18n.h, src/init.c, src/paths.c, src/paths.h, src/str_util.c, src/str_util.h: DinkC translation support; UTF-8 display support 2008-12-06 Sylvain Beucler * doc/TODO, po/POTFILES.in, po/de.po, po/fr.po, src/dinkc.c, src/freedink.c, src/game_engine.h: Migrate German translations from #ifdef's to 'de.po' 2008-12-06 Sylvain Beucler * debian/BUILD: Explain why not replace our gnulib with Debian's 2008-12-06 Sylvain Beucler * .gitignore, Makefile.am, bootstrap, configure.ac, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, gnulib/po/.gitignore, po/.gitignore, po/ChangeLog, po/LINGUAS, po/Makevars, po/POTFILES.in, po/de.po, po/fr.po, src/Makefile.am, src/freedink.c, src/init.c: Add gettext to the build system 2008-12-05 Sylvain Beucler * BUILD, doc/cross.txt, src/dinkc_bindings.c: Doc fixes 2008-11-30 Sylvain Beucler * src/dinkc_bindings.c: Clarify process_line, and avoid permanent parameters warnings when trying to run a possible custom procedure 2008-11-30 Sylvain Beucler * src/dinkc_bindings.c: Convert all remaining bindings - yay! 2008-11-30 Sylvain Beucler * src/dinkc_bindings.c: Convert 9 more bindings 2008-11-30 Sylvain Beucler * src/dinkc_bindings.c: Convert 8 more bindings 2008-11-30 Sylvain Beucler * src/dinkc_bindings.c: Convert editor_ bindings 2008-11-30 Sylvain Beucler * src/dinkc_bindings.c: Convert all remaining v1.08 bindings 2008-11-30 Sylvain Beucler * src/dinkc_bindings.c: Convert 18 more bindings 2008-11-30 Sylvain Beucler * configure.ac, doc/cross.txt, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, src/dinkc_bindings.c: update gnulib, cross.txt instructions (SDL_image and libpng), and fix alloca usage 2008-11-30 Sylvain Beucler * BUILD, configure.ac, debian/control, doc/cross.txt, freedink.spec, gentoo/games-rpg/freedink-engine/freedink-engine-1.08.20080920.ebui ld, src/Makefile.am: Add libffi dependency to the build systems 2008-11-29 Sylvain Beucler * src/dinkc.c, src/dinkc.h: get_word: rewrite for efficiency (mainly: don't call strchar) 2008-11-29 Sylvain Beucler * src/dinkc.c: Avoid another quadratic strchar usage (read_next_line) 2008-11-29 Sylvain Beucler * src/dinkc.c, src/str_util.c: Slightly optimize .c and .d loading (avoid quadratic strchar usage) 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c: Convert 21 v1.08-only functions 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c: Reorder functions (take ev[2] processing order into account) + really fix case-insensitive lookup + convert bindings that don't have parameters 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c: sp_editor_num, sp_kill_wait, sp_script (different than other sp_*) functions 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c: sp_base_die + its sp_base_death alias 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c: Convert similar sp_* bindings (using some Perl text manipulation) 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c: More bindings + group sp_* functions together 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c: More bindings + lookup case-insensitively 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c: More bindings conversion. 'returnint' is now an in/out parameter. 2008-11-29 Sylvain Beucler * src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h: Convert a first batch of functions to the new binding system 2008-11-29 Sylvain Beucler * src/Makefile.am, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c, src/dinkc_bindings.h, src/init.c: libffi-based system to declare, lookup and call DinkC bindings 2008-11-28 Sylvain Beucler * doc/HACKING_dinkc.txt, src/dinkc.c, src/dinkc_bindings.c, src/dinkc_bindings.h: Clarify DinkC parser + documentation 2008-11-27 Sylvain Beucler * doc/HACKING_dinkc.txt, doc/cleanup.txt, doc/v1.08.txt, src/dinkc.c, src/dinkc_bindings.c, src/dinkvar.c, src/str_util.c: More DinkC parser documentation/study 2008-11-26 Sylvain Beucler * src/dinkc_bindings.c: Fix crash when sp_editor_num(1000) - bug report by Andreas Berg 2008-11-25 Sylvain Beucler * src/dinkc_bindings.c: kill_game: exit more cleanly (reported by Andreas Berg) 2008-11-22 Sylvain Beucler * src/dinkc_bindings.c: Fix crash when freeze(1000) - bug report by Andreas Berg 2008-11-18 Sylvain Beucler * doc/hardware_surfaces.txt, src/gfx.c: Precisions about hardware surfaces 2008-11-17 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h: Clarify sprite placement some more 2008-11-15 Sylvain Beucler * src/dinkvar.c: Clarify the placement of resized sprites a little bit 2008-11-15 Sylvain Beucler * test/sdl/videoinfo.c: Add test for 24bit mode 2008-11-08 Sylvain Beucler * doc/game_libraries.txt, doc/hardware_surfaces.txt: Precision on hardware 2D surfacse 2008-10-10 Sylvain Beucler * share/Makefile.am: Don't install .desktop files in share/ subdirs (such as share/games) 2008-10-09 Sylvain Beucler * doc/fade.txt: More info on fades: fade_up() time 2008-10-06 Sylvain Beucler * debian/changelog, debian/copyright, debian/rules, debian/watch: Sync nitpicking from pkg-games 2008-10-06 Sylvain Beucler * freedink.spec: Update spec file 2008-10-06 Sylvain Beucler * debian/copyright, src/freedink_xpm.c: Some licensing clarification 2008-10-05 Sylvain Beucler * doc/fade.txt: Add doc about fade_down() time 2008-10-05 Sylvain Beucler * BUILD: Build instructions for ArchLinux 2008-09-24 Sylvain Beucler * freedink.spec: .spec fixes 2008-09-23 Sylvain Beucler * freedink.spec: freedink.spec: remove attempt at proper BuildArch support + fix typos 2008-09-23 Sylvain Beucler * configure.ac, freedink.spec: .spec fixes (clarify help2man dev dep, s/fedora_version/fedora/, meta package depends on same version of freedink-engine 2008-09-22 Sylvain Beucler * freedink.spec: Some fixes in the spec file 2008-09-22 Sylvain Beucler * : Add alternate icon, temporarily used for Fedora packaging 2008-09-20 Sylvain Beucler * gentoo/games-rpg/freedink/freedink-1.08.20080914.ebuild, gentoo/games-rpg/freedink/freedink-1.08.20080920.ebuild: Also rename Gentoo meta-package 2008-09-20 Sylvain Beucler * NEWS, configure.ac, debian/changelog, freedink.spec, gentoo/games-rpg/freedink-engine/freedink-engine-1.08.20080914.ebui ld, gentoo/games-rpg/freedink-engine/freedink-engine-1.08.20080920.ebui ld: Release 2008-09-20 Sylvain Beucler * dev-cpp/.gitignore, dev-cpp/Makefile.win, dev-cpp/freedink.dev, dev-cpp/freedink_private.h, dev-cpp/freedink_private.rc, dev-cpp/freedinkedit.dev, dev-cpp/freedinkedit_private.h, dev-cpp/freedinkedit_private.rc, dev-cpp/readme.txt: Remove obsolete dev-cpp project files 2008-09-20 Sylvain Beucler * gentoo/games-rpg/freedink-engine/freedink-engine-1.08.20080914.ebui ld, gentoo/games-rpg/freedink-engine/metadata.xml, gentoo/games-rpg/freedink/freedink-1.08.20080914.ebuild, gentoo/games-rpg/freedink/metadata.xml: Gentoo ebuilds 2008-09-20 Sylvain Beucler * debian/BUILD, debian/control: Fix one-line description for 'freedink' meta-package 2008-09-16 Sylvain Beucler * freedink.spec: Fix opensuse build 2008-09-16 Sylvain Beucler * BUILD: Precise Gentoo compilation 2008-09-15 Sylvain Beucler * test/fontconfig.c: Add fontconfig standalone test (previously forgot to include it) 2008-09-15 Sylvain Beucler * src/dinkc_bindings.c: Validate DinkC sp_speed() parameter (in particular, don't crash if sprite==1000) 2008-09-14 Sylvain Beucler * configure.ac: Explicitely call PKG_PROG_PKG_CONFIG since we're calling PKG_CHECK_MODULES conditionaly 2008-09-14 Sylvain Beucler * debian/control: Mention Debian Games Team in debian/control 2008-09-14 Sylvain Beucler * debian/copyright: Mention fonts in debian/copyright 2008-09-14 Sylvain Beucler * BUILD, NEWS, configure.ac, debian/control, doc/fonts.txt, freedink.spec, src/gfx_fonts.c: Implement system font search for GNU/Linux 2008-09-14 Sylvain Beucler * src/bgm.c: Remove debug trace 2008-09-06 Sylvain Beucler * AUTHORS: Precise zzlib-based files in AUTHORS 2008-09-06 Sylvain Beucler * gnulib/lib/.gitignore, gnulib/m4/.gitignore: gnulib update 2008-09-06 Sylvain Beucler * src/paths.c: Also search savegames case-insensitively in ~/.dink (in case the player copied existing savegames there) 2008-09-06 Sylvain Beucler * src/bgm.c: Also look for .ogg before .mid when music is played through DinkC playmidi() 2008-09-05 Sylvain Beucler * AUTHORS, debian/copyright, src/SDL_rwops_libzip.c, src/SDL_rwops_zzip.c: Mention zzip sample code in copyright files (asked by Debian) 2008-09-05 Sylvain Beucler * NEWS, src/bgm.c: Ogg vorbis support, to play free sound replacements 2008-09-05 Sylvain Beucler * debian/control, debian/menu, debian/rules, freedink.spec: New package naming scheme (freedink -> freedink-engine + freedink-dfarc) - Debian implementation; compile-time data prefix is now /usr/share/games per Debian Games Team recommendation 2008-09-04 Sylvain Beucler * freedink.spec: New package naming scheme (freedink -> freedink-engine + freedink-dfarc) - RPM implementation 2008-09-04 Sylvain Beucler * src/paths.c: Support datadir/games/dink path, and improve error messages related to --refdir 2008-08-31 Sylvain Beucler * acsite.m4, doc/binreloc.txt: Add backported SVN fix to binreloc to properly detect paths in autoconf >= 2.60 2008-08-31 Sylvain Beucler * src/sfx.c: Fix misleading error message about 'test.wav' 2008-08-31 Sylvain Beucler * configure.ac: Fix typo in version number 2008-08-31 Sylvain Beucler * share/README, share/freedink/Makefile.am, share/freedink/stop.aup: Add replacements for Dinkedit sounds 2008-08-31 Sylvain Beucler * doc/dinkini.txt: Not going to introduce COMPAT_DIRFF after all (no real advantage in repackaging graphics) 2008-08-30 Sylvain Beucler * doc/dinkini.txt, src/dinkini.h, src/dinkvar.c, src/gfx_sprites.c, src/gfx_sprites.h: dink.in processing clean-up: more documentation and make code more readable 2008-08-30 Sylvain Beucler * doc/dinkini.txt, src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/game_engine.h, src/gfx_utils.c: dink.in processing clean-up: remove no-op starting_dinkx and starting_dink_y, document bug, remove extra unused parameter to pre_figure_out and figure_out 2008-08-30 Sylvain Beucler * src/gfx_sprites.c: gfx_sprite.c: indent fixes 2008-08-30 Sylvain Beucler * NEWS, configure.ac, debian/changelog, freedink.spec: Switch back to snapshot releases 2008-08-30 Sylvain Beucler * Makefile.am: Don't include any .gitignore file in releases 2008-08-30 Sylvain Beucler * freedink.spec: Rename dfarc->freedink-dfarc and use ftp.gnu.org as official release location 2008-08-30 Sylvain Beucler * debian/changelog, debian/control, debian/watch: Debian packaging * Reflect dfarc -> freedink-dfarc rename * Watch official ftp.gnu.org release location * Point Vcs-* to the Debian packaging rather than the development repository 2008-08-30 Sylvain Beucler * doc/dmod.txt: Fix typo in minimal dmod start.c 2008-08-30 Sylvain Beucler * debian/copyright: Precise that the Debian packaging is GPL'd (suggestion by Ansgar Burchardt) 2008-08-28 Sylvain Beucler * NEWS, configure.ac, debian/changelog, debian/watch, freedink.spec: Release 1.08.20080828 2008-08-26 Sylvain Beucler * src/init.c, src/msgbox.c, src/str_util.c: Properly pair remaining va_start/va_end 2008-08-26 Sylvain Beucler * freedink.spec: Depend on timidity (+ doc/justification) 2008-08-26 Sylvain Beucler * THANKS, freedink.spec: Add opensuse-specific .desktop files installation (patch by Stefan Dirsch) 2008-08-26 Sylvain Beucler * src/fastfile.c, src/gfx_sprites.c: Fix fastfile.c so it reads dir.ff files portably (reported by Stefan Dirsch) 2008-08-26 Sylvain Beucler * configure.ac, debian/control, freedink.spec, src/io_util.c: Don't attempt to link zzlib or libzip when embedded resources are disabled 2008-08-26 Sylvain Beucler * BUILD: Explicitely recommend to install pkg-config before compiling freedink, otherwise cryptic errors appears in ./configure 2008-08-26 Sylvain Beucler * src/log.c, src/log.h: Reset va_list after using it (causes crash under amd64, reported by Stefan Dirsch) 2008-08-23 Sylvain Beucler * freedink.spec: rpmlint 2008-08-23 Sylvain Beucler * NEWS, debian/BUILD, doc/TODO, doc/changes.txt, doc/data.txt, doc/dfarc.txt, doc/existing_bugs.txt, doc/keycodes.txt, doc/troubleshootings.txt, doc/v1.08.txt: Properly document NEWS and otherwise clean-up doc 2008-08-23 Sylvain Beucler * src/bgm.c: Revert mistaken changes related to CD support 2008-08-23 Sylvain Beucler * debian/copyright: Precise earlier copyright in Debian packaging 2008-08-23 Sylvain Beucler * freedink.spec: Update spec file 2008-08-23 Sylvain Beucler * DEB, Makefile.am: Include specfile in tarballs and mention where to get debian/ 2008-08-23 Sylvain Beucler * BUILD, freedink.spec: Add specfile for Fedora 2008-08-23 Sylvain Beucler * Makefile.am: Remove debian/ from tarballs to avoid trolls; add BUILD in tarballs (embarrasing oversight) 2008-08-21 Sylvain Beucler * debian/control, src/gfx_fonts.c, src/io_util.c, src/paths.c, src/paths.h: Try to load resource from compile-time pkgdatadir, in case run-time prefix detection goes wrong (working version) 2008-08-21 Sylvain Beucler * doc/directory_layout.txt, src/io_util.c: Try to load resource from compile-time pkgdatadir, in case run-time prefix detection goes wrong 2008-08-21 Sylvain Beucler * configure.ac, debian/rules: Remove commented dh_* that don't belong to the Debian package type (suggested by Miriam Ruiz) + don't try to embed resources 2008-08-19 Sylvain Beucler * debian/changelog, debian/control: zziplib->libzip in the Debian package: zziplib is available in 2 different versions depending on distros and prevents building a distro-neutral .deb 2008-08-19 Sylvain Beucler * AUTHORS, README, debian/control, debian/docs: Clean-up descriptions and packaging; mention new game data package 2008-08-18 Sylvain Beucler * doc/autopackage.txt: Note how to analyse ELF binary deps 2008-08-18 Sylvain Beucler * src/dinkc_bindings.c: Fix array-out-of-bounds in sp_kill and sp_kill_wait (unrelated) 2008-08-17 Sylvain Beucler * doc/data.txt: Precisions after noticing credits.txt in the official game archive -_-' 2008-08-17 Sylvain Beucler * autopackage/default.apspec.in: Mention the SDL_gfx library version ni Fedora 7 and Gentoo 2008-08-16 Sylvain Beucler * autopackage/default.apspec.in: Fix SDL_ttf version in autopackage 2008-08-16 Sylvain Beucler * src/dinkc_bindings.c: Avoid array-out-of-bounds in compare_sprite_script (avoid checking sprite #1000, fixes crash in Dink Goes Hunting) 2008-08-16 Sylvain Beucler * src/freedink.c: Avoid array-out-of-bounds when checking adjacent screens presence 2008-08-16 Sylvain Beucler * THANKS: Thank testers 2008-08-15 Sylvain Beucler * autopackage/skeletons/@libsdl.org/sdl_ttf/skeleton.1: Fix typo in sdl_ttf autopackage skeleton 2008-08-15 Sylvain Beucler * autopackage/Makefile.am, autopackage/default.apspec.in, autopackage/extract-package.sh, autopackage/skeletons/@libsdl.org/sdl_ttf/skeleton.1: Improve/update autopackage spec file 2008-08-15 Sylvain Beucler * doc/static-build.txt: Mention Statifier for independent packages 2008-08-15 Sylvain Beucler * doc/binreloc.txt, src/binreloc.c: Document the origin of binreloc some more 2008-08-14 Sylvain Beucler * doc/cross.txt: Mention Vorbis cross-compilation bug report 2008-08-12 Sylvain Beucler * doc/cross.txt: Use more common location for cross-compilation libraries 2008-08-12 Sylvain Beucler * src/Makefile.am: Another help2man fix 2008-08-12 Sylvain Beucler * src/Makefile.am, src/str_util.c: Add rule to build libgnu.a from src/ (new version) 2008-08-12 Sylvain Beucler * src/Makefile.am: Add rule to build libgnu.a from src/ 2008-08-12 Sylvain Beucler * configure.ac, debian/control, doc/cross.txt, src/Makefile.am: configure.ac and help2man clean-up 2008-08-12 Sylvain Beucler * src/Makefile.am: Fix manpages/make dist/help2man presence/etc. combination 2008-08-11 Sylvain Beucler * debian/control: Add help2man to buidl-depends 2008-08-11 Sylvain Beucler * BUILD, configure.ac, debian/BUILD, debian/changelog, debian/control, debian/freedink.1, debian/manpages, debian/rules, src/Makefile.am, src/dink.6, src/dinkedit.6, src/init.c: Fix Debian lintian errors/warnings: separate -dbg, help2man manpages 2008-08-10 Sylvain Beucler * share/README.fonts, src/gfx_fonts.c: Revert LiberationSans to original version - new one has some rendering quality issues 2008-08-10 Sylvain Beucler * src/dinkvar.c: Fix array-out-of-bounds if the change_sprite_* procedures (in particular, beware that sprite may be #1000). This fixed a crash in Prelude. 2008-08-10 Sylvain Beucler * debian/control: Recommend dfarc instead of dfarc2 (package rename) 2008-08-10 Sylvain Beucler * share/freedink/Makefile.am: Remove editor sounds with unclear legal status (build system) 2008-08-10 Sylvain Beucler * doc/TODO, share/README, src/Makefile.am: Remove editor sounds with unclear legal status 2008-08-10 Sylvain Beucler * share/README.fonts: Update Liberation font to 1.04 (2008-07-13) 2008-08-10 Sylvain Beucler * debian/rules: Include separate debugging info in Debian package - and make it work under Etch too 2008-08-10 Sylvain Beucler * doc/cross.txt: Fixes in building cross-compilation environment 2008-08-09 Sylvain Beucler * configure.ac, doc/cross.txt: Cross-compilation: work on shared/dll support 2008-08-08 Sylvain Beucler * debian/rules, doc/cross.txt: More cross-compilation instructions: zlib shared, libpng, libtiff. Still some issues. 2008-08-08 Sylvain Beucler * debian/rules: Include separate debugging info in Debian package 2008-08-07 Sylvain Beucler * src/freedink.c: Note that full-screen toggle only works under X11 (no woe support) 2008-08-07 Sylvain Beucler * doc/cross.txt: More cross-compilation info / clean-up 2008-08-07 Sylvain Beucler * src/freedink.c: Explain 1.08 8bit-fade increment value 2008-08-07 Sylvain Beucler * doc/cross.txt: Tested and fixed the cross-building instructions while recreating my build environment from scratch 2008-08-06 Sylvain Beucler * Makefile.am: Add TROUBLESHOOTING to EXTRA_DIST 2008-08-05 Sylvain Beucler * TROUBLESHOOTING, debian/docs: Mention sound issues and work-arounds; also add TROUBLESHOOTING in the Debian package 2008-08-05 Sylvain Beucler * src/dinkvar.c, src/freedink.c, src/freedinkedit.c: FreeDinkedit: properly apply palette to the physical screen 2008-08-05 Sylvain Beucler * NEWS, configure.ac, debian/changelog: Bump version 2008-08-05 Sylvain Beucler * src/init.c: Don't choke on -nomovie for compatiblity with DFArc2.0 (incompatibility noticed by Sparrowhawk) 2008-08-04 Sylvain Beucler * src/init.c: Fix crash when using debug mode - attempts to write in /DEBUG.txt before paths_init() 2008-08-04 Sylvain Beucler * doc/dmod.txt: Update minimal D-Mod so we can actually play (not just 'Hello World' :)) 2008-08-03 Sylvain Beucler * doc/changes.txt, doc/data.txt, src/freedinkedit.c, src/gfx.c: Fixes and more documentation in FreeDinkedit's hardness mode 2008-08-03 Sylvain Beucler * doc/changes.txt, src/dinkvar.c, src/freedinkedit.c, src/gfx.c, src/gfx_tiles.c: Fixes and more documentation in FreeDinkedit's hardness mode 2008-08-02 Sylvain Beucler * debian/BUILD, debian/control: Make timidity a dependency in the Debian package to avoid SDL_mixer issues 2008-08-02 Sylvain Beucler * doc/game_libraries.txt, test/sdl/.gitignore, test/sdl/sdl_stretch.c: Test SDL_stretch 2008-08-02 Sylvain Beucler * doc/SDL_gfx-patches/asm_gcc4.3.diff, doc/SDL_gfx-patches/asm_win32_nomingw.diff, doc/SDL_gfx-patches/debian_020_gcc4.3.diff, doc/SDL_gfx-patches/libtool_crosscompile.diff, doc/SDL_gfx-patches/libtool_static.diff, doc/SDL_gfx-patches/series, doc/cross.txt: (cross-)Build instructions for new SDL_gfx 2.0.17 2008-08-02 Sylvain Beucler * src/freedinkedit.c: Fix drawing current hardness tile (s/dst.y/dst.h/) 2008-08-01 Sylvain Beucler * NEWS, doc/changes.txt, src/dinkvar.h, src/freedinkedit.c, src/gfx.c, src/sfx.c: Editor: fixed bugs introduced by layout-independant input, fixed known hardness-mode selector bug 2008-07-31 Sylvain Beucler * debian/control: Fix syntax in debian/control 2008-07-31 Sylvain Beucler * NEWS, README, configure.ac, debian/changelog, debian/control, debian/copyright: Fix description/copyright + bump version 2008-07-31 Sylvain Beucler * doc/v1.08.txt: Still need to do something wrt woe registry key 2008-07-31 Sylvain Beucler * src/freedinkedit.c, src/game_engine.h, test/sdl/keycodes.c: Use keyboard-layout-independant input system for FreeDinkedit, allowing to use it with a non-English layout 2008-07-31 Sylvain Beucler * src/input.c, src/input.h: Remove unused function 'keypressed' 2008-07-31 Sylvain Beucler * src/dinkvar.c, src/freedink.c, src/sfx.c, src/update_frame.c: clean-up 2008-07-31 Sylvain Beucler * src/dinkc_console.c, src/dinkc_console.h: Declare function 'dinkc_console_process_key' in the module header 2008-07-31 Sylvain Beucler * debian/control: Recommend 'dfarc2' in the Debian package 2008-07-31 Sylvain Beucler * src/Makefile.am: Use relative path for the 'dink' and 'dinkedit' symlinks (instead of absolute path to the build dir..) 2008-07-31 Sylvain Beucler * TROUBLESHOOTING, src/dinkc_console.c, src/dinkc_console.h, src/dinkc_sp_custom.c, src/freedink.c, src/freedinkedit.c, src/game_engine.h, src/input.c, test/sdl/keycodes.c: Clean-up: FreeDinkedit keyboard state 2008-07-30 Sylvain Beucler * README: Update README 2008-07-30 Sylvain Beucler * doc/changes.txt, doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, doc/v1.08_update_frame.diff, src/Makefile.am, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c, src/dinkc_console.c, src/dinkc_console.h, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx_fonts.c, src/gfx_fonts.h, src/init.c, src/input.c, src/update_frame.c: v1.08: DinkC show_console 2008-07-30 Sylvain Beucler * doc/changes.txt: Document changes&fixes specific to FreeDink 2008-07-29 Sylvain Beucler * src/dinkvar.c, src/freedinkedit.c, src/gfx.c, src/gfx.h: Fix transparency issue with scaled sprites in truecolor mode 2008-07-29 Sylvain Beucler * src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx.h: Ignore sprite transparency in a few cases, namely when drawing status and screenlock 2008-07-29 Sylvain Beucler * NEWS, configure.ac, debian/changelog: Bump version 2008-07-29 Sylvain Beucler * doc/data.txt: Suggest replacement for Roland's 'Ave Maria' midi 2008-07-28 Sylvain Beucler * src/freedink.c: Fix some overflow issues in up_cycle (fade_up) causing artifacts during a fadeup 2008-07-28 Sylvain Beucler * src/game_engine.c, src/init.c: Clean-up version display 2008-07-25 Sylvain Beucler * src/gfx_fonts.c, src/gfx_fonts.h, src/update_frame.c: In debug mode, print a white background behind debug text 2008-07-25 Sylvain Beucler * doc/midi.txt, doc/roadmap.txt: Doc fixes 2008-07-25 Sylvain Beucler * doc/v1.08.txt: Checked PJ's bug list 2008-07-25 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, src/freedink.c: v1.08: new time-based paletted fadedown 2008-07-25 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/dinkvar.c: v1.08: various clean-ups 2008-07-25 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c: v1.08: callback_kill() 2008-07-25 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: v1.08: set_dink_speed(0) is no-op 2008-07-24 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: v1.08: with v1.07 hurt(&sthing, -1) would run hit(), with v1.08 it doesn't 2008-07-24 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkvar.c: v1.08: level-up no longer lost if in inventory screen, fixed another other experience count issue 2008-07-24 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkvar.c: v1.08: fix crash when &magic_cost < 100 2008-07-24 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/dinkvar.c, src/dinkvar.h: v1.08: add_exp will work with any active_sprite 2008-07-24 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/freedink.c: v1.08: &missle_source is defined for all attacks, not just missiles. 2008-07-24 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff: v1.08 diffs clean-up: remove a couple non-changes 2008-07-23 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/dinkc.c, src/dinkvar.c, src/freedink.c: v1.08: sp_move_nohard() has effect all the time 2008-07-23 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: v1.08: screenlock() returns the current screenlock value if value is -1 2008-07-23 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: v1.08: compare_magic() works correctly 2008-07-22 Sylvain Beucler * doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/freedink.c, src/game_engine.c: v1.08 diffs clean-up 2008-07-23 Sylvain Beucler * src/init.c: Fix woe header issue 2008-07-20 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/Makefile.am, src/dinkc_bindings.c, src/dinkc_sp_custom.c, src/dinkc_sp_custom.h, src/dinkc_sp_custom_hash.c, src/dinkc_sp_custom_hash.h, src/dinkvar.c, src/game_engine.c, src/game_engine.h, src/init.c: DinkC sp_custom 2008-07-20 Sylvain Beucler * gnulib/m4/gnulib-cache.m4, src/dinkc_sp_custom_hash.c, src/dinkc_sp_custom_hash.h: Add hashtable to be used by DinkC sp_custom support 2008-07-20 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, src/freedink.c: Corpses appear as the same size as the living sprite. 2008-07-20 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: DinkC sp_move_x and sp_move_y 2008-07-20 Sylvain Beucler * AUTHORS, doc/v1.08.txt, doc/v1.08_dink.diff, src/freedink.c: Enable new v1.08 button scripts (buttonX.c, dnotalk, dnomagic) 2008-07-19 Sylvain Beucler * src/dinkc.c, src/init.c: Init game structs before other inits, to avoid resetting data (e.g. play.button) 2008-07-19 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, src/freedink.c: Fixed issue of a phantom keyboard key causing the Map to not be displayed. 2008-07-19 Sylvain Beucler * src/gfx_fade.c, test/sdl/fade.c: Fix fade in 15bits mode (SDL says bbp=16 instead of 15) 2008-07-18 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, src/freedink.c: Fix map indicator when the current screen is on the last row of the map 2008-07-18 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, src/freedink.c: More clean-up in v1.08 diffs 2008-07-18 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, doc/v1.08_update_frame.diff, src/dinkc_bindings.c, src/freedink.c, src/game_engine.c, src/game_engine.h, src/update_frame.c: DinkC set_dink_base_push(int dinkbasepush) 2008-07-18 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: Dink's map position appears correctly after warps. (2) 2008-07-18 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/game_engine.c, src/init.c, src/update_frame.c: Clean-up v1.08 diffs 2008-07-18 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: DinkC var_used() 2008-07-18 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: DinkC show_inventory() 2008-07-18 Sylvain Beucler * AUTHORS: Precise Dan's part. 2008-07-18 Sylvain Beucler * doc/changes.txt, doc/existing_bugs.txt, src/gfx_sprites.c, src/gfx_sprites.h: Allow abusing sequences into loading than 50 frames (backward compatibility) 2008-07-17 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, doc/v1.08_update_frame.diff, src/freedink.c: Dink's map position appears correctly after warps. 2008-07-17 Sylvain Beucler * doc/v1.08.txt, src/bgm.c, src/bgm.h, src/dinkc_bindings.c: DinkC loopmidi() 2008-07-17 Sylvain Beucler * src/freedink.c: Improve warp semi-fade effect under truecolor mode 2008-07-17 Sylvain Beucler * src/gfx.c, src/gfx_fade.c, test/sdl/fade.c: Fix bad cache declaration; remove 15bit test 2008-07-17 Sylvain Beucler * src/Makefile.am, src/dinkc_bindings.c, src/freedink.c, src/game_engine.c, src/game_engine.h, src/gfx.c, src/gfx.h, src/gfx_fade.c, src/gfx_fade.h, test/sdl/fade.c, test/sdl/videoinfo.c: Fadedown/fadeup in truecolor mode (integration in the engine) 2008-07-17 Sylvain Beucler * test/sdl/fade.c: Fadedown/fadeup separate test: trying different approaches to efficiency (done) 2008-07-17 Sylvain Beucler * test/sdl/fade.c: Fadedown/fadeup separate test: trying different approaches to efficiency 2008-07-17 Sylvain Beucler * test/sdl/.gitignore, test/sdl/Makefile, test/sdl/videoinfo.c: Fadedown/fadeup separate test: trying different approaches to efficiency 2008-07-16 Sylvain Beucler * doc/v1.08_dinkvar.diff, src/dinkvar.c: Fix sprite lazy-loading; in some situations it only worked get_box ran fine on uninitialized sequence #0, which apparently only worked in v1.07 ;) 2008-07-16 Sylvain Beucler * src/gfx.c, src/update_frame.c: More performance tests with truecolor 2008-07-16 Sylvain Beucler * src/dinkc_bindings.c, src/freedink.c, src/gfx.c, src/gfx_sprites.c, src/update_frame.c: Truecolor fixes: memory leak, keep altering dir.ff bmps, prepare for different fade, have load_palette() also modify the reference palette, experiment with speed and memory usage 2008-07-16 Sylvain Beucler * doc/v1.08_dink.diff, src/Makefile.am, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedink.h, src/game_engine.c, src/game_engine.h, src/gfx.c, src/gfx.h, src/update_frame.c: First attempt at truecolor fades, sadly incomplete because we have to support _not_ fading white pixels 2008-07-15 Sylvain Beucler * doc/v1.08_update_frame.diff: Delete already merged changes from update_frame.cpp 2008-07-15 Sylvain Beucler * doc/v1.08_update_frame.diff: Add diff for v1.08's update_frame.cpp 2008-07-15 Sylvain Beucler * src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/update_frame.c: More truecolor support (dinkedit, fill_screen) 2008-07-15 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx.h, src/gfx_sprites.c, src/init.c, test/sdl/.gitignore, test/sdl/Makefile, test/sdl/videoinfo.c: Basic truecolor mode (lacks dinkedit, fadedown/fadeup, fill_screen) 2008-07-15 Sylvain Beucler * src/freedink.c, src/freedinkedit.c, src/gfx_sprites.c: s/&/&&/ in boolean tests, this can introduce bugs when operand are different than 0 and 1 2008-07-15 Sylvain Beucler * NEWS, configure.ac, debian/changelog: Bump version 2008-07-15 Sylvain Beucler * src/freedinkedit.c: Fix "erase all sprites" with alt+delete in the editor 2008-07-15 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/freedinkedit.c, src/gfx_utils.c: Load alternate editor map.dat in a portable way 2008-07-15 Sylvain Beucler * src/dinkc.c, src/dinkvar.c: Load data (savegames, map.dat, dink.dat, hard.dat) in a portable way 2008-07-15 Sylvain Beucler * contrib/dinkdat_inspect.c, src/dinkvar.c, src/dinkvar.h, src/game_engine.h, src/io_util.c, src/io_util.h: Save data (savegames, map.dat, dink.dat, hard.dat) in a portable way 2008-07-14 Sylvain Beucler * contrib/dextract, doc/data.txt: Note that dextract/7-Zip misses some files when extracting dinksmallwood108.exe 2008-07-14 Sylvain Beucler * contrib/dextract: Note that dextract/7-Zip misses some files when extracting dinksmallwood108.exe 2008-07-13 Sylvain Beucler * TROUBLESHOOTING: Document issues with SDL + /dev/sequencer - timidity 2008-07-08 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, src/freedink.c: Conditionally fix sp_flying 2008-07-08 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/freedink.c, src/game_engine.c, src/game_engine.h: v1.08 DinkC functions: set_smooth_follow() 2008-07-07 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/dinkvar.c: v1.08 DinkC functions: sp_clip_top, sp_clip_left, sp_clip_bottom, sp_clip_right 2008-07-07 Sylvain Beucler * doc/v1.08.txt, src/dinkc_bindings.c: v1.08 DinkC functions: get_next_sprite_with_this_brain() 2008-07-07 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/freedink.c, src/gfx_fonts.c, src/gfx_fonts.h: v1.08 DinkC functions: set_font_color() 2008-07-07 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: v1.08 DinkC functions: get_item(), get_magic(), load_map() 2008-07-07 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c: v1.08 DinkC functions: clear_editor_info() 2008-07-07 Sylvain Beucler * doc/TODO, doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx_tiles.c, src/gfx_tiles.h: v1.08 DinkC functions: load_palette, load_tile, map_hard_tile, map_tile 2008-07-07 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/dinkvar.c, src/game_engine.c, src/game_engine.h: set_save_game_info() + prepare other savegame changes 2008-07-07 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, src/dinkvar.c, src/freedink.c: Fix which sprites blood to use when hit (attackee rather than attacker) 2008-07-07 Sylvain Beucler * src/io_util.c: Fix crash (array out of bounds) when --game is a relative path 2008-07-06 Sylvain Beucler * doc/v1.08_dink.diff: Remove merged code from v1.08_dink.diff 2008-07-04 Sylvain Beucler * src/Makefile.am: Don't try to include vgasys.fon in executables - it's already done via linking. 2008-07-04 Sylvain Beucler * src/dinkc_bindings.c: Clean-up in custom procedure launch + print appropriate debug info (instead of uninitialized string) 2008-07-04 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc_bindings.c, src/dinkvar.c, src/game_engine.h: sp_blood_seq and sp_blood_num 2008-07-04 Sylvain Beucler * src/dinkc.c, src/str_util.c: doc 2008-07-04 Sylvain Beucler * doc/v1.08.txt: Add infos on when v1.08 features were merged 2008-07-04 Sylvain Beucler * doc/HACKING_dinkc.txt, doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c, src/game_engine.h: v1.08 DinkC syntax changes: variables (scope, prefix clash) and functions (globals, user parameters) 2008-07-01 Sylvain Beucler * doc/HACKING_dinkc.txt, doc/v1.08.txt, doc/v1.08_dinkvar.diff, src/bgm.c, src/dinkc_bindings.c: Continue merging small v1.08 changes and strip v1.08_dinkvar.diff accordingly 2008-06-30 Sylvain Beucler * Makefile.am, gnulib/lib/.gitignore, gnulib/m4/.gitignore: Update Gnulib; include gnulib/m4/gnulib-cache.m4 in dist tarballs so users can update gnulib too 2008-06-29 Sylvain Beucler * doc/v1.08.txt, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff, src/freedinkedit.c: Remove already merged code from the 1.08 diffs 2008-06-29 Sylvain Beucler * doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff: Remake v1.08 diff (commented some C++ constructs that confusd 'indent') 2008-06-26 Sylvain Beucler * contrib/.gitignore, doc/v1.08_dink.diff, doc/v1.08_dinkvar.diff: Add v1.07->v1.08 diffs; we'll trim them down as we merge (or reject) the changes 2008-06-26 Sylvain Beucler * doc/HACKING_dinkc.txt: Add study of DinkC original implementation 2008-06-26 Sylvain Beucler * src/dinkini.c, src/dinkini.h: Forgot to add new files dinkini.c and dinkini.h 2008-06-26 Sylvain Beucler * src/dinkc.c, src/dinkc.h, src/dinkvar.c, src/dinkvar.h: Move var_figure to dinkc.c 2008-06-26 Sylvain Beucler * doc/cross.txt: Cross-build instructions for libffi 2008-06-25 Sylvain Beucler * gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, src/Makefile.am, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c, src/dinkvar.c, src/str_util.c: gnulib update + clean-ups in DinkC-related functions 2008-06-24 Sylvain Beucler * src/init.c: Fail if there are extra command line arguments 2008-06-24 Sylvain Beucler * src/Makefile.am, src/dinkvar.c, src/init.c: The number of sprite information (idata) is now configurable at runtime: 600 in v1.07, 1000 in v1.08 2008-06-24 Sylvain Beucler * AUTHORS, doc/v1.08.txt, src/dinkc_bindings.c, src/dinkvar.c, src/str_util.c: Start introducing v1.08 new DinkC commands 2008-06-23 Sylvain Beucler * README, doc/v1.08.txt, src/game_engine.c, src/game_engine.h, src/init.c, src/update_frame.c: Set v108 mode by default; add option to use v107 mode. Now we only need to actually implement v108 ;) 2008-06-22 Sylvain Beucler * src/compress.c: Precise copyright notice for compress.c 2008-06-22 Sylvain Beucler * doc/midi.txt: Update MIDI instructions 2008-06-22 Sylvain Beucler * BUILD, contrib/dextract, doc/v1.08.txt: Doc fixes 2008-06-08 Sylvain Beucler * doc/v1.08.txt, src/dinkc.c: Time for save game correctly displayed (2:05 instead of 2:5). 2008-06-08 Sylvain Beucler * doc/v1.08.txt, src/dinkvar.c, src/gfx_tiles.c: The first tile on the fire and water tile pages animate correctly. 2008-06-08 Sylvain Beucler * doc/v1.08.txt, src/dinkvar.c, src/dinkvar.h, src/freedink.c: Dink can no longer walk around the edges of the screen during a screenlock. 2008-06-08 Sylvain Beucler * doc/v1.08.txt, src/dinkc_bindings.c: Removed screenlock on restart game 2008-06-08 Sylvain Beucler * doc/v1.08.txt, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/update_frame.c: Scrolling now appears on 1-pixel rows and columns near status bar. 2008-06-02 Sylvain Beucler * src/dinkvar.c: Fixed crash when ordering 99 (=max) sprites for display in screen load (place_sprites_game) 2008-06-01 Sylvain Beucler * doc/TODO, src/dinkvar.c: Describe how the engine temporarily disable monsters 2008-06-01 Sylvain Beucler * src/gfx.c, src/gfx_utils.c: Fix crash with show_bmp() and non-paletted BMPs; make palette conversion code clearer along the way 2008-06-01 Sylvain Beucler * src/dinkc.c, src/dinkc_bindings.c, src/str_util.c: Fixed 2 crashes: temp 'crap' buffer too short (100 chars); compare_sprite_script: attemps to access a potential deleted script 2008-05-31 Sylvain Beucler * doc/sound_resources.txt: Reference other games that provide freely licensed sounds 2008-05-31 Sylvain Beucler * doc/roadmap.txt, src/gfx.c: Remove references to Doppelganger's disappearing slayer corpses in the context of background gfx's overwritten by tile animation - that effect was done differently (with a sprite floor) 2008-05-30 Sylvain Beucler * doc/cross.txt: More guile cross-compile instructions 2008-05-30 Sylvain Beucler * src/dinkvar.c: Fix crash in FreeDinkedit when a non-existent sequence is used ('introduced' when seq[x].ini became a pointer instead of a fixed-length string) 2008-05-26 Sylvain Beucler * src/gfx.c, src/gfx_sprites.c, src/update_frame.c: Blit surface to be RLE-encoded on Trick2 instead of Trick2, this messes the screen transition 2008-05-26 Sylvain Beucler * doc/cross.txt: Add preliminary notes about cross-compiling Guile 2008-05-24 Sylvain Beucler * src/Makefile.am, src/bgm.c, src/dinkc.c, src/dinkc.h, src/dinkc_bindings.c, src/dinkc_bindings.h, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedink.h, src/freedinkedit.c, src/game_engine.c, src/game_engine.h, src/gfx_sprites.h, src/gfx_tiles.c, src/init.c, src/init.h, src/input.c, src/io_util.h, src/paths.h, src/sfx.c, src/str_util.c, src/str_util.h, src/update_frame.c: Messy clean-up: extract DinkC-related functions from dinkvar.c 2008-05-23 Sylvain Beucler * src/dinkvar.c: Add safety checks in the game .d decompression and fix a buffer overflow in stack[] 2008-05-23 Sylvain Beucler * contrib/d2c.c: Clean-room stack-based BPE decompression 2008-05-23 Sylvain Beucler * doc/hardcoded_sequences.txt, src/dinkvar.c: Properly fixed hard.dat reset 2008-05-22 Sylvain Beucler * src/dinkvar.c: Fixed hard.dat reset in the editor (bug introduced with refdir support in load_hard) 2008-05-22 Sylvain Beucler * doc/v1.08.txt, src/dinkvar.c: The 1-pixel row above the status bar now draws sprite graphics. 2008-05-22 Sylvain Beucler * doc/changes.txt, src/gfx_sprites.c: Add Seth in gfx_sprites.c copyright holders (ahem) 2008-05-22 Sylvain Beucler * src/gfx_sprites.c: Fix copyright notice; remove reference to s_index (merged) 2008-05-22 Sylvain Beucler * src/gfx_sprites.c: Always close dir.ff files. 2008-05-22 Sylvain Beucler * src/gfx.c, src/gfx_sprites.c: Attempt at RLE encoding/compression 2008-05-22 Sylvain Beucler * NEWS, configure.ac, debian/changelog: Bump version 2008-05-22 Sylvain Beucler * doc/changes.txt, doc/v1.08.txt, src/dinkvar.h, src/gfx_sprites.c: Clean sequence reload: no sequence overwriting, no memory leak 2008-05-21 Sylvain Beucler * src/gfx_sprites.c: Precise comment about palettes 2008-05-21 Sylvain Beucler * doc/memory_usage.txt, doc/valgrind.txt: Tools for analyzing memory usage 2008-05-21 Sylvain Beucler * doc/c_canonicalize.sh, doc/v1.08.txt: Minimize differences when comparing 1.07 and 1.08 using a canonical form for C source code 2008-05-21 Sylvain Beucler * src/gfx_sprites.c: Alter pure white and black colors when reading sprites from a dir.ff; this reproduces the original game behavior and prevent white pixels from appearing in the status bar during a fade_down() 2008-05-17 Sylvain Beucler * doc/changes.txt, doc/existing_bugs.txt, src/dinkvar.c, src/dinkvar.h, src/gfx_sprites.c: Some clean-up in pre_figure_out, figure_out, make_idata, program_idata 2008-05-17 Sylvain Beucler * src/gfx_sprites.c, src/gfx_sprites.h: Rename org -> seq_path_prefix for clarity 2008-05-17 Sylvain Beucler * src/gfx_sprites.c: Remove cur_sprite -> next_slot for clarity 2008-05-17 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/gfx_sprites.c, src/gfx_sprites.h: Fix memory overwrite because of a too short 'data' field in struct sequence; replaced by malloc'd string 2008-05-17 Sylvain Beucler * contrib/.gitignore, src/dinkvar.c, src/gfx_sprites.c, src/gfx_sprites.h: Clean-up load_sprite_pak + add safety checks to avoid sprites with a too much greater index 2008-05-17 Sylvain Beucler * doc/hardcoded_sequences.txt: Start referencing sequences numbers that are hardcoded in the game engine 2008-05-17 Sylvain Beucler * src/dinkvar.h, src/gfx_sprites.c: Some clean-up in load_sprites and load_sprite_pak 2008-05-16 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/gfx_sprites.c, src/update_frame.c: Merge s_index and seq structures, they both describe graphic sequences and are identically indexed 2008-05-16 Sylvain Beucler * src/dinkvar.h, src/gfx_sprites.c: Sequence-related comments; remove sprite_index.x and sprite_index.y (unused) 2008-05-15 Sylvain Beucler * src/dinkvar.c, src/gfx_sprites.c, src/gfx_sprites.h: Move load_sprite_pak and load_sprites: dinkvar.c->gfx_sprites.c 2008-05-15 Sylvain Beucler * src/sfx.c: Ensured that cvt.buf wasn't realloc'd by SDL and could be free'd normally 2008-05-15 Sylvain Beucler * THANKS, src/sfx.c: Fix sound memory leak found by José and add safety checks to avoid playing NULL sounds 2008-05-15 Sylvain Beucler * doc/dmod.txt: Fix DinkC mistake in minimal D-Mod 2008-05-15 Sylvain Beucler * contrib/.gitignore, contrib/d2c.c: Warn that d2c.c segfaulst and is to be reimplemented 2008-05-14 Sylvain Beucler * src/dinkvar.c: Remove unused and pointless function 'refigure_out' 2008-05-14 Sylvain Beucler * src/bgm.c: Fix small leak (pathname not freed) in PlayMidi 2008-05-14 Sylvain Beucler * src/dinkvar.c: Fix memory lead in load_sprites; unlike load_sprite_pak, it didn't free the surface in the graphics slot it used. 2008-05-13 Sylvain Beucler * doc/cross.txt: Improve cross-build instructions 2008-05-13 Sylvain Beucler * NEWS, configure.ac, debian/changelog: Bump version (it's been a while) 2008-05-12 Sylvain Beucler * src/dinkvar.c, src/gfx.c, src/paths.c: - Close file pointers used by load_bmp_from_fp (reported by José María Pavón Núñez) Actually, close all RWops after image is loaded in load_bmp_internal - Fix a small memory leak in paths_init 2008-05-08 Sylvain Beucler * configure.ac, debian/README, debian/README.Debian, debian/changelog, debian/control, debian/copyright, debian/menu, debian/rules: Fix a couple (Debian) packaging warnings. 2008-05-08 Sylvain Beucler * doc/existing_bugs.txt, doc/v1.08.txt, src/freedink.c: More v1.08 analysis 2008-05-08 Sylvain Beucler * doc/v1.08.txt, src/freedinkedit.c: Apply 1.08 editor grammar fixes 2008-05-04 Sylvain Beucler * doc/existing_bugs.txt, src/dinkvar.c: Add v1.07/v1.08 bug reported by Someone 2008-05-01 Sylvain Beucler * src/freedinkedit.c, src/io_util.c: No error return code when exiting FreeDinkedit from the window manager; doc fixes 2008-03-15 Sylvain Beucler * debian/BUILD, debian/control, debian/rules: Improve Debian packaging: explain dpkg-shlibdeps warnings; add homepage, vcs-browser and vcs-git control fields; rename the tmp build directory from 'build' to 'build.tmp', to avoid case-insensitive clash with 'BUILD', which prevents FreeDink from finding resources. 2008-03-09 Sylvain Beucler * doc/changes.txt, doc/v1.08.txt, src/dinkvar.c: Disable playavi() DinkC command 2008-03-09 Sylvain Beucler * configure.ac, src/Makefile.am: Overwrite 'dink' and 'freedink' symlinks if already exist 2008-03-08 Sylvain Beucler * src/bgm.c, src/dinkvar.c, src/freedinkedit.c, src/gfx.c, src/gfx.h, src/gfx_fonts.c, src/gfx_tiles.c, src/gfx_utils.c, src/init.c, src/io_util.c, src/log.c, src/paths.c, src/paths.h, src/sfx.c: Simplify case-insensitiveness (fopen wrapper rathan than path wrapper) 2008-03-08 Sylvain Beucler * src/bgm.c, src/dinkvar.c, src/dinkvar.h, src/freedinkedit.c, src/gfx.c, src/gfx_utils.c, src/io_util.c, src/io_util.h, src/sfx.c, src/update_frame.c: Make it clearer that ciconvert works in-place 2008-03-08 Sylvain Beucler * doc/TODO: Remove FreeDinkedit fixed bug from TODO 2008-03-08 Sylvain Beucler * doc/changes.txt: Add basic fullscreen<->window toggle 2008-03-08 Sylvain Beucler * src/freedink.c, src/freedinkedit.c, src/gfx.c, src/init.c: Add basic fullscreen<->window toggle 2008-03-08 Sylvain Beucler * doc/changes.txt, doc/cross.txt, src/dinkvar.h, src/freedinkedit.c, src/input.c, test/sdl/.gitignore, test/sdl/keycodes.c: Improve non-US support and input dialogs in the editor 2008-02-24 Sylvain Beucler * doc/v1.08.txt: Add a link to a v1.08 bugs list (thanks to Phoenix for the link) 2008-02-24 Sylvain Beucler * src/Makefile.am: Remove references to now-unused stamp files 2008-02-24 Sylvain Beucler * src/dinkvar.h: Identify data structures 2008-02-15 Sylvain Beucler * test/sdl/Makefile, test/sdl/keycodes.c: Add test for SDL keycodes 2008-02-15 Sylvain Beucler * doc/keycodes.txt: Fix mistake in test results 2008-02-02 Sylvain Beucler * share/README, share/freedink/Makefile.am, share/freedink/system.sfd, src/Makefile.am, src/freedink_xpm.c, src/freedink_xpm.h, src/gfx.c, src/gfx_fonts.c, src/init.c, src/init.h, src/media/README, src/media/system.sfd, src/msgbox.c, src/paths.c, src/str_util.c, src/str_util.h, src/vgasys_fon.h, src/woeres.rc.in: Finish error handling for graphics initialization + move non-installed media out of share/ 2008-02-02 Sylvain Beucler * src/gfx.c, src/gfx.h, src/gfx_fonts.c, src/gfx_fonts.h, src/gfx_utils.c, src/init.c, src/init.h, src/msgbox.c, src/paths.c, src/vgasys_fon.c, src/vgasys_fon.h: More on initialization error handling 2008-02-02 Sylvain Beucler * share/README.fonts, src/Makefile.am, src/gfx.c, src/gfx_fonts.h, src/init.c, src/msgbox.c, src/msgbox.h, src/paths.c, src/vgasys_fon.c: Start implementing message box functions 2008-02-02 Sylvain Beucler * doc/gettext.txt, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, src/log.c, src/paths.c: Import asprintf, to build string that could be passed to GUI message boxes. 2008-02-01 Sylvain Beucler * configure.ac: Change bug report e-mail (beuc@beuc.net->bug-freedink@gnu.org) 2008-01-27 Sylvain Beucler * doc/sdl_existing_window.txt: Confirm migration of the SDL_WINDOWID doc to the wiki 2008-01-27 Sylvain Beucler * doc/dfarc.txt: Move dfarc documentation to DFArc2 repository 2008-01-20 Sylvain Beucler * BUILD, configure.ac, debian/control, doc/data.txt: FreeBSD build instructions 2008-01-19 Sylvain Beucler * Makefile.am, configure.ac, doc/cross.txt, src/Makefile.am: Build system fixes 2008-01-19 Sylvain Beucler * bootstrap: Add copyright notice to 'bootstrap' 2008-01-19 Sylvain Beucler * src/Makefile.am: Add 'dink' and 'dinkedit' aliases, to please 3rd-party tools 2008-01-16 Sylvain Beucler * contrib/bmpinspect.c, contrib/bmpinvertpalette.c, contrib/d2c.c, contrib/dextract, contrib/dinkdat_inspect.c, contrib/ffinspect.c, contrib/ffrextract.c, doc/data.txt, utils/bmpinspect.c, utils/bmpinvertpalette.c, utils/d2c.c, utils/dinkdat_inspect.c, utils/ffinspect.c, utils/ffrextract.c: Add script to extract game data from the official .exe package 2008-01-13 Sylvain Beucler * doc/directory_layout.txt, src/init.c, src/paths.c, src/paths.h: Moved non-FreeDink-specific paths from .../freedink/ to .../dink/ 2008-01-13 Sylvain Beucler * doc/dfarc.txt: Precisions about DFArc and DFArc2 2008-01-11 Sylvain Beucler * utils/dinkdat_inspect.c: typo 2008-01-11 Sylvain Beucler * utils/dinkdat_inspect.c: More doc on dink.dat 2008-01-11 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h: doc 2008-01-11 Sylvain Beucler * src/SDL_rwops_zzip.c, src/bgm.c, src/gfx.c, src/log.c: Reorder #include's - http://lists.gnu.org/archive/html/bug-gnulib/2008-01/msg00133.html 2008-01-11 Sylvain Beucler * doc/data.txt: hard.dat is a prerequisite for tiles 2008-01-11 Sylvain Beucler * src/paths.c: Don't try to free static string 2008-01-07 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedink.h: Start implementing a early error message box 2008-01-07 Sylvain Beucler * src/init.c, src/input.c: Move keyboard initialization code to input.c 2008-01-07 Sylvain Beucler * src/bgm.c, src/bgm.h: Music clean-up 2008-01-07 Sylvain Beucler * doc/sdl_existing_window.txt: More on integrating SDL in an existing GUI 2008-01-02 Sylvain Beucler * doc/data.txt: More info on original data copyright 2008-01-02 Sylvain Beucler * THANKS, src/paths.c: More fixes in paths detection (thanks again Alex\!) 2007-12-30 Sylvain Beucler * Makefile.am: Simplify outrageously complex dos2unix-like sed script 2007-12-29 Sylvain Beucler * configure.ac: Check SDL_ttf >= 2.0.9 in ./configure 2007-12-29 Sylvain Beucler * src/gfx_fonts.c: Don't free the current font if initfont() failed to load a new one (thanks again for the report Alex!). 2007-12-29 Sylvain Beucler * src/dinkvar.c, src/paths.c: Fix a double-free error, and don't look in ./dink for a D-Mod unless that's explicitely specified with -game (thanks to Alex Schrøder for hitting the bug\!) 2007-12-29 Sylvain Beucler * doc/sdl_existing_window.txt: More on using SDL along with a widgets set 2007-12-28 Sylvain Beucler * doc/data.txt: Reference data from the original game commonly needed by D-Mods 2007-12-28 Sylvain Beucler * utils/d2c.c, utils/ffinspect.c, utils/ffrextract.c: Fix ffrextract.c and support some broken dir.ff files 2007-12-28 Sylvain Beucler * src/fastfile.c, utils/ffrextract.c: ffrextract.c cleanup; attempt to process command line arguments as well 2007-12-28 Sylvain Beucler * doc/v1.08.txt: Found v1.08's changelog 2007-12-28 Sylvain Beucler * gnulib/lib/.gitignore: Gnulib refresh 2007-12-26 sylvain * src/dinkvar.c, src/paths.c, valgrind/suppressions-debian_etch.txt: A couple more one-shot memory leaks fixed. 2007-12-24 sylvain * src/Makefile.am, src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx_sprites.c, src/gfx_sprites.h, src/gfx_tiles.c, src/gfx_tiles.h, src/init.c, src/io_util.c, valgrind/suppressions-debian_etch.txt: Free graphics from memory on shutdown (avoid noise when using Valgrind) 2007-12-24 Sylvain Beucler * NEWS, configure.ac, debian/changelog, doc/cross.txt: version bump 2007-12-24 Sylvain Beucler * doc/game_libraries.txt, src/sfx.c: Don't reallocate (and move) shared memory in the sound subsystem (fix crash) 2007-12-23 Sylvain Beucler * doc/valgrind.txt, src/bgm.c, src/bgm.h, src/dinkvar.c, src/freedink.c, src/gfx_fonts.c, src/init.c, src/input.c, src/input.h, src/paths.c, src/paths.h, src/sfx.c, src/str_util.c, src/str_util.h, valgrind/suppressions-debian_testing.txt: Fix some Valgrind-detected memory leaks + cleaner engine shutdown 2007-12-23 Sylvain Beucler * bootstrap: Check for pkg-config presence in bootstrap (needed by some autoconf tests) 2007-12-23 Sylvain Beucler * configure.ac, doc/cross.txt: Dependencies documentation 2007-12-23 Sylvain Beucler * BUILD, configure.ac, doc/cross.txt, src/Makefile.am, src/SDL_rwops_libzip.c, src/SDL_rwops_libzip.h, src/io_util.c, test/sdl/SDL_rwops_libzip.c: Can use either libzip or zziplib to load resources 2007-12-23 Sylvain Beucler * doc/cross.txt, test/sdl/Makefile, test/sdl/SDL_rwops_libzip.c, test/sdl/SDL_rwops_libzip.h, test/sdl/SDL_rwops_zzip.c, test/sdl/embedded_font.c, test/sdl/embedded_font2.c: New test: load font from resource using libzip instead of zziplib (libzip is more portable, a.k.a. does not crash under woe) 2007-12-23 Sylvain Beucler * src/paths.c: dirname -> dir_name (doesn't modify argument) 2007-12-23 Sylvain Beucler * configure.ac, doc/cross.txt, gnulib/lib/.gitignore, gnulib/m4/.gitignore, src/Makefile.am, src/SDL_rwops_zzip.c, src/paths.c: More cross compilation fixes 2007-12-23 Sylvain Beucler * configure.ac, doc/cross.txt, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, src/SDL_rwops_zzip.c, src/bgm.c, src/dinkvar.c, src/fastfile.c, src/freedink.c, src/freedinkedit.c, src/gfx_fonts.c, src/gfx_fonts.h, src/paths.c, src/update_frame.c: Cross compilation fixes 2007-12-22 Sylvain Beucler * doc/directory_layout.txt, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedinkedit.c, src/gfx_fonts.c, src/gfx_utils.c, src/io_util.c, src/log.c, src/paths.c, src/paths.h, test/woepaths.c: Save games in ~/.freedink//saveX.dat when there's no write access to the D-Mod; some search path fixes 2007-12-22 Sylvain Beucler * src/dinkvar.c, src/io_util.c, src/io_util.h: Fix dir.ff search path 2007-12-22 Sylvain Beucler * src/bgm.c, src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx_tiles.c, src/gfx_utils.c, src/init.c, src/io_util.c, src/paths.c, src/paths.h, src/sfx.c: Implement refdir-based search path (done) 2007-12-22 Sylvain Beucler * src/Makefile.am, src/bgm.c, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedinkedit.c, src/gfx_fonts.c, src/gfx_tiles.c, src/gfx_utils.c, src/gfx_utils.h, src/init.c, src/init.h, src/input.c, src/io_util.c, src/io_util.h, src/log.c, src/log.h, src/paths.c, src/paths.h, src/sfx.c, src/update_frame.c: Implement refdir-based search path (WIP) + factored out some initialization code 2007-12-21 Sylvain Beucler * gnulib/m4/.gitignore: gnulib update 2007-12-21 Sylvain Beucler * src/freedink.c, src/init.c, src/io_util.c, src/io_util.h: Introduce --refdir to refer to the directory containing 'dink/' and dmods 2007-12-20 Sylvain Beucler * doc/directory_layout.txt, src/io_util.c: Compute base directories locations (not tested) 2007-12-14 Sylvain Beucler * doc/TODO, doc/directory_layout.txt, src/freedink.c, src/freedinkedit.c, src/init.c, src/sfx.c, src/sfx.h: Load editor sounds as resources 2007-12-12 Sylvain Beucler * test/sdl/embedded_font.c: Test for embedded font: use the same font parameters as in the game 2007-12-09 Sylvain Beucler * doc/directory_layout.txt, src/dinkvar.c, src/dinkvar.h, src/freedink.c, src/freedinkedit.c, src/gfx_fonts.c, src/gfx_fonts.h, src/update_frame.c: Support use of 2 different fonts (dialog and system). Better font encapsulation/clean-up. 2007-12-09 Sylvain Beucler * autopackage/default.apspec.in, configure.ac, doc/autopackage.txt, doc/static-build.txt, src/Makefile.am: Reflexions on autopackage and static linking 2007-12-09 Sylvain Beucler * debian/changelog, debian/rules: Bump version and ignore 'make clean' error more precisely (fix lintian warning) 2007-12-09 Sylvain Beucler * BUILD, Makefile.am, autopackage/default.apspec.in, configure.ac, src/Makefile.am: zip and upx are done at 'make install' time now. Improve ./configure to display missing dependencies at once (instead of stopping on first error) 2007-12-09 Sylvain Beucler * src/sfx.c: More clean-up in SFX 2007-12-09 Sylvain Beucler * src/sfx.c: Make sure all sound buffer pointers are initially NULL 2007-12-09 Sylvain Beucler * NEWS, configure.ac: Bump version 2007-12-09 Sylvain Beucler * src/bgm.c, src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/sfx.c, src/sfx.h: Integrate sound sample rate support in the engine. Plus more code clean-up / encapsulation. 2007-12-08 Sylvain Beucler * autotools/.gitignore, bootstrap: Don't remove autotools/link-warning.h on 'sh bootstrap clean', it would force to reimport Gnulib 2007-12-08 Sylvain Beucler * bootstrap: Continue cleaning if make maintainer-clean fails 2007-12-08 Sylvain Beucler * doc/gnulib.txt, gnulib/m4/gnulib-comp.m4: Refresh Gnulib - documentation 2007-12-08 Sylvain Beucler * gnulib/m4/.gitignore, gnulib/m4/gnulib-comp.m4: Refresh Gnulib 2007-12-08 Sylvain Beucler * doc/midi.txt: Separate MIDI-related documentation 2007-12-08 Sylvain Beucler * src/dinkvar.c, src/dinkvar.h: A bit of indent/comments/deletion of extra spaces in dinkvar.c 2007-12-07 Sylvain Beucler * src/sfx.c: Fix declaration for SetVolume and SetPan 2007-12-02 Sylvain Beucler * README, doc/cvs.txt, doc/fonts.txt, doc/game_libraries.txt, doc/roadmap.txt, doc/sound.txt, doc/valgrind.txt, doc/woe-compile.txt: Doc updates 2007-11-27 Sylvain Beucler * doc/sound.txt: Mixing audio libs = bad idea; mention SDL_sound v2 2007-11-27 Sylvain Beucler * src/sfx.c: SetVolume/SetPan -> internal/static funcs 2007-11-27 Sylvain Beucler * test/sdl/sdl_freq.c: Frequency / sample rate shift with a SDL_mixer channel effect 2007-11-27 Sylvain Beucler * test/sdl/embedded_font.c: Copyright notice 2007-11-17 Sylvain Beucler * doc/sound.txt, src/sfx.c: Sound: implement volume&panning 2007-11-15 Sylvain Beucler * src/freedink.c, src/freedinkedit.c, src/gfx_fonts.c, src/gfx_fonts.h, src/update_frame.c: Fix title placement for text choices: remove font vertical alignement (never worked in the original game actually), take leading newlines into account. 2007-11-12 Sylvain Beucler * doc/embed_resources.txt, doc/fonts.txt, doc/game_libraries.txt, share/README.fonts, share/freedink/Makefile.am, share/freedink/system.sfd, src/freedink.c, src/freedinkedit.c, src/gfx_fonts.c, src/gfx_fonts.h, src/update_frame.c, test/woefont.c: Improved font support in progress: include alternate font used by FreeDinkedit (not used in the code yet), fix bugs in text wrapping, fix bugs in dialog positioning (not finished), more documentation, minimal test for printing fonts like Dink does under Woe 2007-11-12 Sylvain Beucler * doc/changes.txt: Document (fixed) issues with compressed BMPs 2007-11-12 Sylvain Beucler * doc/hardware_surfaces.txt: Doc about enabling hardware surface - difficult for end user 2007-11-04 Sylvain Beucler * BUILD: AC_LIB_PROG_LD issue promptly fixed in Gnulib, removing workaround 2007-11-04 Sylvain Beucler * BUILD, doc/game_libraries.txt, doc/sound.txt: Doc updates: more on using TiMidity++ and about game libraries 2007-11-01 Sylvain Beucler * BUILD, doc/cross.txt, doc/roadmap.txt: Docs update: build info for Fedora, warning about FreeType compilation, update roadmap with today's progresses 2007-11-01 Sylvain Beucler * doc/dependencies.txt: Remove doc/dependencies.txt, replaced by BUILD 2007-11-01 Sylvain Beucler * src/gfx_fonts.c: More efficient implementation of text coloring using the final screen palette. 2007-11-01 Sylvain Beucler * src/gfx.c, src/gfx_fonts.c: Fix text color during fade_down() and palette change - but it's terribly slow\! 2007-10-27 Sylvain Beucler * doc/directory_layout.txt: Precise main objectives for search path 2007-10-27 Sylvain Beucler * bootstrap, gnulib/lib/.gitignore: Auto-install gnulib if not present, and don't hard-code its PATH. Updated gnulib while I was there. 2007-10-27 Sylvain Beucler * configure.ac: Add -lzzip to static libs 2007-10-27 Sylvain Beucler * BUILD: Gentoo 'from scratch' build instructions. Don't use their gnulib package for now. 2007-10-26 Sylvain Beucler * BUILD: More BUILD explanations 2007-10-26 Sylvain Beucler * BUILD, NEWS, configure.ac, debian/control, src/.gitignore, src/Makefile.am: Add BUILD documentation, small build fixes, bump version 2007-10-24 Sylvain Beucler * src/Makefile.am: Fix build system bug when using zip resources without upx compression 2007-10-22 Sylvain Beucler * configure.ac, debian/control, doc/.gitignore, doc/directory_layout.txt, doc/gnulib.txt, doc/roadmap.txt, gnulib/lib/.gitignore, gnulib/lib/Makefile.am, gnulib/lib/dummy.c, gnulib/lib/getopt.c, gnulib/lib/getopt1.c, gnulib/lib/getopt_.h, gnulib/lib/getopt_int.h, gnulib/lib/gettext.h, gnulib/lib/unistd_.h, gnulib/m4/.gitignore, gnulib/m4/getopt.m4, gnulib/m4/gnulib-cache.m4, gnulib/m4/gnulib-common.m4, gnulib/m4/gnulib-comp.m4, gnulib/m4/gnulib-tool.m4, gnulib/m4/include_next.m4, gnulib/m4/onceonly_2_57.m4, gnulib/m4/unistd_h.m4, src/Makefile.am, src/SDL_rwops_zzip.c, src/SDL_rwops_zzip.h, src/bgm.c, src/dinkvar.c, src/fastfile.c, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx_fonts.c, src/gfx_fonts.h, src/gfx_utils.c, src/gfx_utils.h, src/init.c, src/input.c, src/io_util.c, src/io_util.h, src/sfx.c, test/sdl/Makefile: Support embedded resources and loading default font from them + clean-up 2007-10-21 Sylvain Beucler * doc/cross.txt, test/sdl/embedded_font.c: More doc on zziplib 2007-10-21 Sylvain Beucler * doc/embed_resources.txt, test/getmodulefilename.c, test/sdl/.gitignore, test/sdl/Makefile, test/sdl/SDL_rwops_zzip.c, test/sdl/SDL_rwops_zzip.h, test/sdl/embedded_font.c: Embed a zip of resources in the executable: test and doc 2007-10-20 Sylvain Beucler * share/README: Explain how to extract WAVs from dinkedit.exe v1.06 2007-10-20 Sylvain Beucler * src/gfx.c, src/gfx_utils.c, src/init.c: Replace SDL_LoadBMP by IMG_Load. This supports compressed BMPs used in some D-Mods. Curiously my dink.exe from 1.07 doesn't support those either - maybe it's just a matter of DX version. 2007-10-19 Sylvain Beucler * doc/embed_resources.txt: Summary of how to bundle data within the executable 2007-10-16 Sylvain Beucler * src/freedinkedit.c: Another key bindings fix in the editor (next/previous page in the sprite chooser went too fast, needs to stop until the key is released) 2007-10-16 Sylvain Beucler * src/dinkvar.h, src/freedinkedit.c: Fix some key bindings in the editor (precise positionning Ctrl+Arrow, trim with X+Arrow and Z+Arrow) 2007-10-15 Sylvain Beucler * src/gfx.c: Print the SDL error when a graphic cannot be found. This allowed to explain why some POTA graphics weren't loaded ('Compressed BMP files not supported', already occured in original Dink btw) 2007-10-14 Sylvain Beucler * src/freedinkedit.c: Add maximum framerate in freedinkedit as well 2007-10-14 Sylvain Beucler * src/dinkvar.h: Fix bool/int alignment; caused sprites to disappear, namely in Prophecy of the Ancients and Red Jacket Murders 2007-10-14 Sylvain Beucler * src/dinkvar.h, src/input.c: Fix array out-of-bounds condition that made the editor believe '0' was pressed continuously 2007-10-14 Sylvain Beucler * src/freedinkedit.c: cleanup/indent 2007-10-14 Sylvain Beucler * doc/freedinkedit.txt, doc/v1.08.txt: doc updates 2007-10-14 Sylvain Beucler * .gitignore: Ignore more files 2007-10-14 Sylvain Beucler * test/x11_messagebox.c: will need a basic X11 message for bootstrap errors 2007-10-14 Sylvain Beucler * doc/dmod.txt: How to create a minimal dmod 2007-10-14 Sylvain Beucler * doc/v1.08.txt: References to v1.08 changes can be found in dinkc.chm 2007-10-14 Sylvain Beucler * configure.ac: autoupdate 2007-10-13 Sylvain Beucler * utils/d2c.c: Added .d to .c decompressor 2007-10-07 Sylvain Beucler * Makefile.am, autopackage/default.apspec.in, configure.ac, doc/freedesktop.txt, share/Makefile.am, share/README, share/README.fonts, share/applications/freedink.desktop, share/applications/freedinkedit.desktop, share/freedink/Makefile.am, share/freedink/README.fonts, share/freedink/README.txt: Add freedesktop.org-compliant menu entry and icon 2007-10-07 Sylvain Beucler * bootstrap, configure.ac, src/Makefile.am, src/freedink_xpm.c, src/freedink_xpm.h, src/init.c: Embed icon in XPM format (loaded with SDL_image) 2007-10-07 Sylvain Beucler * .gitignore, autotools/.gitignore, bootstrap, configure.ac: Small build system fixes 2007-10-04 Sylvain Beucler * configure.ac, doc/cross.txt: More on cross-compilation: DX-enabled buils, SLD_image, libjpeg 2007-10-04 Sylvain Beucler * doc/binreloc.txt: Mention 'relocatable-prog' from Gnulib 2007-10-04 Sylvain Beucler * doc/cross.txt, doc/sdl_existing_window.txt: doc updates 2007-10-02 Sylvain Beucler * doc/directory_layout.txt: Fix the use cases 2007-10-02 Sylvain Beucler * doc/directory_layout.txt: Try hard to get simple and intuitive search paths, not so simple 2007-10-02 Sylvain Beucler * doc/sdl_existing_window.txt: List various tricks to include SDL in an existing window (to be tested) 2007-10-02 Sylvain Beucler * configure.ac, debian/rules, gnulib/m4/gnulib-comp.m4: Make Gnulib tidy + update 2007-09-30 Sylvain Beucler * Makefile.am, README, README.txt, autopackage/Makefile.am, debian/.gitignore, debian/docs: During 'make dist', include directories not tracked using Automake 2007-09-30 Sylvain Beucler * share/freedink/Makefile.am, src/init.c: dink.bmp -> freedink.bmp 2007-09-30 Sylvain Beucler * ChangeLog, NEWS, configure.ac, debian/.gitignore, debian/BUILD, debian/README, debian/README.Debian, debian/changelog, debian/compat, debian/control, debian/copyright, debian/docs, debian/freedink.1, debian/freedink.xpm, debian/install, debian/manpages, debian/menu, debian/rules, debian/update-autotools-config.sh, debian/watch: Basic Debian package 2007-09-28 Sylvain Beucler * .gitignore, autotools/.gitignore, configure.ac, doc/cross.txt, doc/static-build.txt, src/Makefile.am: Implement --enable-shared in the build system 2007-09-27 Sylvain Beucler * doc/cross.txt: More static cross-compilation, with SDL_ttf and FreeType2 2007-09-27 Sylvain Beucler * doc/cross.txt: SDL_gfx patch for static builds + doc clean-up 2007-09-27 Sylvain Beucler * configure.ac: Note from Claudio Fontana about gnulib 2007-09-27 Sylvain Beucler * doc/cross.txt, doc/static-build.txt: Work on static compilation 2007-09-26 Sylvain Beucler * test/sdl/joytest.c, test/sdl/mousetest.c: Use the canonical form for main() - SDL won't be able to override it under Woe otherwise. 2007-09-26 Sylvain Beucler * doc/cross.txt, src/Makefile.am: More cross-compilation notes 2007-09-26 Sylvain Beucler * src/dinkvar.c: Note about SDL_RLEACCEL 2007-09-25 Sylvain Beucler * doc/palettes.txt, src/freedink.c, src/init.c: Clean-up some old TODO notes 2007-09-25 Sylvain Beucler * src/freedink.c, src/gfx.c: Clarify the palette work 2007-09-25 Sylvain Beucler * src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx.h, src/gfx_tiles.c, src/gfx_utils.c: Wrap LoadBMP - now all loaded sprites and tiles use the final screen's palette once in memory 2007-09-24 Sylvain Beucler * src/gfx_utils.c: Add \n to the error message 2007-09-24 Sylvain Beucler * configure.ac: Define CPPFLAGS using sdl-config --cflags -- this makes AC_CHECK_HEADERS work (tip: Claudio Fontana) 2007-09-23 Sylvain Beucler * src/dinkvar.c, src/freedink.c, src/freedinkedit.c, src/gfx.c, src/gfx.h, src/init.c: Use only lpDDSBack - get rid of lpDDSPrimary which is superfluous with SDL (backbuffer and physical screen are managed through a unique SDL_Surface) 2007-09-23 Sylvain Beucler * configure.ac: Save SDL_CONFIG between ./configure invokations (useful when cross-compiling) 2007-09-23 Sylvain Beucler * src/dinkvar.c: Fix display of the 'PleaseWait' animation 2007-09-20 Sylvain Beucler * configure.ac, doc/cross.txt, gnulib/lib/.gitignore, src/.gitignore, src/Makefile.am, src/freedink.c, src/freedinkedit.c, src/resource.h, src/woeres.rc, src/woeres.rc.in: Build system clean-ups, so we can cross-compile with a separate build dir. 2007-09-20 Sylvain Beucler * doc/framerate.txt, doc/roadmap.txt, doc/v1.08.txt: Update documentation 2007-09-20 Sylvain Beucler * configure.ac, src/dinkvar.c, src/dinkvar.h, src/init.c, src/update_frame.c, test/sdl/.gitignore: Use SDL_gfx to limit framerate to 60, plus v1.08 Dink speed adjustments. 2007-09-19 Sylvain Beucler * test/sdl/Makefile, test/sdl/joytest.c, test/sdl/mousetest.c, test/sdl/ticks.c: Add a test for waiting for a very small time (1ms) 2007-09-18 Sylvain Beucler * src/update_frame.c: First attempt to port v108's fixed game speed. 2007-09-18 Sylvain Beucler * doc/cross.txt: Remember to clean old native object files before cross-compiling ;) 2007-09-17 Sylvain Beucler * configure.ac: Check for SDL headers 2007-09-17 Sylvain Beucler * doc/cross.txt: Additional notes 2007-09-17 Sylvain Beucler * .gitignore, src/.gitignore: Move up some exclusions to match gnulib 2007-09-17 Sylvain Beucler * gnulib/lib/Makefile.am, gnulib/lib/dummy.c, gnulib/lib/getopt.c, gnulib/lib/getopt1.c, gnulib/lib/getopt_.h, gnulib/lib/getopt_int.h, gnulib/lib/gettext.h, gnulib/lib/unistd_.h, gnulib/m4/getopt.m4, gnulib/m4/gnulib-common.m4, gnulib/m4/gnulib-tool.m4, gnulib/m4/include_next.m4, gnulib/m4/onceonly_2_57.m4, gnulib/m4/unistd_h.m4: Add Gnulib files that were missed due to the default .gitignore (?) 2007-09-17 Sylvain Beucler * Makefile.am, autotools/.gitignore, autotools/.gitignore~, configure.ac, doc/gnulib.txt, gnulib/lib/.gitignore, gnulib/m4/.gitignore, gnulib/m4/gnulib-cache.m4, gnulib/m4/gnulib-comp.m4, src/Makefile.am: Add getopt (not in mingw) via Gnulib 2007-09-17 Sylvain Beucler * autopackage/default.apspec: Remove generated file 2007-09-17 Sylvain Beucler * NEWS, autopackage/.gitignore, configure.ac, src/Makefile.am, src/freedink.c, src/freedinkedit.c, src/init.c, src/io_util.c: Use getopt (distcheck happy) 2007-09-16 Sylvain Beucler * configure.ac, doc/cross.txt, freedink.rc, share/freedink/Makefile.am, src/Makefile.am, src/woeres.rc: Add support for windres (i.e. Woe .exe icons) in the build system. 2007-09-16 Sylvain Beucler * doc/autopackage.txt: More Autopackage doc 2007-09-16 Sylvain Beucler * .gitignore, Makefile.am, autopackage/Makefile.am, autopackage/Makefile.autopackage, autopackage/default.apspec, autopackage/default.apspec.in, autopackage/extract-package.sh, bootstrap, configure.ac, doc/autopackage.txt: Autopackage basic support 2007-09-16 Sylvain Beucler * NEWS, configure.ac, src/Makefile.am, src/io_util.c: Small build system fixes 2007-09-16 Sylvain Beucler * configure.ac, doc/cross.txt, src/Makefile.am, src/freedink.c, src/freedinkedit.c, src/io_util.c: HOWTO cross-compile 2007-09-16 Sylvain Beucler * doc/CPP2C.txt: Copy some C++->C notes from the previous port, which are still relevant in this one. 2007-09-16 Sylvain Beucler * src/init.c, test/sdl/.gitignore, test/sdl/Makefile, test/sdl/msb.c: Implement transparency for the application icon 2007-09-16 Sylvain Beucler * vc6/.gitignore, vc6/freedink.dsp, vc6/freedink.dsw, vc6/freedinkedit.dsp, vc6/readme.txt: Remove VC6 workspace files. FreeDink needs MinGW as part of the portability layer. 2007-09-16 Sylvain Beucler * utils/ffrextract.c: Add FastFile recursive extractor, an old program of mine. 2007-09-16 Sylvain Beucler * Makefile.am, acsite.m4, configure.ac, configure.sh, doc/binreloc.txt, share/Makefile.am, share/README.fonts, share/README.txt, share/freedink/Makefile.am, share/freedink/README.fonts, share/freedink/README.txt, src/Makefile.am, src/binreloc.c, src/binreloc.h, src/dinkvar.c, src/freedink.c, src/init.c, src/io_util.c, src/io_util.h: Add BinReloc support 2007-09-15 Sylvain Beucler * .gitignore, ChangeLog, Makefile, Makefile.am, NEWS, README, README.fonts, THANKS, autotools/.gitignore, autotools/.gitignore~, bgm.c, bgm.h, bootstrap, compress.c, configure.ac, configure.sh, dev-cpp/.cvsignore, dev-cpp/.gitignore, dinkedit_res/README.txt, dinkvar.c, dinkvar.h, doc/ncc.txt, doc/valgrind.txt, fastfile.c, fastfile.h, freedink.c, freedink.h, freedinkedit.c, gfx.c, gfx.h, gfx_fonts.c, gfx_fonts.h, gfx_tiles.c, gfx_tiles.h, gfx_utils.c, gfx_utils.h, init.c, init.h, input.c, input.h, io_util.c, io_util.h, rect.c, rect.h, resource.h, sfx.c, sfx.h, share/Makefile.am, share/README.fonts, share/README.txt, src/.gitignore, src/Makefile.am, src/bgm.c, src/bgm.h, src/compress.c, src/dinkvar.c, src/dinkvar.h, src/fastfile.c, src/fastfile.h, src/freedink.c, src/freedink.h, src/freedinkedit.c, src/gfx.c, src/gfx.h, src/gfx_fonts.c, src/gfx_fonts.h, src/gfx_tiles.c, src/gfx_tiles.h, src/gfx_utils.c, src/gfx_utils.h, src/init.c, src/init.h, src/input.c, src/input.h, src/io_util.c, src/io_util.h, src/rect.c, src/rect.h, src/resource.h, src/sfx.c, src/sfx.h, src/str_util.c, src/str_util.h, src/update_frame.c, src/update_frame.h, str_util.c, str_util.h, update_frame.c, update_frame.h, vc6/.cvsignore, vc6/.gitignore: First steps of autoconfiscation 2007-09-15 Sylvain Beucler * .gitignore, doc/ncc.txt: Instructions for using NCC 2007-09-15 Sylvain Beucler * .cvsignore, .gitignore: Converted .cvsignore to .gitignore 2007-09-15 Sylvain Beucler * Makefile, bgm.c, dinkvar.c, dinkvar.h, doc/valgrind.txt, freedink.c, freedink.h, freedinkedit.c, gfx_fonts.c, gfx_tiles.c, init.c, input.c, input.h, sfx.c, sfx.h, update_frame.c: Switch from C++ to C 2007-09-15 Sylvain Beucler * bgm.c, bgm.cpp, dinkvar.c, dinkvar.cpp, freedink.c, freedink.cpp, freedinkedit.c, freedinkedit.cpp, gfx.c, gfx.cpp, gfx_fonts.c, gfx_fonts.cpp, gfx_tiles.c, gfx_tiles.cpp, gfx_utils.c, gfx_utils.cpp, init.c, init.cpp, sfx.c, sfx.cpp, update_frame.c, update_frame.cpp: Renamed *.ccpp->*.c 2007-09-14 Sylvain Beucler * Makefile, bgm.cpp, dinkvar.cpp, freedink.cpp, freedinkedit.cpp, gfx.cpp, gfx_fonts.cpp, gfx_tiles.cpp, init.cpp, sfx.cpp, update_frame.cpp: Pedantic fixes to compile under FC5 2007-09-14 Sylvain Beucler * doc/dependencies.txt: SDL packages names. 2007-09-12 Sylvain Beucler * README.fonts: Precisions on Liberation fonts license 2007-09-12 Sylvain Beucler * freedink.cpp, gfx_fonts.cpp, rect.c: Fixed rect_inflate (and bomb range). Fixed a crash in debug mode (font not initialized yet). 2007-09-09 Sylvain Beucler * freedinkedit.cpp: Mouse+keyboard basically working under FreeDinkedit 2007-09-09 Sylvain Beucler * dinkvar.cpp, dinkvar.h, freedink.cpp, init.cpp: Better input handling: cursor can be controlled by keyboard; clean exit through SDL_QUIT events and modified evens loop; respect 200ms delay between a-z keys invokations. 2007-09-09 Sylvain Beucler * test/sdl/Makefile, test/sdl/README, test/sdl/joytest.c, test/sdl/mousetest.c: Fixes in joytest, add mousetest for mouse+keyboard cursor. 2007-09-08 Sylvain Beucler * doc/changes.txt: Made joystick threshold greater. 2007-09-08 Sylvain Beucler * dinkvar.cpp, freedink.cpp, freedinkedit.cpp, gfx_utils.cpp, init.cpp: Tidy file opening mode (text vs. binary). Implement joystick support. 2007-09-08 Sylvain Beucler * doc/portability.txt: Answer from bug-gnulib about MAX_PATH 2007-09-07 Sylvain Beucler * test/sdl/Makefile, test/sdl/README, test/sdl/joytest.c: Add a simple program to test your gamepad. 2007-08-26 Sylvain Beucler * doc/dfarc.txt: Precisions. 2007-08-26 Sylvain Beucler * doc/dfarc.txt: More details on DFArc's bugs in the Tar format. 2007-08-25 Sylvain Beucler * doc/dfarc.txt: Precisions after working on DFArc15 some more. 2007-08-25 Sylvain Beucler * doc/v1.08.txt: 2 other sources of information 2007-08-25 Sylvain Beucler * doc/portability.txt: Note on ciconvert() 2007-08-25 Sylvain Beucler * doc/portability.txt: Notes on portability decisions. 2007-08-24 Sylvain Beucler * COPYING: Update copy of the GNU GPL to version 3 2007-08-23 Sylvain Beucler * freedink.cpp: Use the original engine's key-%d.c keycodes (for letters only) 2007-08-23 Sylvain Beucler * gfx_tiles.cpp: More info in an error message 2007-08-23 Sylvain Beucler * dinkvar.cpp: Fixed a crash 2007-08-22 Sylvain Beucler * doc/dfarc.txt: A small analysis of v108's frontend. 2007-08-19 Sylvain Beucler * Makefile, freedink.rc: TODO already done: adding metadata to .exe 2007-08-19 Sylvain Beucler * doc/keycodes.txt: Notes and tests with SDL and keycodes. 2007-08-19 Sylvain Beucler * : Convert the .ico in BMP for SDL to use as Window icon. 2007-08-19 Sylvain Beucler * doc/roadmap.txt, doc/sound.txt, doc/tests.txt, freedinkedit.cpp, init.cpp, sfx.cpp: A couple fixes. 2007-08-18 Sylvain Beucler * dinkvar.cpp, doc/changes.txt, freedink.cpp: Interestingly enough, Dink loads a sprite after it failed drawing it for the first time. Tough bug. 2007-08-18 Sylvain Beucler * dinkvar.cpp: Fix array-out-of-bound condition that made script_attach(1000) lose the current position in the script 2007-08-17 Sylvain Beucler * dinkvar.cpp, dinkvar.h, freedink.cpp, freedinkedit.cpp, gfx_fonts.cpp, gfx_fonts.h, rect.c, rect.h, str_util.c, str_util.h, update_frame.cpp: Make it compile under Woe again. 2007-08-17 Sylvain Beucler * freedinkedit.cpp: The editor runs - now we gotta find a solution for keycodes madness. 2007-08-17 Sylvain Beucler * doc/cleanup.txt, freedinkedit.cpp: The editor compiles under GNU/Linux - not that it runs yet :) 2007-08-17 Sylvain Beucler * freedinkedit.cpp: Comment out DX code in the editor 2007-08-15 Sylvain Beucler * doc/sound.txt: Notes on MIDI 2007-08-15 Sylvain Beucler * Makefile, dinkvar.cpp, doc/troubleshootings.txt, freedink.cpp, freedinkedit.cpp, gfx_fonts.cpp, init.cpp, io_util.c: The game can be played fine - except essentially for sound pitch shift. 2007-08-15 Sylvain Beucler * Makefile, bgm.cpp, dinkvar.cpp, freedink.cpp, gfx_fonts.cpp, gfx_tiles.cpp, gfx_utils.cpp, gfx_utils.h, init.cpp, io_util.c, io_util.h, rect.c, sfx.cpp, str_util.h: The game runs - with bugs. Implemented wrapper for filesystem case-insensitivity. 2007-08-15 Sylvain Beucler * AUTHORS, Makefile, dinkvar.cpp, dinkvar.h, fastfile.c, fastfile.h, freedink.cpp, gfx.cpp, gfx.h, gfx_fonts.cpp, gfx_fonts.h, gfx_tiles.cpp, gfx_tiles.h, rect.c, rect.h, sfx.cpp, sfx.h, str_util.c, str_util.h, string_util.c, string_util.h, update_frame.cpp: The game compiles under GNU/Linux 2007-08-15 Sylvain Beucler * : Recommit LiberationSans-Regular.ttf as binary 2007-08-14 Sylvain Beucler * dinkvar.cpp, dinkvar.h, doc/roadmap.txt, freedink.cpp, freedink.h, freedinkedit.cpp, gfx.cpp, gfx_fonts.cpp, gfx_fonts.h, gfx_tiles.cpp, update_frame.cpp, update_frame.h: Commented DX code - game working, editor currently broken 2007-08-12 Sylvain Beucler * AUTHORS, freedinkedit.cpp: FreeDinkEdit partially converted to the SDL input system; code should be ready for portability work now 2007-08-12 Sylvain Beucler * AUTHORS, dinkvar.cpp, dinkvar.h, freedink.cpp, freedinkedit.cpp, init.cpp, update_frame.cpp: FreeDink converted to the SDL input system. Keycodes still differ from the original. 2007-08-12 Sylvain Beucler * doc/roadmap.txt, doc/tests.txt: Doc update 2007-08-12 Sylvain Beucler * dinkvar.cpp, freedink.cpp, freedinkedit.cpp, gfx_fonts.cpp: freedinkedit.cpp graphics ported to SDL 2007-08-12 Sylvain Beucler * dinkvar.h, freedinkedit.cpp: Improved readability of freedinkedit.cpp, mainly by translating keycodes to constants 2007-08-11 Sylvain Beucler * freedinkedit.cpp, update_frame.h: More FreeDinkEdit comments 2007-08-11 Sylvain Beucler * doc/changes.txt, freedinkedit.cpp: More progress on the editor 2007-08-11 Sylvain Beucler * freedinkedit.cpp: Progress on sprites support for the editor 2007-08-11 Sylvain Beucler * AUTHORS, Makefile, README.fonts, dinkvar.cpp, doc/cleanup.txt, doc/game_libraries.txt, doc/roadmap.txt, doc/tests.txt, freedink.cpp, freedinkedit.cpp, gfx_fonts.cpp, gfx_fonts.h, init.cpp, update_frame.cpp: Font support in the game, abeilt not perfect; editor crashing 2007-08-10 Sylvain Beucler * Makefile, dinkvar.cpp: Scaling; bugfixes; indentation 2007-08-10 Sylvain Beucler * dinkvar.cpp, fastfile.c, freedink.cpp, update_frame.cpp: More sprite displayed with SDL - needs testing 2007-08-09 Sylvain Beucler * dinkvar.cpp, freedink.cpp: Fix clipping; more blits converted to SDL 2007-08-08 Sylvain Beucler * AUTHORS, dinkvar.cpp, dinkvar.h, freedink.cpp, freedinkedit.cpp, update_frame.cpp: Sprite support, the beginning 2007-08-07 Sylvain Beucler * doc/sound.txt: Precise the sound implementation options. 2007-08-07 Sylvain Beucler * doc/changes.txt, doc/sound.txt, doc/tests.txt: Explanation of a palette bug; details for volume and panning unit conversion for the sound 2007-08-05 Sylvain Beucler * freedink.cpp, init.cpp, update_frame.cpp: Fixes/clean-up 2007-08-05 Sylvain Beucler * doc/TODO, doc/changes.txt, doc/cleanup.txt, doc/existing_bugs.txt, doc/game_libraries.txt, doc/palettes.txt, doc/roadmap.txt, doc/tests.txt, doc/woe-compile.txt: Update/complete developer documentation 2007-08-05 Sylvain Beucler * dinkvar.cpp, freedinkedit.cpp: Replicate changes in the background system to FreeDinkEdit 2007-08-05 Sylvain Beucler * freedink.cpp: Fixes for fading and splash screen 2007-08-05 Sylvain Beucler * dinkvar.cpp, freedink.cpp, update_frame.cpp: Palettes work better again 2007-08-05 Sylvain Beucler * utils/bmpinspect.c, utils/bmpinvertpalette.c: BMP debug utilities 2007-08-05 Sylvain Beucler * dinkvar.cpp, freedink.cpp, gfx.cpp, gfx_tiles.cpp, gfx_utils.cpp: Better understanding of how palettes work 2007-08-04 Sylvain Beucler * dinkvar.cpp, freedink.cpp, gfx.cpp, gfx.h, gfx_utils.cpp, init.cpp, update_frame.cpp: More work on palettes (fades, better model) - white/black inversion not resolved yet, so Lyna's Story shadow mode is ugly. 2007-08-04 Sylvain Beucler * freedink.cpp, init.cpp: Enable back DX fullscreen mode for testing; start a SDL window only in windowed mode 2007-08-03 Sylvain Beucler * dinkvar.cpp, freedink.cpp, init.cpp: A bit of clean-up 2007-08-03 Sylvain Beucler * dinkvar.cpp, freedink.cpp, gfx.cpp, gfx.h: Better palette handling 2007-08-03 Sylvain Beucler * dinkvar.cpp, dinkvar.h, freedink.cpp, gfx.cpp, gfx_tiles.cpp, gfx_tiles.h: More encapsulation for tiles; work on palette changes 2007-08-03 Sylvain Beucler * dinkvar.cpp, fastfile.c, freedink.cpp, utils/ffinspect.c: Fix in fastfile to support Mystery Island's bad dir.ff 2007-08-03 Sylvain Beucler * utils/ffinspect.c: Added dir.ff inspector 2007-08-03 Sylvain Beucler * Makefile, dinkvar.cpp, dinkvar.h, freedink.cpp, freedinkedit.cpp, gfx_tiles.cpp, gfx_tiles.h, gfx_utils.cpp: Background tiles now work with SDL under FreeDinkEdit 2007-08-03 Sylvain Beucler * freedink.cpp: Temporarily fix freeze probably due to simultaneous use of DX and SDL 2007-08-02 Sylvain Beucler * AUTHORS, Makefile, dinkvar.cpp, dinkvar.h, freedink.cpp, freedinkedit.cpp, gfx.cpp, gfx.h, gfx_utils.cpp, gfx_utils.h, init.cpp, update_frame.cpp, vc6/freedink.dsp: Background now works, with screen transition and palette. 2007-08-02 Sylvain Beucler * Makefile, dinkvar.cpp, dinkvar.h, freedink.cpp, freedinkedit.cpp, gfx.cpp, gfx.h, gfx_tiles.cpp, gfx_tiles.h, update_frame.cpp, update_frame.h: Separated graphics and tile-related functions + a bit of clean-up 2007-08-02 Sylvain Beucler * Makefile, dinkvar.cpp, dinkvar.h, freedink.cpp, init.cpp, init.h, update_frame.cpp: Draw backgrounds in a separate SDL window 2007-08-01 Sylvain Beucler * doc/game_libraries.txt, doc/sound.txt, doc/troubleshootings.txt, doc/woe-compile.txt: Describe recommended installation path. Describe how to compile libSDL with DX support to avoid sound lags. 2007-08-01 Sylvain Beucler * doc/roadmap.txt, doc/woe-compile.txt: A couple documentation precisions 2007-08-01 Sylvain Beucler * Makefile: Use sdl-config to determine paths to libsdl 2007-08-01 Sylvain Beucler * doc/game_libraries.txt, doc/roadmap.txt, doc/sdl.txt, doc/woe-compile.txt: Update and complete compilation documentation. More info about game libraries. 2007-08-01 Sylvain Beucler * doc/cvs.txt: update Savannah CVS instructions 2007-08-01 Sylvain Beucler * doc/cleanup_g++.txt: translate remaining French comment 2007-07-31 Sylvain Beucler * doc/v1.08.txt: Diffs v1.07<->v1.08: HOWTO and first glance 2007-07-31 Sylvain Beucler * doc/dink_versions.txt, doc/v1.08.txt: More about v1.08 2007-07-31 Sylvain Beucler * doc/dink_versions.txt: Sum-up all the source code derivates around 2005-09-30 Sylvain Beucler * doc/roadmap.txt, doc/sdl.txt: Precisions 2005-09-29 Sylvain Beucler * vc6/freedinkedit.dsp: [no log message] 2005-09-29 Sylvain Beucler * unused.cpp: [no log message] 2005-09-29 Sylvain Beucler * AUTHORS, bgm.cpp, dinkvar.cpp, dinkvar.h, freedink.cpp, freedink.h, freedinkedit.cpp, sfx.cpp: Clean-up 2005-09-27 Sylvain Beucler * .cvsignore: Ignored executables. 2005-09-27 Sylvain Beucler * .cvsignore: Added .res files. 2005-09-27 Sylvain Beucler * README.txt, doc/GNU-integration.txt: Doc fixes. 2005-09-27 Sylvain Beucler * Makefile: Removed references to ffent.h 2005-09-27 Sylvain Beucler * README.txt: Typos. 2005-09-27 Sylvain Beucler * doc/cvs.txt, doc/woe-compile.txt: Added docs for Savannah CVS access. 2005-09-27 Sylvain Beucler * Second port from original source. Initial import. Compiles with mingw, uses SDL for audio CDs and GetTicks, SDL_Mixer for MIDIs and SFX, sabetts' fastfile, separate compilation (no .cpp #include's). freedink-108.4+dfsg/README0000644000175000017500000000761012330466347012714 0ustar memeThis is GNU FreeDink, a portable and enhanced version of the Dink Smallwood game engine. FreeDink is free software, and you are welcome to redistribute it under certain conditions; see the GNU GPL for details. ( cf. COPYING and http://gnu.org/licenses/gpl.html ) Building -------- If you are compiling GNU FreeDink from sources, check BUILD for instructions. About Dink Smallwood -------------------- Dink Smallwood is an adventure/role-playing game, similar to Zelda, made by RTsoft. Besides twisted humour, it includes the actual game editor, allowing players to create hundreds of new adventures called Dink Modules or D-Mods for short. The Dink Network (http://www.dinknetwork.com/) hosts a copy of almost all of them. GNU FreeDink ------------ GNU FreeDink is a new and portable version of the game engine, which runs the original game as well as its D-Mods, with close compatibility, under multiple platforms. FreeDink can run in 2 modes: * v1.08 (default): this matches the latest release of the Dink engine, which includes some new features and some backward-incompatible changes. Use it for recent D-Mods. * v1.07 (with option '--v1.07'): this matches v1.07 of the Dink engine, essentially unmodified since 1998. Use it to play D-Mods released before 2006. Next step is extending the engine while preserving accurate support for released D-Mods. On the technical level, the internals of the engines experience a clean-up to allow for portability and later improvements. Check out FreeDink's website at http://www.freedink.org/ . Game keys --------- Keyboard controls Makes Dink walk/push Attack/Use equipped item/Select option Talk/Examine/Manipulate Use equipped magic Inventory/Equip screen Options Display map (if you have one) Toggle fullscreen mode When maintained, enable Turbo mode Keyboard controls: Inventory/Equip screen Highlight Item/Weapon or Magic Select highlighted Item/Weapon or Magic Exit inventory screen Joystick/Gamepad controls Makes Dink walk/push