mk/make-okey-map.pl: sort keys case-insensitive (like i do)
authorSteffen Nurpmeso <steffen@sdaoden.eu>
Fri, 16 Oct 2020 21:07:09 +0000 (23:07 +0200)
committerSteffen Nurpmeso <steffen@sdaoden.eu>
Sat, 12 Dec 2020 23:23:15 +0000 (00:23 +0100)
include/mx/nail.h
mk/make-okey-map.pl

index 1b06c1912d81508af09c11a33d5508072da23c58..8d8cc058e64234a381bd16c43d1bf37a79ee3f08 100644 (file)
@@ -741,6 +741,7 @@ enum n_program_state_once{
  * - most default VAL_ues come from in from build system via ./make.rc
  * - Other i3val=s and/or defval=s are imposed by POSIX: we do not (or only
  *   additionally "trust" the system-wide RC file to establish the settings
+ * - code assumes (in conjunction with make-okey-map.pl) case-insensitive sort!
  * (Keep in SYNC: nail.h:okeys, nail.rc, nail.1:"Initial settings") */
 enum okeys {
    /* This is used for all macro(-local) variables etc., i.e.,
index 5fbdc013b479c3d12f01920e0670a4eb80991fed..4d73744c21202c94dc1da9b9be29ba07d3ebbe99 100644 (file)
@@ -2,6 +2,8 @@
 require 5.008_001;
 use utf8;
 #@ Parse 'enum okeys' from nail.h and create gen-okeys.h.
+#@ Just like enum okeys it has to create case-insensitive sorted entries!
+#
 # Public Domain
 
 my $IN = 'include/mx/nail.h';
@@ -379,7 +381,7 @@ _EOT
       $last_pstr = "";
       $last_pend = "n_OKEYS_MAX";
       $last_pbeg = $i = 0;
-      foreach my $e (sort keys %chains){
+      foreach my $e (sort {CORE::fc($a) cmp CORE::fc($b)} keys %chains){
          $e = $chains{$e};
          print F "${S}{$e->{keyoff}u, $e->{enum}},\n";
          die "Chains need length of at least 4 bytes: $e->{name}"
@@ -412,8 +414,7 @@ _EOT
    # which cannot be initialized in a conforming way :(
    print F '/* Unfortunately init of varsized buffer impossible: ' .
       'define "subclass"es */' . "\n";
-   my @skeys = sort keys %virts;
-
+   my @skeys = sort {CORE::fc($a) cmp CORE::fc($b)} keys %virts;
    foreach(@skeys){
       my $e = $virts{$_};
       $e->{vname} = $1 if $e->{enum} =~ /ok_._(.*)/;
@@ -444,8 +445,7 @@ _EOT
    print F '#define a_AMV_VAR_VIRTS_CNT ', scalar @skeys, "\n";
 
    # First-time-init values
-   @skeys = sort keys %i3vals;
-
+   @skeys = sort {CORE::fc($a) cmp CORE::fc($b)} keys %i3vals;
    print F "\n";
    print F 'static struct a_amv_var_defval const a_amv_var_i3vals[] = {', "\n";
    foreach(@skeys){
@@ -457,8 +457,7 @@ _EOT
    print F '#define a_AMV_VAR_I3VALS_CNT ', scalar @skeys, "\n";
 
    # Default values
-   @skeys = sort keys %defvals;
-
+   @skeys = sort {CORE::fc($a) cmp CORE::fc($b)} keys %defvals;
    print F "\n";
    print F 'static struct a_amv_var_defval const a_amv_var_defvals[] = {',
       "\n";
This page took 0.055706 seconds and 4 git commands to generate.