cdk_error_t cdk_stream_flush (cdk_stream_t s) { cdk_error_t rc; if (!s) { gnutls_assert (); return CDK_Inv_Value; } /* The user callback does not support flush */ if (s->cbs_hd) return 0; /* For read-only streams, no flush is needed. */ if (!s->flags.write) return 0; if (!s->flags.filtrated) { if (!cdk_stream_get_length (s)) return 0; rc = cdk_stream_seek (s, 0); if (!rc) rc = stream_flush (s); if (!rc) rc = stream_filter_write (s); s->flags.filtrated = 1; if (rc) { s->error = rc; gnutls_assert (); return rc; } } return 0; }
cdk_error_t cdk_stream_flush( cdk_stream_t s ) { int rc = 0; if( !s ) return CDK_Inv_Value; if( !s->flags.filtrated ) { if( !cdk_stream_get_length( s ) ) return 0; rc = cdk_stream_seek( s, 0 ); if( !rc ) rc = stream_flush( s ); if( !rc ) { rc = stream_filter_write( s ); if( rc ) s->error = rc; } s->flags.filtrated = 1; } return rc; }