From kde-commits Fri Jul 14 13:36:14 2006 From: Allan Sandfeld Jensen Date: Fri, 14 Jul 2006 13:36:14 +0000 To: kde-commits Subject: branches/work/kio_virtualfile/kioslave/file Message-Id: <1152884174.167319.14329.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=115288420618513 SVN commit 562262 by carewolf: Write and proper capability M +28 -26 file.cc M +1 -1 file.protocol --- branches/work/kio_virtualfile/kioslave/file/file.cc #562261:562262 @@ -2,6 +2,7 @@ Copyright (C) 2000-2002 Stephan Kulow Copyright (C) 2000-2002 David Faure Copyright (C) 2000-2002 Waldo Bastian + Copyright (C) 2006 Allan Sandfeld Jensen This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -342,6 +343,25 @@ finished(); } +static int +write_all(int fd, const char *buf, size_t len) +{ + while (len > 0) + { + ssize_t written = write(fd, buf, len); + if (written < 0) + { + if (errno == EINTR) + continue; + return -1; + } + buf += written; + len -= written; + } + return 0; +} + + void FileProtocol::open( const KUrl& url ) { kDebug( 7101 ) << "File::open" << endl; @@ -390,7 +410,7 @@ int stat = appconn->read(&cmd, args); if ( stat == -1 ) { // error - kDebug( 7101 ) << "File::open -- connection erro" << endl; + kDebug( 7101 ) << "File::open -- connection error" << endl; break; } QDataStream stream( args ); @@ -404,13 +424,13 @@ array = array.fromRawData(buffer, bytes); data( array ); array.clear(); - break; + continue; } case CMD_WRITE: { kDebug( 7101 ) << "File::open -- write" << endl; QByteArray buffer; dataReq(); // Request for data - result = readData( buffer ); + int result = readData( buffer ); if (result >= 0) { @@ -418,18 +438,18 @@ { if ( errno == ENOSPC ) // disk full { - error( KIO::ERR_DISK_FULL, dest_orig); + error( KIO::ERR_DISK_FULL, url); cmd = CMD_CLOSE; } else { kWarning(7101) << "Couldn't write. Error:" << strerror(errno) << endl; - error( KIO::ERR_COULD_NOT_WRITE, dest_orig); + error( KIO::ERR_COULD_NOT_WRITE, url); cmd = CMD_CLOSE; } } } - break; + continue; } case CMD_SEEK: { kDebug( 7101 ) << "File::open -- seek" << endl; @@ -437,7 +457,7 @@ stream >> offset; KDE_lseek(fd, offset, SEEK_SET); position( offset ); - break; + continue; } case CMD_NONE: kDebug( 7101 ) << "File::open -- none " << endl; @@ -450,30 +470,12 @@ cmd = CMD_CLOSE; break; } - if (cmd == CMD_CLOSE) break; + break; } close( fd ); finished(); } -static int -write_all(int fd, const char *buf, size_t len) -{ - while (len > 0) - { - ssize_t written = write(fd, buf, len); - if (written < 0) - { - if (errno == EINTR) - continue; - return -1; - } - buf += written; - len -= written; - } - return 0; -} - static bool same_inode(const KDE_struct_stat &src, const KDE_struct_stat &dest) { --- branches/work/kio_virtualfile/kioslave/file/file.protocol #562261:562262 @@ -10,7 +10,7 @@ deleting=true linking=true moving=true -open=true +opening=true maxInstances=4 DocPath=kioslave/file.html Class=:local