diff options
author | Lubos Lunak <l.lunak@ suse.cz> | 2006-03-14 12:50:16 +0000 |
---|---|---|
committer | Lubos Lunak <l.lunak@ suse.cz> | 2006-03-14 12:50:16 +0000 |
commit | 7d8b7b509f8e78c0eba27982c5dea7169ac0eab1 (patch) | |
tree | cd7c5d0edc23de32c7adedf5870c68ccd1f4abff | |
parent | a99c456d8f119c32c93dacbf259ac86a5667e94a (diff) |
Add a call that makes it possible to query capabilities of the daemon.
-rw-r--r-- | generic/main.c | 33 | ||||
-rw-r--r-- | kde/daemon/handler.cpp | 32 | ||||
-rw-r--r-- | kde/daemon/handler.h | 1 | ||||
-rw-r--r-- | kde/gen/calls_generated.c | 6 | ||||
-rw-r--r-- | kde/gen/calls_generated.h | 2 | ||||
-rw-r--r-- | kde/gen/comm_generated.c | 8 | ||||
-rw-r--r-- | kde/gen/comm_generated.h | 8 | ||||
-rw-r--r-- | kde/gen/gen.txt | 2 | ||||
-rw-r--r-- | tests/.cvsignore | 1 | ||||
-rw-r--r-- | tests/Makefile.am | 7 | ||||
-rw-r--r-- | tests/test_capabilities.c | 49 |
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; + } |