You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
(56) |
Apr
(109) |
May
(15) |
Jun
(3) |
Jul
(37) |
Aug
(96) |
Sep
(40) |
Oct
(4) |
Nov
(54) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(47) |
Feb
(30) |
Mar
(102) |
Apr
(120) |
May
(68) |
Jun
(54) |
Jul
(53) |
Aug
(122) |
Sep
(190) |
Oct
(71) |
Nov
(85) |
Dec
(108) |
2007 |
Jan
(72) |
Feb
(190) |
Mar
(53) |
Apr
(101) |
May
(145) |
Jun
(148) |
Jul
(167) |
Aug
(143) |
Sep
(23) |
Oct
(198) |
Nov
(223) |
Dec
(195) |
2008 |
Jan
(100) |
Feb
(129) |
Mar
(79) |
Apr
(77) |
May
(34) |
Jun
(95) |
Jul
(112) |
Aug
(160) |
Sep
(82) |
Oct
(124) |
Nov
(199) |
Dec
(355) |
2009 |
Jan
(436) |
Feb
(89) |
Mar
(298) |
Apr
(189) |
May
(33) |
Jun
(88) |
Jul
(105) |
Aug
(44) |
Sep
(181) |
Oct
(87) |
Nov
(75) |
Dec
(1) |
2010 |
Jan
(63) |
Feb
(21) |
Mar
(3) |
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(26) |
Aug
(37) |
Sep
(26) |
Oct
(15) |
Nov
(13) |
Dec
|
From: <dg...@su...> - 2009-01-16 13:12:49
|
Author: bricks Date: Fri Jan 16 13:41:49 2009 New Revision: 5163 URL: http://www.opensync.org/changeset/5163 Log: ported file-sync to latest api changes Modified: plugins/file-sync/src/file_sync.c Modified: plugins/file-sync/src/file_sync.c ============================================================================== --- plugins/file-sync/src/file_sync.c Fri Jan 16 13:31:54 2009 (r5162) +++ plugins/file-sync/src/file_sync.c Fri Jan 16 13:41:49 2009 (r5163) @@ -55,13 +55,12 @@ return hash; } -static void osync_filesync_connect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void osync_filesync_connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { OSyncError *error = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); OSyncFileDir *dir = osync_objtype_sink_get_userdata(sink); OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); osync_bool anchormatch; @@ -92,10 +91,10 @@ //typedef void (* OSyncSinkCommittedAllFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -static osync_bool osync_filesync_read(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static osync_bool osync_filesync_read(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, userdata, info, ctx, change); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink , info, ctx, change, userdata); + OSyncFileDir *dir = osync_objtype_sink_get_userdata(sink); OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); OSyncError *error = NULL; @@ -167,10 +166,10 @@ return FALSE; } -static osync_bool osync_filesync_write(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static osync_bool osync_filesync_write(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); + OSyncFileDir *dir = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; OSyncData *odata = NULL; @@ -195,11 +194,11 @@ break; case OSYNC_CHANGE_TYPE_ADDED: if (g_file_test(filename, G_FILE_TEST_EXISTS)) { - const char *newid = g_strdup_printf ("%s-new", osync_change_get_uid(change)); - osync_change_set_uid(change, newid); - osync_filesync_write(data, info, ctx, change); - //osync_error_set(&error, OSYNC_ERROR_EXISTS, "Entry already exists : %s", filename); - //goto error; + const char *newid = g_strdup_printf ("%s-new", osync_change_get_uid(change)); + osync_change_set_uid(change, newid); + osync_filesync_write(sink, info, ctx, change, data); + //osync_error_set(&error, OSYNC_ERROR_EXISTS, "Entry already exists : %s", filename); + //goto error; } /* No break. Continue below */ case OSYNC_CHANGE_TYPE_MODIFIED: @@ -385,15 +384,15 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void osync_filesync_get_changes(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void osync_filesync_get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %i, %p)", __func__, sink, info, ctx, slow_sync, data); + OSyncFileDir *dir = osync_objtype_sink_get_userdata(sink); OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); OSyncError *error = NULL; - if (osync_objtype_sink_get_slowsync(dir->sink)) { + if (slow_sync) { osync_trace(TRACE_INTERNAL, "Slow sync requested"); if (!osync_hashtable_slowsync(dir->hashtable, &error)) { @@ -447,15 +446,15 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void osync_filesync_commit_change(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void osync_filesync_commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s", __func__); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); + OSyncFileDir *dir = osync_objtype_sink_get_userdata(sink); char *filename = NULL, *tmp; - if (!osync_filesync_write(data, info, ctx, change)) { + if (!osync_filesync_write(sink, info, ctx, change, data)) { osync_trace(TRACE_EXIT_ERROR, "%s", __func__); return; } @@ -485,13 +484,12 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void osync_filesync_sync_done(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void osync_filesync_sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); OSyncError *error = NULL; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); OSyncFileDir *dir = osync_objtype_sink_get_userdata(sink); OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); |
From: <dg...@su...> - 2009-01-16 13:04:38
|
Author: bricks Date: Fri Jan 16 14:03:49 2009 New Revision: 5164 URL: http://www.opensync.org/changeset/5164 Log: adapted example plugins to latest api changes Modified: trunk/docs/examples/plugins/src/plugin.c trunk/docs/examples/plugins/src/simple_plugin.c Modified: trunk/docs/examples/plugins/src/plugin.c ============================================================================== --- trunk/docs/examples/plugins/src/plugin.c Fri Jan 16 13:41:49 2009 (r5163) +++ trunk/docs/examples/plugins/src/plugin.c Fri Jan 16 14:03:49 2009 (r5164) @@ -62,14 +62,18 @@ //you can also use the anchor system to detect a device reset //or some parameter change here. Check the docs to see how it works - char *lanchor = NULL; //Now you get the last stored anchor from the device - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); - - if (!osync_anchor_compare(anchorpath, "lanchor", lanchor)) + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + osync_bool anchormatch; + + if (!osync_anchor_compare(anchor, "lanchor", &anchormatch, &error)) { + /* anchor couldn't be compared */ + goto error; + } + if (!anchormatch) { + /* request slow sync */ osync_objtype_sink_set_slowsync(sink, TRUE); - - osync_free(anchorpath); + } osync_context_report_success(ctx); osync_trace(TRACE_EXIT, "%s", __func__); @@ -81,7 +85,7 @@ osync_error_unref(&error); } -static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, userdata); @@ -94,9 +98,8 @@ //If you use opensync hashtables you can detect if you need //to do a slow-sync and set this on the hastable directly //otherwise you have to make 2 function like "get_changes" and - //"get_all" and decide which to use using - //osync_objtype_sink_get_slow_sync - if (osync_objtype_sink_get_slowsync(sinkenv->sink)) { + //"get_all" and decide which to use + if (slow_sync) { osync_trace(TRACE_INTERNAL, "Slow sync requested"); if (osync_hashtable_slowsync(sinkenv->hashtable, &error)) { @@ -261,10 +264,11 @@ //If we use anchors we have to update it now. //Now you get/calculate the current anchor of the device - char *lanchor = NULL; - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); - osync_anchor_update(anchorpath, "lanchor", lanchor); - osync_free(anchorpath); + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + if (!osync_anchor_update(anchor, "lanchor", &error)) { + goto error; + } + //Save hashtable to database if (!osync_hashtable_save(sinkenv->hashtable, &error)) goto error; Modified: trunk/docs/examples/plugins/src/simple_plugin.c ============================================================================== --- trunk/docs/examples/plugins/src/simple_plugin.c Fri Jan 16 13:41:49 2009 (r5163) +++ trunk/docs/examples/plugins/src/simple_plugin.c Fri Jan 16 14:03:49 2009 (r5164) @@ -33,7 +33,7 @@ static void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, userdata); //Each time you get passed a context (which is used to track //calls to your plugin) you can get the data your returned in //initialize via this call: @@ -60,14 +60,19 @@ //you can also use the anchor system to detect a device reset //or some parameter change here. Check the docs to see how it works - char *lanchor = NULL; //Now you get the last stored anchor from the device - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + osync_bool anchormatch; - if (!osync_anchor_compare(anchorpath, "lanchor", lanchor)) + if (!osync_anchor_compare(anchor, "lanchor", &anchormatch, &error)) { + /* anchor couldn't be compared */ + goto error; + } + + if (!anchormatch) { + /* request slow sync */ osync_objtype_sink_set_slowsync(sink, TRUE); - - osync_free(anchorpath); + } osync_context_report_success(ctx); osync_trace(TRACE_EXIT, "%s", __func__); @@ -195,11 +200,10 @@ //If we use anchors we have to update it now. //Now you get/calculate the current anchor of the device - char *lanchor = NULL; - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); - osync_anchor_update(anchorpath, "lanchor", lanchor); - osync_free(anchorpath); - + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + if (!osync_anchor_update(anchor, "lanchor", &error)) + goto error; + //Answer the call osync_context_report_success(ctx); return; @@ -209,7 +213,7 @@ return; } -static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjTypeSink *sink) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); |
From: <dg...@su...> - 2009-01-16 12:59:34
|
Author: bellmich Date: Fri Jan 16 13:58:40 2009 New Revision: 158 URL: http://libwbxml.opensync.org/changeset/158 Log: small corrections to support new XML normalization Modified: wbxml2/trunk/CMakeLists.txt Modified: wbxml2/trunk/CMakeLists.txt ============================================================================== --- wbxml2/trunk/CMakeLists.txt Fri Jan 16 13:58:20 2009 (r157) +++ wbxml2/trunk/CMakeLists.txt Fri Jan 16 13:58:40 2009 (r158) @@ -86,14 +86,14 @@ # look for the commands required for testing -FIND_PROGRAM( XMLLINT_PROGRAM "xmllint" ) +FIND_PROGRAM( PERL_PROGRAM "perl" ) FIND_PROGRAM( DIFF_PROGRAM "diff" ) -IF( XMLLINT_PROGRAM ) - SET( ENABLE_XMLLINT ON ) -ELSE( XMLLINT_PROGRAM ) - SET( ENABLE_XMLLINT OFF ) -ENDIF( XMLLINT_PROGRAM ) +IF( PERL_PROGRAM ) + SET( ENABLE_PERL ON ) +ELSE( PERL_PROGRAM ) + SET( ENABLE_PERL OFF ) +ENDIF( PERL_PROGRAM ) IF( DIFF_PROGRAM ) SET( ENABLE_DIFF ON ) @@ -180,7 +180,7 @@ MESSAGE( STATUS "==================================================" ) SHOW_STATUS( WBXML_LIB_VERBOSE "verbose mode\t\t\t" ) SHOW_STATUS( ENABLE_UNIT_TEST "unit tests\t\t\t" ) -SHOW_STATUS( ENABLE_XMLLINT "xmllint binary (test generated XML)" ) +SHOW_STATUS( ENABLE_PERL "perl binary (test generated XML)" ) SHOW_STATUS( ENABLE_DIFF "diff binary (test generated XML)" ) SHOW_STATUS( WBXML_ENCODER_USE_STRTBL "enable string tables\t\t" ) SHOW_STATUS( WBXML_SUPPORT_WML "enable WML support\t\t" ) @@ -227,6 +227,7 @@ ENABLE_TESTING() CONFIGURE_FILE( "tests/launchTests.sh" "${CMAKE_CURRENT_BINARY_DIR}/launchTests.sh") +CONFIGURE_FILE( "tests/normalize_xml.pl" "${CMAKE_CURRENT_BINARY_DIR}/normalize_xml.pl" @ONLY) SET( airsync_tests 1 ) SET( ddf_tests 5 ) SET( drmrel_tests 3 ) |
From: <dg...@su...> - 2009-01-16 12:59:12
|
Author: bellmich Date: Fri Jan 16 13:58:20 2009 New Revision: 157 URL: http://libwbxml.opensync.org/changeset/157 Log: added script for XML normalization Added: wbxmlTestSuite/trunk/normalize_xml.pl Modified: wbxmlTestSuite/trunk/launchTests.sh Modified: wbxmlTestSuite/trunk/launchTests.sh ============================================================================== --- wbxmlTestSuite/trunk/launchTests.sh Wed Jan 14 14:47:37 2009 (r156) +++ wbxmlTestSuite/trunk/launchTests.sh Fri Jan 16 13:58:20 2009 (r157) @@ -10,15 +10,18 @@ XML2WBXML=`which xml2wbxml` fi -if [ " ${XMLLINT_PROGRAM}" != " " ] +if [ " ${PERL_PROGRAM}" != " " ] then - XMLLINT_BIN="${XMLLINT_PROGRAM}" + PERL_BIN="${PERL_PROGRAM}" else - XMLLINT_BIN=`which xmllint` + PERL_BIN=`which perl` fi -if [ " ${DIFF_BIN}" != " " ] + +NORMALIZE_SCRIPT="${CMAKE_CURRENT_BINARY_DIR}/normalize_xml.pl" + +if [ " ${DIFF_PROGRAM}" != " " ] then - DIFF_BIN="${DIFF_BIN}" + DIFF_BIN="${DIFF_PROGRAM}" else DIFF_BIN=`which diff` fi @@ -148,16 +151,14 @@ # compare original and generated XML echo -n "Comparing the original and the generated XML ... " - if [ " $XMLLINT_BIN" = " " -o " $DIFF_BIN" = " " ] + if [ " $PERL_BIN" = " " -o " $DIFF_BIN" = " " ] then echo UNSUPPORTED else - # (first we strip the comments from the original file) - awk '/<!--/,/-->/{next}1' $j > ${OUT_XML}.org - xmllint -format ${OUT_XML}.org > ${OUT_XML}.org0 - xmllint -format ${OUT_XML} > ${OUT_XML}.new0 - DIFF_RESULT=`diff ${OUT_XML}.org0 ${OUT_XML}.new0` - if [ " ${DIFF_RESULT}" != " " ]; + $PERL_BIN $NORMALIZE_SCRIPT --delete-attribute xmlns $j $OUT_XML.org + $PERL_BIN $NORMALIZE_SCRIPT --delete-attribute xmlns $OUT_XML $OUT_XML.new + DIFF_RESULT=`$DIFF_BIN -b $OUT_XML.org $OUT_XML.new` + if [ " $DIFF_RESULT" != " " ]; then echo FAILED RESULT="FAILED"; Added: wbxmlTestSuite/trunk/normalize_xml.pl ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ wbxmlTestSuite/trunk/normalize_xml.pl Fri Jan 16 13:58:20 2009 (r157) @@ -0,0 +1,325 @@ +#!@PERL_PROGRAM@ + +use strict; +use warnings FATAL => qw( all ); +use English; + +# check params +# 1. original file +# 2. new file +# 3. no more params + +my $ignore_attribute = ""; +if ($ARGV[0] eq "--delete-attribute") { + shift; + die "The attribute which must be deleted is missing." + if (not $ARGV[0]); + $ignore_attribute = shift; +} + +die "There must be two arguments (old and new file)." + if (scalar(@ARGV) != 2); + +my $org_filename = $ARGV[0]; +my $new_filename = $ARGV[1]; + +die "The original file does not exist." + if (not $org_filename or not -e $org_filename); + +die "The new file is not valid filename." + if (not $new_filename); + +die "The new file exists already." + if (-e $new_filename); + +# open files + +die "The original file is not readable." + if (not open(my $ORG_FD, "<", $org_filename)); + +die "The new file is not writeable." + if (not open(my $NEW_FD, ">", $new_filename)); + +# look for the XML tree +# - version and encoding +# - DTD +# - XML tree + +my $line = <$ORG_FD>; + +my $state = "IGNORE"; +do { + ## determine state + + ## XML detection + if ($state eq "IGNORE" and $line =~ q{^\s*<[a-zA-Z]}) { + $state = "XML_TREE"; + } + + ## version and encoding detection + if ($state eq "IGNORE" and $line =~ q{^\s*<\?}) { + $state = "ENC_OPEN"; + } + if ($state eq "ENC_OPEN" and $line =~ q{\?>\s*$}) { + $state = "WRITE"; + } + + ## DTD detection + if ($state eq "IGNORE" and $line =~ q{^\s*<!DOCTYPE}) { + $state = "DTD_OPEN"; + } + if ($state eq "DTD_OPEN" and $line =~ q{>\s*$}) { + $state = "WRITE"; + } + + ## comment detection + if ($state eq "IGNORE" and $line =~ q{^\s*<!--}) { + $state = "COMMENT_OPEN"; + } + if ($state eq "COMMENT_OPEN" and $line =~ q{-->\s*$}) { + $state = "IGNORE"; + } + + ## handle data + if ($state eq "IGNORE") { + $line = <$ORG_FD>; + } + if ($state eq "WRITE") { + print $NEW_FD $line; + $line = <$ORG_FD>; + $state = "IGNORE"; + } + if ($state =~ q{_OPEN$}) { + $line .= <$ORG_FD>; + $line =~ s{\s*[\n\r]+\s*}{ }sg; + $line .= "\n"; + } +} while ($state ne "XML_TREE"); + +# XML tree state +# - element +# < +# element name +# blank +# attribute name +# = attribute assignment +# attribute value +# > +# - data +# - comment + +my $indent = 0; +my $char = ""; +$state = "NEUTRAL"; +while (1) { + ## $line works line oriented + ## but the parser works character oriented + last if (not defined $line); + if (length ($line) == 0) { + $line = <$ORG_FD>; + last if (not defined $line or length($line) < 1); + } + $char = substr($line, 0, 1); + $line = substr($line, 1); + + # check state + + # reset text state + if ($state eq "TEXT_NEWLINE" and $char !~ q{[\s\n\r]}) { + $state = "NEUTRAL"; + } + + # ignore leading blanks (normalization) + if ($state eq "NEUTRAL" and $char =~ q{\s}) { + next; + } + + # handle comment or element which starts in a text line + if ($state eq "TEXT" and $char eq "<") { + print $NEW_FD "\n"; + $state = "NEUTRAL"; + } + + # try to handle a new comment or element + if ($state eq "NEUTRAL" and $char eq "<") { + # let's look forward (element or comment) + die "A standalone smaller than "<" sign is not allowed in XML." + if (length($line) < 1); + $char = substr($line, 0, 1); + $line = substr($line, 1); + if ($char eq "!") { + ## this should be a comment + $char = substr($line, 0, 2); + die "A comment must always start with '<!--' and not with '<!${char}'." + if ($char ne "--"); + $line = substr($line, 2); + $state = "COMMENT"; + } elsif ($char =~ q{[a-zA-Z]}) { + ## this is an element + for (my $i = 0; $i < $indent; $i++) { + print $NEW_FD " "; + } + $indent++; + print $NEW_FD "<".$char; + $state = "ELEMENT"; + } elsif ($char eq "/") { + ## this is a closing element + $indent--; + for (my $i = 0; $i < $indent; $i++) { + print $NEW_FD " "; + } + print $NEW_FD "</"; + $state = "ELEMENT"; + } else { + ## this is illegal + die "A smaller than "<" sign must be a tag or a comment."; + } + next; + } + + # ignore comments + if ($state eq "COMMENT") { + if ($char eq "-" and substr($line, 0, 2) eq "->") { + # end of comment + $line = substr($line, 2); + $state = "NEUTRAL"; + } + next; + } + + # read and write text data + if ($state eq "NEUTRAL" and $char ne "<") { + # new text data + for (my $i = 0; $i < $indent; $i++) { + print $NEW_FD " "; + } + print $NEW_FD $char; + $state = "TEXT"; + next; + } + if ($state eq "TEXT" and $char eq "\r") { + next; + } + if ($state eq "TEXT" and $char eq "\n") { + print $NEW_FD "\n"; + $state = "TEXT_NEWLINE"; + next; + } + # if & is not handled as & then this error cannot be recovered + if ($state eq "TEXT" and $char eq '"') { + print $NEW_FD """; + next; + } + if ($state eq "TEXT" and $char eq "'") { + print $NEW_FD "'"; + next; + } + if ($state eq "TEXT" and $char eq '<') { + print $NEW_FD "<"; + next; + } + if ($state eq "TEXT" and $char eq '>') { + print $NEW_FD ">"; + next; + } + if ($state eq "TEXT") { + # + print $NEW_FD $char; + next; + } + if ($state eq "TEXT_NEWLINE" and $char =~ q{\s\r\n}) { + next; + } + + # read element name + if ($state eq "ELEMENT" and $char =~ q{[a-zA-Z0-9_]}) { + print $NEW_FD $char; + next; + } + + # detect space for potential attribute + if ($state eq "ELEMENT" and $char =~ q{[\s\r\n]}) { + $state = "POTENTIAL_ATTRIBUTE"; + next; + } + + # detect and read attribute + if ($state eq "POTENTIAL_ATTRIBUTE" and $char =~ q{[a-zA-Z0-9_]}) { + if ($ignore_attribute and + substr($ignore_attribute, 0, 1) eq $char and + substr($ignore_attribute, 1) eq substr($line, 0, length(substr($ignore_attribute, 1)))) + { + # let's ingore the attribute + $line =~ s{^[a-zA-Z_1-9]*=}{}; + if (substr($line, 0, 1) eq "'") { + $line =~ s{^'[^']*'}{}; + } else { + $line =~ s{^"[^"]*"}{}; + } + next; + } + $state = "ATTRIBUTE_NAME"; + print $NEW_FD " "; + } + if ($state eq "ATTRIBUTE_NAME" and $char =~ q{[a-zA-Z0-9_]}) { + print $NEW_FD $char; + next; + } + if ($state eq "ATTRIBUTE_NAME" and $char eq "=") { + print $NEW_FD $char; + $state = "ATTRIBUTE_ASSIGN"; + next; + } + if ($state eq "ATTRIBUTE_ASSIGN" and $char eq '"') { + print $NEW_FD $char; + $state = "ATTRIBUTE_VALUE_QUOT"; + next; + } + if ($state eq "ATTRIBUTE_VALUE_QUOT" and $char ne '"') { + print $NEW_FD $char; + next; + } + if ($state eq "ATTRIBUTE_VALUE_QUOT" and $char eq '"') { + print $NEW_FD $char; + $state = "POTENTIAL_ATTRIBUTE"; + next; + } + if ($state eq "ATTRIBUTE_ASSIGN" and $char eq "'") { + print $NEW_FD $char; + $state = "ATTRIBUTE_VALUE_APOS"; + next; + } + if ($state eq "ATTRIBUTE_VALUE_APOS" and $char ne "'") { + print $NEW_FD $char; + next; + } + if ($state eq "ATTRIBUTE_VALUE_APOS" and $char eq "'") { + print $NEW_FD $char; + $state = "POTENTIAL_ATTRIBUTE"; + next; + } + + # handle standalone element + if (($state eq "ELEMENT" or $state eq "POTENTIAL_ATTRIBUTE") + and $char eq "/") + { + print $NEW_FD "/"; + $indent--; + next; + } + + # read element end + if (($state eq "ELEMENT" or $state eq "POTENTIAL_ATTRIBUTE") + and $char eq ">") + { + print $NEW_FD $char."\n"; + $state = "NEUTRAL"; + next; + } + +}; + +# close files + +close $ORG_FD; +close $NEW_FD; |
From: <dg...@su...> - 2009-01-16 12:56:12
|
Author: bricks Date: Fri Jan 16 13:31:54 2009 New Revision: 5162 URL: http://www.opensync.org/changeset/5162 Log: Changed examples plugin to latest callback function api (didn't changed anchor and hashtable calls) Modified: trunk/docs/examples/plugins/src/plugin.c trunk/docs/examples/plugins/src/simple_plugin.c Modified: trunk/docs/examples/plugins/src/plugin.c ============================================================================== --- trunk/docs/examples/plugins/src/plugin.c Fri Jan 16 12:11:03 2009 (r5161) +++ trunk/docs/examples/plugins/src/plugin.c Fri Jan 16 13:31:54 2009 (r5162) @@ -24,16 +24,15 @@ osync_free(env); } -static void connect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, userdata); //Each time you get passed a context (which is used to track //calls to your plugin) you can get the data your returned in //initialize via this call: // plugin_environment *env = (plugin_environment *)userdata; - //The sink specific userdata you can get with this calls: - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + //The sink specific userdata you can get with this call: sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); @@ -82,13 +81,12 @@ osync_error_unref(&error); } -static void get_changes(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, userdata); //plugin_environment *env = (plugin_environment *)userdata; OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; @@ -217,11 +215,10 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void commit_change(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { //plugin_environment *env = (plugin_environment *)userdata; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); /* @@ -254,13 +251,12 @@ osync_context_report_success(ctx); } -static void sync_done(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { /* * This function will only be called if the sync was successful */ OSyncError *error = NULL; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //If we use anchors we have to update it now. @@ -282,9 +278,8 @@ return; } -static void disconnect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //Close all stuff you need to close @@ -404,9 +399,9 @@ } /* Here we actually tell opensync which sinks are available. */ -static osync_bool discover(void *userdata, OSyncPluginInfo *info, OSyncError **error) +static osync_bool discover(OSyncPluginInfo *info, void *userdata, OSyncError **error) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, info, userdata, error); // plugin_environment *env = (plugin_environment *)userdata; Modified: trunk/docs/examples/plugins/src/simple_plugin.c ============================================================================== --- trunk/docs/examples/plugins/src/simple_plugin.c Fri Jan 16 12:11:03 2009 (r5161) +++ trunk/docs/examples/plugins/src/simple_plugin.c Fri Jan 16 13:31:54 2009 (r5162) @@ -10,11 +10,11 @@ #include <string.h> typedef struct { - OSyncList *sink_envs; + OSyncList *sink_envs; } plugin_environment; typedef struct { - OSyncObjTypeSink *sink; + OSyncObjTypeSink *sink; } sink_environment; static void free_env(plugin_environment *env) @@ -31,7 +31,7 @@ osync_free(env); } -static void connect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); //Each time you get passed a context (which is used to track @@ -39,8 +39,7 @@ //initialize via this call: // plugin_environment *env = (plugin_environment *)userdata; - //The sink specific userdata you can get with this calls: - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + //The sink specific userdata you can get with this call: sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); @@ -80,21 +79,16 @@ osync_error_unref(&error); } -static void get_changes(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); //plugin_environment *env = (plugin_environment *)userdata; OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; - /* Check for Slow-Sync */ - if (osync_objtype_sink_get_slowsync(sinkenv->sink)) { - } - /* * Now you can get the changes. * Loop over all changes you get and do the following: @@ -160,11 +154,10 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void commit_change(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { //plugin_environment *env = (plugin_environment *)userdata; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); /* @@ -192,13 +185,12 @@ osync_context_report_success(ctx); } -static void sync_done(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { /* * This function will only be called if the sync was successful */ OSyncError *error = NULL; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //If we use anchors we have to update it now. @@ -217,9 +209,8 @@ return; } -static void disconnect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjTypeSink *sink) { - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //Close all stuff you need to close @@ -331,7 +322,7 @@ } /* Here we actually tell opensync which sinks are available. */ -static osync_bool discover(void *userdata, OSyncPluginInfo *info, OSyncError **error) +static osync_bool discover(OSyncPluginInfo *info, void *userdata, OSyncError **error) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, error); |
From: <dg...@su...> - 2009-01-16 11:11:54
|
Author: bricks Date: Fri Jan 16 12:11:03 2009 New Revision: 5161 URL: http://www.opensync.org/changeset/5161 Log: removed glib header check from cmakelists file Modified: trunk/CMakeLists.txt Modified: trunk/CMakeLists.txt ============================================================================== --- trunk/CMakeLists.txt Fri Jan 16 12:10:26 2009 (r5160) +++ trunk/CMakeLists.txt Fri Jan 16 12:11:03 2009 (r5161) @@ -48,7 +48,7 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.4.4 ) IF(COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) + cmake_policy(SET CMP0003 NEW) ENDIF(COMMAND cmake_policy) INCLUDE( Documentation ) @@ -125,12 +125,6 @@ SET( CMAKE_REQUIRED_DEFINITIONS "" ) CHECK_FUNCTION_EXISTS( flock HAVE_FLOCK ) -# Check if system has a newer version of glib -# which supports g_regex_match_simple -INCLUDE( CheckIncludeFiles ) -SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} ) -CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H ) - # add uninstall target CONFIGURE_FILE( "${CMAKE_SOURCE_DIR}/cmake/modules/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) |
From: <dg...@su...> - 2009-01-16 11:11:26
|
Author: bricks Date: Fri Jan 16 12:10:26 2009 New Revision: 5160 URL: http://www.opensync.org/changeset/5160 Log: check for gregex.h in cmake glib module Modified: branches/3rd-party-cmake-modules/modules/FindGLIB2.cmake Modified: branches/3rd-party-cmake-modules/modules/FindGLIB2.cmake ============================================================================== --- branches/3rd-party-cmake-modules/modules/FindGLIB2.cmake Fri Jan 16 12:09:24 2009 (r5159) +++ branches/3rd-party-cmake-modules/modules/FindGLIB2.cmake Fri Jan 16 12:10:26 2009 (r5160) @@ -5,6 +5,9 @@ # GLIB2_INCLUDE_DIRS - the GLib2 include directory # GLIB2_LIBRARIES - Link these to use GLib2 # +# HAVE_GLIB_GREGEX_H glib has gregex.h header and +# supports g_regex_match_simple +# # Copyright (c) 2006 Andreas Schneider <ma...@cy...> # Copyright (c) 2006 Philippe Bernery <phi...@gm...> # Copyright (c) 2007 Daniel Gollub <dg...@su...> @@ -202,3 +205,13 @@ MARK_AS_ADVANCED(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARY) ENDIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS) + +IF ( GLIB2_FOUND ) + # Check if system has a newer version of glib + # which supports g_regex_match_simple + INCLUDE( CheckIncludeFiles ) + SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} ) + CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H ) + # Reset CMAKE_REQUIRED_INCLUDES + SET( CMAKE_REQUIRED_INCLUDES "" ) +ENDIF( GLIB2_FOUND ) |
From: <dg...@su...> - 2009-01-16 11:10:19
|
Author: bricks Date: Fri Jan 16 12:09:24 2009 New Revision: 5159 URL: http://www.opensync.org/changeset/5159 Log: added osync_assert to abort if result of detection could't be reported Modified: trunk/opensync/format/opensync_format_env.c Modified: trunk/opensync/format/opensync_format_env.c ============================================================================== --- trunk/opensync/format/opensync_format_env.c Fri Jan 16 09:18:04 2009 (r5158) +++ trunk/opensync/format/opensync_format_env.c Fri Jan 16 12:09:24 2009 (r5159) @@ -976,9 +976,10 @@ /* If detected_format is NULL, there is no reason to run the detection * without any chance to report the result */ + osync_assert_msg(detected_format, "detected_format is NULL. Therefore it isn't possible to report a result of the detection."); osync_return_val_if_fail(detected_format, TRUE); - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, input, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, env, input, detected_format, error); if (!input || !osync_data_has_data(input)) { osync_trace(TRACE_EXIT, "%s: No data provided to detect.", __func__); |
From: <dg...@su...> - 2009-01-16 08:19:05
|
Author: bricks Date: Fri Jan 16 09:18:04 2009 New Revision: 5158 URL: http://www.opensync.org/changeset/5158 Log: Changed Plugin-Sink Function parameter list #1018 Modified: trunk/opensync/plugin/opensync_objtype_sink.c trunk/opensync/plugin/opensync_objtype_sink.h trunk/tests/engine-tests/check_engine.c trunk/tests/engine-tests/check_engine_error.c trunk/tests/mock-plugin/mock_sync.c Modified: trunk/opensync/plugin/opensync_objtype_sink.c ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.c Fri Jan 16 00:52:33 2009 (r5157) +++ trunk/opensync/plugin/opensync_objtype_sink.c Fri Jan 16 09:18:04 2009 (r5158) @@ -272,7 +272,7 @@ } else if (!functions.get_changes) { osync_context_report_success(ctx); } else { - functions.get_changes(plugindata, info, ctx); + functions.get_changes(sink, info, ctx, osync_objtype_sink_get_slowsync(sink), plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -296,7 +296,7 @@ } else if (!functions.read) { osync_context_report_success(ctx); } else { - functions.read(plugindata, info, ctx, change); + functions.read(sink, info, ctx, change, plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -313,7 +313,7 @@ if (!functions.connect) { osync_context_report_success(ctx); } else { - functions.connect(plugindata, info, ctx); + functions.connect(sink, info, ctx, plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -330,7 +330,7 @@ if (!functions.disconnect) { osync_context_report_success(ctx); } else { - functions.disconnect(plugindata, info, ctx); + functions.disconnect(sink, info, ctx, plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -347,7 +347,7 @@ if (!functions.sync_done) osync_context_report_success(ctx); else - functions.sync_done(plugindata, info, ctx); + functions.sync_done(sink, info, ctx, plugindata); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -363,7 +363,7 @@ if (!functions.connect_done) osync_context_report_success(ctx); else - functions.connect_done(plugindata, info, ctx); + functions.connect_done(sink, info, ctx, plugindata); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -398,7 +398,7 @@ } else if (!functions.commit) { osync_context_report_success(ctx); } else { - functions.commit(plugindata, info, ctx, change); + functions.commit(sink, info, ctx, change, plugindata); } } @@ -444,12 +444,12 @@ osync_list_free(sink->commit_changes); osync_list_free(sink->commit_contexts); - functions.batch_commit(plugindata, info, ctx, contexts, changes); + functions.batch_commit(sink, info, ctx, contexts, changes, plugindata); osync_free(changes); osync_free(contexts); } else if (functions.committed_all) { - functions.committed_all(plugindata, info, ctx); + functions.committed_all(sink, info, ctx, plugindata); } else { osync_context_report_success(ctx); } Modified: trunk/opensync/plugin/opensync_objtype_sink.h ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.h Fri Jan 16 00:52:33 2009 (r5157) +++ trunk/opensync/plugin/opensync_objtype_sink.h Fri Jan 16 09:18:04 2009 (r5158) @@ -29,16 +29,16 @@ */ /*@{*/ -typedef void (* OSyncSinkConnectFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkDisconnectFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkGetChangesFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkCommitFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change); -typedef osync_bool (* OSyncSinkWriteFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change); -typedef void (* OSyncSinkCommittedAllFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef osync_bool (* OSyncSinkReadFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change); -typedef void (* OSyncSinkBatchCommitFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncContext **, OSyncChange **changes); -typedef void (* OSyncSinkSyncDoneFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkConnectDoneFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); +typedef void (* OSyncSinkConnectFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef void (* OSyncSinkDisconnectFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef void (* OSyncSinkGetChangesFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data); +typedef void (* OSyncSinkCommitFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data); +typedef osync_bool (* OSyncSinkWriteFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data); +typedef void (* OSyncSinkCommittedAllFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef osync_bool (* OSyncSinkReadFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data); +typedef void (* OSyncSinkBatchCommitFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncContext **, OSyncChange **changes, void *data); +typedef void (* OSyncSinkSyncDoneFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef void (* OSyncSinkConnectDoneFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); typedef struct OSyncObjTypeSinkFunctions { OSyncSinkConnectFn connect; Modified: trunk/tests/engine-tests/check_engine.c ============================================================================== --- trunk/tests/engine-tests/check_engine.c Fri Jan 16 00:52:33 2009 (r5157) +++ trunk/tests/engine-tests/check_engine.c Fri Jan 16 09:18:04 2009 (r5158) @@ -134,7 +134,7 @@ } END_TEST -static void connect1(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect1(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -153,7 +153,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -172,7 +172,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -364,7 +364,7 @@ } END_TEST -static void connect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -383,7 +383,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -402,7 +402,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -421,7 +421,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_connect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_connect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -440,7 +440,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_disconnect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_disconnect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -459,7 +459,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_get_changes2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_get_changes2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -679,7 +679,7 @@ } END_TEST -static void connect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -699,7 +699,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -721,7 +721,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -741,7 +741,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void sync_done3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void sync_done3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -763,7 +763,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_connect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_connect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -789,7 +789,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_disconnect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_disconnect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -817,7 +817,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_get_changes3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_get_changes3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -844,7 +844,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_sync_done3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_sync_done3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1080,7 +1080,7 @@ } END_TEST -static void main_disconnect4(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_disconnect4(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1359,7 +1359,7 @@ } END_TEST -static void connect5(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1371,7 +1371,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect5(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1383,7 +1383,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes5(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1430,7 +1430,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void commit_change5(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void commit_change5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); @@ -1594,7 +1594,7 @@ } END_TEST -static void get_changes6(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes6(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; int i; @@ -1798,7 +1798,7 @@ } END_TEST -static void get_changes7(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes7(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; int i; Modified: trunk/tests/engine-tests/check_engine_error.c ============================================================================== --- trunk/tests/engine-tests/check_engine_error.c Fri Jan 16 00:52:33 2009 (r5157) +++ trunk/tests/engine-tests/check_engine_error.c Fri Jan 16 09:18:04 2009 (r5158) @@ -33,7 +33,7 @@ int num_disconnect = 0; int num_get_changes = 0; -static void connect1(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect1(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -44,7 +44,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void connect_error(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect_error(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -55,7 +55,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -66,7 +66,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); Modified: trunk/tests/mock-plugin/mock_sync.c ============================================================================== --- trunk/tests/mock-plugin/mock_sync.c Fri Jan 16 00:52:33 2009 (r5157) +++ trunk/tests/mock-plugin/mock_sync.c Fri Jan 16 09:18:04 2009 (r5158) @@ -25,24 +25,24 @@ static osync_bool mock_get_error(long long int memberid, const char *domain) { - const char *env = g_getenv(domain); + const char *env = g_getenv(domain); - if (!env) - return FALSE; + if (!env) + return FALSE; - int num = atoi(env); - int mask = 1 << (memberid - 1); - if (num & mask) { - char *chancestr = g_strdup_printf("%s_PROB", domain); - const char *chance = g_getenv(chancestr); - g_free(chancestr); - if (!chance) - return TRUE; - int prob = atoi(chance); - if (prob >= g_random_int_range(0, 100)) - return TRUE; - } - return FALSE; + int num = atoi(env); + int mask = 1 << (memberid - 1); + if (num & mask) { + char *chancestr = g_strdup_printf("%s_PROB", domain); + const char *chance = g_getenv(chancestr); + g_free(chancestr); + if (!chance) + return TRUE; + int prob = atoi(chance); + if (prob >= g_random_int_range(0, 100)) + return TRUE; + } + return FALSE; } static char *mock_generate_hash(struct stat *buf) @@ -50,14 +50,13 @@ return g_strdup_printf("%i-%i", (int)buf->st_mtime, (int)buf->st_ctime); } -static void mock_connect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_bool anchor_compare_match; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); MockDir *dir = osync_objtype_sink_get_userdata(sink); - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); if (mock_get_error(info->memberid, "CONNECT_ERROR")) { osync_context_report_error(ctx, OSYNC_ERROR_EXPECTED, "Triggering CONNECT_ERROR error"); @@ -102,10 +101,9 @@ return; } -static void mock_connect_done(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_connect_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); if (mock_get_error(info->memberid, "CONNECT_DONE_ERROR")) { @@ -130,11 +128,10 @@ } -static void mock_disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); MockDir *dir = osync_objtype_sink_get_userdata(sink); mock_env *env = data; @@ -172,10 +169,9 @@ //typedef void (* OSyncSinkCommittedAllFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -static osync_bool mock_read(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static osync_bool mock_read(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; @@ -211,10 +207,9 @@ return TRUE; } -static osync_bool mock_write(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static osync_bool mock_write(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; OSyncData *odata = NULL; @@ -366,10 +361,9 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_get_changes(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %i, %p)", __func__, sink, info, ctx, slow_sync, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; @@ -430,10 +424,9 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_commit_change(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void mock_commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s", __func__); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); char *filename = NULL; @@ -449,7 +442,7 @@ return; } - if (!mock_write(data, info, ctx, change)) { + if (!mock_write(sink, info, ctx, change, data)) { osync_trace(TRACE_EXIT_ERROR, "%s", __func__); return; } @@ -474,18 +467,17 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_batch_commit(void *data, OSyncPluginInfo *info, OSyncContext *context, OSyncContext **contexts, OSyncChange **changes) +static void mock_batch_commit(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *context, OSyncContext **contexts, OSyncChange **changes, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, context, contexts, changes); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p, %p)", __func__, sink, info, context, contexts, changes, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); - osync_assert(dir->committed_all == FALSE); - dir->committed_all = TRUE; + osync_assert(dir->committed_all == FALSE); + dir->committed_all = TRUE; - int i; - for (i = 0; contexts[i]; i++) { - if (mock_write(data, info, contexts[i], changes[i])) { + int i; + for (i = 0; contexts[i]; i++) { + if (mock_write(sink, info, contexts[i], changes[i], data)) { char *filename = g_strdup_printf ("%s/%s", dir->path, osync_change_get_uid(changes[i])); char *hash = NULL; @@ -498,49 +490,47 @@ g_free(filename); osync_hashtable_update_change(dir->hashtable, changes[i]); - osync_context_report_success(contexts[i]); - } - } + osync_context_report_success(contexts[i]); + } + } - if (g_getenv("NUM_BATCH_COMMITS")) { - int req = atoi(g_getenv("NUM_BATCH_COMMITS")); - osync_assert(req == i); - } - - if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { - osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); - return; - } + if (g_getenv("NUM_BATCH_COMMITS")) { + int req = atoi(g_getenv("NUM_BATCH_COMMITS")); + osync_assert(req == i); + } + + if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { + osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); + return; + } - osync_context_report_success(context); + osync_context_report_success(context); - osync_trace(TRACE_EXIT, "%s", __func__); + osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_committed_all(void *data, OSyncPluginInfo *info, OSyncContext *context) +static void mock_committed_all(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *context, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p)", __func__, context); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, context, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); - osync_assert(dir->committed_all == FALSE); - dir->committed_all = TRUE; + osync_assert(dir->committed_all == FALSE); + dir->committed_all = TRUE; - if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { - osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); - osync_trace(TRACE_EXIT_ERROR, "%s: Reporting error", __func__); - return; - } + if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { + osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); + osync_trace(TRACE_EXIT_ERROR, "%s: Reporting error", __func__); + return; + } - osync_context_report_success(context); + osync_context_report_success(context); - osync_trace(TRACE_EXIT, "%s", __func__); + osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_sync_done(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); MockDir *dir = osync_objtype_sink_get_userdata(sink); @@ -563,7 +553,7 @@ * all _possible_ objtype sinks. */ static void *mock_initialize(OSyncPlugin *plugin, OSyncPluginInfo *info, OSyncError **error) { - osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, plugin, info, error); if (mock_get_error(info->memberid, "INIT_NULL_NOERROR")) { osync_trace(TRACE_EXIT, "%s: %s", __func__, "Everything is fine. I don't need plugin userdata."); |
From: <dg...@su...> - 2009-01-15 23:53:27
|
Author: dgollub Date: Fri Jan 16 00:52:33 2009 New Revision: 5157 URL: http://www.opensync.org/changeset/5157 Log: Create timeout-branch for fixing timeout handling of OpenSync Added: branches/timeout/ - copied from r5156, trunk/ |
From: <dg...@su...> - 2009-01-15 20:19:13
|
Author: friedrich.beckmann Date: Thu Jan 15 21:18:12 2009 New Revision: 5156 URL: http://www.opensync.org/changeset/5156 Log: when an error happens during osync_engine_initialize, osync_engine_finalize could not work because the state was still UNINITIALIZED - threads were still running Modified: trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_engine.h Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Thu Jan 15 19:50:07 2009 (r5155) +++ trunk/opensync/engine/opensync_engine.c Thu Jan 15 21:18:12 2009 (r5156) @@ -1436,9 +1436,10 @@ if (engine->state != OSYNC_ENGINE_STATE_UNINITIALIZED) { osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "This engine was not uninitialized: %i", engine->state); - goto error; + goto error_no_state_reset; } - + + engine->state = OSYNC_ENGINE_STATE_START_INIT; group = engine->group; if (osync_group_num_members(group) < 2) { @@ -1524,6 +1525,8 @@ osync_engine_finalize(engine, NULL); osync_group_unlock(engine->group); error: + engine->state = OSYNC_ENGINE_STATE_UNINITIALIZED; + error_no_state_reset: osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); return FALSE; } @@ -1532,8 +1535,8 @@ { OSyncClientProxy *proxy = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, engine, error); - - if (engine->state != OSYNC_ENGINE_STATE_INITIALIZED) { + + if (engine->state != OSYNC_ENGINE_STATE_START_INIT && engine->state != OSYNC_ENGINE_STATE_INITIALIZED) { osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "This engine was not in state initialized: %i", engine->state); goto error; } Modified: trunk/opensync/engine/opensync_engine.h ============================================================================== --- trunk/opensync/engine/opensync_engine.h Thu Jan 15 19:50:07 2009 (r5155) +++ trunk/opensync/engine/opensync_engine.h Thu Jan 15 21:18:12 2009 (r5156) @@ -85,6 +85,8 @@ typedef enum { /** Uninitialized */ OSYNC_ENGINE_STATE_UNINITIALIZED, + /** Start Initialization **/ + OSYNC_ENGINE_STATE_START_INIT, /** Initialized */ OSYNC_ENGINE_STATE_INITIALIZED, /** Waiting for synchronization request by a peer */ |
From: <dg...@su...> - 2009-01-15 18:51:04
|
Author: savago Date: Thu Jan 15 19:50:07 2009 New Revision: 5155 URL: http://www.opensync.org/changeset/5155 Log: Porting vformat test for new osync_format_env_detect_objformat_full. Modified: format-plugins/vformat/tests/conversion.c Modified: format-plugins/vformat/tests/conversion.c ============================================================================== --- format-plugins/vformat/tests/conversion.c Thu Jan 15 19:48:12 2009 (r5154) +++ format-plugins/vformat/tests/conversion.c Thu Jan 15 19:50:07 2009 (r5155) @@ -40,7 +40,7 @@ osync_change_set_data(change, data); - sourceformat = osync_format_env_detect_objformat_full(format_env, data, &error); + osync_format_env_detect_objformat_full(format_env, data, &sourceformat, &error); fail_unless(sourceformat != NULL, NULL); @@ -68,7 +68,9 @@ // Create new change .. duplicate and give new uid OSyncChange *newchange = osync_change_new(&error); OSyncData *newdata = osync_data_clone(data, &error); - osync_data_set_objformat(newdata, osync_format_env_detect_objformat_full(format_env, newdata, &error)); + + osync_format_env_detect_objformat_full(format_env, newdata, &sourceformat, &error); + osync_data_set_objformat(newdata, sourceformat); osync_change_set_data(newchange, newdata); char *newuid = g_strdup_printf("%s_original", osync_change_get_uid(change)); @@ -177,7 +179,8 @@ osync_change_set_data(lchange, ldata); - OSyncObjFormat *sourceformat = osync_format_env_detect_objformat_full(format_env, ldata, &error); + OSyncObjFormat *sourceformat; + osync_format_env_detect_objformat_full(format_env, ldata, &sourceformat, &error); fail_unless(sourceformat != NULL, NULL); osync_data_set_objformat(ldata, sourceformat); @@ -195,7 +198,7 @@ osync_change_set_data(rchange, rdata); - sourceformat = osync_format_env_detect_objformat_full(format_env, rdata, &error); + osync_format_env_detect_objformat_full(format_env, rdata, &sourceformat, &error); fail_unless(sourceformat != NULL, NULL); osync_data_set_objformat(rdata, sourceformat); @@ -266,7 +269,7 @@ osync_change_set_data(change, data); - sourceformat = osync_format_env_detect_objformat_full(format_env, data, &error); + osync_format_env_detect_objformat_full(format_env, data, &sourceformat, &error); fail_unless(sourceformat != NULL, NULL); // targetformat |
From: <dg...@su...> - 2009-01-15 18:49:10
|
Author: savago Date: Thu Jan 15 19:48:12 2009 New Revision: 5154 URL: http://www.opensync.org/changeset/5154 Log: Copying xslt conversion code from google-data plugin to here. Added: format-plugins/xsltformat/src/xslt_aux.h - copied unchanged from r5153, plugins/google-calendar/src/xslt_aux.h Copied: format-plugins/xsltformat/src/xslt_aux.h (from r5153, plugins/google-calendar/src/xslt_aux.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ format-plugins/xsltformat/src/xslt_aux.h Thu Jan 15 19:48:12 2009 (r5154, copy of r5153, plugins/google-calendar/src/xslt_aux.h) @@ -0,0 +1,187 @@ +/* + Copyright (c) 2008 Instituto Nokia de Tecnologia + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the INdT nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ +/** + * @file xslt_aux.h + * @author Adenilson Cavalcanti da Silva <ade...@in...> + * @date Mon Aug 25 15:50:20 2008 + * + * @brief A XSLT helper module, converts a XML doc to another format + * using a xslt file. + * + * Depends on libxml and libxslt. + * + * \todo: + * - doxygen comments about use + * - move code to a '.c' file or make functions static + * - make 'xslt_resources' an abstract type + * + */ + +#ifndef __XSLT_AUX__ +#define __XSLT_AUX__ + +#include <libxml/HTMLtree.h> +#include <libxml/catalog.h> +#include <libxml/debugXML.h> +#include <libxml/xinclude.h> +#include <libxml/xmlIO.h> +#include <libxml/xmlmemory.h> +#include <libxslt/transform.h> +#include <libxslt/xslt.h> +#include <libxslt/xsltInternals.h> +#include <libxslt/xsltutils.h> +#include <string.h> + +struct xslt_resources { + xmlDocPtr output; + xmlDocPtr doc; + xsltStylesheetPtr cur; + xmlChar *xml_str; + int length; + char init_flag; +}; + +struct xslt_resources *xslt_new(void) +{ + struct xslt_resources *result; + result = (struct xslt_resources *)malloc(sizeof(struct xslt_resources)); + if (result) + memset(result, 0, sizeof(struct xslt_resources)); + + return result; +} + +int xslt_initialize(struct xslt_resources *ctx, const char *stylesheet_path) +{ + int result = -1; + if (!stylesheet_path || !ctx) + goto exit; + + xmlSubstituteEntitiesDefault(1); + xmlLoadExtDtdDefaultValue = 1; + + if (ctx->cur) + xsltFreeStylesheet(ctx->cur); + + ctx->cur = xsltParseStylesheetFile((const xmlChar *)stylesheet_path); + if (!ctx->cur) { + fprintf(stderr, "Cannot create XSLT context!\n"); + goto exit; + } + + result = 0; + ctx->init_flag = 1; +exit: + return result; +} + +int xslt_transform(struct xslt_resources *ctx, const char *document) +{ + int result = -1; + if (!ctx || !document) + goto exit; + + if (ctx->doc) + xmlFreeDoc(ctx->doc); + if (ctx->output) + xmlFreeDoc(ctx->output); + ctx->output = NULL; + + ctx->doc = xmlReadMemory(document, strlen(document), "noname.xml", + NULL, 0); + if (!ctx->doc) { + fprintf(stderr, "Cannot create document with " + "entry!\n"); + goto cleanup; + } + + ctx->output = xsltApplyStylesheet(ctx->cur, ctx->doc, NULL); + if (!ctx->output) { + fprintf(stderr, "Cannot create document with " + "output!\n"); + goto cleanup; + } + + if (ctx->xml_str) { + xmlFree(ctx->xml_str); + ctx->xml_str = NULL; + } + xmlDocDumpMemory(ctx->output, &(ctx->xml_str), &(ctx->length)); + + result = 0; + +cleanup: + if (ctx->doc) + xmlFreeDoc(ctx->doc); + ctx->doc = NULL; + + if (ctx->output) + xmlFreeDoc(ctx->output); + ctx->output = NULL; +exit: + + return result; +} + +void xslt_delete(struct xslt_resources *ctx) +{ + if (!ctx) + return; + + /* TODO: 'output' is pointing to a non null value (probably an + * overflow in some other place) even when not initialized. + * It happens just after all clients are disconnected. + * I must investigate it further, for while the flag is a work + * around to stop msync to crash. + */ +/* fprintf(stderr, "\ndoc: %x\tout: %x\txml: %x\tcur: %x\n\n", */ +/* ctx->doc, ctx->output, ctx->xml_str, ctx->cur); */ + + if (!ctx->init_flag) + goto exit; + + + if (ctx->doc) + xmlFreeDoc(ctx->doc); + if (ctx->output) + xmlFreeDoc(ctx->output); + if (ctx->xml_str) + xmlFree(ctx->xml_str); + if (ctx->cur) { + xsltFreeStylesheet(ctx->cur); + xsltCleanupGlobals(); + xmlCleanupParser(); + } + +exit: + + free(ctx); +} + +#endif |
From: <dg...@su...> - 2009-01-15 13:09:56
|
Author: friedrich.beckmann Date: Thu Jan 15 14:09:06 2009 New Revision: 5153 URL: http://www.opensync.org/changeset/5153 Log: windows port - regular expressions are not supported by mingw - replaced with glib version Modified: trunk/CMakeLists.txt trunk/config.h.cmake trunk/opensync/version/opensync_version.c Modified: trunk/CMakeLists.txt ============================================================================== --- trunk/CMakeLists.txt Thu Jan 15 10:53:52 2009 (r5152) +++ trunk/CMakeLists.txt Thu Jan 15 14:09:06 2009 (r5153) @@ -125,6 +125,12 @@ SET( CMAKE_REQUIRED_DEFINITIONS "" ) CHECK_FUNCTION_EXISTS( flock HAVE_FLOCK ) +# Check if system has a newer version of glib +# which supports g_regex_match_simple +INCLUDE( CheckIncludeFiles ) +SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} ) +CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H ) + # add uninstall target CONFIGURE_FILE( "${CMAKE_SOURCE_DIR}/cmake/modules/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) Modified: trunk/config.h.cmake ============================================================================== --- trunk/config.h.cmake Thu Jan 15 10:53:52 2009 (r5152) +++ trunk/config.h.cmake Thu Jan 15 14:09:06 2009 (r5153) @@ -19,6 +19,7 @@ #cmakedefine OPENSYNC_TRACE #cmakedefine HAVE_FLOCK +#cmakedefine HAVE_GLIB_GREGEX_H #cmakedefine HAVE_SOLARIS #define OPENSYNC_TESTDATA "${CMAKE_CURRENT_SOURCE_DIR}/tests/data" Modified: trunk/opensync/version/opensync_version.c ============================================================================== --- trunk/opensync/version/opensync_version.c Thu Jan 15 10:53:52 2009 (r5152) +++ trunk/opensync/version/opensync_version.c Thu Jan 15 14:09:06 2009 (r5153) @@ -32,11 +32,13 @@ static int _osync_version_match(char *pattern, char* string, OSyncError **error) { -#ifndef _WIN32 osync_assert(pattern); osync_assert(string); if(!strlen(pattern)) return 1; + /* Only newer versions of glib support regular expressions */ + /* On Windows the glib regular expressions are required */ +#ifndef HAVE_GLIB_GREGEX_H regex_t *preg = osync_try_malloc0(sizeof(regex_t), error); if(!preg) goto error; @@ -80,8 +82,8 @@ error: return -1; -#else //_WIN32 - return 1; +#else /* HAVE_GLIB_GREGEX_H */ + return g_regex_match_simple(pattern, string, 0, 0); #endif } |
From: <dg...@su...> - 2009-01-15 09:54:49
|
Author: friedrich.beckmann Date: Thu Jan 15 10:53:52 2009 New Revision: 5152 URL: http://www.opensync.org/changeset/5152 Log: windows port - g_unlink cannot remove a non-empty directory on windows Modified: trunk/opensync/common/opensync_file.c trunk/opensync/common/opensync_file.h trunk/opensync/group/opensync_updater.c Modified: trunk/opensync/common/opensync_file.c ============================================================================== --- trunk/opensync/common/opensync_file.c Thu Jan 15 10:51:55 2009 (r5151) +++ trunk/opensync/common/opensync_file.c Thu Jan 15 10:53:52 2009 (r5152) @@ -90,3 +90,47 @@ return ret; } +int osync_remove_directory_recursively(const char *dirname) +{ + GDir *gdir = NULL; + GError *gerror = NULL; + const char *gdir_entry = NULL; + char *gdir_entry_path = NULL; + + gdir = g_dir_open(dirname, 0, &gerror); + if (!gdir) + goto error; + while ((gdir_entry = g_dir_read_name(gdir))) { + gdir_entry_path = g_strdup_printf("%s%c%s", dirname, G_DIR_SEPARATOR, gdir_entry); + if (g_file_test(gdir_entry_path, G_FILE_TEST_IS_DIR)) { + if (osync_remove_directory_recursively(gdir_entry_path) < 0){ + g_set_error(&gerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s", gdir_entry_path); + g_free(gdir_entry_path); + goto error; + } + }else{ + if (g_unlink(gdir_entry_path) < 0){ + g_set_error(&gerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s", gdir_entry_path); + g_free(gdir_entry_path); + goto error; + } + } + g_free(gdir_entry_path); + } /* While */ + g_dir_close(gdir); + gdir = NULL; + if (g_rmdir(dirname) < 0){ + g_set_error(&gerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s", dirname); + goto error; + } + + return 0; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, gerror->message); + g_error_free(gerror); + if (gdir) + g_dir_close(gdir); + return -1; +} + Modified: trunk/opensync/common/opensync_file.h ============================================================================== --- trunk/opensync/common/opensync_file.h Thu Jan 15 10:51:55 2009 (r5151) +++ trunk/opensync/common/opensync_file.h Thu Jan 15 10:53:52 2009 (r5152) @@ -56,6 +56,18 @@ */ OSYNC_EXPORT osync_bool osync_file_read(const char *filename, char **data, unsigned int *size, OSyncError **error); +/*! @brief Removes a directory recursively + * + * Removes a directory recursively. This is an + * internal function for portability. + * + * @param dirname Directory which will be deleted + * @returns 0 if successful, -1 otherwise + * + */ + +int osync_remove_directory_recursively(const char *dirname); + /*@} */ #endif /* _OPENSYNC_FILE_H */ Modified: trunk/opensync/group/opensync_updater.c ============================================================================== --- trunk/opensync/group/opensync_updater.c Thu Jan 15 10:51:55 2009 (r5151) +++ trunk/opensync/group/opensync_updater.c Thu Jan 15 10:53:52 2009 (r5152) @@ -37,6 +37,7 @@ #include "opensync-group.h" #include "common/opensync_xml_internals.h" +#include "common/opensync_file.h" #include "opensync_updater.h" #include "opensync_updater_private.h" @@ -555,7 +556,7 @@ backup_groupdir = osync_strdup_printf("%s.bak", tmp); osync_free(tmp); } - if (g_unlink(groupdir) < 0) { + if (osync_remove_directory_recursively(groupdir) < 0) { g_set_error(&gerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s", groupdir); osync_error_set(&error, OSYNC_ERROR_GENERIC, "Could not remove current group directory: %s", gerror->message); g_error_free(gerror); |
From: <dg...@su...> - 2009-01-15 09:52:50
|
Author: friedrich.beckmann Date: Thu Jan 15 10:51:55 2009 New Revision: 5151 URL: http://www.opensync.org/changeset/5151 Log: windows port - system calls did not work on windows Modified: trunk/tests/support.c Modified: trunk/tests/support.c ============================================================================== --- trunk/tests/support.c Wed Jan 14 23:30:03 2009 (r5150) +++ trunk/tests/support.c Thu Jan 15 10:51:55 2009 (r5151) @@ -125,20 +125,23 @@ g_free(dirname); } - /*command = g_strdup_printf("cp -R ../osplugin/osplugin %s", testbed); - if (system(command)) - abort(); - g_free(command);*/ - - command = g_strdup_printf("mkdir %s/formats", testbed); - if (system(command)) - abort(); - g_free(command); - - command = g_strdup_printf("mkdir %s/plugins", testbed); - if (system(command)) - abort(); - g_free(command); + dirname = g_strdup_printf("%s/formats", testbed); + if (!g_file_test(dirname, G_FILE_TEST_IS_DIR)) { + if (g_mkdir(dirname,0777) < 0) { + osync_trace(TRACE_ERROR, "Could not create format direcotry %s", dirname); + abort(); + } + } + g_free(dirname); + + dirname = g_strdup_printf("%s/plugins", testbed); + if (!g_file_test(dirname, G_FILE_TEST_IS_DIR)) { + if (g_mkdir(dirname,0777) < 0) { + osync_trace(TRACE_ERROR, "Could not create plugin direcotry %s", dirname); + abort(); + } + } + g_free(dirname); command = g_strdup_printf("cp ./mock-plugin/mock-sync.%s %s/plugins", G_MODULE_SUFFIX, testbed); if (system(command)) @@ -163,8 +166,10 @@ #endif olddir = g_get_current_dir(); - if (g_chdir(testbed) < 0) + if (g_chdir(testbed) < 0){ + osync_trace(TRACE_ERROR, "Could not chdir to testbed"); abort(); + } reset_counters(); |
From: <dg...@su...> - 2009-01-14 22:36:15
|
Author: dgollub Date: Wed Jan 14 23:09:54 2009 New Revision: 5147 URL: http://www.opensync.org/changeset/5147 Log: Disable engine_error_dual_commit_timeout of unittest engine-error, which is failing randomly. Review: #1041 Modified: trunk/tests/CMakeLists.txt Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Wed Jan 14 23:06:19 2009 (r5146) +++ trunk/tests/CMakeLists.txt Wed Jan 14 23:09:54 2009 (r5147) @@ -170,7 +170,7 @@ OSYNC_TESTCASE( engine-error engine_error_single_commit_error) OSYNC_TESTCASE( engine-error engine_error_dual_commit_error) OSYNC_TESTCASE( engine-error engine_error_single_commit_timeout) -OSYNC_TESTCASE( engine-error engine_error_dual_commit_timeout) +OSYNC_TESTCASE_DISABLED( engine-error engine_error_dual_commit_timeout, "1041") OSYNC_TESTCASE( engine-error engine_error_commit_timeout_and_error) OSYNC_TESTCASE( engine-error engine_error_commit_timeout_and_error2) OSYNC_TESTCASE( engine-error engine_error_commit_error_modify) |
From: <dg...@su...> - 2009-01-14 22:36:15
|
Author: dgollub Date: Wed Jan 14 23:06:19 2009 New Revision: 5146 URL: http://www.opensync.org/changeset/5146 Log: Disable engine_sync_stress testcase of unittest "engine". Current implementation is not able to performan 1000 sync-and-block cycles within 30 seconds. At least this testcase doesn't bring reliable test results, for this reason the testcase get temporarily disabled. TODO: brief profiling and checking for obivious bottlenecks, fix them and re-enable the testcase if 1000 syncs can be done within 30 seconds. If not a new number, less then 1000, of sync to perform should get set. This number should bring stable resuls for different testing platforms. Ticket #1040 Modified: trunk/tests/CMakeLists.txt Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Wed Jan 14 22:23:28 2009 (r5145) +++ trunk/tests/CMakeLists.txt Wed Jan 14 23:06:19 2009 (r5146) @@ -139,7 +139,7 @@ OSYNC_TESTCASE( engine engine_sync_multi_obj ) OSYNC_TESTCASE( engine engine_sync_out_of_order ) OSYNC_TESTCASE( engine engine_sync_reuse ) -OSYNC_TESTCASE( engine engine_sync_stress ) +OSYNC_TESTCASE_DISABLED( engine engine_sync_stress, "1040" ) OSYNC_TESTCASE( engine engine_sync_read_write ) OSYNC_TESTCASE_DISABLED( engine engine_sync_read_write_stress "994" ) OSYNC_TESTCASE( engine engine_sync_read_write_stress2 ) |
From: <dg...@su...> - 2009-01-14 22:36:08
|
Author: dgollub Date: Wed Jan 14 23:14:14 2009 New Revision: 5148 URL: http://www.opensync.org/changeset/5148 Log: Port pyhton-wrapper to osync_format_env_detect_full() API change. Modified: trunk/wrapper/opensync-format.i Modified: trunk/wrapper/opensync-format.i ============================================================================== --- trunk/wrapper/opensync-format.i Wed Jan 14 23:09:54 2009 (r5147) +++ trunk/wrapper/opensync-format.i Wed Jan 14 23:14:14 2009 (r5148) @@ -247,7 +247,8 @@ ObjFormat *detect_objformat_full(Data *input) { Error *err = NULL; - ObjFormat *ret = osync_format_env_detect_objformat_full(self, input, &err); + ObjFormat *ret; + osync_format_env_detect_objformat_full(self, input, &ret, &err); if (!raise_exception_on_error(err) && !ret) wrapper_exception("osync_format_env_detect_objformat_full failed but did not set error code"); if (ret) |
From: <dg...@su...> - 2009-01-14 22:30:49
|
Author: dgollub Date: Wed Jan 14 23:30:03 2009 New Revision: 5150 URL: http://www.opensync.org/changeset/5150 Log: Fix typo in header file, fixes doxygen parameter-mismatch warning. Don't run detection if detected_format reference is not set, since there is no way to return the detection result. Modified: trunk/opensync/format/opensync_format_env.c trunk/opensync/format/opensync_format_env.h Modified: trunk/opensync/format/opensync_format_env.c ============================================================================== --- trunk/opensync/format/opensync_format_env.c Wed Jan 14 23:29:06 2009 (r5149) +++ trunk/opensync/format/opensync_format_env.c Wed Jan 14 23:30:03 2009 (r5150) @@ -972,6 +972,11 @@ { OSyncData *new_data = NULL; OSyncList *d = NULL; + + /* If detected_format is NULL, there is no reason to run the detection + * without any chance to report the result + */ + osync_return_val_if_fail(detected_format, TRUE); osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, input, error); Modified: trunk/opensync/format/opensync_format_env.h ============================================================================== --- trunk/opensync/format/opensync_format_env.h Wed Jan 14 23:29:06 2009 (r5149) +++ trunk/opensync/format/opensync_format_env.h Wed Jan 14 23:30:03 2009 (r5150) @@ -191,7 +191,7 @@ * @returns TRUE when format detection successfully completed, FALSE on any error. * */ -OSYNC_EXPORT osync_bool osync_format_env_detect_objformat_full(OSyncFormatEnv *env, OSyncData *input, OSyncObjFormat **deteted_format, OSyncError **error); +OSYNC_EXPORT osync_bool osync_format_env_detect_objformat_full(OSyncFormatEnv *env, OSyncData *input, OSyncObjFormat **detected_format, OSyncError **error); /** @brief Convert a data object using a specific conversion path * |
From: <dg...@su...> - 2009-01-14 22:29:54
|
Author: dgollub Date: Wed Jan 14 23:29:06 2009 New Revision: 5149 URL: http://www.opensync.org/changeset/5149 Log: Remove commas from cmake argument lists. Cause that disabled testcases got called. Modified: trunk/tests/CMakeLists.txt Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Wed Jan 14 23:14:14 2009 (r5148) +++ trunk/tests/CMakeLists.txt Wed Jan 14 23:29:06 2009 (r5149) @@ -139,7 +139,7 @@ OSYNC_TESTCASE( engine engine_sync_multi_obj ) OSYNC_TESTCASE( engine engine_sync_out_of_order ) OSYNC_TESTCASE( engine engine_sync_reuse ) -OSYNC_TESTCASE_DISABLED( engine engine_sync_stress, "1040" ) +OSYNC_TESTCASE_DISABLED( engine engine_sync_stress "1040" ) OSYNC_TESTCASE( engine engine_sync_read_write ) OSYNC_TESTCASE_DISABLED( engine engine_sync_read_write_stress "994" ) OSYNC_TESTCASE( engine engine_sync_read_write_stress2 ) @@ -170,7 +170,7 @@ OSYNC_TESTCASE( engine-error engine_error_single_commit_error) OSYNC_TESTCASE( engine-error engine_error_dual_commit_error) OSYNC_TESTCASE( engine-error engine_error_single_commit_timeout) -OSYNC_TESTCASE_DISABLED( engine-error engine_error_dual_commit_timeout, "1041") +OSYNC_TESTCASE_DISABLED( engine-error engine_error_dual_commit_timeout "1041") OSYNC_TESTCASE( engine-error engine_error_commit_timeout_and_error) OSYNC_TESTCASE( engine-error engine_error_commit_timeout_and_error2) OSYNC_TESTCASE( engine-error engine_error_commit_error_modify) @@ -244,7 +244,7 @@ OSYNC_TESTCASE(ipc ipc_callback_break) OSYNC_TESTCASE(ipc ipc_pipes) OSYNC_TESTCASE(ipc ipc_pipes_stress) -OSYNC_TESTCASE_DISABLED(ipc ipc_callback_break_pipes, "1039") +OSYNC_TESTCASE_DISABLED(ipc ipc_callback_break_pipes "1039") OSYNC_TESTCASE(ipc ipc_timeout) ENDIF (NOT WIN32) |
From: <dg...@su...> - 2009-01-14 21:24:17
|
Author: dgollub Date: Wed Jan 14 22:23:28 2009 New Revision: 5145 URL: http://www.opensync.org/changeset/5145 Log: Make osync_format_env_detect_objformat_full() function more error handling friendly. Return FALSE only on errors, otherwise always TRUE. The result of the detection get stored via referenced in the second last parameter. Patch based on the bug-fix from Graham Cobb #1036. Don't call format detection function when recieving reported changes when changetype is DELETED. Graham, thanks a lot! Modified: trunk/opensync/engine/opensync_engine.c trunk/opensync/format/opensync_format_env.c trunk/opensync/format/opensync_format_env.h Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Wed Jan 14 22:21:10 2009 (r5144) +++ trunk/opensync/engine/opensync_engine.c Wed Jan 14 22:23:28 2009 (r5145) @@ -205,7 +205,10 @@ data = osync_change_get_data(change); /* try to detect encapsulated formats */ - detected_format = osync_format_env_detect_objformat_full(engine->formatenv, data, &error); + if (osync_change_get_changetype(change) != OSYNC_CHANGE_TYPE_DELETED) + if (!osync_format_env_detect_objformat_full(engine->formatenv, data, &detected_format, &error)) + goto error; + if (detected_format && detected_format != osync_change_get_objformat(change)) { osync_trace(TRACE_INTERNAL, "Detected format (%s) different then the reported format (%s)!", osync_objformat_get_name(detected_format), Modified: trunk/opensync/format/opensync_format_env.c ============================================================================== --- trunk/opensync/format/opensync_format_env.c Wed Jan 14 22:21:10 2009 (r5144) +++ trunk/opensync/format/opensync_format_env.c Wed Jan 14 22:23:28 2009 (r5145) @@ -968,13 +968,17 @@ return NULL; } -OSyncObjFormat *osync_format_env_detect_objformat_full(OSyncFormatEnv *env, OSyncData *input, OSyncError **error) +osync_bool osync_format_env_detect_objformat_full(OSyncFormatEnv *env, OSyncData *input, OSyncObjFormat **detected_format, OSyncError **error) { - OSyncObjFormat *detected_format = NULL; OSyncData *new_data = NULL; OSyncList *d = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, input, error); + + if (!input || !osync_data_has_data(input)) { + osync_trace(TRACE_EXIT, "%s: No data provided to detect.", __func__); + return TRUE; + } /* Make a copy of the data */ new_data = osync_data_clone(input, error); @@ -1006,23 +1010,23 @@ if (!converter) break; - if ((detected_format = osync_format_env_detect_objformat(env, new_data))) { + if ((*detected_format = osync_format_env_detect_objformat(env, new_data))) { /* We detected the format. So we replace the original format. */ - osync_data_set_objformat(new_data, detected_format); + osync_data_set_objformat(new_data, *detected_format); } else - detected_format = osync_data_get_objformat(new_data); + *detected_format = osync_data_get_objformat(new_data); } osync_data_unref(new_data); - osync_trace(TRACE_EXIT, "%s: %p", __func__, detected_format); - return detected_format; + osync_trace(TRACE_EXIT, "%s: %p", __func__, *detected_format); + return TRUE; error_free_data: osync_data_unref(new_data); error: osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return NULL; + return FALSE; } osync_bool osync_format_env_convert(OSyncFormatEnv *env, OSyncFormatConverterPath *path, OSyncData *data, OSyncError **error) Modified: trunk/opensync/format/opensync_format_env.h ============================================================================== --- trunk/opensync/format/opensync_format_env.h Wed Jan 14 22:21:10 2009 (r5144) +++ trunk/opensync/format/opensync_format_env.h Wed Jan 14 22:23:28 2009 (r5145) @@ -186,11 +186,12 @@ * * @param env The conversion environment to use * @param input The data object to detect - * @param error The error-return location - * @returns The encapsulated format on success, NULL otherwise + * @param detected_format Reference to OSyncObjFormat which get set with detected format, if any got detected + * @param error The error-return location, get set on any error + * @returns TRUE when format detection successfully completed, FALSE on any error. * */ -OSYNC_EXPORT OSyncObjFormat *osync_format_env_detect_objformat_full(OSyncFormatEnv *env, OSyncData *input, OSyncError **error); +OSYNC_EXPORT osync_bool osync_format_env_detect_objformat_full(OSyncFormatEnv *env, OSyncData *input, OSyncObjFormat **deteted_format, OSyncError **error); /** @brief Convert a data object using a specific conversion path * |
From: <dg...@su...> - 2009-01-14 21:21:58
|
Author: dgollub Date: Wed Jan 14 22:21:10 2009 New Revision: 5144 URL: http://www.opensync.org/changeset/5144 Log: Avoid assret in public interface in osync_data_has_data() call. Instead of assert() when first argument is not set, just return FALSE. Modified: trunk/opensync/data/opensync_data.c Modified: trunk/opensync/data/opensync_data.c ============================================================================== --- trunk/opensync/data/opensync_data.c Wed Jan 14 22:20:12 2009 (r5143) +++ trunk/opensync/data/opensync_data.c Wed Jan 14 22:21:10 2009 (r5144) @@ -146,7 +146,7 @@ osync_bool osync_data_has_data(OSyncData *data) { - osync_assert(data); + osync_return_val_if_fail(data, FALSE); return data->data ? TRUE : FALSE; } |
From: <dg...@su...> - 2009-01-14 21:20:59
|
Author: dgollub Date: Wed Jan 14 22:20:12 2009 New Revision: 5143 URL: http://www.opensync.org/changeset/5143 Log: Disable two randomly failing testcases (temporarily): engine_error_dual_connect_timeout - #1038 ipc_callback_break_pipes - #1039 Modified: trunk/tests/CMakeLists.txt Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Wed Jan 14 20:14:11 2009 (r5142) +++ trunk/tests/CMakeLists.txt Wed Jan 14 22:20:12 2009 (r5143) @@ -157,7 +157,7 @@ OSYNC_TESTCASE( engine-error engine_error_one_of_three_connect_error) OSYNC_TESTCASE( engine-error engine_error_no_connect_error) OSYNC_TESTCASE( engine-error engine_error_single_connect_timeout) -OSYNC_TESTCASE( engine-error engine_error_dual_connect_timeout) +OSYNC_TESTCASE_DISABLED( engine-error engine_error_dual_connect_timeout "1038") OSYNC_TESTCASE( engine-error engine_error_one_of_three_timeout) OSYNC_TESTCASE( engine-error engine_error_timeout_and_error) OSYNC_TESTCASE( engine-error engine_error_single_get_changes_error) @@ -244,7 +244,7 @@ OSYNC_TESTCASE(ipc ipc_callback_break) OSYNC_TESTCASE(ipc ipc_pipes) OSYNC_TESTCASE(ipc ipc_pipes_stress) -OSYNC_TESTCASE(ipc ipc_callback_break_pipes) +OSYNC_TESTCASE_DISABLED(ipc ipc_callback_break_pipes, "1039") OSYNC_TESTCASE(ipc ipc_timeout) ENDIF (NOT WIN32) |
From: <dg...@su...> - 2009-01-14 19:15:12
|
Author: friedrich.beckmann Date: Wed Jan 14 20:14:11 2009 New Revision: 5142 URL: http://www.opensync.org/changeset/5142 Log: added emacs configuration Modified: trunk/CODING Modified: trunk/CODING ============================================================================== --- trunk/CODING Wed Jan 14 12:51:38 2009 (r5141) +++ trunk/CODING Wed Jan 14 20:14:11 2009 (r5142) @@ -70,6 +70,31 @@ return point. Do not abuse goto usage though... never goto up, never create more than one label and do not "gotoo far". +EMACS +--------------------------------------------------------------------- +For the above indentation rules, you can add the following +to your .emacs file: + +;; Additional setting to have linux kernel style +;; indentation. Argument lists in next line will only +;; be indented by tabs +(defun c-lineup-arglist-tabs-only (ignored) + "Line up argument lists by tabs, not spaces" + (let* ((anchor (c-langelem-pos c-syntactic-element)) + (column (c-langelem-2nd-pos c-syntactic-element)) + (offset (- (1+ column) anchor)) + (steps (floor offset c-basic-offset))) + (* (max steps 1) + c-basic-offset))) + +(defun my-c-mode-hook () + (setq indent-tabs-mode t) + (c-set-style "linux") + (c-set-offset 'arglist-cont-nonempty + '(c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only)) +) + +(add-hook 'c-mode-hook 'my-c-mode-hook ) CODE DOCUMENTATION --------------------------------------------------------------------- |