*
*/
-#include <FBase.h>
-//#include <FIo.h>
+#include <FIo.h>
#include "daprobe.h"
#include "probeinfo.h"
#include "dahelper.h"
-using namespace Tizen::Base;
-
-enum FileSeekPosition {
- FILESEEKPOSITION_BEGIN, /**<The beginning of the file */
- FILESEEKPOSITION_CURRENT, /**<The current position of the file */
- FILESEEKPOSITION_END
-/**<The end of the file */
-};
-
static enum DaOptions _sopt = OPT_FILE;
namespace Tizen {
namespace Io {
-class FileAttributes {
-public:
- virtual bool Equals(const Object& object) const;
- FileAttributes(const FileAttributes &fileAttributes);
- FileAttributes(void);
- DateTime GetDateTime(void) const;
- long long GetFileSize(void) const;
- virtual int GetHashCode(void) const;
- DateTime GetLastModifiedTime(void) const;
- bool IsDirectory(void) const;
- bool IsHidden(void) const;
- bool IsReadOnly(void) const;
- FileAttributes & operator=(const FileAttributes &fileAttributes);
- virtual ~FileAttributes(void);
-};
-
-class File {
-public:
-
-/* deprecated apis
- *
- result Construct(const Tizen::Base::String& filePath,
- const Tizen::Base::String& openMode, bool secureMode,
- bool createParentDirectories);
- result Construct(const Tizen::Base::String& filePath,
- const Tizen::Base::String& openMode, bool secureMode,
- const Tizen::Base::ByteBuffer& key, bool createParentDirectories);
-
- result Construct(const Tizen::Base::String& filePath,
- const Tizen::Base::String& openMode,
- const Tizen::Base::ByteBuffer& secretKey);
-*/
- result Construct(const Tizen::Base::String& filePath,
- const Tizen::Base::String& openMode, bool createParentDirectories);
- result Construct(const Tizen::Base::String& filePath,
- const Tizen::Base::String& openMode);
-
- result Construct(const Tizen::Base::String& filePath,
- const char *pOpenMode);
- result Construct(const Tizen::Base::String& filePath,
- const char *pOpenMode, const Tizen::Base::ByteBuffer &seretKey);
-
-
- /*
- File(void);
- */
- result Flush(void);
-
- Tizen::Base::String GetName(void) const;
- result Read(Tizen::Base::String& buffer);
- result Read(Tizen::Base::ByteBuffer& buffer);
- int Read(void *buffer, int length);
- result Seek(FileSeekPosition position, long offset);
-
- int Tell(void) const;
-
- result Truncate(int length);
-
- result Write(const void *buffer, int length);
-
- result Write(const Tizen::Base::ByteBuffer& buffer);
- result Write(const Tizen::Base::String& buffer);
- virtual ~File(void);
- /*
- // static methods
- static result ConvertToSecureFile(const Tizen::Base::String &plainFilePath,
- const Tizen::Base::String &secureFilePath);
- static result ConvertToSecureFile(const Tizen::Base::String &plainFilePath,
- const Tizen::Base::String &secureFilePath,
- const Tizen::Base::ByteBuffer& key);
- static result Copy(const Tizen::Base::String& srcFilePath,
- const Tizen::Base::String& destFilePath, bool failIfExist);
- static result GetAttributes(const Tizen::Base::String& filePath,
- FileAttributes& attribute);
- static const Tizen::Base::String GetFileExtension(
- const Tizen::Base::String& filePath);
-
- static const Tizen::Base::String GetFileName(const Tizen::Base::String& filePath);
-
- const Tizen::Base::String& filePath);
- static bool IsEncrypted(const Tizen::Base::String &filePath);
- static bool IsFileExist(const Tizen::Base::String& filePath);
- static result Move(const Tizen::Base::String& oldFilePath,
- const Tizen::Base::String& newFilePath);
- static result Remove(const Tizen::Base::String& filePath);
- // static Tizen::Base::Collection::IList *GetPathsToAppsN(void);
- */
-};
-
-//File::File(void) {
-//static (File::*Filep)();
-//}
-
result File::Construct(const Tizen::Base::String& filePath,
const Tizen::Base::String& openMode, bool createParentDirectories) {
typedef result (File::*methodType)(const Tizen::Base::String& filePath,
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Constructp) {
probeBlockStart();
log.length += sprintf(log.data + log.length,", %s",temp);
log.length += sprintf(log.data + log.length,", %s`,%ld",(createParentDirectories == 0 ? "false" : "true"),ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,filePath.GetPointer());
+ size = attr.GetFileSize();
// WcharToChar(temp,this->GetName().GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if(!Constructp) {
probeBlockStart();
WcharToChar(temp,openMode.GetPointer());
log.length += sprintf(log.data + log.length,", %s`,%ld",temp,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,filePath.GetPointer());
+ size = attr.GetFileSize();
// WcharToChar(temp,this->GetName().GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if(!Constructp) {
probeBlockStart();
log.length += sprintf(log.data + log.length,"`,%s",temp);
log.length += sprintf(log.data + log.length,", %s`,%ld",pOpenMode,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,filePath.GetPointer());
+ size = attr.GetFileSize();
// WcharToChar(temp,this->GetName().GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if(!Constructp) {
probeBlockStart();
log.length += sprintf(log.data + log.length,", %s",pOpenMode);
log.length += sprintf(log.data + log.length,", 0x%x`,%ld",(unsigned int)&secretKey,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,filePath.GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,temp);
+ size = attr.GetFileSize();
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OPEN,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Flushp) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,`,%ld",ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,temp);
+ size = attr.GetFileSize();
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!GetNamep) {
probeBlockStart();
WcharToChar(temp,ret.GetPointer());
log.length += sprintf(log.data + log.length,"`,`,%s",temp);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,temp);
+ File::GetAttributes(this->GetName(),attr);
+ size = attr.GetFileSize();
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,size,temp);
//callstack
// if(E_SUCCESS != res || blockresult == 2) {
bool bfiltering = true;
char temp[50];
int nRead = 0;
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Readp) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,0x%x`,%ld",(unsigned int)&buffer,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
+ size = attr.GetFileSize();
nRead = buffer.GetLength();
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
bool bfiltering = true;
char temp[50];
int nRead = 0;
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Readp) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,0x%x`,%ld",(unsigned int)&buffer,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
+ size = attr.GetFileSize();
buffer.GetInt(nRead);
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
bool bfiltering = true;
char temp[50];
int nRead = 0;
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Readp) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,0x%x, %d`,%d",(unsigned int)buffer,length,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
+ size = attr.GetFileSize();
nRead = Tell() - nRead;
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,?`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Seekp) {
probeBlockStart();
void *tmpPtr = dlsym(RTLD_NEXT,
- "_ZN5Tizen2Io4File4SeekE16FileSeekPositionl");
+ "_ZN5Tizen2Io4File4SeekENS0_16FileSeekPositionEl");
if (tmpPtr == NULL || dlerror() != NULL) {
perror("dlsym failed : Tizen::Io::File::Seek");
log.length += sprintf(log.data + log.length,"`,%d",position);
log.length += sprintf(log.data + log.length,", %ld`,%ld",offset,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,temp);
+ size = attr.GetFileSize();
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Tellp) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,`,%d",ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,temp);
+ size = attr.GetFileSize();
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
char temp[50];
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Truncatep) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,%d`,%ld",length,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,temp);
+ size = attr.GetFileSize();
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_OTHER,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
bool bfiltering = true;
char temp[50];
int nWritten = 0;
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Writep) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,0x%x, %d`,%ld",(unsigned int)buffer,length,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
+ size = attr.GetFileSize();
nWritten = Tell() - nWritten;
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
bool bfiltering = true;
char temp[50];
int nWritten = 0;
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Writep) {
probeBlockStart();
//Input,ret
log.length += sprintf(log.data + log.length,"`,0x%x`,%ld",(unsigned int)&buffer,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
+ size = attr.GetFileSize();
nWritten = Tell() - nWritten;
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
bool bfiltering = true;
char temp[50];
int nWritten = 0;
- //FileAttributes attr;
+ FileAttributes attr;
+ long long size;
if (!Writep) {
probeBlockStart();
WcharToChar(temp,buffer.GetPointer());
log.length += sprintf(log.data + log.length,"`,%s`,%ld",temp,ret);
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
+ File::GetAttributes(this->GetName(),attr);
WcharToChar(temp,this->GetName().GetPointer());
+ size = attr.GetFileSize();
nWritten = Tell() - nWritten;
- log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,?`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,temp);
+ log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,size,temp);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {
int blockresult;
bool bfiltering = true;
void *tmpPtr;
+ FileAttributes attr;
+ long long size;
if (!FileDp) {
probeBlockStart();
if((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
setProbePoint(&probeInfo);
+ File::GetAttributes(this->GetName(),attr);
+ size = attr.GetFileSize();
preBlockEnd();
}
//
//Input,ret
log.length += sprintf(log.data + log.length,"`,`,");
//PCAddr,errno,InternalCall,size,FD,FDType,FDApiType,FileSize,FilePath
- //File::GetAttributes(this->GetName(),attr);
-
- log.length += sprintf(log.data + log.length,"`,0`,0`,%d`,%u`,0`,0x%x`,%d`,%d`,?`,",blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_CLOSE);
+ log.length += sprintf(log.data + log.length,"`,0`,0`,%d`,%u`,0`,0x%x`,%d`,%d`,%lld`,",blockresult,(unsigned int)CALLER_ADDRESS,(unsigned int)this,FD_FILE,FD_API_CLOSE,size);
//callstack
// if(E_SUCCESS != ret || blockresult == 2) {