I've been trying to get the ldap_plugin to compile on Solaris with the Sun Forte Compilers and needed to do the following.
Please note there is a bug in gui.c that prevents the server port from being set through the gui.
Patches attached
Regards
Marty
LDAP Plugin -----------
1. src/gui.c:111 (ldapoptions_ok) reads from the binddnentry and then writes the information to the serverport variable, thus making it impossible to set serverport to anything through the gui.
111: str = (char*)gtk_entry_get_text(GTK_ENTRY(lookup_widget(ldapoptions, "po
rtentry")));
2. Compilation errors from unportable C style; defining variables in the middle of code segments.
src/ldap_plugin.c:315 changed_object is defined after the first statement
src/ldap_plugin.c:321 int n is defined in the middle of statements
src/ldap_plugin.c:521 int n is defined in the middle of statements
src/ldap_plugin.c:989 *changes is defined in the middle of statements
src/ldap_plugin.c:998 *chinfo is defined in the middle of statements
src/ldap_plugin.c:1070 int x is defined in the middle of statements
src/ldap_plugin.c:1071 int maxlen is defined in the middle of statements
src/ldap_plugin.c:1092 *tmp is defined in the middle of statements
src/ldap_plugin.c:1477 *msg is defined in the middle of statements
src/ldap_plugin.c:1509 int i is defined in the middle of statements
src/ldap_plugin.c:1529 int n is defined in the middle of statements
src/ldap_plugin.c:1575 int n is defined in the middle of statements
src/ldap_plugin.c:1709 int n is defined in the middle of statements
*** plugins/ldap_plugin/src/gui.c.orig Mon Aug 11 18:54:25 2003 --- plugins/ldap_plugin/src/gui.c Mon Aug 11 18:54:29 2003 *************** *** 108,114 **** ldapconn->servername = (char*)gtk_editable_get_chars(GTK_EDITABLE(lookup_widget(ldapoptions, "serverentry")), 0, -1); ! str = (char*)gtk_entry_get_text(GTK_ENTRY(lookup_widget(ldapoptions, "binddnentry"))); sscanf(str, "%d", ldapconn->serverport); if(ldapconn->binddn) --- 108,114 ---- ldapconn->servername = (char*)gtk_editable_get_chars(GTK_EDITABLE(lookup_widget(ldapoptions, "serverentry")), 0, -1); ! str = (char*)gtk_entry_get_text(GTK_ENTRY(lookup_widget(ldapoptions, "portentry"))); sscanf(str, "%d", ldapconn->serverport); if(ldapconn->binddn)
*** plugins/ldap_plugin/src/ldap_plugin.c.orig Mon Aug 11 18:50:22 2003 --- plugins/ldap_plugin/src/ldap_plugin.c Mon Aug 11 19:06:40 2003 *************** *** 310,324 **** if(count < 1) { dd(printf("Couldn't find the entry: %s in the LDAP server (deleted)\n", filter->str)); - changed_object *change = g_malloc0(sizeof(changed_object)); g_assert(change); sscanf(moddn, "cn=%256[^,]%*s", tmp); - int n=0; for(n=0; n<strlen(tmp); n++) if(tmp[n] == ' ') tmp[n] = '_'; --- 310,324 ---- if(count < 1) { + int n=0; + changed_object *change = g_malloc0(sizeof(changed_object)); dd(printf("Couldn't find the entry: %s in the LDAP server (deleted)\n", filter->str)); g_assert(change); sscanf(moddn, "cn=%256[^,]%*s", tmp); for(n=0; n<strlen(tmp); n++) if(tmp[n] == ' ') tmp[n] = '_'; *************** *** 509,514 **** --- 509,515 ---- if((vals = ldap_get_values(conn->ld, entry, "cn")) != NULL) { + int n=0; cn = (char *)strdup(vals[0]); dn = g_string_new(""); *************** *** 518,524 **** g_string_append(dn, conn->searchbase); - int n=0; uid = (char *)strdup(cn); for(n=0; n<strlen(uid); n++) --- 519,524 ---- *************** *** 981,992 **** void get_changes(ldap_connection *conn, sync_object_type newdbs) { ldap_get_changes_arg *arg; arg = g_malloc0(sizeof(ldap_get_changes_arg)); arg->conn = conn; arg->newdbs = newdbs; - GList *changes = NULL; --- 981,993 ---- void get_changes(ldap_connection *conn, sync_object_type newdbs) { ldap_get_changes_arg *arg; + GList *changes = NULL; + change_info *chinfo; arg = g_malloc0(sizeof(ldap_get_changes_arg)); arg->conn = conn; arg->newdbs = newdbs; *************** *** 995,1001 **** g_free(arg); - change_info *chinfo; chinfo = g_malloc(sizeof(change_info)); chinfo->changes = changes; --- 996,1001 ---- *************** *** 1017,1022 **** --- 1017,1025 ---- char **values; int currattr = 0; int retval; + char msg[256]; + int i = 0; + int n=0; if (!uid && !comp) { *************** *** 1066,1074 **** data = sync_get_key_data(comp, "N"); if(data != NULL) { - dd(printf("Got N=%s\n", data)); int x=0, firstname=0, lastname=0; int maxlen = strlen(data); for(x=0; x<maxlen; x++) { if(data[x] == ';') --- 1069,1079 ---- data = sync_get_key_data(comp, "N"); if(data != NULL) { int x=0, firstname=0, lastname=0; int maxlen = strlen(data); + GString *tmp = g_string_new(""); + + dd(printf("Got N=%s\n", data)); for(x=0; x<maxlen; x++) { if(data[x] == ';') *************** *** 1088,1094 **** } } - GString *tmp = g_string_new(""); g_string_append(tmp, (char*)&data[firstname]); g_string_append(tmp, " "); --- 1093,1098 ---- *************** *** 1473,1479 **** dd(printf("About to add\n")); retval = ldap_add_s(conn->ld, dn->str, attrs); - char msg[256]; msg[0] = '\0'; switch(retval) --- 1477,1482 ---- *************** *** 1505,1511 **** sync_log(conn->sync_pair, msg, SYNC_LOG_ERROR); - int i = 0; while(attrs[i] != NULL) { int j = 0; --- 1508,1513 ---- *************** *** 1525,1531 **** uidret[strlen(cn)] = '\0'; *uidretlen = strlen(uidret); - int n=0; for(n=0; n<strlen(uidret); n++) { if(uidret[n] == ' ') --- 1527,1532 ---- *************** *** 1568,1577 **** { char *cn = NULL; GString *entrydn = NULL; cn = (char*)strdup(uid); - int n=0; for(n = 0; n<strlen(cn); n++) { if(cn[n] == '_') --- 1569,1578 ---- { char *cn = NULL; GString *entrydn = NULL; + int n=0; cn = (char*)strdup(uid); for(n = 0; n<strlen(cn); n++) { if(cn[n] == '_') *************** *** 1688,1693 **** --- 1689,1695 ---- start = strstr(pos+l, ":"); if (start) { char *tmp, *line, *newstart; + int n=0; do { start++; end = strstr(start, "\n"); *************** *** 1705,1711 **** } while(start < card+strlen(card) && start[0] == ' '); tmpretval = (char**)malloc((size+2)*sizeof(char*)); - int n=0; for(n=0; n<size;n++) tmpretval[n] = retval[n]; tmpretval[size] = res; --- 1707,1712 ----