BOOL stringcompare(char *buffer1, char *buffer2)
{
  BYTE count = 0, length = 0, count2 = 0;

  while(*buffer1++) length++;
  buffer1 -= length;
  buffer1--;
  while((*buffer2) && (count != length))
  {
    count2++;
    buffer2++;
    if(*buffer1 == *buffer2)
    {
      count++;
      buffer1++;
    }
    else
    {
      buffer1 -= count;
      count = 0;
    }
  }
  if(length == count) return(TRUE);
  else return(FALSE);
}

char *makelower(char *buffer1, const char *buffer2)
{
  char *d = buffer1, c;

  do
  {
    c = *buffer2++;
    if((c >= (char) 65) && (c <= (char) 90)) c += (char) 32;
    *buffer1++ = c;
  }
  while(c);

  return(d);
}

char *stringcopy(char *buffer1, const char *buffer2)
{
  char *d = buffer1, c;

  do
  {
    c = *buffer2++;
    if(c != 0x0a) *buffer1++ = c;
  }
  while(c);

  return(d);
}

char *stringcopywithoutspace(char *buffer1, const char *buffer2)
{
  char *d = buffer1, c;

  do
  {
    c = *buffer2++;
    if(c != ' ') *buffer1++ = c;
    else
    {
      *buffer1 = NULL;
      break;
    }
  }
  while(c);

  return(d);
}

void make_entry(void)
{
  char buffer1[41];
  BOOL changed = FALSE;
  WORD i;

  for(i = 0;i < 5;i++)
  {
    if(pattern[i][0])
    {
      if(stringcompare(patternlower[i], convert))
      {
        strcpy(founded_files_list_col1_raw[entryzahl], pattern[i]);
        changed = TRUE;
      }
    }
  }
  if(changed)
  {
    for(i = 0;i < 19;i++) founded_files_list_col2_raw[entryzahl][i] = puffer[i + 00]; founded_files_list_col2_raw[entryzahl][19] = NULL;
    for(i = 0;i < 9;i++)  founded_files_list_col3_raw[entryzahl][i] = puffer[i + 19]; founded_files_list_col3_raw[entryzahl][9] = NULL;
    for(i = 0;i < 06;i++) founded_files_list_col4_raw[entryzahl][i] = puffer[i + 29]; founded_files_list_col4_raw[entryzahl][06] = NULL;
    for(i = 0;i < 40;i++) buffer1[i] = puffer[i + 39]; buffer1[39] = NULL;
    stringcopy(founded_files_list_col5_raw[entryzahl], buffer1);
    entryzahl++;
    AllocListbrowserNodes(&founded_files_list);
    SetGadgetAttrs(Gadget1[25], Window1, NULL, LISTBROWSER_Labels, (ULONG) ~0, TAG_DONE);
    SetGadgetAttrs(Gadget1[25], Window1, NULL, LISTBROWSER_Labels, (ULONG) &founded_files_list, TAG_DONE);
  }
}

void AllocChooserNodes(struct List *List)
{
    struct Node *Node;
    BYTE i;

    NewList(List);
    for(i = 0;i < 2;i++)
    {
        if(i == 0) Node = AllocChooserNode(CNA_Text, LOCALE_ONECD, TAG_DONE);
        else Node = AllocChooserNode(CNA_Text, LOCALE_ALLCDS, TAG_DONE);
        AddTail(List, Node);
    }
}

void AllocListbrowserNodes(struct List *list)
{
  struct Node *node;
  WORD i;

  NewList(list);
  for(i = 0;i < entryzahl;i++)
  {
    node = AllocListBrowserNode(5, LBNA_Column, 0, LBNCA_CopyText, TRUE, LBNCA_Text, founded_files_list_col1_raw[i],
                                   LBNA_Column, 1, LBNCA_CopyText, TRUE, LBNCA_Text, founded_files_list_col2_raw[i],
                                   LBNA_Column, 2, LBNCA_CopyText, TRUE, LBNCA_Text, founded_files_list_col3_raw[i],
                                   LBNA_Column, 3, LBNCA_CopyText, TRUE, LBNCA_Text, founded_files_list_col4_raw[i],
                                   LBNA_Column, 4, LBNCA_CopyText, TRUE, LBNCA_Text, founded_files_list_col5_raw[i], TAG_DONE);
    AddTail(list, node);
  }
}

void RefreshSetGadgetAttrs(struct Gadget *g, struct Window *w, struct Requester *r, Tag tag1, ... )
{
  RefreshSetGadgetAttrsA(g, w, r, (struct TagItem *) &tag1);
}

void RefreshSetGadgetAttrsA(struct Gadget *g, struct Window *w, struct Requester *r, struct TagItem *tags)
{
  ULONG retval;

  retval = SetGadgetAttrsA(g, w, r, tags);
  if(retval) RefreshGList(g, w, r, 1);
}

