1e1051a39Sopenharmony_ci/* 2e1051a39Sopenharmony_ci * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. 3e1051a39Sopenharmony_ci * Copyright Siemens AG 2015-2022 4e1051a39Sopenharmony_ci * 5e1051a39Sopenharmony_ci * Licensed under the Apache License 2.0 (the "License"). You may not use 6e1051a39Sopenharmony_ci * this file except in compliance with the License. You can obtain a copy 7e1051a39Sopenharmony_ci * in the file LICENSE in the source distribution or at 8e1051a39Sopenharmony_ci * https://www.openssl.org/source/license.html 9e1051a39Sopenharmony_ci */ 10e1051a39Sopenharmony_ci 11e1051a39Sopenharmony_ci/* 12e1051a39Sopenharmony_ci * A collection of test cases where check-format.pl should not report issues. 13e1051a39Sopenharmony_ci * There are some known false positives, though, which are marked below. 14e1051a39Sopenharmony_ci */ 15e1051a39Sopenharmony_ci 16e1051a39Sopenharmony_ci#include <errno.h> /* should not report whitespace nits within <...> */ 17e1051a39Sopenharmony_ci#define F \ 18e1051a39Sopenharmony_ci void f() \ 19e1051a39Sopenharmony_ci { \ 20e1051a39Sopenharmony_ci int i; \ 21e1051a39Sopenharmony_ci int j; \ 22e1051a39Sopenharmony_ci \ 23e1051a39Sopenharmony_ci return; \ 24e1051a39Sopenharmony_ci } 25e1051a39Sopenharmony_ci 26e1051a39Sopenharmony_ci/* allow extra SPC in single-line comment */ 27e1051a39Sopenharmony_ci/* 28e1051a39Sopenharmony_ci * allow extra SPC in regular multi-line comment 29e1051a39Sopenharmony_ci */ 30e1051a39Sopenharmony_ci/*- 31e1051a39Sopenharmony_ci * allow extra SPC in format-tagged multi-line comment 32e1051a39Sopenharmony_ci */ 33e1051a39Sopenharmony_ci/** allow extra '*' in comment opening */ 34e1051a39Sopenharmony_ci/*! allow extra '!' in comment opening */ 35e1051a39Sopenharmony_ci/* 36e1051a39Sopenharmony_ci ** allow "**" as first non-space chars of a line within multi-line comment 37e1051a39Sopenharmony_ci */ 38e1051a39Sopenharmony_ci 39e1051a39Sopenharmony_ciint f(void) /* 40e1051a39Sopenharmony_ci * trailing multi-line comment 41e1051a39Sopenharmony_ci */ 42e1051a39Sopenharmony_ci{ 43e1051a39Sopenharmony_ci typedef int INT; 44e1051a39Sopenharmony_ci void v; 45e1051a39Sopenharmony_ci short b; 46e1051a39Sopenharmony_ci char c; 47e1051a39Sopenharmony_ci signed s; 48e1051a39Sopenharmony_ci unsigned u; 49e1051a39Sopenharmony_ci int i; 50e1051a39Sopenharmony_ci long l; 51e1051a39Sopenharmony_ci float f; 52e1051a39Sopenharmony_ci double d; 53e1051a39Sopenharmony_ci enum {} enu; 54e1051a39Sopenharmony_ci struct {} stru; 55e1051a39Sopenharmony_ci union {} un; 56e1051a39Sopenharmony_ci auto a; 57e1051a39Sopenharmony_ci extern e; 58e1051a39Sopenharmony_ci static int stat; 59e1051a39Sopenharmony_ci const int con; 60e1051a39Sopenharmony_ci volatile int vola; 61e1051a39Sopenharmony_ci register int reg; 62e1051a39Sopenharmony_ci OSSL_x y, *p = params; 63e1051a39Sopenharmony_ci int params[]; 64e1051a39Sopenharmony_ci OSSL_PARAM * (* params []) [MAX + 1]; 65e1051a39Sopenharmony_ci XY *(* fn)(int a, char b); 66e1051a39Sopenharmony_ci /* 67e1051a39Sopenharmony_ci * multi-line comment should not disturb detection of local decls 68e1051a39Sopenharmony_ci */ 69e1051a39Sopenharmony_ci BIO1 ***b; 70e1051a39Sopenharmony_ci /* intra-line comment should not disturb detection of local decls */ 71e1051a39Sopenharmony_ci unsigned k; 72e1051a39Sopenharmony_ci 73e1051a39Sopenharmony_ci /* intra-line comment should not disturb detection of end of local decls */ 74e1051a39Sopenharmony_ci 75e1051a39Sopenharmony_ci { 76e1051a39Sopenharmony_ci int x; /* just decls in block */ 77e1051a39Sopenharmony_ci } 78e1051a39Sopenharmony_ci if (p != (unsigned char *) 79e1051a39Sopenharmony_ci &(ctx->tmp[0])) { 80e1051a39Sopenharmony_ci i -= (p - (unsigned char *) /* do not confuse with var decl */ 81e1051a39Sopenharmony_ci &(ctx->tmp[0])); 82e1051a39Sopenharmony_ci } 83e1051a39Sopenharmony_ci { 84e1051a39Sopenharmony_ci ctx->buf_off = 0; /* do not confuse with var decl */ 85e1051a39Sopenharmony_ci return 0; 86e1051a39Sopenharmony_ci } 87e1051a39Sopenharmony_ci { 88e1051a39Sopenharmony_ci ctx->buf_len = EVP_EncodeBlock((unsigned char *)ctx->buf, 89e1051a39Sopenharmony_ci (unsigned char *)ctx->tmp, /* no decl */ 90e1051a39Sopenharmony_ci ctx->tmp_len); 91e1051a39Sopenharmony_ci } 92e1051a39Sopenharmony_ci { 93e1051a39Sopenharmony_ci EVP_EncodeFinal(ctx->base64, 94e1051a39Sopenharmony_ci (unsigned char *)ctx->buf, &(ctx->len)); /* no decl */ 95e1051a39Sopenharmony_ci /* push out the bytes */ 96e1051a39Sopenharmony_ci goto again; 97e1051a39Sopenharmony_ci } 98e1051a39Sopenharmony_ci { 99e1051a39Sopenharmony_ci f(1, (unsigned long)2); /* no decl */ 100e1051a39Sopenharmony_ci x; 101e1051a39Sopenharmony_ci } 102e1051a39Sopenharmony_ci { 103e1051a39Sopenharmony_ci char *pass_str = get_passwd(opt_srv_secret, "x"); 104e1051a39Sopenharmony_ci 105e1051a39Sopenharmony_ci if (pass_str != NULL) { 106e1051a39Sopenharmony_ci cleanse(opt_srv_secret); 107e1051a39Sopenharmony_ci res = OSSL_CMP_CTX_set1_secretValue(ctx, (unsigned char *)pass_str, 108e1051a39Sopenharmony_ci strlen(pass_str)); 109e1051a39Sopenharmony_ci clear_free(pass_str); 110e1051a39Sopenharmony_ci } 111e1051a39Sopenharmony_ci } 112e1051a39Sopenharmony_ci} 113e1051a39Sopenharmony_ci 114e1051a39Sopenharmony_ciint g(void) 115e1051a39Sopenharmony_ci{ 116e1051a39Sopenharmony_ci if (ctx == NULL) { /* non-leading end-of-line comment */ 117e1051a39Sopenharmony_ci if (/* comment after '(' */ pem_name != NULL /* comment before ')' */) 118e1051a39Sopenharmony_ci /* entire-line comment indent usually like for the following line */ 119e1051a39Sopenharmony_ci return NULL; /* hanging indent also for this line after comment */ 120e1051a39Sopenharmony_ci /* leading comment has same indentation as normal code */ stmt; 121e1051a39Sopenharmony_ci /* entire-line comment may have same indent as normal code */ 122e1051a39Sopenharmony_ci } 123e1051a39Sopenharmony_ci for (i = 0; i < n; i++) 124e1051a39Sopenharmony_ci for (; i < n; i++) 125e1051a39Sopenharmony_ci for (i = 0; ; i++) 126e1051a39Sopenharmony_ci for (i = 0;; i++) 127e1051a39Sopenharmony_ci for (i = 0; i < n; ) 128e1051a39Sopenharmony_ci for (i = 0; i < n;) 129e1051a39Sopenharmony_ci ; 130e1051a39Sopenharmony_ci for (i = 0; ; ) 131e1051a39Sopenharmony_ci for (i = 0; ;) 132e1051a39Sopenharmony_ci for (i = 0;; ) 133e1051a39Sopenharmony_ci for (i = 0;;) 134e1051a39Sopenharmony_ci for (; i < n; ) 135e1051a39Sopenharmony_ci for (; j < n;) 136e1051a39Sopenharmony_ci for (; ; i++) 137e1051a39Sopenharmony_ci for (;; i++) 138e1051a39Sopenharmony_ci ; 139e1051a39Sopenharmony_ci for (;;) /* the only variant allowed in case of "empty" for (...) */ 140e1051a39Sopenharmony_ci ; 141e1051a39Sopenharmony_ci for (;;) ; /* should not trigger: space before ';' */ 142e1051a39Sopenharmony_ci lab: ; /* should not trigger: space before ';' */ 143e1051a39Sopenharmony_ci 144e1051a39Sopenharmony_ci#if X 145e1051a39Sopenharmony_ci if (1) /* bad style: just part of control structure depends on #if */ 146e1051a39Sopenharmony_ci#else 147e1051a39Sopenharmony_ci if (2) /*@ resulting false positive */ 148e1051a39Sopenharmony_ci#endif 149e1051a39Sopenharmony_ci c; /*@ resulting false positive */ 150e1051a39Sopenharmony_ci 151e1051a39Sopenharmony_ci if (1) 152e1051a39Sopenharmony_ci if (2) 153e1051a39Sopenharmony_ci c; 154e1051a39Sopenharmony_ci else 155e1051a39Sopenharmony_ci e; 156e1051a39Sopenharmony_ci else 157e1051a39Sopenharmony_ci f; 158e1051a39Sopenharmony_ci do 159e1051a39Sopenharmony_ci do 160e1051a39Sopenharmony_ci 2; 161e1051a39Sopenharmony_ci while (1); 162e1051a39Sopenharmony_ci while (2); 163e1051a39Sopenharmony_ci 164e1051a39Sopenharmony_ci if (1) 165e1051a39Sopenharmony_ci f(a, b); 166e1051a39Sopenharmony_ci do 167e1051a39Sopenharmony_ci 1; while (2); /*@ more than one stmt just to construct case */ 168e1051a39Sopenharmony_ci if (1) 169e1051a39Sopenharmony_ci f(a, b); 170e1051a39Sopenharmony_ci else 171e1051a39Sopenharmony_ci do 172e1051a39Sopenharmony_ci 1; 173e1051a39Sopenharmony_ci while (2); 174e1051a39Sopenharmony_ci if (1) 175e1051a39Sopenharmony_ci f(a, b); 176e1051a39Sopenharmony_ci else do /*@ (non-brace) code before 'do' just to construct case */ 177e1051a39Sopenharmony_ci 1; 178e1051a39Sopenharmony_ci while (2); 179e1051a39Sopenharmony_ci f1234(a, 180e1051a39Sopenharmony_ci b); do /*@ (non-brace) code before 'do' just to construct case */ 181e1051a39Sopenharmony_ci 1; 182e1051a39Sopenharmony_ci while (2); 183e1051a39Sopenharmony_ci if (1) 184e1051a39Sopenharmony_ci f(a, 185e1051a39Sopenharmony_ci b); do /*@ (non-brace) code before 'do' just to construct case */ 186e1051a39Sopenharmony_ci 1; 187e1051a39Sopenharmony_ci while (2); 188e1051a39Sopenharmony_ci if (1) 189e1051a39Sopenharmony_ci f(a, b); 190e1051a39Sopenharmony_ci else 191e1051a39Sopenharmony_ci do f(c, c); /*@ (non-brace) code after 'do' just to construct case */ 192e1051a39Sopenharmony_ci while (2); 193e1051a39Sopenharmony_ci 194e1051a39Sopenharmony_ci if (1) 195e1051a39Sopenharmony_ci f(a, b); 196e1051a39Sopenharmony_ci else 197e1051a39Sopenharmony_ci return; 198e1051a39Sopenharmony_ci if (1) 199e1051a39Sopenharmony_ci f(a, 200e1051a39Sopenharmony_ci b); else /*@ (non-brace) code before 'else' just to construct case */ 201e1051a39Sopenharmony_ci do 202e1051a39Sopenharmony_ci 1; 203e1051a39Sopenharmony_ci while (2); 204e1051a39Sopenharmony_ci 205e1051a39Sopenharmony_ci if (1) 206e1051a39Sopenharmony_ci { /*@ brace after 'if' not on same line just to construct case */ 207e1051a39Sopenharmony_ci c; 208e1051a39Sopenharmony_ci d; 209e1051a39Sopenharmony_ci } 210e1051a39Sopenharmony_ci /* this comment is correctly indented if it refers to the following line */ 211e1051a39Sopenharmony_ci d; 212e1051a39Sopenharmony_ci 213e1051a39Sopenharmony_ci if (1) { 214e1051a39Sopenharmony_ci 2; 215e1051a39Sopenharmony_ci } else /*@ no brace after 'else' just to construct case */ 216e1051a39Sopenharmony_ci 3; 217e1051a39Sopenharmony_ci do { 218e1051a39Sopenharmony_ci } while (x); 219e1051a39Sopenharmony_ci if (1) { 220e1051a39Sopenharmony_ci 2; 221e1051a39Sopenharmony_ci } else { 222e1051a39Sopenharmony_ci 3; 223e1051a39Sopenharmony_ci } 224e1051a39Sopenharmony_ci if (4) 225e1051a39Sopenharmony_ci 5; 226e1051a39Sopenharmony_ci else 227e1051a39Sopenharmony_ci 6; 228e1051a39Sopenharmony_ci 229e1051a39Sopenharmony_ci if (1) { 230e1051a39Sopenharmony_ci if (2) { 231e1051a39Sopenharmony_ci case MAC_TYPE_MAC: 232e1051a39Sopenharmony_ci { 233e1051a39Sopenharmony_ci EVP_MAC_CTX *new_mac_ctx; 234e1051a39Sopenharmony_ci 235e1051a39Sopenharmony_ci if (ctx->pkey == NULL) 236e1051a39Sopenharmony_ci return 0; 237e1051a39Sopenharmony_ci } 238e1051a39Sopenharmony_ci break; 239e1051a39Sopenharmony_ci default: 240e1051a39Sopenharmony_ci /* This should be dead code */ 241e1051a39Sopenharmony_ci return 0; 242e1051a39Sopenharmony_ci } 243e1051a39Sopenharmony_ci } 244e1051a39Sopenharmony_ci if (expr_line1 245e1051a39Sopenharmony_ci == expr_line2 246e1051a39Sopenharmony_ci && expr_line3) { 247e1051a39Sopenharmony_ci c1; 248e1051a39Sopenharmony_ci } else { 249e1051a39Sopenharmony_ci c; 250e1051a39Sopenharmony_ci d; 251e1051a39Sopenharmony_ci } 252e1051a39Sopenharmony_ci if (expr_line1 253e1051a39Sopenharmony_ci == expr_line2 254e1051a39Sopenharmony_ci && expr_line3) 255e1051a39Sopenharmony_ci hanging_stmt; 256e1051a39Sopenharmony_ci} 257e1051a39Sopenharmony_ci#define m \ 258e1051a39Sopenharmony_ci do { /* should not be confused with function header followed by '{' */ \ 259e1051a39Sopenharmony_ci } while (0) 260e1051a39Sopenharmony_ci 261e1051a39Sopenharmony_ci/* should not trigger: constant on LHS of comparison or assignment operator */ 262e1051a39Sopenharmony_ciX509 *x509 = NULL; 263e1051a39Sopenharmony_ciint y = a + 1 < b; 264e1051a39Sopenharmony_ciint ret, was_NULL = *certs == NULL; 265e1051a39Sopenharmony_ci 266e1051a39Sopenharmony_ci/* should not trigger: missing space before ... */ 267e1051a39Sopenharmony_cifloat z = 1e-6 * (-1) * b[+6] * 1e+1 * (a)->f * (long)+1 268e1051a39Sopenharmony_ci - (tmstart.tv_sec + tmstart.tv_nsec * 1e-9); 269e1051a39Sopenharmony_cistruct st = {-1, 0}; 270e1051a39Sopenharmony_ciint x = (y <<= 1) + (z <= 5.0); 271e1051a39Sopenharmony_ci 272e1051a39Sopenharmony_ciconst OPTIONS passwd_options[] = { 273e1051a39Sopenharmony_ci {"aixmd5", OPT_AIXMD5, '-', "AIX MD5-based password algorithm"}, 274e1051a39Sopenharmony_ci#if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_DEPRECATED_3_0) 275e1051a39Sopenharmony_ci {"crypt", OPT_CRYPT, '-', "Standard Unix password algorithm (default)"}, 276e1051a39Sopenharmony_ci#endif 277e1051a39Sopenharmony_ci OPT_R_OPTIONS, 278e1051a39Sopenharmony_ci 279e1051a39Sopenharmony_ci {NULL} 280e1051a39Sopenharmony_ci}; 281e1051a39Sopenharmony_ci 282e1051a39Sopenharmony_citypedef * d(int) 283e1051a39Sopenharmony_ci x; 284e1051a39Sopenharmony_citypedef (int) 285e1051a39Sopenharmony_cix; 286e1051a39Sopenharmony_citypedef (int)*() 287e1051a39Sopenharmony_ci x; 288e1051a39Sopenharmony_citypedef *int * 289e1051a39Sopenharmony_cix; 290e1051a39Sopenharmony_citypedef OSSL_CMP_MSG *(*cmp_srv_process_cb_t) 291e1051a39Sopenharmony_ci (OSSL_CMP_SRV_CTX *ctx, OSSL_CMP_MSG *msg) 292e1051a39Sopenharmony_ci xx; 293e1051a39Sopenharmony_ci 294e1051a39Sopenharmony_ci#define IF(cond) if (cond) 295e1051a39Sopenharmony_ci 296e1051a39Sopenharmony_ci_Pragma("GCC diagnostic push") 297e1051a39Sopenharmony_ci_Pragma("GCC diagnostic pop") 298e1051a39Sopenharmony_ci 299e1051a39Sopenharmony_ci#define CB_ERR_IF(cond, ctx, cert, depth, err) \ 300e1051a39Sopenharmony_ci if ((cond) && ((depth) < 0 || verify_cb_cert(ctx, cert, depth, err) == 0)) \ 301e1051a39Sopenharmony_ci return err 302e1051a39Sopenharmony_cistatic int verify_cb_crl(X509_STORE_CTX *ctx, int err) 303e1051a39Sopenharmony_ci{ 304e1051a39Sopenharmony_ci ctx->error = err; 305e1051a39Sopenharmony_ci return ctx->verify_cb(0, ctx); 306e1051a39Sopenharmony_ci} 307e1051a39Sopenharmony_ci 308e1051a39Sopenharmony_ci#ifdef CMP_FALLBACK_EST 309e1051a39Sopenharmony_ci# define CMP_FALLBACK_CERT_FILE "cert.pem" 310e1051a39Sopenharmony_ci#endif 311e1051a39Sopenharmony_ci 312e1051a39Sopenharmony_ci#define X509_OBJECT_get0_X509(obj) \ 313e1051a39Sopenharmony_ci ((obj) == NULL || (obj)->type != X509_LU_X509 ? NULL : (obj)->data.x509) 314e1051a39Sopenharmony_ci#define X509_STORE_CTX_set_current_cert(ctx, x) { (ctx)->current_cert = (x); } 315e1051a39Sopenharmony_ci#define X509_STORE_set_ex_data(ctx, idx, data) \ 316e1051a39Sopenharmony_ci CRYPTO_set_ex_data(&(ctx)->ex_data, (idx), (data)) 317e1051a39Sopenharmony_ci 318e1051a39Sopenharmony_citypedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); 319e1051a39Sopenharmony_ci#define X509_STORE_CTX_set_error_depth(ctx, depth) \ 320e1051a39Sopenharmony_ci { (ctx)->error_depth = (depth); } 321e1051a39Sopenharmony_ci#define EVP_PKEY_up_ref(x) ((x)->references++) 322e1051a39Sopenharmony_ci/* should not report missing blank line: */ 323e1051a39Sopenharmony_ciDECLARE_STACK_OF(OPENSSL_CSTRING) 324e1051a39Sopenharmony_cibool UTIL_iterate_dir(int (*fn)(const char *file, void *arg), void *arg, 325e1051a39Sopenharmony_ci const char *path, bool recursive); 326e1051a39Sopenharmony_cisize_t UTIL_url_encode( 327e1051a39Sopenharmony_ci size_t *size_needed 328e1051a39Sopenharmony_ci ); 329e1051a39Sopenharmony_cisize_t UTIL_url_encode(const char *source, 330e1051a39Sopenharmony_ci char *destination, 331e1051a39Sopenharmony_ci size_t destination_len, 332e1051a39Sopenharmony_ci size_t *size_needed); 333e1051a39Sopenharmony_ci#error well. oops. 334e1051a39Sopenharmony_ci 335e1051a39Sopenharmony_ciint f() 336e1051a39Sopenharmony_ci{ 337e1051a39Sopenharmony_ci c; 338e1051a39Sopenharmony_ci if (1) { 339e1051a39Sopenharmony_ci c; 340e1051a39Sopenharmony_ci } 341e1051a39Sopenharmony_ci c; 342e1051a39Sopenharmony_ci if (1) 343e1051a39Sopenharmony_ci if (2) 344e1051a39Sopenharmony_ci { /*@ brace after 'if' not on same line just to construct case */ 345e1051a39Sopenharmony_ci c; 346e1051a39Sopenharmony_ci } 347e1051a39Sopenharmony_ci e; 348e1051a39Sopenharmony_ci const usign = { 349e1051a39Sopenharmony_ci 0xDF, 350e1051a39Sopenharmony_ci { 351e1051a39Sopenharmony_ci dd 352e1051a39Sopenharmony_ci }, 353e1051a39Sopenharmony_ci dd 354e1051a39Sopenharmony_ci }; 355e1051a39Sopenharmony_ci const unsign = { 356e1051a39Sopenharmony_ci 0xDF, { 357e1051a39Sopenharmony_ci dd 358e1051a39Sopenharmony_ci }, 359e1051a39Sopenharmony_ci dd 360e1051a39Sopenharmony_ci }; 361e1051a39Sopenharmony_ci} 362e1051a39Sopenharmony_ciconst unsigned char trans_id[OSSL_CMP_TRANSACTIONID_LENGTH] = { 363e1051a39Sopenharmony_ci 0xDF, 364e1051a39Sopenharmony_ci}; 365e1051a39Sopenharmony_ciconst unsigned char trans_id[OSSL_CMP_TRANSACTIONID_LENGTH] = 366e1051a39Sopenharmony_ci { 367e1051a39Sopenharmony_ci 0xDF, 368e1051a39Sopenharmony_ci }; 369e1051a39Sopenharmony_citypedef 370e1051a39Sopenharmony_ciint 371e1051a39Sopenharmony_cia; 372e1051a39Sopenharmony_ci 373e1051a39Sopenharmony_citypedef 374e1051a39Sopenharmony_cistruct 375e1051a39Sopenharmony_ci{ 376e1051a39Sopenharmony_ci int a; 377e1051a39Sopenharmony_ci} b; 378e1051a39Sopenharmony_citypedef enum { 379e1051a39Sopenharmony_ci w = 0 380e1051a39Sopenharmony_ci} e_type; 381e1051a39Sopenharmony_citypedef struct { 382e1051a39Sopenharmony_ci enum { 383e1051a39Sopenharmony_ci w = 0 384e1051a39Sopenharmony_ci } e_type; 385e1051a39Sopenharmony_ci enum { 386e1051a39Sopenharmony_ci w = 0 387e1051a39Sopenharmony_ci } e_type; 388e1051a39Sopenharmony_ci} e; 389e1051a39Sopenharmony_cistruct s_type { 390e1051a39Sopenharmony_ci enum e_type { 391e1051a39Sopenharmony_ci w = 0 392e1051a39Sopenharmony_ci }; 393e1051a39Sopenharmony_ci}; 394e1051a39Sopenharmony_cistruct s_type 395e1051a39Sopenharmony_ci{ 396e1051a39Sopenharmony_ci enum e_type { 397e1051a39Sopenharmony_ci w = 0 398e1051a39Sopenharmony_ci }; 399e1051a39Sopenharmony_ci enum e2_type { 400e1051a39Sopenharmony_ci w = 0 401e1051a39Sopenharmony_ci }; 402e1051a39Sopenharmony_ci}; 403e1051a39Sopenharmony_ci 404e1051a39Sopenharmony_ci#define X 1 + 1 405e1051a39Sopenharmony_ci#define Y /* .. */ 2 + 2 406e1051a39Sopenharmony_ci#define Z 3 + 3 * (*a++) 407e1051a39Sopenharmony_ci 408e1051a39Sopenharmony_cistatic varref cmp_vars[] = { /* comment. comment? comment! */ 409e1051a39Sopenharmony_ci {&opt_config}, {&opt_section}, 410e1051a39Sopenharmony_ci 411e1051a39Sopenharmony_ci {&opt_server}, {&opt_proxy}, {&opt_path}, 412e1051a39Sopenharmony_ci}; 413e1051a39Sopenharmony_ci 414e1051a39Sopenharmony_ci#define SWITCH(x) \ 415e1051a39Sopenharmony_ci switch (x) { \ 416e1051a39Sopenharmony_ci case 0: \ 417e1051a39Sopenharmony_ci break; \ 418e1051a39Sopenharmony_ci default: \ 419e1051a39Sopenharmony_ci break; \ 420e1051a39Sopenharmony_ci } 421e1051a39Sopenharmony_ci 422e1051a39Sopenharmony_ci#define DEFINE_SET_GET_BASE_TEST(PREFIX, SETN, GETN, DUP, FIELD, TYPE, ERR, \ 423e1051a39Sopenharmony_ci DEFAULT, NEW, FREE) \ 424e1051a39Sopenharmony_ci static int execute_CTX_##SETN##_##GETN##_##FIELD( \ 425e1051a39Sopenharmony_ci TEST_FIXTURE *fixture) \ 426e1051a39Sopenharmony_ci { \ 427e1051a39Sopenharmony_ci CTX *ctx = fixture->ctx; \ 428e1051a39Sopenharmony_ci int (*set_fn)(CTX *ctx, TYPE) = \ 429e1051a39Sopenharmony_ci (int (*)(CTX *ctx, TYPE))PREFIX##_##SETN##_##FIELD; \ 430e1051a39Sopenharmony_ci /* comment */ \ 431e1051a39Sopenharmony_ci } 432e1051a39Sopenharmony_ci 433e1051a39Sopenharmony_ciunion un var; /* struct/union/enum in variable type */ 434e1051a39Sopenharmony_cistruct provider_store_st *f() /* struct/union/enum in function return type */ 435e1051a39Sopenharmony_ci{ 436e1051a39Sopenharmony_ci} 437e1051a39Sopenharmony_cistatic void f(struct pem_pass_data *data) /* struct/union/enum in arg list */ 438e1051a39Sopenharmony_ci{ 439e1051a39Sopenharmony_ci} 440e1051a39Sopenharmony_ci 441e1051a39Sopenharmony_cistatic void *fun(void) 442e1051a39Sopenharmony_ci{ 443e1051a39Sopenharmony_ci if (pem_name != NULL) 444e1051a39Sopenharmony_ci /* comment */ 445e1051a39Sopenharmony_ci return NULL; 446e1051a39Sopenharmony_ci 447e1051a39Sopenharmony_cilabel0: 448e1051a39Sopenharmony_ci label1: /* allow special indent 1 for label at outermost level in body */ 449e1051a39Sopenharmony_ci do { 450e1051a39Sopenharmony_ci label2: 451e1051a39Sopenharmony_ci size_t available_len, data_len; 452e1051a39Sopenharmony_ci const char *curr = txt, *next = txt; 453e1051a39Sopenharmony_ci char *tmp; 454e1051a39Sopenharmony_ci 455e1051a39Sopenharmony_ci { 456e1051a39Sopenharmony_ci label3: 457e1051a39Sopenharmony_ci } 458e1051a39Sopenharmony_ci } while (1); 459e1051a39Sopenharmony_ci 460e1051a39Sopenharmony_ci char *intraline_string_with_comment_delimiters_and_dbl_space = "1 /*1"; 461e1051a39Sopenharmony_ci char *multiline_string_with_comment_delimiters_and_dbl_space = "1 /*1\ 462e1051a39Sopenharmony_ci2222222\'22222222222222222\"222222222" "33333 /*3333333333" "44 /*44444444444\ 463e1051a39Sopenharmony_ci55555555555555\ 464e1051a39Sopenharmony_ci6666"; 465e1051a39Sopenharmony_ci} 466e1051a39Sopenharmony_ci 467e1051a39Sopenharmony_ciASN1_CHOICE(OSSL_CRMF_POPO) = { 468e1051a39Sopenharmony_ci ASN1_IMP(OSSL_CRMF_POPO, value.raVerified, ASN1_NULL, 0), 469e1051a39Sopenharmony_ci ASN1_EXP(OSSL_CRMF_POPO, value.keyAgreement, OSSL_CRMF_POPOPRIVKEY, 3) 470e1051a39Sopenharmony_ci} ASN1_CHOICE_END(OSSL_CRMF_POPO) 471e1051a39Sopenharmony_ciIMPLEMENT_ASN1_FUNCTIONS(OSSL_CRMF_POPO) 472e1051a39Sopenharmony_ci 473e1051a39Sopenharmony_ciASN1_ADB(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) = { 474e1051a39Sopenharmony_ci ADB_ENTRY(NID_id_regCtrl_regToken, 475e1051a39Sopenharmony_ci ASN1_SIMPLE(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, 476e1051a39Sopenharmony_ci value.regToken, ASN1_UTF8STRING)), 477e1051a39Sopenharmony_ci} ASN1_ADB_END(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, 0, type, 0, 478e1051a39Sopenharmony_ci &attributetypeandvalue_default_tt, NULL); 479e1051a39Sopenharmony_ci 480e1051a39Sopenharmony_ciASN1_ITEM_TEMPLATE(OSSL_CRMF_MSGS) = 481e1051a39Sopenharmony_ci ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, 482e1051a39Sopenharmony_ci OSSL_CRMF_MSGS, OSSL_CRMF_MSG) 483e1051a39Sopenharmony_ciASN1_ITEM_TEMPLATE_END(OSSL_CRMF_MSGS) 484e1051a39Sopenharmony_ci 485e1051a39Sopenharmony_civoid f_looong_body_200() 486e1051a39Sopenharmony_ci{ /* function body length up to 200 lines accepted */ 487e1051a39Sopenharmony_ci ; 488e1051a39Sopenharmony_ci ; 489e1051a39Sopenharmony_ci ; 490e1051a39Sopenharmony_ci ; 491e1051a39Sopenharmony_ci ; 492e1051a39Sopenharmony_ci ; 493e1051a39Sopenharmony_ci ; 494e1051a39Sopenharmony_ci ; 495e1051a39Sopenharmony_ci ; 496e1051a39Sopenharmony_ci ; 497e1051a39Sopenharmony_ci ; 498e1051a39Sopenharmony_ci ; 499e1051a39Sopenharmony_ci ; 500e1051a39Sopenharmony_ci ; 501e1051a39Sopenharmony_ci ; 502e1051a39Sopenharmony_ci ; 503e1051a39Sopenharmony_ci ; 504e1051a39Sopenharmony_ci ; 505e1051a39Sopenharmony_ci ; 506e1051a39Sopenharmony_ci ; 507e1051a39Sopenharmony_ci ; 508e1051a39Sopenharmony_ci ; 509e1051a39Sopenharmony_ci ; 510e1051a39Sopenharmony_ci ; 511e1051a39Sopenharmony_ci ; 512e1051a39Sopenharmony_ci ; 513e1051a39Sopenharmony_ci ; 514e1051a39Sopenharmony_ci ; 515e1051a39Sopenharmony_ci ; 516e1051a39Sopenharmony_ci ; 517e1051a39Sopenharmony_ci ; 518e1051a39Sopenharmony_ci ; 519e1051a39Sopenharmony_ci ; 520e1051a39Sopenharmony_ci ; 521e1051a39Sopenharmony_ci ; 522e1051a39Sopenharmony_ci ; 523e1051a39Sopenharmony_ci ; 524e1051a39Sopenharmony_ci ; 525e1051a39Sopenharmony_ci ; 526e1051a39Sopenharmony_ci ; 527e1051a39Sopenharmony_ci ; 528e1051a39Sopenharmony_ci ; 529e1051a39Sopenharmony_ci ; 530e1051a39Sopenharmony_ci ; 531e1051a39Sopenharmony_ci ; 532e1051a39Sopenharmony_ci ; 533e1051a39Sopenharmony_ci ; 534e1051a39Sopenharmony_ci ; 535e1051a39Sopenharmony_ci ; 536e1051a39Sopenharmony_ci ; 537e1051a39Sopenharmony_ci ; 538e1051a39Sopenharmony_ci ; 539e1051a39Sopenharmony_ci ; 540e1051a39Sopenharmony_ci ; 541e1051a39Sopenharmony_ci ; 542e1051a39Sopenharmony_ci ; 543e1051a39Sopenharmony_ci ; 544e1051a39Sopenharmony_ci ; 545e1051a39Sopenharmony_ci ; 546e1051a39Sopenharmony_ci ; 547e1051a39Sopenharmony_ci ; 548e1051a39Sopenharmony_ci ; 549e1051a39Sopenharmony_ci ; 550e1051a39Sopenharmony_ci ; 551e1051a39Sopenharmony_ci ; 552e1051a39Sopenharmony_ci ; 553e1051a39Sopenharmony_ci ; 554e1051a39Sopenharmony_ci ; 555e1051a39Sopenharmony_ci ; 556e1051a39Sopenharmony_ci ; 557e1051a39Sopenharmony_ci ; 558e1051a39Sopenharmony_ci ; 559e1051a39Sopenharmony_ci ; 560e1051a39Sopenharmony_ci ; 561e1051a39Sopenharmony_ci ; 562e1051a39Sopenharmony_ci ; 563e1051a39Sopenharmony_ci ; 564e1051a39Sopenharmony_ci ; 565e1051a39Sopenharmony_ci ; 566e1051a39Sopenharmony_ci ; 567e1051a39Sopenharmony_ci ; 568e1051a39Sopenharmony_ci ; 569e1051a39Sopenharmony_ci ; 570e1051a39Sopenharmony_ci ; 571e1051a39Sopenharmony_ci ; 572e1051a39Sopenharmony_ci ; 573e1051a39Sopenharmony_ci ; 574e1051a39Sopenharmony_ci ; 575e1051a39Sopenharmony_ci ; 576e1051a39Sopenharmony_ci ; 577e1051a39Sopenharmony_ci ; 578e1051a39Sopenharmony_ci ; 579e1051a39Sopenharmony_ci ; 580e1051a39Sopenharmony_ci ; 581e1051a39Sopenharmony_ci ; 582e1051a39Sopenharmony_ci ; 583e1051a39Sopenharmony_ci ; 584e1051a39Sopenharmony_ci ; 585e1051a39Sopenharmony_ci ; 586e1051a39Sopenharmony_ci ; 587e1051a39Sopenharmony_ci ; 588e1051a39Sopenharmony_ci ; 589e1051a39Sopenharmony_ci ; 590e1051a39Sopenharmony_ci ; 591e1051a39Sopenharmony_ci ; 592e1051a39Sopenharmony_ci ; 593e1051a39Sopenharmony_ci ; 594e1051a39Sopenharmony_ci ; 595e1051a39Sopenharmony_ci ; 596e1051a39Sopenharmony_ci ; 597e1051a39Sopenharmony_ci ; 598e1051a39Sopenharmony_ci ; 599e1051a39Sopenharmony_ci ; 600e1051a39Sopenharmony_ci ; 601e1051a39Sopenharmony_ci ; 602e1051a39Sopenharmony_ci ; 603e1051a39Sopenharmony_ci ; 604e1051a39Sopenharmony_ci ; 605e1051a39Sopenharmony_ci ; 606e1051a39Sopenharmony_ci ; 607e1051a39Sopenharmony_ci ; 608e1051a39Sopenharmony_ci ; 609e1051a39Sopenharmony_ci ; 610e1051a39Sopenharmony_ci ; 611e1051a39Sopenharmony_ci ; 612e1051a39Sopenharmony_ci ; 613e1051a39Sopenharmony_ci ; 614e1051a39Sopenharmony_ci ; 615e1051a39Sopenharmony_ci ; 616e1051a39Sopenharmony_ci ; 617e1051a39Sopenharmony_ci ; 618e1051a39Sopenharmony_ci ; 619e1051a39Sopenharmony_ci ; 620e1051a39Sopenharmony_ci ; 621e1051a39Sopenharmony_ci ; 622e1051a39Sopenharmony_ci ; 623e1051a39Sopenharmony_ci ; 624e1051a39Sopenharmony_ci ; 625e1051a39Sopenharmony_ci ; 626e1051a39Sopenharmony_ci ; 627e1051a39Sopenharmony_ci ; 628e1051a39Sopenharmony_ci ; 629e1051a39Sopenharmony_ci ; 630e1051a39Sopenharmony_ci ; 631e1051a39Sopenharmony_ci ; 632e1051a39Sopenharmony_ci ; 633e1051a39Sopenharmony_ci ; 634e1051a39Sopenharmony_ci ; 635e1051a39Sopenharmony_ci ; 636e1051a39Sopenharmony_ci ; 637e1051a39Sopenharmony_ci ; 638e1051a39Sopenharmony_ci ; 639e1051a39Sopenharmony_ci ; 640e1051a39Sopenharmony_ci ; 641e1051a39Sopenharmony_ci ; 642e1051a39Sopenharmony_ci ; 643e1051a39Sopenharmony_ci ; 644e1051a39Sopenharmony_ci ; 645e1051a39Sopenharmony_ci ; 646e1051a39Sopenharmony_ci ; 647e1051a39Sopenharmony_ci ; 648e1051a39Sopenharmony_ci ; 649e1051a39Sopenharmony_ci ; 650e1051a39Sopenharmony_ci ; 651e1051a39Sopenharmony_ci ; 652e1051a39Sopenharmony_ci ; 653e1051a39Sopenharmony_ci ; 654e1051a39Sopenharmony_ci ; 655e1051a39Sopenharmony_ci ; 656e1051a39Sopenharmony_ci ; 657e1051a39Sopenharmony_ci ; 658e1051a39Sopenharmony_ci ; 659e1051a39Sopenharmony_ci ; 660e1051a39Sopenharmony_ci ; 661e1051a39Sopenharmony_ci ; 662e1051a39Sopenharmony_ci ; 663e1051a39Sopenharmony_ci ; 664e1051a39Sopenharmony_ci ; 665e1051a39Sopenharmony_ci ; 666e1051a39Sopenharmony_ci ; 667e1051a39Sopenharmony_ci ; 668e1051a39Sopenharmony_ci ; 669e1051a39Sopenharmony_ci ; 670e1051a39Sopenharmony_ci ; 671e1051a39Sopenharmony_ci ; 672e1051a39Sopenharmony_ci ; 673e1051a39Sopenharmony_ci ; 674e1051a39Sopenharmony_ci ; 675e1051a39Sopenharmony_ci ; 676e1051a39Sopenharmony_ci ; 677e1051a39Sopenharmony_ci ; 678e1051a39Sopenharmony_ci ; 679e1051a39Sopenharmony_ci ; 680e1051a39Sopenharmony_ci ; 681e1051a39Sopenharmony_ci ; 682e1051a39Sopenharmony_ci ; 683e1051a39Sopenharmony_ci ; 684e1051a39Sopenharmony_ci ; 685e1051a39Sopenharmony_ci ; 686e1051a39Sopenharmony_ci ; 687e1051a39Sopenharmony_ci} 688e1051a39Sopenharmony_ci 689e1051a39Sopenharmony_civoid f_looong_body_201() 690e1051a39Sopenharmony_ci{ /* function body length > 200 lines, but LONG BODY marker present */ 691e1051a39Sopenharmony_ci ; 692e1051a39Sopenharmony_ci ; 693e1051a39Sopenharmony_ci ; 694e1051a39Sopenharmony_ci ; 695e1051a39Sopenharmony_ci ; 696e1051a39Sopenharmony_ci ; 697e1051a39Sopenharmony_ci ; 698e1051a39Sopenharmony_ci ; 699e1051a39Sopenharmony_ci ; 700e1051a39Sopenharmony_ci ; 701e1051a39Sopenharmony_ci ; 702e1051a39Sopenharmony_ci ; 703e1051a39Sopenharmony_ci ; 704e1051a39Sopenharmony_ci ; 705e1051a39Sopenharmony_ci ; 706e1051a39Sopenharmony_ci ; 707e1051a39Sopenharmony_ci ; 708e1051a39Sopenharmony_ci ; 709e1051a39Sopenharmony_ci ; 710e1051a39Sopenharmony_ci ; 711e1051a39Sopenharmony_ci ; 712e1051a39Sopenharmony_ci ; 713e1051a39Sopenharmony_ci ; 714e1051a39Sopenharmony_ci ; 715e1051a39Sopenharmony_ci ; 716e1051a39Sopenharmony_ci ; 717e1051a39Sopenharmony_ci ; 718e1051a39Sopenharmony_ci ; 719e1051a39Sopenharmony_ci ; 720e1051a39Sopenharmony_ci ; 721e1051a39Sopenharmony_ci ; 722e1051a39Sopenharmony_ci ; 723e1051a39Sopenharmony_ci ; 724e1051a39Sopenharmony_ci ; 725e1051a39Sopenharmony_ci ; 726e1051a39Sopenharmony_ci ; 727e1051a39Sopenharmony_ci ; 728e1051a39Sopenharmony_ci ; 729e1051a39Sopenharmony_ci ; 730e1051a39Sopenharmony_ci ; 731e1051a39Sopenharmony_ci ; 732e1051a39Sopenharmony_ci ; 733e1051a39Sopenharmony_ci ; 734e1051a39Sopenharmony_ci ; 735e1051a39Sopenharmony_ci ; 736e1051a39Sopenharmony_ci ; 737e1051a39Sopenharmony_ci ; 738e1051a39Sopenharmony_ci ; 739e1051a39Sopenharmony_ci ; 740e1051a39Sopenharmony_ci ; 741e1051a39Sopenharmony_ci ; 742e1051a39Sopenharmony_ci ; 743e1051a39Sopenharmony_ci ; 744e1051a39Sopenharmony_ci ; 745e1051a39Sopenharmony_ci ; 746e1051a39Sopenharmony_ci ; 747e1051a39Sopenharmony_ci ; 748e1051a39Sopenharmony_ci ; 749e1051a39Sopenharmony_ci ; 750e1051a39Sopenharmony_ci ; 751e1051a39Sopenharmony_ci ; 752e1051a39Sopenharmony_ci ; 753e1051a39Sopenharmony_ci ; 754e1051a39Sopenharmony_ci ; 755e1051a39Sopenharmony_ci ; 756e1051a39Sopenharmony_ci ; 757e1051a39Sopenharmony_ci ; 758e1051a39Sopenharmony_ci ; 759e1051a39Sopenharmony_ci ; 760e1051a39Sopenharmony_ci ; 761e1051a39Sopenharmony_ci ; 762e1051a39Sopenharmony_ci ; 763e1051a39Sopenharmony_ci ; 764e1051a39Sopenharmony_ci ; 765e1051a39Sopenharmony_ci ; 766e1051a39Sopenharmony_ci ; 767e1051a39Sopenharmony_ci ; 768e1051a39Sopenharmony_ci ; 769e1051a39Sopenharmony_ci ; 770e1051a39Sopenharmony_ci ; 771e1051a39Sopenharmony_ci ; 772e1051a39Sopenharmony_ci ; 773e1051a39Sopenharmony_ci ; 774e1051a39Sopenharmony_ci ; 775e1051a39Sopenharmony_ci ; 776e1051a39Sopenharmony_ci ; 777e1051a39Sopenharmony_ci ; 778e1051a39Sopenharmony_ci ; 779e1051a39Sopenharmony_ci ; 780e1051a39Sopenharmony_ci ; 781e1051a39Sopenharmony_ci ; 782e1051a39Sopenharmony_ci ; 783e1051a39Sopenharmony_ci ; 784e1051a39Sopenharmony_ci ; 785e1051a39Sopenharmony_ci ; 786e1051a39Sopenharmony_ci ; 787e1051a39Sopenharmony_ci ; 788e1051a39Sopenharmony_ci ; 789e1051a39Sopenharmony_ci ; 790e1051a39Sopenharmony_ci ; 791e1051a39Sopenharmony_ci ; 792e1051a39Sopenharmony_ci ; 793e1051a39Sopenharmony_ci ; 794e1051a39Sopenharmony_ci ; 795e1051a39Sopenharmony_ci ; 796e1051a39Sopenharmony_ci ; 797e1051a39Sopenharmony_ci ; 798e1051a39Sopenharmony_ci ; 799e1051a39Sopenharmony_ci ; 800e1051a39Sopenharmony_ci ; 801e1051a39Sopenharmony_ci ; 802e1051a39Sopenharmony_ci ; 803e1051a39Sopenharmony_ci ; 804e1051a39Sopenharmony_ci ; 805e1051a39Sopenharmony_ci ; 806e1051a39Sopenharmony_ci ; 807e1051a39Sopenharmony_ci ; 808e1051a39Sopenharmony_ci ; 809e1051a39Sopenharmony_ci ; 810e1051a39Sopenharmony_ci ; 811e1051a39Sopenharmony_ci ; 812e1051a39Sopenharmony_ci ; 813e1051a39Sopenharmony_ci ; 814e1051a39Sopenharmony_ci ; 815e1051a39Sopenharmony_ci ; 816e1051a39Sopenharmony_ci ; 817e1051a39Sopenharmony_ci ; 818e1051a39Sopenharmony_ci ; 819e1051a39Sopenharmony_ci ; 820e1051a39Sopenharmony_ci ; 821e1051a39Sopenharmony_ci ; 822e1051a39Sopenharmony_ci ; 823e1051a39Sopenharmony_ci ; 824e1051a39Sopenharmony_ci ; 825e1051a39Sopenharmony_ci ; 826e1051a39Sopenharmony_ci ; 827e1051a39Sopenharmony_ci ; 828e1051a39Sopenharmony_ci ; 829e1051a39Sopenharmony_ci ; 830e1051a39Sopenharmony_ci ; 831e1051a39Sopenharmony_ci ; 832e1051a39Sopenharmony_ci ; 833e1051a39Sopenharmony_ci ; 834e1051a39Sopenharmony_ci ; 835e1051a39Sopenharmony_ci ; 836e1051a39Sopenharmony_ci ; 837e1051a39Sopenharmony_ci ; 838e1051a39Sopenharmony_ci ; 839e1051a39Sopenharmony_ci ; 840e1051a39Sopenharmony_ci ; 841e1051a39Sopenharmony_ci ; 842e1051a39Sopenharmony_ci ; 843e1051a39Sopenharmony_ci ; 844e1051a39Sopenharmony_ci ; 845e1051a39Sopenharmony_ci ; 846e1051a39Sopenharmony_ci ; 847e1051a39Sopenharmony_ci ; 848e1051a39Sopenharmony_ci ; 849e1051a39Sopenharmony_ci ; 850e1051a39Sopenharmony_ci ; 851e1051a39Sopenharmony_ci ; 852e1051a39Sopenharmony_ci ; 853e1051a39Sopenharmony_ci ; 854e1051a39Sopenharmony_ci ; 855e1051a39Sopenharmony_ci ; 856e1051a39Sopenharmony_ci ; 857e1051a39Sopenharmony_ci ; 858e1051a39Sopenharmony_ci ; 859e1051a39Sopenharmony_ci ; 860e1051a39Sopenharmony_ci ; 861e1051a39Sopenharmony_ci ; 862e1051a39Sopenharmony_ci ; 863e1051a39Sopenharmony_ci ; 864e1051a39Sopenharmony_ci ; 865e1051a39Sopenharmony_ci ; 866e1051a39Sopenharmony_ci ; 867e1051a39Sopenharmony_ci ; 868e1051a39Sopenharmony_ci ; 869e1051a39Sopenharmony_ci ; 870e1051a39Sopenharmony_ci ; 871e1051a39Sopenharmony_ci ; 872e1051a39Sopenharmony_ci ; 873e1051a39Sopenharmony_ci ; 874e1051a39Sopenharmony_ci ; 875e1051a39Sopenharmony_ci ; 876e1051a39Sopenharmony_ci ; 877e1051a39Sopenharmony_ci ; 878e1051a39Sopenharmony_ci ; 879e1051a39Sopenharmony_ci ; 880e1051a39Sopenharmony_ci ; 881e1051a39Sopenharmony_ci ; 882e1051a39Sopenharmony_ci ; 883e1051a39Sopenharmony_ci ; 884e1051a39Sopenharmony_ci ; 885e1051a39Sopenharmony_ci ; 886e1051a39Sopenharmony_ci ; 887e1051a39Sopenharmony_ci ; 888e1051a39Sopenharmony_ci ; 889e1051a39Sopenharmony_ci ; 890e1051a39Sopenharmony_ci ; 891e1051a39Sopenharmony_ci ; 892e1051a39Sopenharmony_ci ; 893e1051a39Sopenharmony_ci} 894