X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=fd.c;h=6a26ce5e3d4d5f2993affc76a544e96db1a5738c;hp=2844490bd90a9b7fc9cd1a867f156597e571310d;hb=ec8cfb46f08f820d56fa354341d8c939742faad8;hpb=06cf1943be32153d075ea90a5da12ac93ab2e90a diff --git a/fd.c b/fd.c index 2844490b..6a26ce5e 100644 --- a/fd.c +++ b/fd.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -16,6 +16,30 @@ #include "string.h" #include "fd.h" +/** + * Change the name or location of a file. + * + * \param oldpath File to be moved. + * \param newpath Destination. + * + * This is just a simple wrapper for the rename(2) system call which returns a + * paraslash error code and prints an error message on failure. + * + * \return Standard. + * + * \sa rename(2). + */ +int xrename(const char *oldpath, const char *newpath) +{ + int ret = rename(oldpath, newpath); + + if (ret >= 0) + return 1; + ret = -ERRNO_TO_PARA_ERROR(errno); + PARA_ERROR_LOG("failed to rename %s -> %s\n", oldpath, newpath); + return ret; +} + /** * Write an array of buffers to a file descriptor. * @@ -144,6 +168,7 @@ __printf_2_3 int write_va_buffer(int fd, const char *fmt, ...) va_start(ap, fmt); ret = xvasprintf(&msg, fmt, ap); + va_end(ap); ret = write_all(fd, msg, ret); free(msg); return ret;