summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/apps/textedit/textedit.cpp9
-rw-r--r--core/launcher/packageslave.cpp30
2 files changed, 22 insertions, 17 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index 4bbc62b..1c81a55 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -788,3 +788,2 @@ bool TextEdit::save() {
}
- name = currentFileName;
if(doc) {
@@ -809,3 +808,4 @@ bool TextEdit::save() {
mode_t mode;
- stat(file.latin1(), &buf);
+ QFile f(file);
+ fstat(f.handle(), &buf);
mode = buf.st_mode;
@@ -821,3 +821,2 @@ bool TextEdit::save() {
odebug << "regular save file" << oendl;
- QFile f(file);
if( f.open(IO_WriteOnly)) {
@@ -829,3 +828,2 @@ bool TextEdit::save() {
}
-
}
@@ -837,4 +835,3 @@ bool TextEdit::save() {
-
- chmod( file.latin1(), mode);
+ fchmod( f.handle(), mode);
}
diff --git a/core/launcher/packageslave.cpp b/core/launcher/packageslave.cpp
index abbc610..965020e 100644
--- a/core/launcher/packageslave.cpp
+++ b/core/launcher/packageslave.cpp
@@ -222,14 +222,21 @@ void PackageHandler::cleanupPackageFiles( const QString &listfile )
// for s, do link/mkdir.
- if ( s.right(1) == "/" ) {
- //should rmdir if empty, after all files have been removed
- } else {
+ // @todo Right now we just move on if the name of the file we
+ // find is actually a directory. What we ought to do is check
+ // to see if the directory is empty and if so remove it.
+ if ( s.right(1) != "/" ) {
#ifndef Q_OS_WIN32
- odebug << "remove symlink for " << s.ascii() << "" << oendl;
+ odebug << "remove symlink for " << s << oendl;
+ QFile symFile(s);
+ QFileInfo symFileInfo(symFile);
//check if it is a symlink first (don't remove /etc/passwd...)
- char buf[10]; //we don't care about the contents
- if ( ::readlink( s.ascii(),buf, 10 >= 0 ) )
- ::unlink( s.ascii() );
+ if ( !symFileInfo.readLink().isNull())
+ if (!symFile.remove())
+ owarn << "Unable to remove symlink " << symFile.name()
+ << " " << __FILE__ << ":" << __LINE__ << oendl;
#else
- // ### revise
- owarn << "Unable to remove symlink " << __FILE__ << ":" << __LINE__ << "" << oendl;
+ // @todo If we actually want to be portable to other operating
+ // systems we ought to at least have a portable way of removing
+ // their notion of symlinks.
+ owarn << "Unable to remove symlink " << s " " << __FILE__
+ << ":" << __LINE__ << oendl;
#endif
@@ -240,4 +247,5 @@ void PackageHandler::cleanupPackageFiles( const QString &listfile )
//remove the list file
- ::unlink( listfile.ascii() );
-
+ if (!f.remove())
+ owarn << "Unable to remove list file " << f.name() << " "
+ << __FILE__ << ":" << __LINE__ << oendl;
}