"""
illustrate segfault bug when checking changed paths info
"""
import sys
from svn import fs, repos, util

def driver( repo_path ):

    pool = util.svn_pool_create( None )
    repo = repos.svn_repos_open( repo_path, pool )
    fsptr = repos.svn_repos_fs( repo )
    rev = fs.youngest_rev( fsptr, pool )
    root = fs.revision_root( fsptr, rev, pool )

    logs = []

    def addLog( paths, revision, author, date, message, pool ):
        logs.append(
            dict( author = author,
                  message = message,
                  revision=  revision,
                  date = date,
                  paths = paths )
            )

    repos.svn_repos_get_logs(
        repo,   # repo
        ['/'],  # paths
        rev,    # start rev
        0,      # end rev
        True,   # changed paths
        0,      # strict history,
        addLog,
        pool )

    print "Log Information"

    for log in logs:
        
        print "Revision %r Author %r Date %r"%(
            log['revision'],
            log['author'],
            log['date']
            )
        
        if log['paths'] is None:
            continue
        
        paths = log['paths']
        for path,info in paths.items():
            # XXX accessing the info values (other than action) causes a segfault
            # the values for action appear to non ascii chars as well
            print "  path", path, "info", info.action, info.copyfrom_rev, info.copyfrom_path

        
    util.svn_pool_destroy( pool )

def main( repo_path ):
    util.apr_initialize()
    try:
        driver(repo_path)
    finally:
        util.apr_terminate()

if __name__=='__main__':
    if not len(sys.argv) == 2:
        print "script repos_path"
        sys.exit(1)
    main(sys.argv[1])

    





