summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO29
-rw-r--r--CMakeLists.txt171
-rw-r--r--PKGBUILD36
-rw-r--r--config.h.in51
-rw-r--r--epos37
-rw-r--r--fix-x86_64.patch155
6 files changed, 479 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..f498e62e29be
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,29 @@
+# Generated by mksrcinfo v8
+# Sun Jan 15 18:04:12 UTC 2017
+pkgbase = epos
+ pkgdesc = A free text to speech synthesis system
+ pkgver = 2.4.85
+ pkgrel = 1
+ url = http://epos.ure.cas.cz/
+ arch = i686
+ arch = x86_64
+ license = GPL
+ makedepends = gcc
+ makedepends = cmake>=2.6
+ makedepends = pulseaudio
+ backup = etc/rc.d/epos
+ source = http://downloads.sourceforge.net/project/epos/epos/2-4-85/ep2-4-85.tgz
+ source = http://downloads.sourceforge.net/project/epos/voices/Czech%20_%20Machac%2BViolka%2C%20July%2005/epos-tdp.tgz
+ source = epos
+ source = fix-x86_64.patch
+ source = CMakeLists.txt
+ source = config.h.in
+ md5sums = 2fef78d8bd2ac8dedad4dc643c20eb19
+ md5sums = 10b1af13e07bcd2e8b3ac404b3ad12b7
+ md5sums = fc2df9ba60c2a362f579a404f4f6bf15
+ md5sums = 559a6fbe2cab5a8a0f21b8fe6675f780
+ md5sums = 5cd671da7ae5f397d3c8c27b08f8044e
+ md5sums = 8da3f83fc1c618c234dbd5a0f9c97f0b
+
+pkgname = epos
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 000000000000..3c45c62f24a0
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,171 @@
+project (epos)
+cmake_minimum_required (VERSION 2.6)
+
+set (COMPILE_FLAGS
+ "-Wall" "-Wunused" "-pipe" "-gstabs+" "-fdefer-pop")
+
+#option (WANT_DMALLOC "dmalloc debugging library" OFF)
+option (FORGET_CHARSETS "Do not allow automatic conversions between character sets" OFF)
+
+include (CheckIncludeFile)
+CHECK_INCLUDE_FILE ("strings.h" HAVE_STRINGS_H)
+CHECK_INCLUDE_FILE ("string.h" HAVE_STRING_H)
+CHECK_INCLUDE_FILE ("io.h" HAVE_IO_H)
+CHECK_INCLUDE_FILE ("rx.h" HAVE_RX_H)
+CHECK_INCLUDE_FILE ("regex.h" HAVE_REGEX_H)
+CHECK_INCLUDE_FILE ("errno.h" HAVE_ERRNO_H)
+CHECK_INCLUDE_FILE ("wait.h" HAVE_WAIT_H)
+CHECK_INCLUDE_FILE ("unistd.h" HAVE_UNISTD_H)
+CHECK_INCLUDE_FILE ("unix.h" HAVE_UNIX_H)
+CHECK_INCLUDE_FILE ("signal.h" HAVE_SIGNAL_H)
+CHECK_INCLUDE_FILE ("syslog.h" HAVE_SYSLOG_H)
+CHECK_INCLUDE_FILE ("time.h" HAVE_TIME_H)
+CHECK_INCLUDE_FILE ("sys/soundcard.h" HAVE_SYS_SOUNDCARD_H)
+CHECK_INCLUDE_FILE ("sys/audio.h" HAVE_SYS_AUDIO_H)
+CHECK_INCLUDE_FILE ("sys/stat.h" HAVE_SYS_STAT_H)
+CHECK_INCLUDE_FILE ("sys/ioctl.h" HAVE_SYS_IOCTL_H)
+CHECK_INCLUDE_FILE ("sys/socket.h" HAVE_SYS_SOCKET_H)
+CHECK_INCLUDE_FILE ("sys/select.h" HAVE_SYS_SELECT_H)
+CHECK_INCLUDE_FILE ("sys/time.h" HAVE_SYS_TIME_H)
+CHECK_INCLUDE_FILE ("sys/types.h" HAVE_SYS_TYPES_H)
+CHECK_INCLUDE_FILE ("sys/termios.h" HAVE_SYS_TERMIOS_H)
+CHECK_INCLUDE_FILE ("netdb.h" HAVE_NETDB_H)
+CHECK_INCLUDE_FILE ("netinet/in.h" HAVE_NETINET_IN_H)
+CHECK_INCLUDE_FILE ("linux/kd.h" HAVE_LINUX_KD_H)
+CHECK_INCLUDE_FILE ("sys/kernel.h" HAVE_SYS_KERNEL_H)
+CHECK_INCLUDE_FILE ("sys/name.h" HAVE_SYS_NAME_H)
+CHECK_INCLUDE_FILE ("fcntl.h" HAVE_FCNTL_H)
+
+include (CheckFunctionExists)
+CHECK_FUNCTION_EXISTS ("strerror" HAVE_STRERROR)
+CHECK_FUNCTION_EXISTS ("strdup" HAVE_STRDUP)
+CHECK_FUNCTION_EXISTS ("fork" HAVE_FORK)
+CHECK_FUNCTION_EXISTS ("getegid" HAVE_GETEGID)
+CHECK_FUNCTION_EXISTS ("strcasecmp" HAVE_STRCASECMP)
+CHECK_FUNCTION_EXISTS ("stricmp" HAVE_STRICMP)
+CHECK_FUNCTION_EXISTS ("gethostname" HAVE_GETHOSTNAME)
+CHECK_FUNCTION_EXISTS ("gettimeofday" HAVE_GETTIMEOFDAY)
+CHECK_FUNCTION_EXISTS ("qnx_name_attach" HAVE_QNX_NAME_ATTACH)
+CHECK_FUNCTION_EXISTS ("abort" HAVE_ABORT)
+
+include (CheckLibraryExists)
+CHECK_LIBRARY_EXISTS (socket main "${CMAKE_SYSTEM_LIBRARY_PATH}" HAVE_LIBSOCKET)
+CHECK_LIBRARY_EXISTS (lnsl main "${CMAKE_SYSTEM_LIBRARY_PATH}" HAVE_LIBLNSL)
+
+include (CheckCXXSourceCompiles)
+
+CHECK_CXX_SOURCE_COMPILES (
+"int main () {bool b; return 0;}"
+HAVE_BOOL)
+
+if (HAVE_SYS_SOCKET_H)
+ set (_sockethdr "<sys/socket.h>")
+else (HAVE_SYS_SOCKET_H)
+ set (_sockethdr "<sys/types.h>")
+endif (HAVE_SYS_SOCKET_H)
+
+CHECK_CXX_SOURCE_COMPILES (
+"#include ${_sockethdr}
+socklen_t x;
+int main () {return 0;}"
+HAVE_SOCKLEN_T)
+
+if (HAVE_RX_H)
+ set (_regexhdr "<rx.h>")
+elseif (HAVE_REGEX_H)
+ set (_regexhdr "<regex.h>")
+else (HAVE_RX_H)
+ set (_regexhdr "\"rx.h\"")
+endif (HAVE_RX_H)
+
+CHECK_CXX_SOURCE_COMPILES (
+"#include <sys/types.h>
+#include ${_regexhdr}
+int main () {int result = REG_EEND; return 0;}"
+HAVE_REG_EEND)
+
+CHECK_CXX_SOURCE_COMPILES (
+"#include <sys/types.h>
+#include ${_regexhdr}
+int main () {regmatch_t rt; rt.rm_so; return 0;}"
+HAVE_RM_SO)
+
+CHECK_CXX_SOURCE_COMPILES (
+"template <class any_type> class some_type{}; template class some_type<int>;
+int main () {return 0;}"
+HAVE_TEMPL_INST)
+
+include (CheckCXXSourceRuns)
+
+CHECK_CXX_SOURCE_RUNS (
+"extern \"C\" void exit(int);
+enum t { a, b, c };
+struct s {
+ t m : 2;
+ t n : 2;
+ t o : 2;
+} arr[2] = {{a, b, c},{c, c, c}};
+int main () {exit (arr[1].n == 2);}"
+BROKEN_ENUM_BITFIELDS)
+
+configure_file ("${epos_SOURCE_DIR}/config.h.in" "${epos_BINARY_DIR}/config.h")
+include_directories ("${epos_BINARY_DIR}")
+
+set (epos_HEADERS
+ src/common.h src/defaults.h
+ src/unit.h src/parser.h
+ src/rule.h src/text.h
+ src/encoding.h src/interf.h
+ src/function.h src/options.h
+ src/hash.h src/synth.h
+ src/voice.h src/exc.h)
+list (APPEND epos_HEADERS
+ src/waveform.h src/ktdsyn.h
+ src/ptdsyn.h src/lpcsyn.h
+ src/tdpsyn.h src/tcpsyn.h
+ src/slab.h src/rx.h
+ src/client.h src/agent.h
+# If these didn't have this stupid extension,
+# they could be here. CMake sees them
+# as files to compile, not headers.
+# src/nnet.cc src/block.cc src/exc.cc
+ src/options.lst)
+
+set (epos_MODULES_SOURCES
+ src/parser.cc src/unit.cc src/rule.cc
+ src/text.cc src/encoding.cc
+ src/interf.cc src/function.cc
+ src/options.cc src/synth.cc src/ktdsyn.cc
+ src/ptdsyn.cc src/lpcsyn.cc src/tdpsyn.cc
+ src/tcpsyn.cc src/voice.cc src/waveform.cc)
+
+set (epos_EPOS_SOURCES
+ ${epos_MODULES_SOURCES}
+ src/hashd.cc src/daemon.cc src/agent.cc
+ src/ttscp.cc src/nonblock.cc src/client.cc)
+set (epos_EPOSM_SOURCES
+ ${epos_MODULES_SOURCES}
+ src/monolith.cc src/hash.cc src/client.cc)
+
+if (WIN32)
+ set (epos_PLATFORM_SOURCES
+ src/rx.c)
+ list (APPEND epos_EPOS_SOURCES
+ arch/win/service/service.cpp
+ arch/win/service/service.h)
+endif (WIN32)
+
+add_definitions ("-DBASE_DIR=${CMAKE_INSTALL_PREFIX}/lib/epos")
+
+add_executable (epos ${epos_EPOS_SOURCES} ${epos_PLATFORM_SOURCES} ${epos_HEADERS})
+add_executable (eposm EXCLUDE_FROM_ALL ${epos_EPOSM_SOURCES} ${epos_PLATFORM_SOURCES} ${epos_HEADERS})
+target_link_libraries (epos pulse-simple pulse)
+
+add_executable (say src/say.cc ${epos_HEADERS})
+add_executable (vrfy src/vrfy.cc)
+add_executable (gauge src/gauge.cc ${epos_HEADERS})
+
+install (TARGETS epos say vrfy gauge RUNTIME DESTINATION bin)
+install (DIRECTORY cfg/ DESTINATION lib/epos)
+install (DIRECTORY doc DESTINATION lib/epos)
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..0755f3bc5490
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,36 @@
+# Contributor: Přemysl Janouch <p.janouch@gmail.com>
+# Contributor: Alois Belaska <lloyd@centrum.cz>
+# Maintainer: Jose Riha <jose1711 gmail com>
+
+pkgname=epos
+arch=('i686' 'x86_64')
+pkgver=2.4.85
+pkgrel=1
+license=('GPL')
+pkgdesc="A free text to speech synthesis system"
+backup=(etc/rc.d/epos)
+url='http://epos.ure.cas.cz/'
+source=('http://downloads.sourceforge.net/project/epos/epos/2-4-85/ep2-4-85.tgz'
+ 'http://downloads.sourceforge.net/project/epos/voices/Czech%20_%20Machac%2BViolka%2C%20July%2005/epos-tdp.tgz'
+ epos fix-x86_64.patch CMakeLists.txt config.h.in)
+md5sums=('2fef78d8bd2ac8dedad4dc643c20eb19' '10b1af13e07bcd2e8b3ac404b3ad12b7'
+ 'fc2df9ba60c2a362f579a404f4f6bf15' '559a6fbe2cab5a8a0f21b8fe6675f780'
+ '5cd671da7ae5f397d3c8c27b08f8044e' '8da3f83fc1c618c234dbd5a0f9c97f0b')
+makedepends=('gcc' 'cmake>=2.6' 'pulseaudio')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -p0 < $srcdir/fix-x86_64.patch
+
+ cp $srcdir/CMakeLists.txt $srcdir/config.h.in .
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_SHARED=ON -DDISABLE_DEBUG=ON
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+
+ cp -R $srcdir/tdp $pkgdir/usr/lib/epos/inv
+ install -D -m755 ../epos $pkgdir/etc/rc.d/epos
+}
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 000000000000..4ba2b74fe4aa
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,51 @@
+#cmakedefine FORGET_CHARSETS
+
+#cmakedefine HAVE_BOOL
+#cmakedefine HAVE_SOCKLEN_T
+#cmakedefine HAVE_REG_EEND
+#cmakedefine HAVE_RM_SO
+#cmakedefine HAVE_TEMPL_INST
+#cmakedefine BROKEN_ENUM_BITFIELDS
+
+#cmakedefine HAVE_STRINGS_H
+#cmakedefine HAVE_STRING_H
+#cmakedefine HAVE_IO_H
+#cmakedefine HAVE_RX_H
+#cmakedefine HAVE_REGEX_H
+#cmakedefine HAVE_ERRNO_H
+#cmakedefine HAVE_WAIT_H
+#cmakedefine HAVE_UNISTD_H
+#cmakedefine HAVE_UNIX_H
+#cmakedefine HAVE_SIGNAL_H
+#cmakedefine HAVE_SYSLOG_H
+#cmakedefine HAVE_TIME_H
+#cmakedefine HAVE_SYS_SOUNDCARD_H
+#cmakedefine HAVE_SYS_AUDIO_H
+#cmakedefine HAVE_SYS_STAT_H
+#cmakedefine HAVE_SYS_IOCTL_H
+#cmakedefine HAVE_SYS_SOCKET_H
+#cmakedefine HAVE_SYS_SELECT_H
+#cmakedefine HAVE_SYS_TIME_H
+#cmakedefine HAVE_SYS_TYPES_H
+#cmakedefine HAVE_SYS_TERMIOS_H
+#cmakedefine HAVE_NETDB_H
+#cmakedefine HAVE_NETINET_IN_H
+#cmakedefine HAVE_LINUX_KD_H
+#cmakedefine HAVE_SYS_KERNEL_H
+#cmakedefine HAVE_SYS_NAME_H
+#cmakedefine HAVE_FCNTL_H
+
+#cmakedefine HAVE_STRERROR
+#cmakedefine HAVE_STRDUP
+#cmakedefine HAVE_FORK
+#cmakedefine HAVE_GETEGID
+#cmakedefine HAVE_STRCASECMP
+#cmakedefine HAVE_STRICMP
+#cmakedefine HAVE_GETHOSTNAME
+#cmakedefine HAVE_GETTIMEOFDAY
+#cmakedefine HAVE_QNX_NAME_ATTACH
+#cmakedefine HAVE_ABORT
+
+#cmakedefine HAVE_LIBSOCKET
+#cmakedefine HAVE_LIBLNSL
+
diff --git a/epos b/epos
new file mode 100644
index 000000000000..151c043359af
--- /dev/null
+++ b/epos
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/eposd`
+case "$1" in
+ start)
+ stat_busy "Starting Epos"
+ if [ -z "$PID" ]; then
+ /usr/bin/eposd
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon epos
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Epos"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon epos
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/fix-x86_64.patch b/fix-x86_64.patch
new file mode 100644
index 000000000000..932f05df2af0
--- /dev/null
+++ b/fix-x86_64.patch
@@ -0,0 +1,155 @@
+--- src/block.cc 2009-08-16 21:59:05.000000000 +0200
++++ src/block.cc.orig 2009-08-16 21:58:02.000000000 +0200
+@@ -124,7 +124,7 @@
+ l = cfg->rules;
+ rulist = (rule **)xmalloc(sizeof(rule *) * l);
+ n_rules = 0; again = 1;
+- while((int)(rulist[n_rules] = --again ? rulist[n_rules-1]
++ while((long)(rulist[n_rules] = --again ? rulist[n_rules-1]
+ : next_rule(file, vars, &again)) > END_OF_RULES) {
+ // rulist[n_rules]->set_dbg_tag(file);
+ if (++n_rules == l) {
+@@ -133,7 +133,7 @@
+ }
+ }
+ if (again > 1) diatax("Badly placed count");
+- if (rulist[n_rules] != terminator) switch ((int)rulist[n_rules]) {
++ if (rulist[n_rules] != terminator) switch ((long)rulist[n_rules]) {
+ case END_OF_BLOCK: diatax("No block to terminate");
+ case END_OF_CHOICE: diatax("No choice to terminate");
+ case END_OF_SWITCH: diatax("No length-based switch to terminate");
+@@ -546,8 +546,8 @@
+ {
+ try {
+ rule *r = parse_rule(file, vars, count);
+- if ((int)r > END_OF_RULES) return r;
+- if ((int)r < END_OF_RULES) diatax("No rule follows a conditional rule");
++ if ((long)r > END_OF_RULES) return r;
++ if ((long)r < END_OF_RULES) diatax("No rule follows a conditional rule");
+ shriek(811, fmt("No rule follows a conditional rule at the end of %s", file->current_file));
+ } catch (any_exception *e) {
+ if (e->code / 10 != 81) throw e;
+--- src/common.h.orig 2009-08-16 22:34:36.000000000 +0200
++++ src/common.h 2009-08-16 22:35:38.000000000 +0200
+@@ -94,8 +94,8 @@
+ #define U_INHERIT 125
+ #define U_VOID 120
+
+-extern int unused_variable;
+-#define unuse(x) (unused_variable = (int)(x));
++extern long unused_variable;
++#define unuse(x) (unused_variable = (long)(x));
+
+ extern const bool is_monolith;
+
+--- src/hashtmpl.cc.orig 2009-08-16 22:28:39.000000000 +0200
++++ src/hashtmpl.cc 2009-08-16 22:30:06.000000000 +0200
+@@ -362,7 +362,7 @@
+ tmp += strcspn(key, WHITESPACE);
+ if (*tmp) *tmp++ = 0; //terminate the key and go on
+ value = tmp += strspn(tmp, WHITESPACE);
+- if (!*value) switch ((int)no_data) {
++ if (!*value) switch ((long)no_data) {
+ /*
+ case DATA_EQUALS_KEY: value = key; break;
+ case DATA_OBLIGATORY: hash_shriek("No value specified in %s, line %d",filename,l); */
+--- src/interf.cc.orig 2009-08-16 22:39:44.000000000 +0200
++++ src/interf.cc 2009-08-16 22:41:33.000000000 +0200
+@@ -64,7 +64,7 @@
+
+ charxlat *esctab = NULL;
+
+-int unused_variable;
++long unused_variable;
+
+ void *xmall_ptr_holder;
+
+--- src/options.cc.orig 2009-08-16 22:09:37.000000000 +0200
++++ src/options.cc 2009-08-16 22:12:01.000000000 +0200
+@@ -77,7 +77,7 @@
+ }
+ }
+
+-#define LANGS_OFFSET ((int)&((configuration *)NULL)->langs)
++#define LANGS_OFFSET ((long)&((configuration *)NULL)->langs)
+ #define LANGS_LENGTH ((*cfg)->n_langs * sizeof(void *))
+
+ void cow_configuration(configuration **cfg)
+@@ -538,7 +538,7 @@
+ * The order of cowing cfg, lang and voice, is important.
+ */
+
+-#define VOICES_OFFSET ((int)&((lang *)NULL)->voices)
++#define VOICES_OFFSET ((long)&((lang *)NULL)->voices)
+ #define VOICES_LENGTH (this_lang->n_voices * sizeof(void *))
+
+ bool set_option(option *o, const char *value)
+--- src/options.lst.orig 2009-08-16 22:13:53.000000000 +0200
++++ src/options.lst 2009-08-16 22:16:51.000000000 +0200
+@@ -112,7 +112,7 @@
+ #define CHARSET O_CHARSET
+ #define DEBUG_AREA O_DBG_AREA
+
+-#define OPTION(member,name,type,default) {"C:" name + 2, type, OS_CFG, A_PUBLIC, A_PUBLIC, true, false, (int)&((configuration *)NULL)->member},
++#define OPTION(member,name,type,default) {"C:" name + 2, type, OS_CFG, A_PUBLIC, A_PUBLIC, true, false, (long)&((configuration *)NULL)->member},
+
+ #define OPTIONAGGR(x)
+ #define OPTIONITEM(w,x,y,z) OPTION (w,x,y,z)
+@@ -126,7 +126,7 @@
+ #define LNG_OPTION(member,member_lang,name,type,default) OPTION(member,name,type,default)
+
+ #define OPTIONARRAY(member, name, type, default, number) {"C:" name + 2, type, OS_CFG, \
+- A_PUBLIC, A_PUBLIC, true, true, (int)&((configuration *)NULL)->member},
++ A_PUBLIC, A_PUBLIC, true, true, (long)&((configuration *)NULL)->member},
+ #define LNG_OPTIONARRAY(member, name, type, default, number) \
+ OPTIONARRAY(member, name, type, default, number)
+
+@@ -205,16 +205,16 @@
+ #define OPTIONAGGRENDS
+
+ // #define LNG_OPTIONAGGR(x)
+-// #define LNG_OPTIONITEM(member,name,type,default) {"L:" name + 2, type, OS_LANG, A_PUBLIC, A_PUBLIC, true, false, (int)&((lang *)NULL)->member},
++// #define LNG_OPTIONITEM(member,name,type,default) {"L:" name + 2, type, OS_LANG, A_PUBLIC, A_PUBLIC, true, false, (long)&((lang *)NULL)->member},
+ // #define LNG_OPTIONAGGRENDS
+
+ #define OPTION(w,x,y,z)
+-#define VOICE_OPTION(member,member_voice,name,type,default) {"L:" name + 2, type, OS_LANG, A_PUBLIC, A_PUBLIC, true, false, (int)&((lang *)NULL)->member_voice},
+-#define LNG_OPTION(member,member_lang,name,type,default) {"L:" name + 2, type, OS_LANG, A_PUBLIC, A_PUBLIC, true, false, (int)&((lang *)NULL)->member_lang},
++#define VOICE_OPTION(member,member_voice,name,type,default) {"L:" name + 2, type, OS_LANG, A_PUBLIC, A_PUBLIC, true, false, (long)&((lang *)NULL)->member_voice},
++#define LNG_OPTION(member,member_lang,name,type,default) {"L:" name + 2, type, OS_LANG, A_PUBLIC, A_PUBLIC, true, false, (long)&((lang *)NULL)->member_lang},
+
+ #define OPTIONARRAY(member, name, type, default, number)
+ #define LNG_OPTIONARRAY(member, name, type, default, number) {"L:" name + 2, type, OS_LANG, \
+- A_PUBLIC, A_PUBLIC, true, true, (int)&((lang *)NULL)->member},
++ A_PUBLIC, A_PUBLIC, true, true, (long)&((lang *)NULL)->member},
+
+
+ #undef CONFIG_LANG_DESCRIBE
+@@ -287,7 +287,7 @@
+ // #define LNG_OPTIONITEM(w,x,y,z) OPTIONITEM(w,x,y,z)
+ // #define LNG_OPTIONAGGRENDS OPTIONAGGRENDS
+
+-#define VOICE_OPTION(member,member_voice,name,type,default) {"V:" name + 2, type, OS_VOICE, A_PUBLIC, A_PUBLIC, true, false, (int)&((voice *)NULL)->member_voice},
++#define VOICE_OPTION(member,member_voice,name,type,default) {"V:" name + 2, type, OS_VOICE, A_PUBLIC, A_PUBLIC, true, false, (long)&((voice *)NULL)->member_voice},
+
+ #undef CONFIG_VOICE_DESCRIBE
+
+--- src/waveform.cc 2009-08-16 22:24:12.000000000 +0200
++++ src/waveform.cc.orig 2009-08-16 22:22:42.000000000 +0200
+@@ -664,14 +664,14 @@
+ inline char *
+ wavefm::get_ophase_buff(const w_ophase *p)
+ {
+- char *tmp = (char *)this + (int)p->buff;
++ char *tmp = (char *)this + (long)p->buff;
+ return p->inlined ? tmp : *(char **)tmp;
+ }
+
+ inline int
+ wavefm::get_ophase_len(const w_ophase *p)
+ {
+- return (p->inlined ? (int)p->len : *(int *)((char *)this + (int)p->len)) + p->adjustment;
++ return (p->inlined ? (long)p->len : *(int *)((char *)this + (long)p->len)) + p->adjustment;
+ }
+
+ inline bool