Commit Diff


commit - 478ee9636fcfe3509d0a901d1250524a5c41d3a8
commit + d2c4ee9e488f6c94865cc2f4c874d025bc2ae0d2
blob - e309de71833dac3eff47a42056f5ab32e321ea5b
blob + 94b0d047382d5feea846305651dd6672b69e89bb
--- include/lib9.h
+++ include/lib9.h
@@ -10,6 +10,13 @@
 extern "C" {
 #endif                                                                          
 
+#define _BSD_SOURCE 1
+#define _SVID_SOURCE 1
+#define _XOPEN_SOURCE 1000
+#define _XOPEN_SOURCE_EXTENDED 1
+#define _LARGEFILE64_SOURCE 1
+#define _FILE_OFFSET_BITS 64
+
 #include <unistd.h>
 #include <string.h>
 #include <stdlib.h>
@@ -35,9 +42,10 @@ extern "C" {
 #define _HAVETIMEGM 1
 #define _HAVETMZONE 1
 #define _HAVETMTZOFF 1
-#define _HAVETIMEZONEINT 1
 #define _HAVEFUTIMESAT 1
 #define _HAVEFUTIMES 1
+#define _HAVEGETDENTS 1
+#define _HAVEGETDIRENTRIES 1
 
 typedef long p9jmp_buf[sizeof(sigjmp_buf)/sizeof(long)];
 
@@ -48,6 +56,11 @@ typedef long p9jmp_buf[sizeof(sigjmp_buf)/sizeof(long)
 #		undef _NEEDUINT
 #		undef _NEEDULONG
 #	endif
+#	undef _HAVESTGEN
+#	undef _HAVETMZONE
+#	undef _HAVETMTZOFF
+#	undef _HAVEFUTIMESAT
+#	undef _HAVEGETDENTS
 #endif
 #if defined(__sun__)
 #	include <sys/types.h>
@@ -480,6 +493,7 @@ extern	long	time(long*);
 #define getenv		p9getenv
 #define	getwd		p9getwd
 #define	longjmp		p9longjmp
+#undef  setjmp
 #define setjmp		p9setjmp
 #define notejmp		p9notejmp
 #define jmp_buf		p9jmp_buf
blob - 47326782d7b024bf6dec248157b6413d9ef251cc
blob + c3f207fe1b1ccd6034c534bd3c3bc1442afdb509
--- src/cmd/idiff.c
+++ src/cmd/idiff.c
@@ -81,23 +81,12 @@ main(int argc, char **argv)
 int
 opentemp(char *template, int mode, long perm)
 {
-	int fd, i;
-	char *p;	
+	int fd;
 
-	p = strdup(template);
-	if(p == nil)
-		sysfatal("strdup out of memory");
-	fd = -1;
-	for(i=0; i<10; i++){
-		mktemp(p);
-		if(access(p, 0) < 0 && (fd=create(p, mode, perm)) >= 0)
-			break;
-		strcpy(p, template);
-	}
+	fd = mkstemp(template);
 	if(fd < 0)
 		sysfatal("could not create temporary file");
-	strcpy(template, p);
-	free(p);
+	fchmod(fd, perm);
 
 	return fd;
 }
blob - ba94c28aefca2321c4e8d5785ed8f37d5a9efae3
blob + 56d79b79fbd371955af5fa984e2c9ec04c1e356c
--- src/lib9/await.c
+++ src/lib9/await.c
@@ -18,7 +18,9 @@ static struct {
 	SIGILL,		"sys: trap: illegal instruction",
 	SIGTRAP,		"sys: trace trap",
 	SIGABRT,		"sys: abort",
+#ifdef SIGEMT
 	SIGEMT,		"sys: emulate instruction executed",
+#endif
 	SIGFPE,		"sys: fp: trap",
 	SIGKILL,		"sys: kill",
 	SIGBUS,		"sys: bus error",
blob - 72860aa711496a205148fc01c8f5ac62720c8eae
blob + 22ec67213a3d4207861dd55a0aaa20baeb54fd52
--- src/lib9/date.c
+++ src/lib9/date.c
@@ -1,3 +1,5 @@
+#include <stdlib.h> /* setenv etc. */
+
 #include <u.h>
 #include <libc.h>
 
@@ -72,11 +74,22 @@ p9localtime(long t)
 	return &bigtm;
 }
 
-#if !defined(_HAVETIMEGM) && defined(_HAVETIMEZONEINT)
-static long
+#if !defined(_HAVETIMEGM)
+static time_t
 timegm(struct tm *tm)
 {
-	return mktime(tm)-timezone;
+	time_t ret;
+	char *tz;
+
+	tz = getenv("TZ");
+	setenv("TZ", "", 1);
+	tzset();
+	ret = mktime(tm);
+	if(tz)
+		setenv("TZ", tz, 1);
+	else
+		unsetenv("TZ");
+	return ret;
 }
 #endif
 
blob - 7ca512514db08470444991b53b452edf63fa2df3
blob + 9f0d485c849395ee6e7b07b8587390156839ce02
--- src/lib9/dirfwstat.c
+++ src/lib9/dirfwstat.c
@@ -10,6 +10,13 @@ futimes(int fd, struct timeval *tv)
 {
 	return futimesat(fd, 0, tv);
 }
+#elif !defined(_HAVEFUTIMES)
+static int
+futimes(int fd, struct timeval *tv)
+{
+	werrstr("futimes not available");
+	return -1;
+}
 #endif
 
 int
blob - 5151b132cb35bf70acf5497c8c08f71d835418ec
blob + d19429e84b1d029c008684ed6593e392930c88a0
--- src/lib9/dirread.c
+++ src/lib9/dirread.c
@@ -11,7 +11,22 @@
 
 extern int _p9dir(struct stat*, char*, Dir*, char**, char*);
 
+#if !defined(_HAVEGETDENTS) && defined(_HAVEGETDIRENTRIES)
 static int
+getdents(int fd, char *buf, int n)
+{
+	ssize_t nn;
+	off_t off;
+
+	off = seek(fd, 0, 1);
+	nn = getdirentries(fd, buf, n, &off);
+	if(nn > 0)
+		seek(fd, off, 0);
+	return nn;
+}
+#endif
+
+static int
 countde(char *p, int n)
 {
 	char *e;
blob - 573dd3769ead1c079a5177afc259c0fa73fc54d6
blob + d003ac832e8aa9e1a4c7f49e739119378c31b82a
--- src/lib9/dirwstat.c
+++ src/lib9/dirwstat.c
@@ -3,19 +3,18 @@
 #include <libc.h>
 
 #include <sys/time.h>
+#include <utime.h>
 
 int
 dirwstat(char *file, Dir *dir)
 {
-	struct timeval tv[2];
+	struct utimbuf ub;
 
 	/* BUG handle more */
 	if(dir->mtime == ~0ULL)
 		return 0;
 
-	tv[0].tv_sec = dir->mtime;
-	tv[0].tv_usec = 0;
-	tv[1].tv_sec = dir->mtime;
-	tv[1].tv_usec = 0;
-	return utimes(file, tv);
+	ub.actime = dir->mtime;
+	ub.modtime = dir->mtime;
+	return utime(file, &ub);
 }
blob - 095a3f5413d96ad561bf548c4f52717cfb7a0a4d
blob + 7e3c04f72b58b2c87ca33d0cf58861a8f383d14c
--- src/lib9/notify.c
+++ src/lib9/notify.c
@@ -14,7 +14,9 @@ static int sigs[] = {
 	SIGILL,
 	SIGTRAP,
 	SIGABRT,
+#ifdef SIGEMT
 	SIGEMT,
+#endif
 	SIGFPE,
 	SIGBUS,
 	SIGSEGV,
@@ -30,6 +32,9 @@ static int sigs[] = {
 	SIGVTALRM,
 	SIGUSR1,
 	SIGUSR2,
+#ifdef SIGINFO
+	SIGINFO,
+#endif
 };
 
 static void (*notifyf)(void*, char*);
blob - 9124bd5c7839218cb201a06c7837b3e5f2e792b4
blob + a75305cf80e15d398751453bce5f1b162d0c599c
--- src/lib9/postnote.c
+++ src/lib9/postnote.c
@@ -1,10 +1,10 @@
-#include <signal.h>
-
 #include <u.h>
 #define _NO9DEFINES_
 #include <libc.h>
 
+#include <signal.h>
 
+
 extern int _p9strsig(char*);
 
 int