uncrustify UPDATE use version 0.77.1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 210b5be..daa55d9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -122,7 +122,7 @@
         shell: bash
         working-directory: ${{ github.workspace }}
         run: |
-          git clone --branch uncrustify-0.75.1 https://github.com/uncrustify/uncrustify
+          git clone --branch uncrustify-0.77.1 https://github.com/uncrustify/uncrustify
           cd uncrustify
           mkdir build
           cd build
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e9d015..24a9773 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -316,7 +316,7 @@
 
 if ("${BUILD_TYPE_UPPER}" STREQUAL "DEBUG")
     # enable before adding tests to let them detect that format checking is available - one of the tests is format checking
-    source_format_enable(0.76)
+    source_format_enable(0.77)
 endif()
 
 # generate files
diff --git a/tests/utests/schema/test_schema.c b/tests/utests/schema/test_schema.c
index 1451d9d..17c4e4f 100644
--- a/tests/utests/schema/test_schema.c
+++ b/tests/utests/schema/test_schema.c
@@ -1086,7 +1086,8 @@
     const struct lysc_node *node;
 
     struct module_clb_list list1[] = {
-        {"a", "module a {"
+        {
+            "a", "module a {"
             "yang-version 1.1;"
             "namespace urn:test:a;"
             "prefix a;"
@@ -1095,7 +1096,8 @@
             "  leaf k2 {type string;}"
             "  leaf k1 {type string;}"
             "}"
-            "}"},
+            "}"
+        },
         {NULL, NULL}
     };
 
@@ -1109,7 +1111,8 @@
     assert_string_equal("k2", node->name);
 
     struct module_clb_list list2[] = {
-        {"b", "module b {"
+        {
+            "b", "module b {"
             "yang-version 1.1;"
             "namespace urn:test:b;"
             "prefix b;"
@@ -1124,7 +1127,8 @@
             "  leaf k1 {type string;}"
             "  leaf k3 {type string;}"
             "}"
-            "}"},
+            "}"
+        },
         {NULL, NULL}
     };
 
diff --git a/uncrustify.cfg b/uncrustify.cfg
index ec52e71..80d95e9 100644
--- a/uncrustify.cfg
+++ b/uncrustify.cfg
@@ -1,4 +1,4 @@
-# Uncrustify-0.76.0_f
+# Uncrustify-0.77.1_f
 
 #
 # General options
@@ -210,6 +210,11 @@
 # variable name. If set to ignore, sp_before_ptr_star is used instead.
 sp_before_unnamed_ptr_star      = ignore   # ignore/add/remove/force
 
+# Add or remove space between a qualifier and a pointer star '*' that isn't
+# followed by a variable name, as in '(char const *)'. If set to ignore,
+# sp_before_ptr_star is used instead.
+sp_qualifier_unnamed_ptr_star   = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space between pointer stars '*'.
 sp_between_ptr_star             = remove   # ignore/add/remove/force
 
@@ -250,10 +255,20 @@
 # prototype or function definition.
 sp_before_ptr_star_func         = force    # ignore/add/remove/force
 
+# Add or remove space between a qualifier and a pointer star '*' followed by
+# the name of the function in a function prototype or definition, as in
+# 'char const *foo()`. If set to ignore, sp_before_ptr_star is used instead.
+sp_qualifier_ptr_star_func      = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space before a pointer star '*' in the trailing return of a
 # function prototype or function definition.
 sp_before_ptr_star_trailing     = ignore   # ignore/add/remove/force/not_defined
 
+# Add or remove space between a qualifier and a pointer star '*' in the
+# trailing return of a function prototype or function definition, as in
+# 'auto foo() -> char const *'.
+sp_qualifier_ptr_star_trailing  = force   # ignore/add/remove/force/not_defined
+
 # Add or remove space before a reference sign '&'.
 sp_before_byref                 = ignore    # ignore/add/remove/force
 
@@ -611,6 +626,16 @@
 # Add or remove space inside function '(' and ')'.
 sp_inside_fparen                = remove   # ignore/add/remove/force
 
+# Add or remove space inside user functor '(' and ')'.
+sp_func_call_user_inside_rparen = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove space inside empty functor '()'.
+# Overrides sp_after_angle unless use_sp_after_angle_always is set to true.
+sp_inside_rparens               = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove space inside functor '(' and ')'.
+sp_inside_rparen                = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space inside the first parentheses in a function type, as in
 # 'void (*x)(...)'.
 sp_inside_tparen                = remove   # ignore/add/remove/force
@@ -951,6 +976,14 @@
 # i.e. '// A' vs. '//A'.
 sp_cmt_cpp_start                = force    # ignore/add/remove/force
 
+# remove space after the '//' and the pvs command '-V1234',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_pvs                  = false    # true/false
+
+# remove space after the '//' and the command 'lint',
+# only works with sp_cmt_cpp_start set to add or force.
+sp_cmt_cpp_lint                 = false    # true/false
+
 # Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
 # A region marker is defined as a comment which is not preceded by other text
 # (i.e. the comment is the first non-whitespace on the line), and which starts
@@ -2804,9 +2837,19 @@
 # 0: Don't align (default).
 align_oc_msg_spec_span          = 0        # unsigned number
 
-# Whether to align macros wrapped with a backslash and a newline. This will
-# not work right if the macro contains a multi-line comment.
-align_nl_cont                   = false    # true/false
+# 0: Do nothing (default)
+# 1: Align the backslashes in the column at the end of the longest line
+# 2: Align with the backslash that is farthest to the left, or, if that
+#    backslash is farther left than the end of the longest line, at the end of
+#    the longest line
+# 3: Align with the backslash that is farthest to the right
+align_nl_cont                   = 0        # unsigned number
+
+# The minimum number of spaces between the end of a line and its continuation
+# backslash. Requires align_nl_cont.
+#
+# Default: 1
+align_nl_cont_spaces            = 1        # unsigned number
 
 # Whether to align macro functions and variables together.
 align_pp_define_together        = false    # true/false
@@ -3117,6 +3160,12 @@
 # Whether to remove duplicate include.
 mod_remove_duplicate_include    = true    # true/false
 
+# the following options (mod_XX_closebrace_comment) use different comment,
+# depending of the setting of the next option.
+# false: Use the c comment (default)
+# true : Use the cpp comment
+mod_add_force_c_closebrace_comment = false    # true/false
+
 # If a function body exceeds the specified number of newlines and doesn't have
 # a comment after the close brace, a comment will be added.
 mod_add_long_function_closebrace_comment = 0        # unsigned number