]> git.sur5r.net Git - openldap/commitdiff
Correctly parse v2 OpenLDAP ldap.h.
authorRandy Kunkee <kunkee@openldap.org>
Thu, 22 Jun 2000 23:21:05 +0000 (23:21 +0000)
committerRandy Kunkee <kunkee@openldap.org>
Thu, 22 Jun 2000 23:21:05 +0000 (23:21 +0000)
contrib/ldaptcl/ldaperr.tcl

index 31872f66f934dc478f491a842385757ca31db80a..ef77d7f73653330902ae13678debe005afc78bc6 100644 (file)
@@ -10,18 +10,34 @@ proc genstrings {path} {
     puts "/* This file automatically generated, hand edit at your own risk! */"
     puts -nonewline "char *ldaptclerrorcode\[\] = {
        NULL"
-    set lasterr 0
     while {[gets $fp line] != -1} {
+       #puts stderr $line
        if {[clength $line] == 0 || [ctype space $line]} continue
        if {![string match #define* $line]} break
        if {![string match "#define LDAP_*" $line]} continue
+       if {[string match "*LDAP_RANGE*" $line]} continue
        lassign $line define macro value
+       set ldap_errcode($macro) $value
+    }
+    foreach i [array names ldap_errcode] {
+       set value $ldap_errcode($i)
+       #puts stderr "checking $value"
+       if [regexp {^[A-Z_]} $value] {
+           if [info exists ldap_errcode($value)] {
+               set value $ldap_errcode($value)
+               set ldap_errcode($i) $value
+           }
+       }
+       set ldap_errname($value) $i
+    }
+    set lasterr 0
+    foreach value [lsort -integer [array names ldap_errname]] {
        incr lasterr
        while {$lasterr < $value} {
            puts -nonewline ",\n\tNULL"
            incr lasterr
        }
-       puts -nonewline ",\n\t\"$macro\""
+       puts -nonewline ",\n\t\"$ldap_errname($value)\""
     }
     puts "\n};"
     puts "#define LDAPTCL_MAXERR\t$value"