- if(srcLen>0 ){
- uint16_t* target=NULL;
- uint16_t* saveTarget = NULL;
- int32_t tgtLen = 0;
-
- if(uprv_strcmp(srBundle->fKeys+res->fKey,"%%CollationBin")==0 || uprv_strcmp(srBundle->fKeys+res->fKey,"BreakDictionaryData")==0){
- char fileName[1024] ={0};
- char fn[1024] = {0};
- FileStream* datFile = NULL;
- if(uprv_strcmp(srBundle->fKeys+res->fKey,"BreakDictionaryData")==0){
- uprv_strcat(fileName,"BreakDictionaryData");
- ext = ".brk";
- }else{
- uprv_strcat(fileName,"CollationElements");
- ext=".col";
- }
- if(uprv_strcmp(srBundle->fLocale,"root")!=0){
- uprv_strcat(fileName,"_");
- uprv_strcat(fileName,srBundle->fLocale);
- }
-
- uprv_strcat(fileName,ext);
- if(outDir ){
- uprv_strcat(fn,outDir);
- if(outDir[uprv_strlen(outDir)-1]!=U_FILE_SEP_CHAR){
- uprv_strcat(fn,U_FILE_SEP_STRING);
- }
- }
- uprv_strcat(fn,fileName);
- type = "new ICUListResourceBundle.ResourceBinary(";
- write_tabs(out);
- T_FileStream_write(out, type, (int32_t)uprv_strlen(type));
- T_FileStream_write(out, "\"", 1);
- T_FileStream_write(out, fileName, (int32_t)uprv_strlen(fileName));
- T_FileStream_write(out, "\"),\n", 4);
-
- datFile=T_FileStream_open(fn,"w");
- T_FileStream_write(datFile, res->u.fBinaryValue.fData, res->u.fBinaryValue.fLength);
- T_FileStream_close(datFile);
-
- }else{
-
- srcLen = res->u.fBinaryValue.fLength;
- tgtLen = srcLen * 2;
- target = (uint16_t*)malloc(sizeof(uint16_t) * tgtLen);
- saveTarget = target;
- if(target){
- tgtLen = byteArrayToRLEString(res->u.fBinaryValue.fData,
- srcLen,target, tgtLen,status);
- if(U_FAILURE(*status)){
- printf("Could not encode got error : %s \n", u_errorName(*status));
- return;
- }
-#if DEBUG
- /***************** Test Roundtripping *********************/
- {
- int32_t myTargetLen = rleStringToByteArray(target,tgtLen,NULL,0,status);
- uint8_t* myTarget = (uint8_t*) malloc(sizeof(uint8_t) * myTargetLen);
-
- /* test for NULL */
- if(myTarget == NULL) {
- *status = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
-
- int i=0;
- int32_t retVal=0;
-
- *status = U_ZERO_ERROR;
- retVal=rleStringToByteArray(target,tgtLen,myTarget,myTargetLen,status);
- if(U_SUCCESS(*status)){
-
- for(i=0; i< srcLen;i++){
- if(res->u.fBinaryValue.fData[i]!= myTarget[i]){
- printf("the encoded string cannot be decoded Expected : 0x%02X Got : %: 0x%02X at %i\n",res->u.fBinaryValue.fData[i],myTarget[i], i);
- }
- }
- }else{
- printf("Could not decode got error : %s \n", u_errorName(*status));
- }
- free(myTarget);
-
- }
-#endif
-
- }else{
- *status = U_MEMORY_ALLOCATION_ERROR;
- return;
- }