]> git.sur5r.net Git - openldap/blobdiff - contrib/ldaptcl/ldaperr.tcl
eat undesired values
[openldap] / contrib / ldaptcl / ldaperr.tcl
index 31872f66f934dc478f491a842385757ca31db80a..e9f85683ebc3bb627abcdab9537af53677def440 100644 (file)
@@ -10,18 +10,39 @@ 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} {
        if {[clength $line] == 0 || [ctype space $line]} continue
-       if {![string match #define* $line]} break
+       if {[string match *typedef* $line]} break
+       if {![string match #define* $line]} continue
        if {![string match "#define LDAP_*" $line]} continue
+       if {[string match "*LDAP_RANGE*" $line]} continue
+       if {[string match "*LDAP_API_RESULT*" $line]} continue
+       if {[string match {*\\} $line]} {
+           append line [gets $fp]
+       }
        lassign $line define macro value
+       set ldap_errcode($macro) $value
+    }
+    #parray ldap_errcode
+    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"