aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortissoire2008-06-10 12:04:23 +0000
committertissoire2008-06-10 12:04:23 +0000
commitb593c80c463b3822621f3142500798d7360d0bd5 (patch)
treee6c80096fd7a1243dbe7237bf19142f4fb2751a8
parent4f5b107bbeca639a0a507ece0ac589ab3fe6a34c (diff)
downloadivy-ada-b593c80c463b3822621f3142500798d7360d0bd5.zip
ivy-ada-b593c80c463b3822621f3142500798d7360d0bd5.tar.gz
ivy-ada-b593c80c463b3822621f3142500798d7360d0bd5.tar.bz2
ivy-ada-b593c80c463b3822621f3142500798d7360d0bd5.tar.xz
correction bug ubuntu hardyHEADmaster
-rw-r--r--src/Makefile21
-rw-r--r--src/ivy.adb23
-rw-r--r--src/ivy_ada.c28
3 files changed, 54 insertions, 18 deletions
diff --git a/src/Makefile b/src/Makefile
index d63f55c..5ed5fc3 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -15,17 +15,26 @@
# copyright notice regarding this software
#
+CC=gcc
+
TARGETS = spy send
+SRC_ADA = spy.adb send.adb
+SRC_C = ivy_ada.c
+OBJ = ${SRC_C:.c=.o}
+
+LDFLAGS= -livy -lpcre
+CCFLAGS= -O2 -Wall -Wshadow
-all: commands
+all: $(TARGETS)
-commands: $(TARGETS)
+%.o: %.c
+ $(CC) -c -o $@ $< $(CCFLAGS)
-spy:
- gnatmake spy.adb -largs -livy
+spy : ${OBJ}
+ gnatmake $@ -largs $^ ${LDFLAGS}
-send:
- gnatmake send.adb -largs -livy
+send : ${OBJ}
+ gnatmake $@ -largs $^ ${LDFLAGS}
clean:
-rm -f $(TARGETS) *.o *.ali *~
diff --git a/src/ivy.adb b/src/ivy.adb
index ae3dec9..067f935 100644
--- a/src/ivy.adb
+++ b/src/ivy.adb
@@ -1,6 +1,6 @@
+with Ada.Text_IO; use Ada.Text_IO;
package body Ivy is
-
Type Dummy is null record;
Type Proc_Ptr is access procedure;
@@ -17,13 +17,13 @@ procedure C_IvyStart ( Bus : C.Strings.chars_ptr );
pragma Import (C, C_IvyStart, "IvyStart");
function C_IvyBindMsg (MsgCallback : MsgCallback_T;
- Data : UserData_T;
+ Data : UserData_T;
Mess : C.char_array)
return Subscription_Id_T;
-pragma Import (C, C_IvyBindMsg, "IvyBindMsg");
+pragma Import (C, C_IvyBindMsg, "IvyBindMsgNoVarArgs");
procedure C_IvyBindMsg (MsgCallback : MsgCallback_T;
- Data : UserData_T;
+ Data : UserData_T;
Mess : C.char_array) is
Dummy : Subscription_Id_T;
@@ -36,15 +36,14 @@ end C_IvyBindMsg;
-- Il faudrait traiter va_list ....
-- ou utiliser _BindMsg
-function C_IvySendMsg (Format : C.char_array := C.To_C("%s");
- Mess : C.char_array) return C.int;
-pragma Import (C, C_IvySendMsg, "IvySendMsg");
+function C_IvySendMsg (Mess : C.char_array) return C.int;
+pragma Import (C, C_IvySendMsg, "IvySendMsgNoVarArgs");
procedure C_IvySendMsg (Format : C.char_array := C.To_C("%s");
Mess : C.char_array) is
Dummy : C.int;
begin
- Dummy:=C_IvySendMsg (Format, Mess);
+ Dummy:=C_IvySendMsg ( Mess);
end C_IvySendMsg;
-- pragma Import (C, C_IvySendMsg, "IvySendMsg"); Non autorise en version 3.12
-- de gnat (import multiple avec profils differents !?)
@@ -91,7 +90,7 @@ Protected API is
entry UnbindMsg ( Id : Subscription_Id_T);
private
BusReady : Boolean :=False;
-end API;
+end API;
protected body API is
@@ -118,12 +117,12 @@ end configure;
entry SendMsg (Mess : String; Nb : out Nombre_T) when BusReady is
begin
- Nb:=Nombre_T(C_IvySendMsg( Mess => C.To_C(Mess)));
+ Nb:=Nombre_T(C_IvySendMsg( C.To_C(Mess)));
end SendMsg;
entry SendMsg (Mess : String) when BusReady is
begin
- C_IvySendMsg( Mess => C.To_C(Mess));
+ C_IvySendMsg(Mess => C.To_C(Mess));
end SendMsg;
entry SendDieMsg ( app : AppClientPtr_T) when BusReady is
@@ -143,7 +142,7 @@ entry BindMsg ( MsgCallback : MsgCallback_T;
user_data : UserData_T;
Regexp : String) when BusReady is
begin
- C_IvyBindMsg( MsgCallback, user_data, C.To_C(regexp));
+ C_IvyBindMsg( MsgCallback, user_data, C.To_C(regexp));
end BindMsg;
entry UnbindMsg ( Id : Subscription_Id_T) when BusReady is
diff --git a/src/ivy_ada.c b/src/ivy_ada.c
new file mode 100644
index 0000000..b24a89f
--- /dev/null
+++ b/src/ivy_ada.c
@@ -0,0 +1,28 @@
+#include <Ivy/ivy.h>
+
+MsgRcvPtr IvyBindMsgNoVarArgs (MsgCallback callback, void *user_data, const char *regex );
+MsgRcvPtr IvyChangeMsgNoVarArgs (MsgRcvPtr msg, const char *regex);
+void IvySendErrorNoVarArgs(IvyClientPtr app, int id, const char *error_msg );
+int IvySendMsgNoVarArgs( const char *message);
+
+
+MsgRcvPtr
+IvyBindMsgNoVarArgs (MsgCallback callback, void *user_data, const char *regex )
+{
+ return IvyBindMsg (callback, user_data, "%s", regex);
+}
+
+MsgRcvPtr
+IvyChangeMsgNoVarArgs (MsgRcvPtr msg, const char *regex){
+ return IvyChangeMsg (msg, "%s", regex);
+}
+
+int IvySendMsgNoVarArgs( const char *message){
+ return IvySendMsg("%s", message);
+}
+
+void IvySendErrorNoVarArgs(IvyClientPtr app, int id, const char *error_msg ){
+ return IvySendError( app, id, "%s", error_msg );
+}
+
+