change collation setting interface to take pointer argument
diff --git a/collation_key.c b/collation_key.c
index 25e2ff9..3ede6f9 100644
--- a/collation_key.c
+++ b/collation_key.c
@@ -18,93 +18,90 @@
   return (Collation_choice) UNICOLL_VARIABLE_NONIGNORABLE;
 }
 
-Collation_choice
-unicoll_set_variable (Collation_choice collation,
-                                       int variable)
+void
+unicoll_set_variable (Collation_choice *collation, int variable)
 {
   if (variable != UNICOLL_VARIABLE_NONIGNORABLE
       && variable != UNICOLL_VARIABLE_SHIFTED
       && variable != UNICOLL_VARIABLE_BLANKED)
     {
       errno = EINVAL;
-      return collation;
+      return;
     }
-  return (Collation_choice) (collation & ~UNICOLL_VARIABLE_MASK) | variable;
+  *collation = (*collation & ~UNICOLL_VARIABLE_MASK) | variable;
 }
 
 /* Set bit to disable output of a collation level. */
-Collation_choice
-unicoll_disable_level (Collation_choice collation, int level)
+void
+unicoll_disable_level (Collation_choice *collation, int level)
 {
   switch (level)
   {
     case 1:
-      return (collation | UNICOLL_LEVEL1_BIT);
+      *collation |= UNICOLL_LEVEL1_BIT;
     case 2:
-      return (collation | UNICOLL_LEVEL2_BIT);
+      *collation |= UNICOLL_LEVEL2_BIT;
     case 3:
-      return (collation | UNICOLL_LEVEL3_BIT);
+      *collation |= UNICOLL_LEVEL3_BIT;
     case 4:
-      return (collation | UNICOLL_LEVEL4_BIT);
+      *collation |= UNICOLL_LEVEL4_BIT;
     default:
       errno = EINVAL;
-      return collation;
   }
 }
 
 /* Clear bit to enable output of a collation level. */
-Collation_choice
-unicoll_enable_level (Collation_choice collation, int level)
+void
+unicoll_enable_level (Collation_choice *collation, int level)
 {
   switch (level)
   {
     case 1:
-      return (collation & ~UNICOLL_LEVEL1_BIT);
+      *collation &= ~UNICOLL_LEVEL1_BIT;
     case 2:
-      return (collation & ~UNICOLL_LEVEL2_BIT);
+      *collation &= ~UNICOLL_LEVEL2_BIT;
     case 3:
-      return (collation & ~UNICOLL_LEVEL3_BIT);
+      *collation &= ~UNICOLL_LEVEL3_BIT;
     case 4:
-      return (collation & ~UNICOLL_LEVEL4_BIT);
+      *collation &= ~UNICOLL_LEVEL4_BIT;
     default:
       errno = EINVAL;
-      return collation;
   }
 }
 
 
-Collation_choice
-unicoll_set_normalization (Collation_choice collation, int normalization_on)
+void
+unicoll_set_normalization (Collation_choice *collation, int normalization_on)
 {
   /* Set bit to disable normalization. */
   if (normalization_on)
-    return (collation & ~UNICOLL_NORMALIZATION_MASK);
+    *collation &= ~UNICOLL_NORMALIZATION_MASK;
   else
-    return (collation | UNICOLL_NORMALIZATION_MASK);
+    *collation |= UNICOLL_NORMALIZATION_MASK;
 }
 
 /* If CONTRACTIONS_ON is 0, disable use of contractions, i.e. sequence
    lookup. */
-Collation_choice
-unicoll_set_contractions (Collation_choice collation, int contractions_on)
+void
+unicoll_set_contractions (Collation_choice *collation, int contractions_on)
 {
   if (contractions_on)
-    return (collation & ~UNICOLL_CONTRACTIONS_MASK);
+    *collation &= ~UNICOLL_CONTRACTIONS_MASK;
   else
-    return (collation | UNICOLL_CONTRACTIONS_MASK);
+    *collation |= UNICOLL_CONTRACTIONS_MASK;
 }
 
 /* If PARTIAL_KEY_ENABLED is non-zero, u*_make_collation_key does not
    re-allocate RESULTBUF and will return a partial key (null-terminated)
    if the full result would be longer than *LENGTHP bytes. */
-Collation_choice
-unicoll_enable_partial (Collation_choice collation,
-                                         int partial_key_enabled)
+void
+unicoll_enable_partial (Collation_choice *collation,
+                        int partial_key_enabled)
 {
   if (!partial_key_enabled)
-    return (collation & ~UNICOLL_PARTIAL_MASK);
+    *collation &= ~UNICOLL_PARTIAL_MASK;
   else
-    return (collation | UNICOLL_PARTIAL_MASK);
+    *collation |= UNICOLL_PARTIAL_MASK;
 }
 
 #define BITS 32
diff --git a/collation_key.h b/collation_key.h
index ea21ef5..9b0be27 100644
--- a/collation_key.h
+++ b/collation_key.h
@@ -22,19 +22,19 @@
 typedef uint_fast32_t Collation_choice;
 
 Collation_choice unicoll_default (void);
-Collation_choice unicoll_set_variable (Collation_choice collation,
+void unicoll_set_variable (Collation_choice *collation,
                                        int variable);
 
-Collation_choice unicoll_disable_level (Collation_choice collation,
+void unicoll_disable_level (Collation_choice *collation,
                                         int level);
-Collation_choice unicoll_enable_level  (Collation_choice collation,
+void unicoll_enable_level  (Collation_choice *collation,
                                         int level);
 
-Collation_choice unicoll_set_normalization (Collation_choice collation,
+void unicoll_set_normalization (Collation_choice *collation,
                                             int normalization_on);
-Collation_choice unicoll_set_contractions (Collation_choice collation,
+void unicoll_set_contractions (Collation_choice *collation,
                                             int use_contractions);
-Collation_choice unicoll_enable_partial (Collation_choice collation,
+void unicoll_enable_partial (Collation_choice *collation,
                                          int partial_key_enabled);
 
 
diff --git a/collation_test.c b/collation_test.c
index b38816b..fe2ded1 100644
--- a/collation_test.c
+++ b/collation_test.c
@@ -112,10 +112,10 @@
   long int skip_count = 0;
 
   Collation_choice collation = unicoll_default ();
-  collation = unicoll_set_variable (collation,
+  unicoll_set_variable (&collation,
                     variable_shifted ? UNICOLL_VARIABLE_SHIFTED
                                      : UNICOLL_VARIABLE_NONIGNORABLE);
-  /* collation = unicoll_set_normalization (collation, 0); */
+  /* unicoll_set_normalization (&collation, 0); */
 
   while (1)
     {