Code:
- #include <eim.h>
- #include <stddef.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- void printListResults(EimList * list);
- void printSubListData(char * fieldName, void * entry, int offset);
- void printListData(char * fieldName, void * entry, int offset);
- void printAssociationType(int type);
-
- int main(int argc, char *argv[])
- {
- int rc;
- char eimerr[200];
- EimRC * err;
- EimHandle handle;
- EimIdentifierInfo x;
- EimConnectInfo con;
- char unique[30];
- char listData[1000];
- char rtnstr[20];
- char * message;
- EimList * list = (EimList * ) listData;
- unsigned int sizeofUnique = 30;
-
-
- memset(eimerr,0x00,200);
- err = (EimRC *)eimerr;
- err->memoryProvidedByCaller = 200;
-
-
-
- if (0 != (rc = eimCreateHandle(&handle,
- NULL,
- err)))
- {
- message = eimErr2String(err);
- sprintf(argv[5], "EIM API Error Message: %s",message);
- free(message);
-
-
- argv[5][strlen(argv[5])] = ' ';
- return -1;
- }
-
-
- con.type = EIM_SIMPLE;
- con.creds.simpleCreds.protect = EIM_PROTECT_NO;
- con.creds.simpleCreds.bindDn = argv[2];
- con.creds.simpleCreds.bindPw = argv[3];
- con.ssl = NULL;
-
- if (0!= (rc = eimConnect(&handle,
- con,
- err)))
- {
- message = eimErr2String(err);
- sprintf(argv[5], "EIM API Error Message: %s",message);
- free(message);
-
-
- argv[5][strlen(argv[5])] = ' ';
- return -1;
- }
-
-
- if (0 != (rc = eimGetAssociatedIdentifiers(&handle,
- EIM_SOURCE_AND_TARGET,
- argv[4],
- argv[1],
- 1000,
- list,
- err)))
- {
- message = eimErr2String(err);
- sprintf(argv[5], "Get Associated Identifiers error: %s",
- message);
- free(message);
- eimDestroyHandle(&handle, err);
- return -1;
- }
-
-
- printListResults(list);
-
-
- rc = eimDestroyHandle(&handle, err);
-
- return 0;
- }
-
- void printListResults(EimList * list)
- {
- FILE *qprint;
- qprint=fopen("QPRINT","w");
- int i;
- EimIdentifier * entry;
-
- printf("___________\n");
- printf(" entriesReturned = %d\n", list->entriesReturned);
- printf(" entriesAvailable = %d\n", list->entriesAvailable);
- printf("\n");
-
- entry = (EimIdentifier *)((char *)list + list->firstEntry);
- for (i = 0; i < list->entriesReturned; i++)
- {
- printf("\n");
- printf("===============\n");
- printf("Entry %d.\n", i);
-
-
- printListData("Unique name",
- entry,
- offsetof(EimIdentifier, uniquename));
- printSubListData("Additional Info",
- entry,
- offsetof(EimIdentifier, additionalInfo));
- printAssociationType(entry->type);
-
-
- entry = (EimIdentifier *)((char *)entry + entry->nextEntry);
-
- }
- printf("\n");
-
-
- fclose(qprint);
-
- }
-
- void printSubListData(char * fieldName, void * entry, int offset)
- {
- int i;
- EimSubList * subList;
- EimAddlInfo * subentry;
-
-
- subList = (EimSubList *)((char *)entry + offset);
-
- if (subList->listNum > 0)
- {
- subentry = (EimAddlInfo *)((char *)entry + subList->disp);
- for (i = 0; i < subList->listNum; i++)
- {
-
- printListData(fieldName,
- subentry,
- offsetof(EimAddlInfo, addlInfo));
-
- subentry = (EimAddlInfo *)((char *)subentry +
- subentry->nextEntry);
- }
- }
- }
-
- void printListData(char * fieldName, void * entry, int offset)
- {
- EimListData * listData;
- char * data;
- int dataLength;
-
- printf(" %s = ",fieldName);
-
- listData = (EimListData *)((char *)entry + offset);
-
-
- data = (char *)entry + listData->disp;
- dataLength = listData->length;
-
- if (dataLength > 0)
- printf("%.*s\n",dataLength, data);
- else
- printf("Not found.\n");
- }
-
- void printAssociationType(int type)
- {
- switch(type)
- {
- case EIM_SOURCE:
- printf(" Source Associaion.\n");
- break;
-
- case EIM_ADMIN:
- printf(" Admin Associaion.\n");
- break;
-
- case EIM_TARGET:
- printf(" Target Associaion.\n");
- break;
-
- default:
- printf("ERROR - unknow association type\n");
- break;
- }
- }
|
|