/usr/include/ktempdir.h is in kdelibs5-dev 4:4.8.5-0ubuntu0.6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | /*
This file is part of the KDE libraries
Copyright (c) 2003 Joseph Wenninger <jowenn@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KTEMPDIR_H
#define KTEMPDIR_H
#include <kdecore_export.h>
#include <QtCore/QString>
/**
* \class KTempDir ktempdir.h <KTempDir>
*
* @brief Create a unique directory for temporary use.
*
* The KTempDir class creates a unique directory for temporary use.
*
* This is especially useful if you need to create a directory in a world
* writable directory like /tmp without being vulnerable to so called
* symlink attacks.
*
* KDE applications, however, shouldn't create files or directories in /tmp
* in the first place but use the "tmp" resource instead. The standard
* KTempDir constructor will do that by default.
*
* To create a temporary directory that starts with a certain name
* in the "tmp" resource, one should use:
* KTempDir(KStandardDirs::locateLocal("tmp", prefix));
*
* KTempDir does not create any missing directories, but
* KStandardDirs::locateLocal() does.
*
* @see KStandardDirs
* @see KTemporaryFile
* @author Joseph Wenninger <jowenn@kde.org>
*/
class KDECORE_EXPORT KTempDir
{
public:
/**
* Creates a temporary directory with the name:
* \p \<directoryPrefix\>\<six letters\>
*
* The default \p directoryPrefix is "$KDEHOME/tmp-$HOST/appname", i.e.
* as returned by KStandardDirs::locateLocal("tmp", KGlobal::mainComponent().componentName())
*
* @param directoryPrefix the prefix of the file name, or
* QString() for the default value
* @param mode the file permissions,
* almost always in octal. The first digit selects permissions for
* the user who owns the file: read (4), write (2), and execute
* (1); the second selects permissions for other users in the
* file's group, with the same values; and the third for other
* users not in the file's group, with the same values.
*
**/
explicit KTempDir(const QString& directoryPrefix=QString(),
int mode = 0700 );
/**
* The destructor deletes the directory and its contents if autoRemove
* is set to true.
* @see setAutoRemove.
**/
~KTempDir();
/**
* Turn automatic deletion of the directory on or off.
* Automatic deletion is on by default.
* @param autoRemove toggle automatic deletion on or off
**/
void setAutoRemove(bool autoRemove);
/**
* @return whether auto remove is active
* @see setAutoRemove
**/
bool autoRemove() const;
/**
* Returns the status of the directory creation based on errno.
* (see errno.h)
*
* @note You should check the status after object creation to check
* whether the directory could be created.
*
* @return the errno status, 0 means ok
**/
int status() const;
/**
* Returns the full path and name of the directory, including a
* trailing '/'.
* @return The name of the directory, or QString() if creating the
* directory has failed or the directory has been unlinked
**/
QString name() const;
/**
* Deletes the directory recursively
**/
void unlink();
/**
* Returns true if a temporary directory has successfully been created
* and has not been unlinked yet.
*/
bool exists() const;
/**
* @brief Remove a directory and all its contents
*
* Remove recursively a directory, even if it is not empty
* or contains other directories.
*
* However the function works too when the @p path given
* is a non-directory file. In that case it simply remove that file.
*
* The function stops on the first error.
*
* @note This function is more meant for removing a directory
* not created by the user. For user-created directories,
* using KIO::del() is recommended instead,
* especially as it has user feedback for long operations.
*
* @param path Path of the directory to delete
* @return true if successful, otherwise false
* (Use errno for more details about the error.)
* @todo decide how and where this function should be defined in KDE5
*/
static bool removeDir( const QString& path );
protected:
/**
* Creates a "random" directory with specified mode
* @param directoryPrefix to use when creating temp directory
* (the rest is generated randomly)
* @param mode directory permissions
* @return true upon success
*/
bool create(const QString &directoryPrefix, int mode);
private:
Q_DISABLE_COPY(KTempDir)
class Private;
Private * const d;
};
#endif
|