You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ktorrent/libktorrent/util/fileops.h

166 lines
5.4 KiB

/***************************************************************************
* Copyright (C) 2005 by Joris Guisson *
* joris.guisson@gmail.com *
* *
* 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. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#ifndef BTFILEOPS_H
#define BTFILEOPS_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <util/constants.h>
class TQString;
namespace bt
{
/**
* Creates a directory. Convenience function around
* TDEIO::NetAccess::mkdir .
* @param dir The url of the dir
* @param nothrow wether or not we shouldn't throw an Error upon failure
* @throw Error upon error
*/
void MakeDir(const TQString & dir,bool nothrow = false);
/**
* Create a symbolic link @a link_url which links to @a link_to
* @param link_to The file to link to
* @param link_url The link url
* @param nothrow wether or not we shouldn't throw an Error upon failure
*/
void SymLink(const TQString & link_to,const TQString & link_url,bool nothrow = false);
/**
* Move a file/dir from one location to another
* @param src The source file
* @param dst The destination file / directory
* @param nothrow wether or not we shouldn't throw an Error upon failure
*/
void Move(const TQString & src,const TQString & dst,bool nothrow = false);
/**
* Copy a file.
* @param src The source file
* @param dst The destination dir/file
* @param nothrow wether or not we shouldn't throw an Error upon failure
*/
void CopyFile(const TQString & src,const TQString & dst,bool nothrow = false);
/**
* Copy a file or directory
* @param src The source file
* @param dst The destination dir/file
* @param nothrow wether or not we shouldn't throw an Error upon failure
*/
void CopyDir(const TQString & src,const TQString & dst,bool nothrow = false);
/**
* Check wether a file/dir exists
* @param url The file/dir
* @return true if it exits
*/
bool Exists(const TQString & url);
/**
* Delete a file or directory.
* @param url The url of the file/dir
* @param nothrow wether or not we shouldn't throw an Error upon failure
*/
void Delete(const TQString & url,bool nothrow = false);
/**
* Try to create a file. Doesn't do anything if the file
* already exists.
* @param url The url of the file
* @param nothrow wether or not we shouldn't throw an Error upon failure
*/
void Touch(const TQString & url,bool nothrow = false);
/**
* Calculates the size of a file
* @param url Name of the file
* @return The size of the file
* @throw Error if the file doesn't exist, or something else goes wrong
*/
Uint64 FileSize(const TQString & url);
/**
* Get the size of a file.
* @param fd The file descriptor of the file
* @return The size
* @throw Error if the file doesn't exist, or something else goes wrong
*/
Uint64 FileSize(int fd);
/**
* Truncate a file (wrapper around ftruncate)
* @param fd The file descriptor of the file
* @param size The size to truncate to
* @throw Error if the file doesn't exist, or something else goes wrong
*/
void TruncateFile(int fd,Uint64 size,bool quick);
/**
* Truncate a file (wrapper around ftruncate)
* @param fd Path of the file
* @param size The size to truncate to
* @param quick Use the quick way (doesn't prevent fragmentationt)
* @throw Error if the file doesn't exist, or something else goes wrong
*/
void TruncateFile(const TQString & path,Uint64 size);
/**
* Special truncate for FAT file systems.
*/
bool FatPreallocate(int fd,Uint64 size);
/**
* Special truncate for FAT file systems.
*/
bool FatPreallocate(const TQString & path,Uint64 size);
#ifdef HAVE_XFS_XFS_H
/**
* Special truncate for XFS file systems.
*/
bool XfsPreallocate(int fd,Uint64 size);
/**
* Special truncate for XFS file systems.
*/
bool XfsPreallocate(const TQString & path,Uint64 size);
#endif
/**
* Seek in a file, wrapper around lseek
* @param fd The file descriptor
* @param off Offset
* @param whence Position to seek from
* @throw Error if something else goes wrong
*/
void SeekFile(int fd,Int64 off,int whence);
/// Calculate the number of bytes free on the filesystem path is located
bool FreeDiskSpace(const TQString & path,Uint64 & bytes_free);
}
#endif