ret = child.open_data(cr, mode)
cr.commit()
return ret
+ except EnvironmentError:
+ raise
except Exception,e:
self._log.exception('Cannot create item %s at node %s', objname, repr(node))
raise OSError(1, 'Operation not permited.')
def getsize(self, datacr):
"""Return the size of the specified file in bytes."""
if not (datacr and datacr[1]):
- return 0L
+ raise IOError(errno.ENOENT, "No such file or directory")
if datacr[1].type in ('file', 'content'):
return datacr[1].get_data_len(datacr[0]) or 0L
return 0L
# return
size = self.run_as_current_user(self.fs.getsize, datacr)
except EnvironmentError, err:
- why = _strerror(err)
+ why = err.strerror
self.log('FAIL SIZE "%s". %s.' %(line, why))
- self.respond('550 %s.' %why)
+ if err.errno == errno.ENOENT:
+ self.respond("404 %s." % why)
+ else:
+ self.respond('550 %s.' % why)
else:
self.respond("213 %s" %size)
self.log('OK SIZE "%s".' %line)
try:
datacr = self.fs.get_crdata(line, mode='delete')
self.run_as_current_user(self.fs.remove, datacr)
- except OSError, err:
- why = _strerror(err)
+ except EnvironmentError, err:
+ why = err.strerror
self.log('FAIL DELE "%s". %s.' %(line, why))
- self.respond('550 %s.' %why)
+ if err.errno == errno.ENOENT:
+ self.respond('404 %s.' % why)
+ else:
+ self.respond('550 %s.' %why)
else:
self.log('OK DELE "%s".' %line)
self.respond("250 File removed.")