static int mvcp_remote_read_response( mvcp_socket socket, mvcp_response response ) { char temp[ 10240 ]; int length; int terminated = 0; temp[ 0 ] = '\0'; while ( !terminated && ( length = mvcp_socket_read_data( socket, temp, sizeof( temp ) - 1 ) ) >= 0 ) { int position = 0; temp[ length ] = '\0'; mvcp_response_write( response, temp, length ); position = mvcp_response_count( response ) - 1; if ( position < 0 || temp[ strlen( temp ) - 1 ] != '\n' ) continue; switch( mvcp_response_get_error_code( response ) ) { case 201: case 500: terminated = !strcmp( mvcp_response_get_line( response, position ), "" ); break; case 202: terminated = mvcp_response_count( response ) >= 2; break; default: terminated = 1; break; } } return 0; }
int mvcp_response_printf( mvcp_response response, size_t size, const char *format, ... ) { int length = 0; char *text = malloc( size ); if ( text != NULL ) { va_list list; va_start( list, format ); length = vsnprintf( text, size, format, list ); if ( length != 0 ) mvcp_response_write( response, text, length ); va_end( list ); free( text ); } return length; }