I am trying to write a customized app using C that would fetch voice file from SQL Server 2000 using ODBC and FREETDS.
Currently I am only able to fetch first 63 KB chunk from the DB, and not able to fetch the rest of the file, below is the code that i am using to do so, fd = open(fullpath, O_RDWR | O_CREAT | O_TRUNC, 0770); if (fd < 0) { ast_log(LOG_WARNING, "Failed to write '%s': %s\n", fullpath, strerror(errno)); res = -1; goto free_res; } res = SQLGetData(stmt, 1, SQL_BINARY, empty, 0, &colsize); fdlen = colsize; if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "COLSIZE = %d", colsize); //PRINTING COLSIZE ON CLI if (fd > -1) { char tmp[1]=""; lseek(fd, fdlen - 1, SEEK_SET); if (write(fd, tmp, 1) != 1) { close(fd); res = -1; goto free_res; } } if (fd > -1){ //Trying to fetch data in chunks for (offset = 0; offset < colsize; offset += CHUNKSIZE) { if ((fdm = mmap(NULL, CHUNKSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset)) == MAP_FAILED) { ast_log(LOG_WARNING, "Could not mmap the output file: %s (%d)\n", strerror(errno), errno); goto free_res; } else { res = SQLGetData(stmt, x + 1, SQL_BINARY, fdm, CHUNKSIZE, NULL); munmap(fdm, CHUNKSIZE); if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) { ast_log(LOG_WARNING, "SQL Get Data error!\n[%s]\n\n", sql); unlink(fullpath); goto free_res; } } } } close(fd); SQLFreeHandle(SQL_HANDLE_STMT, stmt); The value of colsize printed on CLI is 64512, Is there some limitation somewhere in FREETDS or ODBC. Can anyone please help me to get this fixed? Regards, Sanjay Rajdev
_______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users