Exemplo n.º 1
0
Arquivo: npk.c Projeto: keedi/npk
NPK_PACKAGE npk_package_open_with_fd( NPK_CSTR name, int fd, long offset, long size, NPK_TEAKEY teakey[4] )
{
    NPK_PACKAGEBODY*    pb = NULL;
    NPK_RESULT          res;

    res = npk_package_alloc( (NPK_PACKAGE*)&pb, teakey );
    if( res != NPK_SUCCESS )
        return NULL;

    if( npk_package_init( pb ) != NPK_SUCCESS )
        goto npk_package_open_return_null_with_free;

    pb->handle_ = fd;
    pb->usingFdopen_ = true;
    pb->offsetJump_ = offset;

    npk_seek( fd, offset, SEEK_CUR );
    
    res = __npk_package_open( pb, name, size, teakey );
    if( res != NPK_SUCCESS )
        goto npk_package_open_return_null_with_free;

    return (NPK_PACKAGE*)pb;

npk_package_open_return_null_with_free:
    if( pb )
        npk_package_close( pb );

    return NULL;
}
Exemplo n.º 2
0
Arquivo: npk.c Projeto: keedi/npk
NPK_PACKAGE npk_package_open( NPK_CSTR filename, NPK_TEAKEY teakey[4] )
{
    NPK_PACKAGEBODY*    pb = NULL;
    NPK_RESULT          res;

    res = npk_package_alloc( (NPK_PACKAGE*)&pb, teakey );
    if( res != NPK_SUCCESS )
        return NULL;

    if( npk_package_init( pb ) != NPK_SUCCESS )
        goto npk_package_open_return_null_with_free;

    if( npk_open( &pb->handle_, filename, false, false ) != NPK_SUCCESS )
        goto npk_package_open_return_null_with_free;
    
    res = __npk_package_open( pb, filename, 0, teakey );
    if( res != NPK_SUCCESS )
        goto npk_package_open_return_null_with_free;

    return (NPK_PACKAGE*)pb;

npk_package_open_return_null_with_free:
    if( pb )
        npk_package_close( pb );

    return NULL;
}
Exemplo n.º 3
0
NPK_RESULT npk_package_clear( NPK_PACKAGE package )
{
    NPK_RESULT res;
    if( !package )
        return npk_error( NPK_ERROR_PackageIsNull );

    if( ( res = npk_package_remove_all_entity( package ) ) != NPK_SUCCESS )
        return res;

    if( ( res = npk_package_init( package ) ) != NPK_SUCCESS )
        return res;

    return NPK_SUCCESS;
}