ksavefile.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <config.h>
00021
00022 #include <sys/types.h>
00023
00024 #ifdef HAVE_SYS_STAT_H
00025 #include <sys/stat.h>
00026 #endif
00027
00028 #include <unistd.h>
00029 #include <fcntl.h>
00030
00031 #ifdef HAVE_TEST
00032 #include <test.h>
00033 #endif
00034
00035 #include <qdatetime.h>
00036 #include <qdir.h>
00037
00038 #include "kapplication.h"
00039 #include "ksavefile.h"
00040
00041 KSaveFile::KSaveFile(const QString &filename, int mode)
00042 : mTempFile(true)
00043 {
00044
00045
00046
00047 if (!checkAccess(filename, W_OK))
00048 {
00049 mTempFile.setError(EACCES);
00050 return;
00051 }
00052
00053 if (mTempFile.create(filename, QString::fromLatin1(".new"), mode))
00054 {
00055 mFileName = filename;
00056 }
00057 return;
00058 }
00059
00060 KSaveFile::~KSaveFile()
00061 {
00062 close();
00063 }
00064
00065 QString
00066 KSaveFile::name() const
00067 {
00068 return mFileName;
00069 }
00070
00071 void
00072 KSaveFile::abort()
00073 {
00074 mTempFile.unlink();
00075 mTempFile.close();
00076 }
00077
00078 bool
00079 KSaveFile::close()
00080 {
00081 if (mTempFile.name().isEmpty())
00082 return false;
00083 if (mTempFile.close())
00084 {
00085 QDir dir;
00086 bool result = dir.rename( mTempFile.name(), mFileName);
00087 if ( result )
00088 {
00089 return true;
00090 }
00091 mTempFile.setError(errno);
00092 }
00093
00094
00095 mTempFile.unlink();
00096 return false;
00097 }
00098
This file is part of the documentation for kdelibs Version 3.1.5.