pcp(char *source, char *destpath) { char *srcBuf, *dstBuf; uint32_t srcSize,dataOffset,dstSize,dstDataOffset; char srcMd5sig[36],dstMd5sig[36]; int status; if ((source == NULL) || (destpath == NULL)) { printf("Usage: pcp \"dev:source_filename\",\"dev:dest_filename\"\n"); printf(" where 'dev' can be: ffs - controller flash, rsh - host, icat - iCAT ISFlash]\n"); printf(" e.g. pcp \"rsh:/home/vnmr1/myfile.txt\",\"ffs:myfile.txt\"\n"); printf(" pcp \"rsh:/home/vnmr1/myfile.txt\",\"icat:myfile.txt\"\n"); printf(" pcp \"ffs:myfile.txt\",\"rsh:/home/vnmr1/myfile.txt\"\n"); printf(" pcp \"icat:myfile.txt\",\"ffs:myfile.txt\"\n"); printf(" Note some devices may not be available on all controllers\n\n"); return(-1); } srcBuf = vsload(source, &srcSize, &dataOffset ); // printf("pcp: src: '%s', size: %ld, offset: %ld, Buff: 0x%lx\n", source,srcSize,dataOffset,srcBuf); if (srcBuf == NULL) { printf("Copy failed.\n"); return -1; } status = vswrite(destpath, (srcBuf + dataOffset), srcSize); // printf("pcp: status: %d, dst: '%s', size: %ld, offset: %ld, Buff: 0x%lx\n", status, destpath,srcSize,dataOffset,(srcBuf+dataOffset)); if (status != 0) { free(srcBuf); printf("Copy failed.\n"); return -1; } dstBuf = vsload(destpath, &dstSize, &dstDataOffset ); // printf("pcp: vsload: dst: '%s', size: %ld, offset: %ld, Buff: 0x%lx\n", destpath,dstSize,dstDataOffset,dstBuf); if (dstBuf == NULL) { free(srcBuf); printf("Copy failed.\n"); return -1; } calcMd5((srcBuf + dataOffset), srcSize, srcMd5sig); calcMd5((dstBuf+dstDataOffset), dstSize, dstMd5sig); // printf("MD5 src: '%s', dst: '%s'\n",srcMd5sig,dstMd5sig); if ( strcmp(srcMd5sig,dstMd5sig) != 0) { free(srcBuf); free(dstBuf); printf("Verification failed.\n"); printf("Copy failed.\n"); return -1; } printf("Copy Successful.\n"); free(srcBuf); free(dstBuf); return 0; }
int LogErr(const char* fmt, ...) { int ret = -1; va_list vl; if (NULL == g_pLogOpt){ g_pLogOpt->err_code = LOG_ERR_OBJECT_NULL; return -1; } va_start(vl, fmt); ret = vswrite(g_pLogOpt, fmt, vl); va_end(vl); return ret; }
int logerr(LOG_OPT* pLogOpt, const char* fmt, ...) { int ret = -1; va_list vl; if (NULL == pLogOpt){ pLogOpt->err_code = LOG_ERR_OBJECT_NULL; return -1; } va_start(vl, fmt); ret = vswrite(pLogOpt, fmt, vl); va_end(vl); return ret; }
int LogMsg(int level, const char* fmt, ...) { int ret = -1; va_list vl; if (NULL == g_pLogOpt){ g_pLogOpt->err_code = LOG_ERR_OBJECT_NULL; return -1; } if (NULL == fmt || strlen(fmt) <= 0){ return 0; } if (g_pLogOpt->is_daemon && (level < LOG_ERROR || level > g_pLogOpt->level)) return 0; va_start(vl, fmt); ret = vswrite(g_pLogOpt, fmt, vl); va_end(vl); return ret; }