*/
#include "includes.h"
-#include "xmalloc.h"
-#include "ssh.h"
RCSID("$Id$");
}
#endif /* !defined(HAVE_SETEUID) && defined(HAVE_SETREUID) */
+#if !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID)
+int setegid(uid_t egid)
+{
+ return(setresgid(-1,egid,-1));
+}
+#endif /* !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID) */
+
#if !defined(HAVE_STRERROR) && defined(HAVE_SYS_ERRLIST) && defined(HAVE_SYS_NERR)
const char *strerror(int e)
{
{
struct utimbuf ub;
- ub.actime = tvp->tv_sec;
- ub.modtime = tvp->tv_usec;
+ ub.actime = tvp[0].tv_sec;
+ ub.modtime = tvp[1].tv_sec;
return(utime(filename, &ub));
}
#endif
+
+#ifndef HAVE_TRUNCATE
+int truncate (const char *path, off_t length)
+{
+ int fd, ret, saverrno;
+
+ fd = open(path, O_WRONLY);
+ if (fd < 0)
+ return -1;
+
+ ret = ftruncate(fd, length);
+ saverrno = errno;
+ (void) close (fd);
+ if (ret == -1)
+ errno = saverrno;
+ return(ret);
+}
+#endif /* HAVE_TRUNCATE */
+
+#if !defined(HAVE_SETGROUPS) && defined(SETGROUPS_NOOP)
+/*
+ * Cygwin setgroups should be a noop.
+ */
+int
+setgroups(size_t size, const gid_t *list)
+{
+ return 0;
+}
+#endif
+