void cMutexInitPort(MutexT * mt) { int ret; if(mt) { pthread_mutexattr_init(&g_mutex_attr); pthread_mutexattr_settype(&g_mutex_attr, PTHREAD_MUTEX_RECURSIVE); mt->mutex = (void*)cMalloc(sizeof(pthread_mutex_t)); pthread_mutex_init((pthread_mutex_t*)mt->mutex, &g_mutex_attr); } }
bool cIOCopy(const char *aDstFile, const char *aSrcFile) { Int32 srcFd = -1; Int32 dstFd = -1; Int32 fileSize = -1; BYTE *buf = NULL; bool isOK = false; srcFd = cIOOpen(aSrcFile, MADA_OF_READ); if(srcFd <= 0) { goto done; } fileSize = cIOSize(srcFd); if(fileSize < 0) { goto done; } buf = cMalloc(fileSize); if(NULL == buf) { goto done; } if(cIORead(srcFd, buf, fileSize) != fileSize) { goto done; } dstFd = cIOOpen(aDstFile, MADA_OF_CREATE | MADA_OF_WRITE | MADA_OF_TRUNC); if(dstFd <= 0) { goto done; } if(cIOWrite(dstFd, buf, fileSize) != fileSize) { goto done; } isOK = true; done: if(NULL != buf) { cFree(buf); } if(srcFd > 0) { cIOClose(srcFd); } if(dstFd > 0) { cIOClose(dstFd); } return isOK; }
bool cBufExpand(CBufferT *mem, int size) { char* tmp; if(!mem) return false; if((int)mem->size >= size) return true; tmp = mem->buffer; mem->buffer = (char*)cMalloc(size); if(!mem->buffer) { mem->buffer = tmp; return false; } cMemset(mem->buffer, 0, size); if(tmp != NULL) { cMemcpy(mem->buffer, tmp, mem->size); cFree(tmp); } mem->size = size; return true; }
void* cpalloc( const void* ptr, size_t size) { void* ret = cMalloc( size); memcpy( ret, ptr, size); return ret; }