@@ -127,28 +127,57 @@ int main(int argc, char** argv)
127127 "stdlog_decode decoded procid" ) ;
128128 ok (streq (hdr .msgid , cln .msgid ),
129129 "stdlog_decode decoded msgid" ) ;
130- ok (sdlen == strlen (STDLOG_NILVALUE ) && strncmp (sd , STDLOG_NILVALUE , sdlen ) == 0 ,
130+ ok (sdlen == strlen (STDLOG_NILVALUE )
131+ && strncmp (sd , STDLOG_NILVALUE , sdlen ) == 0 ,
131132 "stdlog_decode decoded structured data" );
132- ok (msglen == strlen (STDLOG_NILVALUE ) && strncmp (msg , STDLOG_NILVALUE , msglen ) == 0 ,
133+ ok (msglen == strlen (STDLOG_NILVALUE )
134+ && strncmp (msg , STDLOG_NILVALUE , msglen ) == 0 ,
133135 "stdlog_decode decoded message" );
134136
135137 /* Check that trailing \n or \r in message are dropped
136138 */
137139 stdlog_init (& hdr );
138- len = stdlog_encode (buf , sizeof (buf ), & hdr ,
140+ len = stdlog_encode (buf ,
141+ sizeof (buf ),
142+ & hdr ,
139143 STDLOG_NILVALUE ,
140144 "Hello whorl\n\r\n" );
141145 ok (len >= 0 ,
142146 "stdlog_encode worked with message" );
143147 diag ("%.*s" , len , buf );
144148 n = stdlog_decode (buf , len , & hdr , & sd , & sdlen , & msg , & msglen );
145- ok (n == 0 && strncmp (msg , "Hello whorl" , msglen ) == 0 ,
149+ ok (n == 0
150+ && strncmp (msg , "Hello whorl" , msglen ) == 0 ,
146151 "trailing cr/lf chars were truncated" );
147152
153+ /* Check that valid UTF-8 non-ascii characters are preserved
154+ */
155+ const char data [] = "jobid ƒ6LEmNENaf9 😄 😹" ;
156+ len = stdlog_encode (buf ,
157+ sizeof (buf ),
158+ & hdr ,
159+ STDLOG_NILVALUE ,
160+ data );
161+ ok (len >= 0 ,
162+ "stdlog_encode worked with %s" , data );
163+ n = stdlog_decode (buf , len , & hdr , & sd , & sdlen , & msg , & msglen );
164+ ok (n == 0 ,
165+ "stdlog_decode worked" );
166+ is (data , msg ,
167+ "non-ascii characters were preserved" );
168+
148169 int i = 0 ;
149170 while (valid [i ] != NULL ) {
150- n = stdlog_decode (valid [i ], strlen (valid [i ]), & hdr , & sd , & sdlen , & msg , & msglen );
151- ok (n == 0 && msglen == strlen ("message" ) && strncmp (msg , "message" , msglen ) == 0 ,
171+ n = stdlog_decode (valid [i ],
172+ strlen (valid [i ]),
173+ & hdr ,
174+ & sd ,
175+ & sdlen ,
176+ & msg ,
177+ & msglen );
178+ ok (n == 0
179+ && msglen == strlen ("message" )
180+ && strncmp (msg , "message" , msglen ) == 0 ,
152181 "successfully decoded %s" , valid [i ]);
153182 i ++ ;
154183 }
0 commit comments