VFS recycle hack (Home folder's suite...)

Eddy PELAIC eddy.pelaic at univ-paris5.fr
Tue Dec 4 10:57:47 GMT 2007


I would like to add a option to the VFS recycle bin.

I want to cut the path between the base of a share path and the 
repository path.



in this exemple "username/repository" because I don't want to have this 
path in the recycle for each file/folder.

I can add option name for recycle ex: cutpath but I can't use wildcards 
like "%U/Trash", there are no substitution of %U,

at this time I put in vfs_recycle.c some code:

static const char **recycle_cutpath(vfs_handle_struct *handle)
    const char **tmp_lp;
    tmp_lp = lp_parm_const_string(SNUM(handle->conn), "recycle", 
"cutpath", NULL);

    DEBUG(10, ("recycle: cutpath = %s ...\n", tmp_lp?*tmp_lp:""));
    return tmp_lp;

and in :  static int recycle_unlink(...)

I add after if (matchparam(recycle_exclude(handle), base)), to see if it 
match the path of file/folder :

if ( matchparam(recycle_cutpath(handle), file_name) ){
        DEBUG( 10, ("CUT PATH OK %s\n", file_name) );
        DEBUG( 10, ("CUT PATH NOT OK %s\n", file_name) );

at this time, I just changed

if (recycle_keep_dir_tree(handle) == True) {
        /* asprintf(&temp_name, "%s/%s", repository, path_name); */
        asprintf(&temp_name, "%s", repository);
    } else {
        temp_name = SMB_STRDUP(repository);
        DEBUG( 10, (" temp_name : %s \n", temp_name));

but in this case all files are put in the Trash at the same level when 
Keep Tree == true.

an idea to use the wild card in VFS recycle...?



Service informatique
Faculté de chirurgie dentaire 
Université Paris Descartes
1, rue Maurice Arnoux

Tel: 01 58 07 67 13
mail: eddy.pelaic at univ-paris5.fr 

More information about the samba-technical mailing list