VirtualBox

Changeset 39049 in vbox


Ignore:
Timestamp:
Oct 20, 2011 9:39:22 AM (13 years ago)
Author:
vboxsync
Message:

IPRT: Implemented / adjusted zlib status code conversion.

Location:
trunk/src/VBox/Runtime/common/zip
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/zip/gzipvfs.cpp

    r39043 r39049  
    186186        case Z_BUF_ERROR:
    187187            /* This isn't fatal. */
    188             return VINF_SUCCESS;
    189 
    190         case Z_ERRNO:
     188            return VINF_SUCCESS; /** @todo The code in zip.cpp treats Z_BUF_ERROR as fatal... */
     189
    191190        case Z_STREAM_ERROR:
     191            pThis->fFatalError = true;
     192            return VERR_ZIP_CORRUPTED;
     193
    192194        case Z_DATA_ERROR:
     195            pThis->fFatalError = true;
     196            return pThis->fDecompress ? VERR_ZIP_CORRUPTED : VERR_ZIP_ERROR;
     197
    193198        case Z_MEM_ERROR:
     199            pThis->fFatalError = true;
     200            return VERR_ZIP_NO_MEMORY;
     201
    194202        case Z_VERSION_ERROR:
    195203            pThis->fFatalError = true;
    196             switch (rc)
    197             {
    198                 case Z_ERRNO:           return VERR_INTERNAL_ERROR_5;
    199                 case Z_STREAM_ERROR:    return VERR_INTERNAL_ERROR_3;
    200                 case Z_DATA_ERROR:      return VERR_ZIP_ERROR;
    201                 case Z_MEM_ERROR:       return VERR_ZIP_NO_MEMORY;
    202                 case Z_VERSION_ERROR:   return VERR_ZIP_UNSUPPORTED_VERSION;
    203             }
    204             /* not reached */
    205 
     204            return VERR_ZIP_UNSUPPORTED_VERSION;
     205
     206        case Z_ERRNO: /* We shouldn't see this status! */
    206207        default:
     208            AssertMsgFailed(("%d\n", rc));
    207209            if (rc >= 0)
    208210                return VINF_SUCCESS;
  • trunk/src/VBox/Runtime/common/zip/zip.cpp

    r33982 r39049  
    420420 * Convert from zlib errno to iprt status code.
    421421 * @returns iprt status code.
    422  * @param   rc      Zlib error code.
    423  */
    424 static int zipErrConvertFromZlib(int rc)
    425 {
    426     /** @todo proper zlib error conversion. */
     422 * @param   rc              Zlib error code.
     423 * @param   fCompressing    Set if we're compressing, clear if decompressing.
     424 */
     425static int zipErrConvertFromZlib(int rc, bool fCompressing)
     426{
    427427    switch (rc)
    428428    {
    429         case Z_ERRNO:
    430             return RTErrConvertFromErrno(errno);
     429        case Z_OK:
     430            return VINF_SUCCESS;
     431
    431432        case Z_STREAM_ERROR:
     433            return VERR_ZIP_CORRUPTED;
     434
    432435        case Z_DATA_ERROR:
     436            return fCompressing ? VERR_ZIP_ERROR : VERR_ZIP_CORRUPTED;
     437
    433438        case Z_MEM_ERROR:
     439            return VERR_ZIP_NO_MEMORY;
     440
    434441        case Z_BUF_ERROR:
     442            return VERR_ZIP_ERROR;
     443
    435444        case Z_VERSION_ERROR:
    436             return VERR_GENERAL_FAILURE;
     445            return VERR_ZIP_UNSUPPORTED_VERSION;
     446
     447        case Z_ERRNO: /* We shouldn't see this status! */
    437448        default:
     449            AssertMsgFailed(("%d\n", rc));
    438450            if (rc >= 0)
    439451                return VINF_SUCCESS;
    440             return VERR_GENERAL_FAILURE;
     452            return VERR_ZIP_ERROR;
    441453    }
    442454}
     
    469481        int rc = deflate(&pZip->u.Zlib, Z_NO_FLUSH);
    470482        if (rc != Z_OK)
    471             return zipErrConvertFromZlib(rc);
     483            return zipErrConvertFromZlib(rc, true /*fCompressing*/);
    472484    }
    473485    return VINF_SUCCESS;
     
    502514        rc = deflate(&pZip->u.Zlib, Z_FINISH);
    503515        if (rc != Z_OK && rc != Z_STREAM_END)
    504             return zipErrConvertFromZlib(rc);
     516            return zipErrConvertFromZlib(rc, true /*fCompressing*/);
    505517    }
    506518    return VINF_SUCCESS;
     
    518530    int rc = deflateEnd(&pZip->u.Zlib);
    519531    if (rc != Z_OK)
    520         rc = zipErrConvertFromZlib(rc);
     532        rc = zipErrConvertFromZlib(rc, true /*fCompressing*/);
    521533    return rc;
    522534}
     
    550562
    551563    int rc = deflateInit(&pZip->u.Zlib, enmLevel);
    552     return rc >= 0 ? rc = VINF_SUCCESS : zipErrConvertFromZlib(rc);
     564    return rc >= 0 ? rc = VINF_SUCCESS : zipErrConvertFromZlib(rc, true /*fCompressing*/);
    553565}
    554566
     
    595607        }
    596608        if (rc != Z_OK)
    597             return zipErrConvertFromZlib(rc);
     609            return zipErrConvertFromZlib(rc, false /*fCompressing*/);
    598610    }
    599611    return VINF_SUCCESS;
     
    611623    int rc = inflateEnd(&pZip->u.Zlib);
    612624    if (rc != Z_OK)
    613         rc = zipErrConvertFromZlib(rc);
     625        rc = zipErrConvertFromZlib(rc, false /*fCompressing*/);
    614626    return rc;
    615627}
     
    630642
    631643    int rc = inflateInit(&pZip->u.Zlib);
    632     return rc >= 0 ? VINF_SUCCESS : zipErrConvertFromZlib(rc);
     644    return rc >= 0 ? VINF_SUCCESS : zipErrConvertFromZlib(rc, false /*fCompressing*/);
    633645}
    634646
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette