示例#1
0
文件: karts.c 项目: ImAWolf/ncbi-vdb
static
rc_t CC
_LoadKartItem (
            struct KDirectory * Directory,
            struct XFSKartCollectionNode * Node,
            const char * Name
)
{
    rc_t RCt;
    char BF [ XFS_SIZE_4096 ];
    bool IsCart;
    struct XFSNode * KartNode;

    RCt = 0;
    * BF = 0;
    IsCart = false;
    KartNode = NULL;

    if ( Directory == NULL || Node == NULL || Name == NULL ) {
        return XFS_RC ( rcNull );
    }

    if ( Node -> path == NULL ) {
        return XFS_RC ( rcInvalid );
    }

    RCt = _IsPathCart (
                    Directory,
                    Node -> path,
                    Name,
                    BF,
                    sizeof ( BF ),
                    & IsCart
                    );
    if ( RCt == 0 ) {
        if ( IsCart ) {
            RCt = XFSKartNodeMake ( Name, BF, NULL, & KartNode );
            if ( RCt == 0 ) {
                RCt = XFSContNodeAddChild ( 
                                        & ( Node -> node . node ),
                                        KartNode
                                        );
            }
            else {
                    /*  Some Karts could be damaged 
                     |  we should think about it later
                     */
                KOutMsg ( "Invalid Kart file [%s]\n", BF );
                RCt = 0;
            }
        }
    }

    return RCt;
}   /* _LoadKartItem () */
示例#2
0
文件: gapk.c 项目: binlu1981/ncbi-vdb
static
rc_t CC
_AddKartItem (
            struct XFSKartNode * Node,
            const struct XFSGapKart * Kart,
            const char * ItemName
)
{
    rc_t RCt;
    struct XFSNode * ItemNode;
    const struct XFSGapKartItem * KartItem;

    RCt = 0;
    ItemNode = NULL;
    KartItem = NULL;

    XFS_CAN ( Node )
    XFS_CAN ( Kart )
    XFS_CAN ( ItemName )

    KartItem = XFSGapKartGet ( Kart, ItemName );
    if ( KartItem == NULL ) {
        return XFS_RC ( rcInvalid );
    }

    RCt = XFSGapFileNodeMake ( 
                            & ItemNode,
                            ItemName,
                            XFSGapKartItemProjectId ( KartItem ),
                            XFSGapKartItemAccession ( KartItem ),
                            XFSGapKartItemObjectId ( KartItem )
                            );

    if ( RCt == 0 ) {
        RCt = XFSContNodeAddChild (
                                & ( Node -> node . node ),
                                ItemNode
                                );
        if ( GetRCState ( RCt ) == rcExists ) {
            RCt = 0;
        }
        /* We do not dispose node here, but on the caller level */
    }

    if ( RCt != 0 ) {
        if ( ItemNode != NULL ) { 
            XFSNodeDispose ( ItemNode );
            ItemNode = NULL;
        }
    }

    return RCt;
}   /* _AddKartItem () */
示例#3
0
文件: gapk.c 项目: binlu1981/ncbi-vdb
static
rc_t CC
_AddSignatureFile ( struct XFSKartNode * Node )
{
    rc_t RCt;
    struct XFSDoc * Doc;
    struct XFSNode * Sign;

    RCt = 0;
    Doc = NULL;
    Sign = NULL;

    XFS_CAN ( Node )

    RCt = XFSTextDocMake ( & Doc );
    if ( RCt == 0 ) {
        RCt = XFSTextDocAppend ( Doc,
                                "%d\n",
                                Node -> project_id
                                );
        if ( RCt == 0 ) {
            RCt = XFSDocNodeMakeWithFlavor (
                                        & Sign,
                                        Doc,
                                        ".#dbgap-mount-tool#",
                                        XFSPermRODefNodeChar (),
                                        _sFlavorOfFoo
                                        );
            if ( RCt == 0 ) {
                RCt = XFSContNodeAddChild (
                                        & ( Node -> node . node ),
                                        Sign
                                        );
            }
        }

        XFSDocRelease ( Doc );
    }

    if ( RCt != 0 ) {
        if ( Sign != NULL ) { 
            XFSNodeDispose ( Sign );
            Sign = NULL;
        }
    }

    return RCt;
}   /* _AddSignatureFile () */
示例#4
0
文件: karts.c 项目: ImAWolf/ncbi-vdb
static 
rc_t CC
_LoadKartScanChildren (
                    const struct XFSModel * Model,
                    const struct XFSModelNode * Template,
                    struct XFSKartCollectionNode * Node
)
{
    rc_t RCt;
    const struct KNamelist * Children;
    uint32_t ChildrenQty, llp;
    const char * ChildName, * ChildAlias;
    const struct XFSNode * TheNode;

    RCt = 0;
    Children = NULL;
    ChildrenQty = 0;
    ChildName = ChildAlias = NULL;
    TheNode = NULL;

    RCt = XFSModelNodeChildrenNames ( Template, & Children );
    if ( RCt == 0 ) {

        RCt = KNamelistCount ( Children, & ChildrenQty );
        if ( RCt == 0 ) {

            for ( llp = 0; llp < ChildrenQty; llp ++ ) {
                RCt = KNamelistGet ( Children, llp, & ChildName );
                if ( RCt == 0 ) {

                    ChildAlias = XFSModelNodeChildAlias (
                                                    Template,
                                                    ChildName
                                                    );

                    RCt = XFSNodeMake (
                                    Model,
                                    ChildName,
                                    ChildAlias,
                                    & TheNode
                                    );
                    if ( RCt == 0 ) {
                        RCt = XFSContNodeAddChild (
                                            & ( Node -> node . node ),
                                            TheNode
                                            );
                        /* Don't know what to do here */
                    }

                    if ( RCt != 0 ) {
                        break;
                    }
                }
            }
        }

        KNamelistRelease ( Children );
    }

    return RCt;
}   /* _LoadKartScanChildren () */