return filedata.data;

}


 
void auis_readinfo(char * out, char * path, char * dir) {
  char z[256];
  snprintf(z, 256, "%s%s/info.txt", path, dir);
  char * buf = aui_readfromzip(z);
  
  if (buf != NULL) {
    snprintf(out, 256, "%s", buf);
    free(buf);
  }
  else {
    snprintf(out, 256, "");
  }
}
//*
//* Load & Parse Language File
//*
byte alang_load_ex(AARRAYP * alang_v, char * z){
  alang_release();
  *alang_v       = aarray_create();
  char * buf  = aui_readfromzip(z);
  
  if (buf==NULL) return 0;
  char * vuf  = buf;
  if (strlen(vuf)>3){
    //-- Check UTF-8 File Header
    if ((vuf[0]==0xEF)&&(vuf[1]==0xBB)&&(vuf[2]==0xBF)){
        vuf+=3;
    }
  }
  byte state  = 0;
  byte slash  = 0;
  char c      = 0;
  char pc     = 0;
  char * key  = NULL;
  char * val  = NULL;
  
  while ((c=*vuf)){
    
    if (state==0){
      //-- First State
      if (!isspace(c)){
        key   = vuf;
        state = 2;
      }
      else if (c=='#')
        state = 1;
    }
    else if (state==1){
      //-- Comment
      if (c=='\n') state=0;
    }
    else if (state==2){
      if (isspace(c)||(c=='=')||(c=='\n')){
        *vuf = 0;
        if (c=='=') state=3;
        else if (c=='\n') state=0;
      }
    }
    else if (state==3){
      if (!isspace(c)){
        val = vuf;
        state=4;
        pc  = c;
      }
      else if (c=='\n') state=0;
    }
    else if (state==4){
      if (((c=='\n')&&(pc!='\\'))||(*(vuf+1)==0)){
        if ((c=='\n')&&(pc!='\\')) *vuf = 0;
          
        //-- Cleanup backslashes
        int i;
        int j=0;
        int l=strlen(val);
        for (i=0;i<l;i++){
          if ((val[i]=='\\')&&(val[i+1]=='\n')) continue;
          val[j++]=val[i];
        }
        val[j]=0;
        
        //-- Save Lang Value
        aarray_set(*alang_v,key,val);
        
        //-- End Of String
        state = 0;
      }
      pc=c;
    }
    
    vuf++;
    
  }
  
  free(buf);
  return 1;
}