rem: if(pData.filetype==FIDIR) {
context: static void RecursiveListing(char* parentpath, file_info* parent, GtkTreeIter* parent_place, int partition, int level, GtkTreeStore* treestore) {  gboolean firstitem;  file_info tData, pData;  //  const char* parentpath = parentpath_cs.text;  int t, end;  GtkTreeIter child;  // file_info hitems[999];  char recursedir[STRINGSIZE];  char tempstring[STRINGSIZE];  firstitem = TRUE;    strcpy(tempstring, "RecursiveListing: ");  if (strlen(tempstring) + strlen(parentpath) < STRINGSIZE)    strcat(tempstring, parentpath);  Log(tempstring);  //Log("RecursiveListing: ");  //Log(parentpath);  if (level == 5) return; //recursive runaway!!! lookout!!!  //for (t=0; t < 1000; ++t) {    //    hItem[t].number_of_children = 0; //only parameter that would really get you in trouble      // }  //NOTE: We take 2 passes at the directory, due to the way the  //camcorder directory listing works (doesn't lend itself to easy  //recursion.    for(t=0;t<1000;t++)  { //don't bitch. 1000 items in one directory is a lot.    Log("Getfileinfo?");    if(GetFileInfo(&tData,firstitem)==FALSE)      break; //we've passed the last item.    Log("Getfileinfo.");    firstitem=FALSE;            if( (strcmp(tData.filename,".") == 0) ||	(strcmp(tData.filename,"..") == 0) ||	(tData.filename[0]==0x20) ) { //0x20 == space bar?      t--;      continue;    }        strcpy(pData.filename,tData.filename);    pData.filesize = tData.filesize;    pData.filetype = tData.filetype;    pData.number_of_children = 0;        strcpy(pData.dirpath, parentpath);    strcpy(pData.fullpath, parentpath);        if (strlen(tData.filename) + strlen(pData.fullpath) < STRINGSIZE - 1)      strcat(pData.fullpath, tData.filename);    pData.partition=partition;    Log(pData.fullpath);    if(pData.filetype==FIDIR) {                  file_info* f_i = AddToTreeStore(GTK_TREE_STORE(treestore), parent_place, &child, &pData, parent);      Log("if (pData.filetype == FIDIR)");      strncpy (recursedir, pData.fullpath, STRINGSIZE - 2);      strcat (recursedir, "/");      if (ChangeDirectory(pData.fullpath) == FALSE) {	strcpy(tempstring, "Couldn't recurse into: ");	if (strlen(tempstring) + strlen(pData.fullpath) < STRINGSIZE)	  strcat(tempstring, pData.fullpath);		//Log("Couldn't recurse into:");	Log(tempstring);	return;      }      //      RecursiveListing(recursedir, f_i);      //hItem[t] = m_directory_tree.InsertItem(pData->filename,0,0,parent);      //Log("enter recursion");            //RecursiveListing(NULL, NULL, NULL, 0, 0, NULL);      Log("RecursiveListing recursion.");      RecursiveListing(recursedir, f_i, &child, partition, level + 1, GTK_TREE_STORE(treestore));      //Log("end recursion");    } else {      AddToTreeStore(treestore, parent_place, &child, &pData, parent);      strcpy(tempstring, "Not a directory: ");      strcat(tempstring, pData.fullpath);      Log(tempstring);      //Log("that point");            //hItem[t] = m_directory_tree.InsertItem(pData->filename,2,2,parent);    }    //SetItemData(hItem[t],(DWORD)pData);;      }  end = t;  //return; //debug... don't recurse  /*for(t=0;t<end;t++) {    //if(hItem[t]==0)    //  return;    rData=(FILE_INFO *)m_directory_tree.GetItemData(hItem[t]);    if(rData->filetype==FIDIR)      {	CString recursedir=rData->fullpath + "/";	if(m_camcorder.ChangeDirectory(rData->fullpath)==false)	  {	    Log("Couldn't recurse into "+rData->fullpath);	    return;	  }	RecursiveListing(recursedir,hItem[t],partition, level+1);		}	}  */  }