summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubos Lunak <l.lunak@ suse.cz>2006-03-14 12:50:16 +0000
committerLubos Lunak <l.lunak@ suse.cz>2006-03-14 12:50:16 +0000
commit7d8b7b509f8e78c0eba27982c5dea7169ac0eab1 (patch)
treecd7c5d0edc23de32c7adedf5870c68ccd1f4abff
parenta99c456d8f119c32c93dacbf259ac86a5667e94a (diff)
Add a call that makes it possible to query capabilities of the daemon.
-rw-r--r--generic/main.c33
-rw-r--r--kde/daemon/handler.cpp32
-rw-r--r--kde/daemon/handler.h1
-rw-r--r--kde/gen/calls_generated.c6
-rw-r--r--kde/gen/calls_generated.h2
-rw-r--r--kde/gen/comm_generated.c8
-rw-r--r--kde/gen/comm_generated.h8
-rw-r--r--kde/gen/gen.txt2
-rw-r--r--tests/.cvsignore1
-rw-r--r--tests/Makefile.am7
-rw-r--r--tests/test_capabilities.c49
11 files changed, 135 insertions, 14 deletions
diff --git a/generic/main.c b/generic/main.c
index cd8f66a..cc34669 100644
--- a/generic/main.c
+++ b/generic/main.c
@@ -41,6 +41,36 @@ static void processCommandInit( DapiConnection* conn, int seq )
debug( "Init %d", dapi_socket( conn ));
dapi_writeReplyInit( conn, seq, 1 );
}
+
+/* TODO */
+static int caps[] =
+ {
+ DAPI_COMMAND_INIT,
+ DAPI_COMMAND_CAPABILITIES,
+ DAPI_COMMAND_OPENURL,
+/* DAPI_COMMAND_EXECUTEURL,*/
+ DAPI_COMMAND_BUTTONORDER,
+/* DAPI_COMMAND_RUNASUSER,*/
+ DAPI_COMMAND_SUSPENDSCREENSAVING,
+/* DAPI_COMMAND_MAILTO,*/
+ DAPI_COMMAND_LOCALFILE,
+ DAPI_COMMAND_UPLOADFILE,
+ DAPI_COMMAND_REMOVETEMPORARYLOCALFILE
+ };
+
+static void processCommandCapabilities( DapiConnection* conn, int seq )
+ {
+ intarr capabilities;
+ if( !dapi_readCommandInit( conn ))
+ {
+ closeConnection( conn );
+ return;
+ }
+ debug( "Capabilities %d", dapi_socket( conn ));
+ capabilities.count = sizeof( caps ) / sizeof( caps[ 0 ] );
+ capabilities.data = caps;
+ dapi_writeReplyCapabilities( conn, seq, capabilities, 1 );
+ }
static void processCommandOpenUrl( DapiConnection* conn, int seq )
{
@@ -220,6 +250,9 @@ static void processCommand( DapiConnection* conn )
case DAPI_COMMAND_INIT:
processCommandInit( conn, seq );
return;
+ case DAPI_COMMAND_CAPABILITIES:
+ processCommandCapabilities( conn, seq );
+ return;
case DAPI_COMMAND_OPENURL:
processCommandOpenUrl( conn, seq );
return;
diff --git a/kde/daemon/handler.cpp b/kde/daemon/handler.cpp
index 49a6d1e..d056813 100644
--- a/kde/daemon/handler.cpp
+++ b/kde/daemon/handler.cpp
@@ -77,6 +77,9 @@ void KDapiHandler::processCommand( ConnectionData& conn )
case DAPI_COMMAND_INIT:
processCommandInit( conn, seq );
return;
+ case DAPI_COMMAND_CAPABILITIES:
+ processCommandCapabilities( conn, seq );
+ return;
case DAPI_COMMAND_OPENURL:
processCommandOpenUrl( conn, seq );
return;
@@ -132,6 +135,35 @@ void KDapiHandler::processCommandInit( ConnectionData& conn, int seq )
dapi_writeReplyInit( conn.conn, seq, 1 );
}
+/* TODO */
+static int caps[] =
+ {
+ DAPI_COMMAND_INIT,
+ DAPI_COMMAND_CAPABILITIES,
+ DAPI_COMMAND_OPENURL,
+ DAPI_COMMAND_EXECUTEURL,
+ DAPI_COMMAND_BUTTONORDER,
+ DAPI_COMMAND_RUNASUSER,
+ DAPI_COMMAND_SUSPENDSCREENSAVING,
+ DAPI_COMMAND_MAILTO,
+ DAPI_COMMAND_LOCALFILE,
+ DAPI_COMMAND_UPLOADFILE,
+ DAPI_COMMAND_REMOVETEMPORARYLOCALFILE
+ };
+
+void KDapiHandler::processCommandCapabilities( ConnectionData& conn, int seq )
+ {
+ intarr capabilities;
+ if( !dapi_readCommandInit( conn.conn ))
+ {
+ closeSocket( conn );
+ return;
+ }
+ capabilities.count = sizeof( caps ) / sizeof( caps[ 0 ] );
+ capabilities.data = caps;
+ dapi_writeReplyCapabilities( conn.conn, seq, capabilities, 1 );
+ }
+
void KDapiHandler::processCommandOpenUrl( ConnectionData& conn, int seq )
{
char* url;
diff --git a/kde/daemon/handler.h b/kde/daemon/handler.h
index c587750..ec320c0 100644
--- a/kde/daemon/handler.h
+++ b/kde/daemon/handler.h
@@ -29,6 +29,7 @@ class KDapiHandler
void closeSocket( ConnectionData& conn );
void processCommand( ConnectionData& conn );
void processCommandInit( ConnectionData& conn, int seq );
+ void processCommandCapabilities( ConnectionData& conn, int seq );
void processCommandOpenUrl( ConnectionData& conn, int seq );
void processCommandExecuteUrl( ConnectionData& conn, int seq );
void processCommandButtonOrder( ConnectionData& conn, int seq );
diff --git a/kde/gen/calls_generated.c b/kde/gen/calls_generated.c
index 9327248..704b76d 100644
--- a/kde/gen/calls_generated.c
+++ b/kde/gen/calls_generated.c
@@ -24,7 +24,7 @@ int dapi_Init( DapiConnection* conn )
return ret;
}
-int dapi_capabilities( DapiConnection* conn, intarr* capabitilies )
+int dapi_Capabilities( DapiConnection* conn, intarr* capabitilies )
{
int seq;
if( conn->sync_callback == NULL )
@@ -33,7 +33,7 @@ int dapi_capabilities( DapiConnection* conn, intarr* capabitilies )
abort();
}
int ret;
- seq = dapi_writeCommandcapabilities( conn );
+ seq = dapi_writeCommandCapabilities( conn );
if( seq == 0 )
return 0;
for(;;)
@@ -45,7 +45,7 @@ int dapi_capabilities( DapiConnection* conn, intarr* capabitilies )
break; /* --> */
conn->sync_callback( conn, comm, seq2 );
}
- if( !dapi_readReplycapabilities( conn, capabitilies, &ret ))
+ if( !dapi_readReplyCapabilities( conn, capabitilies, &ret ))
return 0;
return ret;
}
diff --git a/kde/gen/calls_generated.h b/kde/gen/calls_generated.h
index 99da709..d3c1c57 100644
--- a/kde/gen/calls_generated.h
+++ b/kde/gen/calls_generated.h
@@ -1,5 +1,5 @@
int dapi_Init( DapiConnection* conn );
-int dapi_capabilities( DapiConnection* conn, intarr* capabitilies );
+int dapi_Capabilities( DapiConnection* conn, intarr* capabitilies );
int dapi_OpenUrl( DapiConnection* conn, const char* url );
int dapi_ExecuteUrl( DapiConnection* conn, const char* url );
int dapi_ButtonOrder( DapiConnection* conn );
diff --git a/kde/gen/comm_generated.c b/kde/gen/comm_generated.c
index 60068ed..95467ee 100644
--- a/kde/gen/comm_generated.c
+++ b/kde/gen/comm_generated.c
@@ -3,7 +3,7 @@ int dapi_readCommandInit( DapiConnection* conn )
return 1;
}
-int dapi_readCommandcapabilities( DapiConnection* conn )
+int dapi_readCommandCapabilities( DapiConnection* conn )
{
return 1;
}
@@ -79,7 +79,7 @@ int dapi_readReplyInit( DapiConnection* conn, int* ok )
return 1;
}
-int dapi_readReplycapabilities( DapiConnection* conn, intarr* capabitilies, int* ok )
+int dapi_readReplyCapabilities( DapiConnection* conn, intarr* capabitilies, int* ok )
{
*capabitilies = readintarr( conn );
readSocket( conn, ok, sizeof( *ok ));
@@ -147,7 +147,7 @@ int dapi_writeCommandInit( DapiConnection* conn )
return seq;
}
-int dapi_writeCommandcapabilities( DapiConnection* conn )
+int dapi_writeCommandCapabilities( DapiConnection* conn )
{
int seq = getNextSeq( conn );
writeCommand( conn, DAPI_COMMAND_CAPABILITIES, seq );
@@ -244,7 +244,7 @@ void dapi_writeReplyInit( DapiConnection* conn, int seq, int ok )
writeSocket( conn, &ok, sizeof( ok ));
}
-void dapi_writeReplycapabilities( DapiConnection* conn, int seq, intarr capabitilies,
+void dapi_writeReplyCapabilities( DapiConnection* conn, int seq, intarr capabitilies,
int ok )
{
writeCommand( conn, DAPI_REPLY_CAPABILITIES, seq );
diff --git a/kde/gen/comm_generated.h b/kde/gen/comm_generated.h
index 9cdb44e..c69b1f5 100644
--- a/kde/gen/comm_generated.h
+++ b/kde/gen/comm_generated.h
@@ -3,10 +3,10 @@ int dapi_readCommandInit( DapiConnection* conn );
int dapi_writeCommandInit( DapiConnection* conn );
int dapi_readReplyInit( DapiConnection* conn, int* ok );
void dapi_writeReplyInit( DapiConnection* conn, int seq, int ok );
-int dapi_readCommandcapabilities( DapiConnection* conn );
-int dapi_writeCommandcapabilities( DapiConnection* conn );
-int dapi_readReplycapabilities( DapiConnection* conn, intarr* capabitilies, int* ok );
-void dapi_writeReplycapabilities( DapiConnection* conn, int seq, intarr capabitilies,
+int dapi_readCommandCapabilities( DapiConnection* conn );
+int dapi_writeCommandCapabilities( DapiConnection* conn );
+int dapi_readReplyCapabilities( DapiConnection* conn, intarr* capabitilies, int* ok );
+void dapi_writeReplyCapabilities( DapiConnection* conn, int seq, intarr capabitilies,
int ok );
int dapi_readCommandOpenUrl( DapiConnection* conn, char** url );
int dapi_writeCommandOpenUrl( DapiConnection* conn, const char* url );
diff --git a/kde/gen/gen.txt b/kde/gen/gen.txt
index 1012863..9ec713c 100644
--- a/kde/gen/gen.txt
+++ b/kde/gen/gen.txt
@@ -5,7 +5,7 @@ FUNCTION Init
ENDARG
ENDFUNCTION
-FUNCTION capabilities
+FUNCTION Capabilities
ARG capabitilies
TYPE int[]
OUT
diff --git a/tests/.cvsignore b/tests/.cvsignore
index 1e85391..bf9eac1 100644
--- a/tests/.cvsignore
+++ b/tests/.cvsignore
@@ -9,3 +9,4 @@ test_mailto
test_remotefile
test_runasuser
test_screensaving
+test_capabilities
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 496dbfa..9bc482f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,4 +1,5 @@
-bin_PROGRAMS = test_comm test_calls test_runasuser test_screensaving test_mailto test_remotefile test_async
+bin_PROGRAMS = test_comm test_calls test_runasuser test_screensaving test_mailto test_remotefile test_async \
+ test_capabilities
test_comm_SOURCES = test_comm.c
test_comm_LDADD = ../lib/libdapi.la
@@ -28,4 +29,8 @@ test_async_SOURCES = test_async.c
test_async_LDADD = ../lib/libdapi.la
test_async_LDFLAGS = $(all_libraries)
+test_capabilities_SOURCES = test_capabilities.c
+test_capabilities_LDADD = ../lib/libdapi.la
+test_capabilities_LDFLAGS = $(all_libraries)
+
INCLUDES = $(all_includes) -I$(top_srcdir)/lib
diff --git a/tests/test_capabilities.c b/tests/test_capabilities.c
new file mode 100644
index 0000000..ba25efa
--- /dev/null
+++ b/tests/test_capabilities.c
@@ -0,0 +1,49 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "comm.h"
+#include "calls.h"
+
+static void callback( DapiConnection* a1, int a2, int a3 )
+ {
+ (void) a1;
+ (void) a2;
+ (void) a3;
+ fprintf( stderr, "Unexpected async reply, ignoring.\n" );
+ }
+
+int main()
+ {
+ intarr capabilities;
+ int i;
+ DapiConnection* conn = dapi_connect();
+ if( conn == NULL )
+ {
+ fprintf( stderr, "Cannot connect!\n" );
+ return 1;
+ }
+ dapi_setSyncCallback( conn, callback );
+ if( !dapi_Init( conn ))
+ {
+ fprintf( stderr, "Initialization failed!\n" );
+ return 2;
+ }
+ if( dapi_Capabilities( conn, &capabilities ))
+ {
+ int has_mailto = 0;
+ printf( "Capabilities:" );
+ for( i = 0;
+ i < capabilities.count;
+ ++i )
+ {
+ printf( " %d", capabilities.data[ i ] );
+ if( capabilities.data[ i ] == DAPI_COMMAND_MAILTO )
+ has_mailto = 1;
+ }
+ printf( "\nHas mailto: %d\n", has_mailto );
+ }
+ else
+ fprintf( stderr, "Capabilities call failed!\n" );
+ dapi_close( conn );
+ return 0;
+ }