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; }