commit d2c4ee9e488f6c94865cc2f4c874d025bc2ae0d2 from: rsc date: Mon Nov 24 00:43:41 2003 UTC Tweaks to build properly on Linux. 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 #include #include @@ -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 @@ -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 /* setenv etc. */ + #include #include @@ -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 #include +#include 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 - #include #define _NO9DEFINES_ #include +#include + extern int _p9strsig(char*); int