HANDEL_EXPORT int HANDEL_API xiaInit(char *iniFile) { int status; int nFilesOpen; /* We need to clear and re-initialize Handel */ status = xiaInitHandel(); if (status != XIA_SUCCESS) { xiaLogError("xiaInit", "Error reinitializing Handel", status); return status; } if (iniFile == NULL) { xiaLogError("xiaInit", ".INI file name must be non-NULL", XIA_BAD_NAME); return XIA_BAD_NAME; } /* Verify that we currently don't have any file handles open. This is * not a legitimate error condition and indicates that we are not cleaning * up all of our handles somewhere else in the library. */ nFilesOpen = xia_num_open_handles(); if (nFilesOpen > 0) { xia_print_open_handles(stdout); FAIL(); } status = xiaReadIniFile(iniFile); if (status != XIA_SUCCESS) { sprintf(info_string, "Error reading in .INI file '%s'", iniFile); xiaLogError("xiaInit", info_string, status); return status; } return XIA_SUCCESS; }
/***************************************************************************** * * This routine creates a new XiaDefaults entry * *****************************************************************************/ HANDEL_SHARED int HANDEL_API xiaNewDefault(char *alias) { int status = XIA_SUCCESS; XiaDefaults *current=NULL; /* If HanDeL isn't initialized, go ahead and call it... */ if (!isHandelInit) { status = xiaInitHandel(); if (status != XIA_SUCCESS) { fprintf(stderr, "FATAL ERROR: Unable to load libraries.\n"); exit(XIA_INITIALIZE); } xiaLogWarning("xiaNewDefault", "HanDeL was initialized silently"); } if ((strlen(alias) + 1) > MAXALIAS_LEN) { status = XIA_ALIAS_SIZE; sprintf(info_string, "Alias contains too many characters"); xiaLogError("xiaNewDefault", info_string, status); return status; } /* First check if this alias exists already? */ current = xiaFindDefault(alias); if (current != NULL) { status = XIA_ALIAS_EXISTS; sprintf(info_string,"Alias %s already in use.", alias); xiaLogError("xiaNewDefault", info_string, status); return status; } /* Check that the Head of the linked list exists */ if (xiaDefaultsHead == NULL) { /* Create an entry that is the Head of the linked list */ xiaDefaultsHead = (XiaDefaults *) handel_md_alloc(sizeof(XiaDefaults)); current = xiaDefaultsHead; } else { /* Find the end of the linked list */ current= xiaDefaultsHead; while (current->next != NULL) { current= current->next; } current->next = (XiaDefaults *) handel_md_alloc(sizeof(XiaDefaults)); current= current->next; } /* Make sure memory was allocated */ if (current == NULL) { status = XIA_NOMEM; sprintf(info_string,"Unable to allocate memory for default %s.", alias); xiaLogError("xiaNewDefault", info_string, status); return status; } /* Do any other allocations, or initialize to NULL/0 */ current->alias = (char *) handel_md_alloc((strlen(alias)+1)*sizeof(char)); if (current->alias == NULL) { status = XIA_NOMEM; xiaLogError("xiaNewDefault", "Unable to allocate memory for default->alias", status); return status; } strcpy(current->alias,alias); current->entry = NULL; current->next = NULL; return XIA_SUCCESS; }