Exemplo n.º 1
0
static
rc_t CC
XFSDocNodeDispose ( const struct XFSDocNode * self )
{
    struct XFSDocNode * Node = ( struct XFSDocNode * ) self;

/*
printf ( "XFSDocNodeDispose ( 0x%p ) [%p]\n", ( void * ) Node, ( void * ) Node -> doc );
*/

    if ( Node == 0 ) {
        return 0;
    }

    if ( Node -> perm != NULL ) {
        free ( ( char * ) Node -> perm );
        Node -> perm = NULL;
    }

    if ( Node -> doc != NULL ) {
        XFSDocRelease ( Node -> doc );
        Node -> doc = NULL;
    }

    free ( Node );

    return 0;
}   /* XFSDocNodeDispose () */
Exemplo n.º 2
0
static
rc_t CC
XFSDocNodeDispose ( const struct XFSDocNode * self )
{
    struct XFSDocNode * Node = ( struct XFSDocNode * ) self;

/*
pLogMsg ( klogDebug, "XFSDocNodeDispose ( $(node) ) [$(doc)]", "node=%p,doc=%p", ( void * ) Node, ( void * ) Node -> doc );
*/

    if ( Node == 0 ) {
        return 0;
    }

    if ( Node -> perm != NULL ) {
        free ( ( char * ) Node -> perm );
        Node -> perm = NULL;
    }

    if ( Node -> doc != NULL ) {
        XFSDocRelease ( Node -> doc );
        Node -> doc = NULL;
    }

    free ( Node );

    return 0;
}   /* XFSDocNodeDispose () */
Exemplo n.º 3
0
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 () */
Exemplo n.º 4
0
static
rc_t CC
_ReadMeNodeConstructor (
            const struct XFSModel * Model,
            const struct XFSModelNode * Template,
            const char * Alias,
            const struct XFSNode ** Node
)
{
    rc_t RCt;
    struct XFSNode * TheNode;
    const char * NodeName;
    const char * TextOrSource;
    struct XFSDoc * ReadMe;

    RCt = 0;
    TheNode = NULL;
    NodeName = NULL;
    TextOrSource = NULL;
    ReadMe = NULL;

    if ( Node != NULL ) {
        * Node = NULL;
    }

    if ( Model == NULL || Template == NULL || Node == NULL ) {
        return XFS_RC ( rcNull );
    }

    NodeName = Alias == NULL ? XFSModelNodeName ( Template ) : Alias;

    /*) There could be "text" and "source" parameters, we will leave
      | source for a future development then, and will use it as text
      (*/
    TextOrSource = XFSModelNodeProperty ( Template, XFS_MODEL_TEXT );
    if ( TextOrSource == NULL ) {
        TextOrSource = XFSModelNodeProperty ( Template, XFS_MODEL_SOURCE );
    }

    if ( TextOrSource == NULL ) {
        return XFS_RC ( rcInvalid );
    }

    RCt = XFSTextDocMake ( & ReadMe );
    if ( RCt == 0 ) {

        RCt = XFSTextDocAppend ( ReadMe, "README:\n%s\n", TextOrSource );
        if ( RCt == 0 ) {
            RCt = XFSDocNodeMakeWithFlavor (
                                & TheNode,
                                ReadMe,
                                NodeName,
                                XFSModelNodeSecurity ( Template ),
                                _sFlavorOfReadMe
                                );
            if ( RCt == 0 ) {
                * Node = TheNode;
            }
            else {
                if ( TheNode != NULL ) {
                    XFSNodeDispose ( TheNode );
                }
            }
        }

        XFSDocRelease ( ReadMe );
    }

    return RCt;
}   /* _ReadMeNodeConstructor () */