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 () */
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 () */
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 () */
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 () */