#include <sswitch.h>

/*
 * DB *dbi      : a database handler
 * int fd       : a link to OpenLDAP backend
 * -------------
 * *dbi provides :
 * dbi->base     : LDAP client "dc" basedn part
 * dbi->ou       : LDAP client "ou" basedn part
 * dbi->filter   : LDAP client search filter
 */

int
getgeneric(DB *dbi, int fd) 
{ 
  char query[MAXVAL]="",*suffix=NULL,*filtval,*val; 
  char *ou=dbi->ou;
  char *filter=dbi->filter;
  int errcode=0;
 
  /* 
   * new query, built with LDAP client "ou" basedn part
   * this portion of code associate conf file correspondant SQL query
   */
  snprintf(query,MAXVAL,"%s%s",QUERY,ou); 
  val=attr2val(query); 
  if (!val) { 
    return -1; 
  } 

  /* 
   * get filter value ( uid=xxx )
   * this portion of code extracts LDAP client filter value
   */
  filtval=getval(filter,'='); 
  if (!filtval) { 
    free(val); 
    return -1; 
  } 
 
  /* 
   * get query result
   * this is where SQL statement is executed 
   * this will send to OpenLDAP an LDIF formatted answer
   */ 
  errcode=simplequery(dbi,fd,suffix,val,filtval); 
  free(val); 
 
  return errcode; 
}
