int kal_log(int log_level, const char *file, int32 line, const char *fmt, ...) { va_list ap; if (log_level < KAL_LL_FATAL) log_level = KAL_LL_FATAL; else if (log_level > KAL_LL_DEBUG) log_level = KAL_LL_DEBUG; if (log_level < KAL_LL_INFO) kal_printf("%s %s:%d: ", ll2str[log_level], file, line); va_start(ap, fmt); vprintf(fmt, ap); va_end(ap); if (log_level < KAL_LL_INFO) kal_printf("\n"); return 0; }
static kal_int32 xml_generate_flash_text(kal_int8 hd, kal_char *text, kal_uint32 textlen) { kal_uint32 length, len; kal_int32 ret; FS_HANDLE fhandle = -1; xml_generator_struct *p = NULL; /* first to get xml text length */ if(textlen == 0)/* text is in file */ { fhandle = FS_Open((WCHAR*)text, FS_READ_ONLY); if (fhandle < 0) { return XG_E_FAIL; } ret = FS_GetFileSize(fhandle, &length); if (ret == FS_FILE_NOT_FOUND) { return XG_E_FILE_NOT_FOUND; } if (ret < 0) { FS_Close(fhandle); return XG_E_FAIL; } } else /* text is in buffer */ { length = textlen; } p = &(xg_array[hd]); /* then write xml text to dest */ if(p->buf != NULL) /* write xml text to buffer */ { /* verify if over-buffer */ if(p->curlen+length > p->buflen) { if(fhandle != -1) { FS_Close(fhandle); } ASSERT(0); kal_printf("buffer to save will be overflow!!!!\r\n"); return XG_E_OVER_BUFFER; } if (textlen != 0) /* text is in buffer, write xml text from buffer to buffer */ { memcpy(p->buf+p->curlen, text, textlen); len = textlen; ret = 0; } else /* text is in file, write xml text from file to buffer */ { ret = xml_generate_write_filetobuf(p->buf+p->curlen, fhandle, &len); FS_Close(fhandle); } } else /* write xml text to file */ { if (textlen != 0) /* text is in buffer, write xml text from buffer to file */ { ret = FS_Write(p->file, text, textlen, &len); if(ret == FS_DISK_FULL) { return XG_E_LACK_DISK; } } else /* text is in file, write xml text from file to file */ { ret = xml_generate_write_filetofile(p->file, fhandle, &len); FS_Close(fhandle); } } if (ret < 0) { return ret; } else { p->curlen += len; return len; } }