comparison audioDB.cpp @ 184:1fb3d82aa590 no-big-mmap

no dataBuf use in dump()
author mas01cr
date Thu, 15 Nov 2007 17:40:46 +0000
parents 3002bee2f60d
children ae212368a874
comparison
equal deleted inserted replaced
183:3002bee2f60d 184:1fb3d82aa590
937 937
938 char *fName = new char[256]; 938 char *fName = new char[256];
939 int ffd; 939 int ffd;
940 FILE *tFile; 940 FILE *tFile;
941 unsigned pos = 0; 941 unsigned pos = 0;
942 lseek(dbfid, dbH->dataOffset, SEEK_SET);
943 double *data_buffer;
944 size_t data_buffer_size;
942 for(unsigned k = 0; k < dbH->numFiles; k++) { 945 for(unsigned k = 0; k < dbH->numFiles; k++) {
943 fprintf(kLFile, "%s\n", fileTable + k*O2_FILETABLESIZE); 946 fprintf(kLFile, "%s\n", fileTable + k*O2_FILETABLESIZE);
944 snprintf(fName, 256, "%05d.features", k); 947 snprintf(fName, 256, "%05d.features", k);
945 if ((ffd = open(fName, O_CREAT|O_RDWR|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)) < 0) { 948 if ((ffd = open(fName, O_CREAT|O_RDWR|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)) < 0) {
946 error("error creating feature file", fName, "open"); 949 error("error creating feature file", fName, "open");
947 } 950 }
948 if ((write(ffd, &dbH->dim, sizeof(uint32_t))) < 0) { 951 if ((write(ffd, &dbH->dim, sizeof(uint32_t))) < 0) {
949 error("error writing dimensions", fName, "write"); 952 error("error writing dimensions", fName, "write");
950 } 953 }
951 954
952 if ((write(ffd, dataBuf + pos * dbH->dim, trackTable[k] * dbH->dim * sizeof(double))) < 0) { 955 /* FIXME: this repeated malloc()/free() of data buffers is
956 inefficient. */
957 data_buffer_size = trackTable[k] * dbH->dim * sizeof(double);
958
959 {
960 void *tmp = malloc(data_buffer_size);
961 if (tmp == NULL) {
962 error("error allocating data buffer");
963 }
964 data_buffer = (double *) tmp;
965 }
966
967 if ((read(dbfid, data_buffer, data_buffer_size)) != (ssize_t) data_buffer_size) {
968 error("error reading data", fName, "read");
969 }
970
971 if ((write(ffd, data_buffer, data_buffer_size)) < 0) {
953 error("error writing data", fName, "write"); 972 error("error writing data", fName, "write");
954 } 973 }
974
975 free(data_buffer);
976
955 fprintf(fLFile, "%s\n", fName); 977 fprintf(fLFile, "%s\n", fName);
956 close(ffd); 978 close(ffd);
957 979
958 if(times) { 980 if(times) {
959 snprintf(fName, 256, "%05d.times", k); 981 snprintf(fName, 256, "%05d.times", k);