Ejemplo n.º 1
0
void ReleaseAliasList(aliasL* head) {
  if (head) {
    aliasL *a, *b;
    a = head->child;
    if (a == head) {
      ReleaseAlias(head);
    } else {
      do {
        b = a->child;
        ReleaseAlias(a);
        a = b;
      } while (a != head);
      ReleaseAlias(head);
    }
  }
}
Ejemplo n.º 2
0
/*
 * __RegisterClass - cover for register class
 */
BOOL  FAR PASCAL __RegisterClass(LPWNDCLASS wc)
{
    WNDCLASS    nwc;
    BOOL        rc;

    nwc = *wc;

    GetAlias( &nwc.lpszMenuName );
    GetAlias( &nwc.lpszClassName );

    rc = RegisterClass( &nwc );

    ReleaseAlias( wc->lpszMenuName, nwc.lpszMenuName );
    ReleaseAlias( wc->lpszClassName, nwc.lpszClassName );

    return( rc );

} /* __RegisterClass */
Ejemplo n.º 3
0
void AddAlias(aliasL** aliasHeadPtr, char* cmdline) {
  aliasL *aliasNode = (aliasL*)malloc(sizeof(aliasL));
  char* name = NULL;
  char* cmd = strdup(cmdline);
  size_t len = 0;
  name = strsep(&cmd, "=");
  len = strlen(cmd);
  if (name && cmd) {
    if (cmd[0] == '\'') {
      cmd++;
      cmd[len-2] = 0;
    }
    aliasNode = (aliasL*)malloc(sizeof(aliasL));
    aliasNode->name = name;
    aliasNode->cmd = strdup(cmd);
    if (!(*aliasHeadPtr)) {
      aliasNode->child = aliasNode;
      aliasNode->parent = aliasNode;
      *aliasHeadPtr = aliasNode;
    } else {
      aliasL* node = *aliasHeadPtr;
      do {
        if (strcmp(node->name, aliasNode->name) == 0) {
          free(node->cmd);
          node->cmd = strdup(cmdline);
          ReleaseAlias(aliasNode);
          break;
        } else if (strcmp(node->name, aliasNode->name) > 0) {
          aliasNode->child = node;
          aliasNode->parent = node->parent;;
          node->parent->child = aliasNode;
          node->parent = aliasNode;
          if (node == *aliasHeadPtr) {
            *aliasHeadPtr = (*aliasHeadPtr)->parent;
          }
          break;
        } else {
          node = node->child;
        }
      } while (node != *aliasHeadPtr);
      if (node == *aliasHeadPtr) {
        aliasNode->child = node;
        aliasNode->parent = node->parent;;
        node->parent->child = aliasNode;
        node->parent = aliasNode;
      }
    }
  }
}
Ejemplo n.º 4
0
void DelAlias(aliasL** aliasHeadPtr, char* cmd) {
  aliasL *ptr = *aliasHeadPtr;
  if (ptr) {
    do {
      if (!strcmp(ptr->name, cmd)) {
        if (ptr == *aliasHeadPtr) {
          if (ptr->child == ptr) {
            *aliasHeadPtr = NULL;
          } else {
            *aliasHeadPtr = ptr->child;
          }
        }
        ptr->parent->child = ptr->child;
        ptr->child->parent = ptr->parent;
        ReleaseAlias(ptr);
        return;
      }
      ptr = ptr->child;
    } while (ptr != *aliasHeadPtr);
  }
  printf("unalias: no such hash table element %s\n", cmd);
}