summaryrefslogtreecommitdiffstats
path: root/lib/Utils/xfuncs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Utils/xfuncs.cpp')
-rw-r--r--lib/Utils/xfuncs.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/Utils/xfuncs.cpp b/lib/Utils/xfuncs.cpp
index 8621b5f..f360d33 100644
--- a/lib/Utils/xfuncs.cpp
+++ b/lib/Utils/xfuncs.cpp
@@ -141,6 +141,12 @@ off_t xlseek(int fd, off_t offset, int whence)
return off;
}
+void xchdir(const char *path)
+{
+ if (chdir(path))
+ perror_msg_and_die("chdir(%s)", path);
+}
+
char* xvasprintf(const char *format, va_list p)
{
int r;
@@ -152,8 +158,8 @@ char* xvasprintf(const char *format, va_list p)
#else
// Bloat for systems that haven't got the GNU extension.
va_list p2;
- r = vsnprintf(NULL, 0, format, p);
va_copy(p2, p);
+ r = vsnprintf(NULL, 0, format, p);
string_ptr = xmalloc(r+1);
r = vsnprintf(string_ptr, r+1, format, p2);
va_end(p2);
@@ -365,13 +371,13 @@ bool string_to_bool(const char *s)
void xsetreuid(uid_t ruid, uid_t euid)
{
if (setreuid(ruid, euid) != 0)
- perror_msg_and_die("can't set %cid %d", 'u', (int)ruid);
+ perror_msg_and_die("can't set %cid %lu", 'u', (long)ruid);
}
-void xsetregid(gid_t rgid, uid_t egid)
+void xsetregid(gid_t rgid, gid_t egid)
{
if (setregid(rgid, egid) != 0)
- perror_msg_and_die("can't set %cid %d", 'g', (int)rgid);
+ perror_msg_and_die("can't set %cid %lu", 'g', (long)rgid);
}
uid_t getuidbyname(const char* login)