/[svn]/libgig/trunk/src/RIFF.cpp
ViewVC logotype

Diff of /libgig/trunk/src/RIFF.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1301 by persson, Sat Aug 25 09:59:53 2007 UTC revision 1459 by schoenebeck, Fri Oct 26 10:58:41 2007 UTC
# Line 33  namespace RIFF { Line 33  namespace RIFF {
33  // *  // *
34    
35      /// Returns a human readable path of the given chunk.      /// Returns a human readable path of the given chunk.
36      String __resolveChunkPath(Chunk* pCk) {      static String __resolveChunkPath(Chunk* pCk) {
37          String sPath;          String sPath;
38          for (Chunk* pChunk = pCk; pChunk; pChunk = pChunk->GetParent()) {          for (Chunk* pChunk = pCk; pChunk; pChunk = pChunk->GetParent()) {
39              if (pChunk->GetChunkID() == CHUNK_ID_LIST) {              if (pChunk->GetChunkID() == CHUNK_ID_LIST) {
# Line 235  namespace RIFF { Line 235  namespace RIFF {
235       *  - RIFF::stream_closed :       *  - RIFF::stream_closed :
236       *    the data stream was closed somehow, no more reading possible       *    the data stream was closed somehow, no more reading possible
237       *  - RIFF::stream_end_reached :       *  - RIFF::stream_end_reached :
238       *    alreaady reached the end of the chunk data, no more reading       *    already reached the end of the chunk data, no more reading
239       *    possible without SetPos()       *    possible without SetPos()
240       */       */
241      stream_state_t Chunk::GetState() {      stream_state_t Chunk::GetState() {
# Line 358  namespace RIFF { Line 358  namespace RIFF {
358          #elif defined(WIN32)          #elif defined(WIN32)
359          if (SetFilePointer(pFile->hFileWrite, ulStartPos + ulPos, NULL/*32 bit*/, FILE_BEGIN) == INVALID_SET_FILE_POINTER) {          if (SetFilePointer(pFile->hFileWrite, ulStartPos + ulPos, NULL/*32 bit*/, FILE_BEGIN) == INVALID_SET_FILE_POINTER) {
360              throw Exception("Could not seek to position " + ToString(ulPos) +              throw Exception("Could not seek to position " + ToString(ulPos) +
361                              " in chunk (" + ToString(ulStartPos + ulPos) + " in file)");                                          " in chunk (" + ToString(ulStartPos + ulPos) + " in file)");
362          }          }
363          DWORD writtenWords;          DWORD writtenWords;
364          WriteFile(pFile->hFileWrite, pData, WordCount * WordSize, &writtenWords, NULL);          WriteFile(pFile->hFileWrite, pData, WordCount * WordSize, &writtenWords, NULL);
# Line 1412  namespace RIFF { Line 1412  namespace RIFF {
1412                                       path.c_str(), GENERIC_READ,                                       path.c_str(), GENERIC_READ,
1413                                       FILE_SHARE_READ | FILE_SHARE_WRITE,                                       FILE_SHARE_READ | FILE_SHARE_WRITE,
1414                                       NULL, OPEN_EXISTING,                                       NULL, OPEN_EXISTING,
1415                                       FILE_ATTRIBUTE_NORMAL, NULL                                       FILE_ATTRIBUTE_NORMAL |
1416                                         FILE_FLAG_RANDOM_ACCESS, NULL
1417                                   );                                   );
1418          if (hFileRead == INVALID_HANDLE_VALUE) {          if (hFileRead == INVALID_HANDLE_VALUE) {
1419              hFileRead = hFileWrite = INVALID_HANDLE_VALUE;              hFileRead = hFileWrite = INVALID_HANDLE_VALUE;
# Line 1465  namespace RIFF { Line 1466  namespace RIFF {
1466                                                   Filename.c_str(), GENERIC_READ,                                                   Filename.c_str(), GENERIC_READ,
1467                                                   FILE_SHARE_READ | FILE_SHARE_WRITE,                                                   FILE_SHARE_READ | FILE_SHARE_WRITE,
1468                                                   NULL, OPEN_EXISTING,                                                   NULL, OPEN_EXISTING,
1469                                                   FILE_ATTRIBUTE_NORMAL, NULL                                                   FILE_ATTRIBUTE_NORMAL |
1470                                                     FILE_FLAG_RANDOM_ACCESS,
1471                                                     NULL
1472                                               );                                               );
1473                      if (hFileRead == INVALID_HANDLE_VALUE) {                      if (hFileRead == INVALID_HANDLE_VALUE) {
1474                          hFileRead = hFileWrite = INVALID_HANDLE_VALUE;                          hFileRead = hFileWrite = INVALID_HANDLE_VALUE;
# Line 1493  namespace RIFF { Line 1496  namespace RIFF {
1496                                                   GENERIC_READ | GENERIC_WRITE,                                                   GENERIC_READ | GENERIC_WRITE,
1497                                                   FILE_SHARE_READ,                                                   FILE_SHARE_READ,
1498                                                   NULL, OPEN_ALWAYS,                                                   NULL, OPEN_ALWAYS,
1499                                                   FILE_ATTRIBUTE_NORMAL, NULL                                                   FILE_ATTRIBUTE_NORMAL |
1500                                                     FILE_FLAG_RANDOM_ACCESS,
1501                                                     NULL
1502                                               );                                               );
1503                      if (hFileRead == INVALID_HANDLE_VALUE) {                      if (hFileRead == INVALID_HANDLE_VALUE) {
1504                          hFileRead = hFileWrite = CreateFile(                          hFileRead = hFileWrite = CreateFile(
1505                                                       Filename.c_str(), GENERIC_READ,                                                       Filename.c_str(), GENERIC_READ,
1506                                                       FILE_SHARE_READ | FILE_SHARE_WRITE,                                                       FILE_SHARE_READ | FILE_SHARE_WRITE,
1507                                                       NULL, OPEN_EXISTING,                                                       NULL, OPEN_EXISTING,
1508                                                       FILE_ATTRIBUTE_NORMAL, NULL                                                       FILE_ATTRIBUTE_NORMAL |
1509                                                         FILE_FLAG_RANDOM_ACCESS,
1510                                                         NULL
1511                                                   );                                                   );
1512                          throw Exception("Could not (re)open file \"" + Filename + "\" in read+write mode");                          throw Exception("Could not (re)open file \"" + Filename + "\" in read+write mode");
1513                      }                      }
# Line 1602  namespace RIFF { Line 1609  namespace RIFF {
1609              #if defined(WIN32)              #if defined(WIN32)
1610              DWORD iBytesMoved = 1; // we have to pass it via pointer to the Windows API, thus the correct size must be ensured              DWORD iBytesMoved = 1; // we have to pass it via pointer to the Windows API, thus the correct size must be ensured
1611              #else              #else
1612              int iBytesMoved = 1;              int iBytesMoved = 1;
1613              #endif              #endif
1614              for (unsigned long ulPos = 0; iBytesMoved > 0; ulPos += iBytesMoved) {              for (unsigned long ulPos = 0; iBytesMoved > 0; ulPos += iBytesMoved) {
1615                  const unsigned long ulToMove = ulFileSize - ulPos;                  const unsigned long ulToMove = ulFileSize - ulPos;
# Line 1669  namespace RIFF { Line 1676  namespace RIFF {
1676          #elif defined(WIN32)          #elif defined(WIN32)
1677          hFileWrite = CreateFile(          hFileWrite = CreateFile(
1678                           path.c_str(), GENERIC_WRITE, FILE_SHARE_READ,                           path.c_str(), GENERIC_WRITE, FILE_SHARE_READ,
1679                           NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL                           NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL |
1680                             FILE_FLAG_RANDOM_ACCESS, NULL
1681                       );                       );
1682          if (hFileWrite == INVALID_HANDLE_VALUE) {          if (hFileWrite == INVALID_HANDLE_VALUE) {
1683              hFileWrite = hFileRead;              hFileWrite = hFileRead;

Legend:
Removed from v.1301  
changed lines
  Added in v.1459

  ViewVC Help
Powered by ViewVC