Update of /cvsroot/audacity/lib-src/mod-script-pipe
In directory
23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv30497/lib-src/mod-script-pipe
Modified Files:
PipeServer.cpp ScripterCallback.cpp
Added Files:
Makefile
Log Message:
Modifications to script plugin:
Include a basic makefile based on one of Leland's. To be able to build the
plugin you need to fill in the Audacity path.
Linux - now there are separate pipes for each direction, same as the Windows
one.
Incidentally the problem with the second read failing was due to the test
script.
Temporarily disabled support for getting responses back from Audacity, because
this isn't yet handled on the Audacity side.
Index: ScripterCallback.cpp
===================================================================
RCS file: /cvsroot/audacity/lib-src/mod-script-pipe/ScripterCallback.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ScripterCallback.cpp 27 May 2008 16:57:22 -0000 1.4
+++ ScripterCallback.cpp 30 May 2009 04:24:57 -0000 1.5
@@ -48,7 +48,7 @@
// This is an example of an exported variable
-typedef SCRIPT_PIPE_DLL_IMPORT int (*tpExecScriptServerFunc)( wxString * pOut,
wxString * pIn);
+typedef SCRIPT_PIPE_DLL_IMPORT int (*tpExecScriptServerFunc)( wxString * pIn);
static tpExecScriptServerFunc pScriptServerFn=NULL;
@@ -64,7 +64,9 @@
wxString Str1(pIn, wxConvISO8859_1);
Str1.Replace( wxT("\r"), wxT(""));
Str1.Replace( wxT("\n"), wxT(""));
- (*pScriptServerFn)( &Str2, &Str1 );
+ (*pScriptServerFn)( &Str1 );
+
+ /* Responses are disabled for now.
size_t l = Str2.Length();
Str2+= wxT('\n');
aStr.Clear();
@@ -79,6 +81,7 @@
iStart = i+1;
}
}
+ */
// wxLogDebug("Added %i Strings", aStr.GetCount());
return 1;
}
@@ -129,6 +132,11 @@
return 4;
}
+int SCRIPT_PIPE_DLL_API ScriptServerResponseFunc( wxString * pOut )
+{
+ //wxLogDebug(wxT(*pOut));
+ return 1;
+}
// This is an example of an exported function.
int SCRIPT_PIPE_DLL_API ExtensionModuleInit(int ix)
@@ -142,7 +150,7 @@
// Here is proof that the DLL was dynamically loaded and this Init function
// called.
- wxDialog Dlg( (wxWindow*)NULL, (wxWindowID)-1, wxT("mod-script-pipe -
Dialog Loaded by Plug In"), wxPoint(0,0));
+ //wxDialog Dlg( (wxWindow*)NULL, (wxWindowID)-1, wxT("mod-script-pipe -
Dialog Loaded by Plug In"), wxPoint(0,0));
#if 0
@@ -155,10 +163,12 @@
S.EndStatic();
#endif
+ /*
Dlg.Fit();
Dlg.Move( 100,100 );
int id = Dlg.ShowModal();
-printf("id = %d\n", id);
+ */
+//printf("id = %d\n", id);
// return -1 for cancel, anything else for OK.
// return (id==wxID_CANCEL)?-1:42;
return 0;
--- NEW FILE: Makefile ---
# -----------------------------------------------------------------------------
# Build mod-script-pipe plugin
#
# EXPERIMENTAL!
# (Based on a Makefile by Leland)
#
# -----------------------------------------------------------------------------
# NOTE: Change this to the base of the Audacity source distribution, or specify
# via command line or environment
#
AUDACITY_DIR =
# -----------------------------------------------------------------------------
# NOTE: Set to the names of your objects and final module name
#
OBJS = PipeServer.o ScripterCallback.o
MOD = mod-script-pipe.so
# -----------------------------------------------------------------------------
# NOTE: Set any custom flags you may need
#
CXXFLAGS += -Wall -O9
CXXFLAGS += -DCC_HASVISIBILITY # Normally provided by configure
CXXFLAGS += -DBUILDING_SCRIPT_PIPE
CXXFLAGS += -D__WXDEBUG__ -D__WXGTK__
# -----------------------------------------------------------------------------
# Hopefully the rest is generic enough to satisfy most needs
# -----------------------------------------------------------------------------
CXXFLAGS += -DAUDACITY_DLL_API= -I$(AUDACITY_DIR)/src
CXXFLAGS += ${shell set -x ; sed -e '/override CXXFLAGS/!d;s/override CXXFLAGS
+= //;s...@$$(top_srcdir)@$(AUDACITY_DIR)@g' $(AUDACITY_DIR)/src/Makefile}
LDFLAGS += ${shell sed -e '/^LIBS/!d;s/LIBS *=//' $(AUDACITY_DIR)/src/Makefile}
SYS = $(shell uname -s)
ifeq ($(SYS),Darwin)
CXXFLAGS += -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk
-mmacosx-version-min=10.4
LDFLAGS += $(CXXFLAGS) -dynamiclib -undefined suppress
else
CXXFLAGS += -fPIC -fvisibility=hidden
LDFLAGS += -shared
endif
LD = g++
all: basecheck $(MOD)
# -----------------------------------------------------------------------------
# Make sure we can get to the Audacity source
#
basecheck:
@if test -z "$(AUDACITY_DIR)/src/Audacity.h" ; \
then \
echo "You need to set AUDACITY_DIR equal to the base" ; \
echo "of your Audacity source directory. You can do" ; \
echo "this via an environemnt variable, include it on" ; \
echo "the make command line or set it at the top of" ; \
echo "the Makefile." ; \
exit 1 ; \
fi
# -----------------------------------------------------------------------------
# Build it
#
$(MOD): $(OBJS)
$(LD) $(LDFLAGS) -o $(MOD) $(OBJS)
@mkdir -p $(AUDACITY_DIR)/modules
@cp $(MOD) $(AUDACITY_DIR)/modules
@echo
@echo "$(MOD) has been copied to $(AUDACITY_DIR)/modules"
@echo
# -----------------------------------------------------------------------------
# Cleanup
#
clean:
-rm $(MOD) $(OBJS)
Index: PipeServer.cpp
===================================================================
RCS file: /cvsroot/audacity/lib-src/mod-script-pipe/PipeServer.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- PipeServer.cpp 27 May 2008 16:57:22 -0000 1.3
+++ PipeServer.cpp 30 May 2009 04:24:56 -0000 1.4
@@ -1,4 +1,3 @@
-
#if defined(WIN32)
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from
Windows headers
@@ -111,7 +110,7 @@
#include <unistd.h>
#include <string.h>
-const char fifotmpl[] = "/tmp/audacity_script_pipe.%d";
+const char fifotmpl[] = "/tmp/audacity_script_pipe.%s.%d";
const int nBuff = 1024;
@@ -120,39 +119,44 @@
void PipeServer()
{
- FILE *fifo = NULL;
+ FILE *fromFifo = NULL;
+ FILE *toFifo = NULL;
int rc;
char buf[nBuff];
- char fifoname[nBuff];
-
- sprintf(fifoname, fifotmpl, getuid());
+ char toFifoName[nBuff];
+ char fromFifoName[nBuff];
- rc = mkfifo(fifoname, S_IRWXU);
+ sprintf(toFifoName, fifotmpl, "to", getuid());
+ sprintf(fromFifoName, fifotmpl, "from", getuid());
+
+ unlink(toFifoName);
+ unlink(fromFifoName);
+
+ rc = mkfifo(fromFifoName, S_IRWXU) & mkfifo(toFifoName, S_IRWXU);
if (rc < 0)
{
- perror("Unable to create fifo");
+ perror("Unable to create fifos");
printf("Ignoring...");
// return;
}
- fifo = fopen(fifoname, "rw");
- if (fifo == NULL)
+ fromFifo = fopen(fromFifoName, "w");
+ if (fromFifo == NULL)
{
- perror("Unable to open fifo");
+ perror("Unable to open fifo from server to script");
return;
}
- while (true)
+ toFifo = fopen(toFifoName, "r");
+ if (toFifo == NULL)
{
- int len;
-
- if (fgets(buf, sizeof(buf), fifo) == NULL)
- {
- perror("Read failed on fifo");
- break;
- }
+ perror("Unable to open fifo to server from script");
+ return;
+ }
- len = strlen(buf);
+ while (fgets(buf, sizeof(buf), toFifo) != NULL)
+ {
+ int len = strlen(buf);
if (len <= 1)
{
continue;
@@ -160,6 +164,7 @@
buf[len - 1] = '\0';
+ printf("Server received %s\n", buf);
DoSrv(buf);
while (true)
@@ -171,18 +176,19 @@
}
printf(buf);
- fwrite(buf, 1, len, fifo);
+ fwrite(buf, 1, len, fromFifo);
}
-
- // Here until I figure out why the second read fails.
- break;
}
- if (fifo != NULL)
- {
- fclose(fifo);
- }
+ printf("Read failed on fifo, quitting\n");
- unlink(fifoname);
+ if (toFifo != NULL)
+ fclose(toFifo);
+
+ if (fromFifo != NULL)
+ fclose(fromFifo);
+
+ unlink(toFifoName);
+ unlink(fromFifoName);
}
#endif
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs