void vCpLog( int pri, const char* file, int line, const char* fmt, va_list ap ) { assert( pri >= 0 && pri <= LAST_PRIORITY ); char datebuf[ DATEBUF_SIZE ]; memset(datebuf, 0, DATEBUF_SIZE); int datebufCharsRemaining; struct timeval tv; struct timezone tz; int result = gettimeofday( &tv, &tz ); if( result == -1 ) { datebuf [0] = '\0'; } else { const time_t timeInSeconds = (time_t) tv.tv_sec; strftime( datebuf, DATEBUF_SIZE, "%m-%d %H:%M:%S", localtime ( &timeInSeconds ) ); } char msbuf[10]; sprintf( msbuf, ".%3.3d", (int)(tv.tv_usec/1000) ); datebufCharsRemaining = DATEBUF_SIZE - strlen( datebuf ); strncat( datebuf, msbuf, datebufCharsRemaining - 1 ); datebuf[DATEBUF_SIZE - 1] = '\0'; if( bConnServer ) { char outBuff[2048]; memset(outBuff, 0, 2048); KData ret = "["; ret = ret + KData(datebuf) + KData("]") + KData(priNameShort[pri]) + KData(" "); vsprintf( outBuff, fmt, ap ); ret += outBuff; LogPack *pLogPack = (LogPack*)outBuff; pLogPack->lLogMsgSize = htonl( ret.length() ) ; strcpy( pLogPack->strLogMsg, ret.getDataBuf() ); spClientSock->transmit( (char*)pLogPack, sizeof( long )+ret.length() ); } if( mainLogFunc == NULL ) { fprintf( cpLogFd, "[%s] %s: ", datebuf, priNameShort[pri] ); vfprintf( cpLogFd, fmt, ap ); fprintf( cpLogFd, "\n" ); fflush( cpLogFd ); } else { char outBuff[2048]; memset(outBuff, 0, 2048); KData ret = "["; ret = ret + KData(datebuf) + "]" + priNameShort[pri] + " "; vsprintf( outBuff, fmt, ap ); ret += outBuff; mainLogFunc( ret, pri ); } }
int KHttp::getHttpFile(const KData& fullUrl, const KData& savefile, int startpos) { string strPath = fullUrl; Trim(strPath); KData dtServer; KData dtFile; KData kDTFullUrl = strPath; LOGD("kDTFullUrl is %s",kDTFullUrl.getDataBuf()); if (isEqualNoCase(kDTFullUrl.substr(0, 7), "http://")) { kDTFullUrl = kDTFullUrl.substr(7); } int nPos = kDTFullUrl.find("/"); if (nPos == -1) { LOGERROR("nPos = -1"); return 0; } else { dtServer = kDTFullUrl.substr(0, nPos); dtFile = kDTFullUrl.substr(nPos); } return getHttpFile(dtServer, dtFile, savefile, startpos); }
int KFile::write(const KData& data) { const char* pKData = data.getDataBuf(); int len = data.length(); int iWrited = 0; while (iWrited < len) { int iRet = write((unsigned char*) (pKData + iWrited), len - iWrited); if (iRet <= 0) break; iWrited += iRet; } return iWrited; }