/***************************************************************************
libtra.h - description
-------------------
begin : Wed Dec 24 2003
copyright : (C) 2003 by Jonathan Hunt
email : jhuntnz@users.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef _LIBTRA_H
#define _LIBTRA_H
/* Need time types */
#ifndef time_t
#include
#endif
#ifndef mode_t
#include
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
struct trashbin_struct;
typedef struct trashbin_struct trashbin_t;
/** Initialize a trash bin. Must be done before using a trash bin. If NULL is passed as dir then the default directory will
* be used (this is the usual behavior).
*
* Returns pointer to a trashbin on success, NULL on failure.
*
* @param dir String pointer to a directory to use as the trashbin or NULL to use default.
*/
trashbin_t *trash_init(const char *dir) ;
/** Frees the resources associated with the trashbin. Trashbin is now invalid.
*
* Returns void
*
* @param trash Trashbin to free.
*/
void trash_free(trashbin_t *trash);
/** Moves a file into the trashcan.This trashes a file with filename - if filename is not absolute
* uses the cwd for the path.
*
* Returns 0 on success, negative on failure.
*
* @param bin Trashbin to move filename into.
* @param filename The filename to trash.
*/
int trash_file(trashbin_t *bin, const char *filename);
/** Unlike trashitem_restore this restore accepts a filename and will iterate thru the list
* looking for the most recent match to the filename (if not full filename it works from
* the current directory) and then restores this file.
*
* Returns: 0 on sucess (ie file found and restore), negative on error.
*
* @param bin Trashbin to search.
* @param name Filename to look for.
*/
int trash_restorefilename(trashbin_t *bin, const char *name);
/** Empties the trashbin of all the files it currently contains. Note: This will make all the files
* in the trashbin much harder to recover.
*
* Returns: 0 on sucess, negative on error.
*
* @param bin Trashbin to empty
*/
int trash_empty(trashbin_t *bin);
/* Functions for iterating thru the trashed items. */
struct trashiterator_struct;
typedef struct trashiterator_struct trashiterator_t;
struct trashitem_struct;
typedef struct trashitem_struct trashitem_t;
/** Returns an iterator for use in cycling thru the trashitems. Must be freed with trash_freeiterator.
* release_kids if set to true means that the trashitem_t * that the iterator gives on trashiterator_next
* will not be released automatically on subsequent calls or on freeing the iterator.
* The must be released by calling trash_freeiterator.
*
* Returns a pointer to a trashiterator_t or NULL on failure.
*
* @param bin The trash bin
*/
trashiterator_t *trash_iterator(trashbin_t *bin, int release_kids);
void trashiterator_free(trashiterator_t *iter);
/** Gives the next trashitem in the trashcan.
*
* Returns the a pointer to the next item or NULL on failure.
*
* @param iter A trashiterator used to iterate thru the trashcan.
*/
trashitem_t *trashiterator_next(trashiterator_t *iter);
/** Frees the memory associate with the trashitem item. Note: This makes any string returns be trashitem_get*
* invalid. If release_kids was set to true in the trash_iterator then this function should no be called to free
* its kids (they are freed automatically).
*
* Returns: void
*
* @param item Pointer to a trashitem.
*/
void trashitem_free(trashitem_t *item);
/* Functions for extracting information from a trash item. */
/** Restores the trashitem to its original location in the filesystem.
* After this workingfilename will not be valid and further operations
* on the file (ie restore an item twice) will cause an error.
*
* Returns 0 on success, negative on error.
*
* @param item Pointer a to a trashitem.
*/
int trashitem_restore(trashitem_t *item);
/** Returns a string giving the filename where a read-only copy of the delete file/directory etc. can be
* found - this can be used to preview the file or get the size of the file etc. The pointer to the string returned
* is only valid as long as the trashitem passed is valid.
*
* Returns NULL on failure or pointer to string.
*
* @param item Pointer to a trashitem.
*/
const char * trashitem_getworkingfilename(const trashitem_t *item);
/** Returns in time_t the date the file was deleted (moved to the trash bin.
*
* Returns 0 on failure.
*
*@param item Pointer to a trashitem.
*/
time_t trashitem_getdatedeletion(const trashitem_t *item);
/** Gives the full path not including the filename or trailing / where the deleted file
* used to reside on disk. The pointer to the string returns is valid only as long as the
* trashitem item is valid.
*
* Returns NULL on failure or pointer to a string.
*
*@param item Pointer to a trash item.
*/
const char *trashitem_getoriginalpath(const trashitem_t *item);
/** Gives the filetitle (filename with no path included) or where the deleted file used to
* reside on disk. Pointer to the string returned is valid only as long as the trashitem is valid.
*
* Returns NULL on failure or pointer to a string.
*
*@param item Pointer to a trash item.
*/
const char *trashitem_getoriginalfiletitle(const trashitem_t *item);
/** Used to query the original access mode of the file before it was trashed (files in the trashbin are set
* to readonly.
*
* Returns the access mode or 0 on error.
*
* @param item Pointer to a trash item.
*/
mode_t trashitem_getoriginalmode(const trashitem_t *item);
/** Removes this file from the trashbin (deletes it for good). Be careful when using this function as it
* means the file is now as irrecoverable as if it had been deleted with rm.
*
* Returns 0 on success, negative on error.
*
* @param item Pointer to a trash item.
*/
int trashitem_removefromtrash(trashitem_t *item);
#endif
| Generated by: jjhunt on r2d2 on Mon Jan 12 14:10:43 2004, using kdoc 2.0a54. |