Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
/*****************************************************************************
 *
 * 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;
}