midrange.com code scratchpad
Name:
Monty James
Scriptlanguage:
C++
Tabwidth:
4
Date:
03/25/2019 09:59:00 pm
IP:
Logged
Description:
Get Associated EIM Identifiers
Code:
  1. #include <eim.h>                                                  
  2. #include <stddef.h>                                               
  3. #include <stdio.h>                                                
  4. #include <stdlib.h>                                               
  5.                                                                   
  6. void printListResults(EimList * list);                            
  7. void printSubListData(char * fieldName, void * entry, int offset);
  8. void printListData(char * fieldName, void * entry, int offset);   
  9. void printAssociationType(int type);                              
  10.                                                                   
  11. int main(int argc, char *argv[])                                  
  12. {                                                                 
  13.     int           rc;                                             
  14.     char          eimerr[200];                                    
  15.     EimRC       * err;                                            
  16.     EimHandle     handle;                                         
  17.     EimIdentifierInfo x;                                          
  18.     EimConnectInfo con;                                           
  19.     char          unique[30];                                     
  20.     char          listData[1000]; 
  21.     char          rtnstr[20];                                   
  22.     char        * message;                                      
  23.     EimList     * list = (EimList * ) listData;                 
  24.     unsigned int  sizeofUnique = 30;                            
  25.                                                                 
  26.     /* Set up error structure.                 */               
  27.     memset(eimerr,0x00,200);                                    
  28.     err = (EimRC *)eimerr;                                      
  29.     err->memoryProvidedByCaller = 200;                          
  30.                                                                 
  31.                                                                 
  32.     /* Create a new eim handle. Use the eim configuration URL */
  33.     if (0 != (rc = eimCreateHandle(&handle,                     
  34.                                    NULL,                        
  35.                                    err)))                       
  36.     {                                                           
  37.         message = eimErr2String(err);                           
  38.         sprintf(argv[5], "EIM API Error Message: %s",message);  
  39.         free(message);                                          
  40.                                                                 
  41.         /* Replace the NULL terminator with a space */
  42.         argv[5][strlen(argv[5])] = ' ';                       
  43.         return -1;                                            
  44.     }                                                         
  45.                                                               
  46.     /* Connection informatiom */                              
  47.     con.type = EIM_SIMPLE;                                    
  48.     con.creds.simpleCreds.protect = EIM_PROTECT_NO;           
  49.     con.creds.simpleCreds.bindDn = argv[2];                   
  50.     con.creds.simpleCreds.bindPw = argv[3];                   
  51.     con.ssl = NULL;                                           
  52.     /* Connect to the system configuration */                 
  53.     if (0!= (rc = eimConnect(&handle,                         
  54.                              con,                             
  55.                              err)))                           
  56.     {                                                         
  57.         message = eimErr2String(err);                         
  58.         sprintf(argv[5], "EIM API Error Message: %s",message);
  59.         free(message);                                        
  60.                                                               
  61.         /* Replace the NULL terminator with a space */        
  62.         argv[5][strlen(argv[5])] = ' '
  63.         return -1;                                                   
  64.     }                                                                
  65.                                                                      
  66.     /* Get associated identifiers               */                   
  67.     if (0 != (rc = eimGetAssociatedIdentifiers(&handle,              
  68.                                                EIM_SOURCE_AND_TARGET,
  69.                                                argv[4],              
  70.                                                argv[1],              
  71.                                                1000,                 
  72.                                                list,                 
  73.                                                err)))                
  74.     {                                                                
  75.         message = eimErr2String(err);                                
  76.         sprintf(argv[5], "Get Associated Identifiers error:  %s",    
  77.                 message);                                            
  78.         free(message);                                               
  79.        eimDestroyHandle(&handle, err);                               
  80.        return -1;                                                    
  81.     }                                                                
  82.                                                                      
  83.     /* Print the results                        */
  84.     printListResults(list);                                      
  85.                                                                  
  86.     /* Destroy the handle                       */               
  87.     rc = eimDestroyHandle(&handle, err);                         
  88.                                                                  
  89.     return 0;                                                    
  90. }                                                                
  91.                                                                  
  92. void printListResults(EimList * list)                            
  93. {                                                                
  94.     FILE *qprint;                                                
  95.     qprint=fopen("QPRINT","w");                                  
  96.     int i;                                                       
  97.     EimIdentifier * entry;                                       
  98.                                                                  
  99.     printf("___________\n");                                     
  100.     printf("   entriesReturned  = %d\n", list->entriesReturned); 
  101.     printf("   entriesAvailable = %d\n", list->entriesAvailable);
  102.     printf("\n");                                                
  103.                                                                  
  104.     entry = (EimIdentifier *)((char *)list + list->firstEntry); 
  105.     for (i = 0; i < list->entriesReturned; i++)                    
  106.     {                                                              
  107.        printf("\n");                                               
  108.        printf("===============\n");                                
  109.        printf("Entry %d.\n", i);                                   
  110.                                                                    
  111.        /* Print out results */                                     
  112.        printListData("Unique name",                                
  113.                      entry,                                        
  114.                      offsetof(EimIdentifier, uniquename));         
  115.        printSubListData("Additional Info",                         
  116.                         entry,                                     
  117.                         offsetof(EimIdentifier, additionalInfo));  
  118.        printAssociationType(entry->type);                          
  119.                                                                    
  120.        /* advance to next entry */                                 
  121.        entry = (EimIdentifier *)((char *)entry + entry->nextEntry);
  122.                                                                    
  123.     }                                                              
  124.     printf("\n");                                                  
  125. /*  fprintf(qprint,"\n");*/
  126.                                                                  
  127.     fclose(qprint);                                              
  128.                                                                  
  129. }                                                                
  130.                                                                  
  131. void printSubListData(char * fieldName, void * entry, int offset)
  132. {                                                                
  133.     int i;                                                       
  134.     EimSubList * subList;                                        
  135.     EimAddlInfo * subentry;                                      
  136.                                                                  
  137.     /* Address the EimSubList object */                          
  138.     subList = (EimSubList *)((char *)entry + offset);            
  139.                                                                  
  140.     if (subList->listNum > 0)                                    
  141.     {                                                            
  142.        subentry = (EimAddlInfo *)((char *)entry + subList->disp);
  143.        for (i = 0; i < subList->listNum; i++)                    
  144.        {                                                         
  145.           /* Print out results */                                
  146.           printListData(fieldName,
  147.                         subentry,                             
  148.                         offsetof(EimAddlInfo, addlInfo));     
  149.           /* advance to next entry */                         
  150.           subentry = (EimAddlInfo *)((char *)subentry +       
  151.                                      subentry->nextEntry);    
  152.        }                                                      
  153.     }                                                         
  154. }                                                             
  155.                                                               
  156. void printListData(char * fieldName, void * entry, int offset)
  157. {                                                             
  158.     EimListData * listData;                                   
  159.     char * data;                                              
  160.     int dataLength;                                           
  161.                                                               
  162.     printf("     %s = ",fieldName);                           
  163.     /* Address the EimListData object */                      
  164.     listData = (EimListData *)((char *)entry + offset);       
  165.                                                               
  166.     /* Print out results */                                   
  167.        data = (char *)entry + listData->disp;
  168.        dataLength = listData->length;           
  169.                                                 
  170.        if (dataLength > 0)                      
  171.           printf("%.*s\n",dataLength, data);    
  172.        else                                     
  173.           printf("Not found.\n");               
  174. }                                               
  175.                                                 
  176. void printAssociationType(int type)             
  177. {                                               
  178.     switch(type)                                
  179.     {                                           
  180.         case EIM_SOURCE:                        
  181.             printf("     Source Associaion.\n");
  182.             break;                              
  183.                                                 
  184.         case EIM_ADMIN:                         
  185.             printf("     Admin Associaion.\n"); 
  186.             break;                              
  187.                                                 
  188.         case EIM_TARGET:
  189.             printf("     Target Associaion.\n");        
  190.             break;                                      
  191.                                                         
  192.         default:                                        
  193.             printf("ERROR - unknow association type\n");
  194.             break;                                      
  195.     }                                                   
  196. }                                                       
© 2004-2019 by midrange.com generated in 0.316s valid xhtml & css