@@ -715,13 +715,11 @@ flb_sds_t flb_pack_msgpack_to_json_format(const char *data, uint64_t bytes,
715715 msgpack_sbuffer tmp_sbuf ;
716716 msgpack_packer tmp_pck ;
717717 msgpack_object * obj ;
718+ msgpack_object * k ;
719+ msgpack_object * v ;
718720 struct tm tm ;
719721 struct flb_time tms ;
720722
721- if (!date_key ) {
722- return NULL ;
723- }
724-
725723 /* Iterate the original buffer and perform adjustments */
726724 records = flb_mp_count (data , bytes );
727725 if (records <= 0 ) {
@@ -770,41 +768,48 @@ flb_sds_t flb_pack_msgpack_to_json_format(const char *data, uint64_t bytes,
770768 /* Get the record/map */
771769 map = root .via .array .ptr [1 ];
772770 map_size = map .via .map .size ;
773- msgpack_pack_map (& tmp_pck , map_size + 1 );
774771
775- /* Append date key */
776- msgpack_pack_str (& tmp_pck , flb_sds_len (date_key ));
777- msgpack_pack_str_body (& tmp_pck , date_key , flb_sds_len (date_key ));
772+ if (date_key != NULL ) {
773+ msgpack_pack_map (& tmp_pck , map_size + 1 );
774+ }
775+ else {
776+ msgpack_pack_map (& tmp_pck , map_size );
777+ }
778+
779+ if (date_key != NULL ) {
780+ /* Append date key */
781+ msgpack_pack_str (& tmp_pck , flb_sds_len (date_key ));
782+ msgpack_pack_str_body (& tmp_pck , date_key , flb_sds_len (date_key ));
778783
779- /* Append date value */
780- switch (date_format ) {
781- case FLB_PACK_JSON_DATE_DOUBLE :
782- msgpack_pack_double (& tmp_pck , flb_time_to_double (& tms ));
783- break ;
784- case FLB_PACK_JSON_DATE_ISO8601 :
784+ /* Append date value */
785+ switch (date_format ) {
786+ case FLB_PACK_JSON_DATE_DOUBLE :
787+ msgpack_pack_double (& tmp_pck , flb_time_to_double (& tms ));
788+ break ;
789+ case FLB_PACK_JSON_DATE_ISO8601 :
785790 /* Format the time, use microsecond precision not nanoseconds */
786- gmtime_r (& tms .tm .tv_sec , & tm );
787- s = strftime (time_formatted , sizeof (time_formatted ) - 1 ,
788- FLB_PACK_JSON_DATE_ISO8601_FMT , & tm );
789-
790- len = snprintf (time_formatted + s ,
791- sizeof (time_formatted ) - 1 - s ,
792- ".%06" PRIu64 "Z" ,
793- (uint64_t ) tms .tm .tv_nsec / 1000 );
794- s += len ;
795- msgpack_pack_str (& tmp_pck , s );
796- msgpack_pack_str_body (& tmp_pck , time_formatted , s );
797- break ;
798- case FLB_PACK_JSON_DATE_EPOCH :
799- msgpack_pack_uint64 (& tmp_pck , (long long unsigned )(tms .tm .tv_sec ));
800- break ;
791+ gmtime_r (& tms .tm .tv_sec , & tm );
792+ s = strftime (time_formatted , sizeof (time_formatted ) - 1 ,
793+ FLB_PACK_JSON_DATE_ISO8601_FMT , & tm );
794+
795+ len = snprintf (time_formatted + s ,
796+ sizeof (time_formatted ) - 1 - s ,
797+ ".%06" PRIu64 "Z" ,
798+ (uint64_t ) tms .tm .tv_nsec / 1000 );
799+ s += len ;
800+ msgpack_pack_str (& tmp_pck , s );
801+ msgpack_pack_str_body (& tmp_pck , time_formatted , s );
802+ break ;
803+ case FLB_PACK_JSON_DATE_EPOCH :
804+ msgpack_pack_uint64 (& tmp_pck , (long long unsigned )(tms .tm .tv_sec ));
805+ break ;
806+ }
801807 }
802808
803809 /* Append remaining keys/values */
804810 for (i = 0 ; i < map_size ; i ++ ) {
805- msgpack_object * k = & map .via .map .ptr [i ].key ;
806- msgpack_object * v = & map .via .map .ptr [i ].val ;
807-
811+ k = & map .via .map .ptr [i ].key ;
812+ v = & map .via .map .ptr [i ].val ;
808813 msgpack_pack_object (& tmp_pck , * k );
809814 msgpack_pack_object (& tmp_pck , * v );
810815 }
0 commit comments