summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/flitecmd.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/flitecmd.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/flitecmd.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/noncore/apps/opie-reader/flitecmd.cpp b/noncore/apps/opie-reader/flitecmd.cpp
new file mode 100644
index 0000000..bb7e303
--- a/dev/null
+++ b/noncore/apps/opie-reader/flitecmd.cpp
@@ -0,0 +1,43 @@
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <errno.h>
+#include "flitecmd.h"
+
+void CFliteCmd::output(const QString& txt)
+{
+ pid_t pid;
+ if ((pid = fork()) <0)
+ {
+ qDebug("No memory");
+ }
+ else if (pid == 0)
+ {
+ execlp("flite", "flite", "-t", (const char*)txt, NULL);
+ _exit(127);
+ qDebug("Can't find flite");
+ }
+ else
+ {
+ int status;
+ while (waitpid(pid, &status, 0) < 0)
+ {
+ if (errno != EINTR)
+ {
+ qDebug("Error from flite");
+ break;
+ }
+ }
+ qDebug("flite status:%d", status);
+ }
+}
+
+QString CFliteCmd::about()
+{
+ return QString("FliteCmd output codec (c) Tim Wentford\n");
+}
+
+extern "C"
+{
+ COutput* newcodec() { return new CFliteCmd; }
+}