int dir_truncateat(struct dir *dir, const char *filename, uint64_t size) { struct file *file = file_open_rw(dir, filename); if (file == NULL) { return -1; } int r = file_truncate(file, size); file_close(file); return r; }
int main(int argc, char** argv) { unsigned char* pucBuf = NULL; int nBufSize = 512; int nReadFileSize = 0; int nWriteCycleBufSize = 0; pthread_t tid = -1; int nSum = 0; CYCLEBUFFERCXT_S* psCycBufCxt = createCycleBuffer(CYCLEBUFFERLEN); if (NULL == psCycBufCxt) { printf("createCycleBuffer failed!\n"); return -1; } if (0 != initCycleBuffer(psCycBufCxt, 0, 0)) { printf("initCycleBuffer failed!\n"); return -1; } nFd = file_open_rw(AUDIOFILEPATH); if (-1 == nFd) { printf("file_open_rw failed!\n"); if (NULL != psCycBufCxt) destroyCycleBuffer(psCycBufCxt); return -1; } originFileSize = file_getSize(nFd); printf("%s size is %d\n", AUDIOFILEPATH, originFileSize); pucBuf = (unsigned char*)malloc(sizeof(unsigned char)*nBufSize); if (NULL == pucBuf) { printf("file_open_rw failed!\n"); if (NULL != psCycBufCxt) destroyCycleBuffer(psCycBufCxt); file_close(nFd); return -1; } if (0 != pthread_create(&tid, NULL, doThread, (void*)psCycBufCxt)) { printf("create pthread failed!\n"); if (NULL != psCycBufCxt) destroyCycleBuffer(psCycBufCxt); file_close(nFd); return -1; } while(1) { nReadFileSize = file_read(nFd, pucBuf, nBufSize); nWriteCycleBufSize = writeCycleBuffer(psCycBufCxt, pucBuf, nReadFileSize); if (-1 == nWriteCycleBufSize) { printf("writeCycleBuffer failed!\n"); } printf("write cycle buffer nWriteCycleBufSize=%d\n", nWriteCycleBufSize); nSum += nReadFileSize; if (nSum == originFileSize) break; sleep(1); } printf("read file over!\n"); pthread_join(tid, NULL); if (NULL != psCycBufCxt) destroyCycleBuffer(psCycBufCxt); file_close(nFd); return 0; }