commit - 50e628cb8f4594b7cbccc17ff3f701ff260a69c0
commit + 1c253ceb586c4519f42ce115954c4efab787f81a
blob - dc9cc3d8892f83d8168167a5bbe4f3cf2ff1af15
blob + 9104a08c8dad87a99a0094185e825a191cc4aa24
--- bin/9c
+++ bin/9c
"
}
-cc=none
-tag="`uname`-`uname -m`-${CC:-cc}"
+tag="`uname`-`uname -m`-${CC9:-cc}"
case "$tag" in
*BSD*) usegcc ;;
*Darwin*) usegcc ;;
exit 1
esac
-exec cc $cflags "$@"
+exec $cc $cflags "$@"
blob - 2db7be540115d14ad7590986ba16950a20d66a59
blob + adc6603855dc3134bf31fe46baf7e8fd4efe182c
--- bin/9l
+++ bin/9l
#!/bin/sh
-ld=none
extralibs=-lm
-tag="`uname`-`uname -m`-${CC:-cc}"
+tag="`uname`-`uname -m`"
case "$tag" in
*FreeBSD*) ld=gcc ;;
*BSD*) ld=gcc ;;
*Linux*) ld=gcc ;;
*Darwin*) ld=gcc ;;
-*SunOS*-cc) ld=cc; extralibs="$extralibs -lrt -lpthread" ;;
-*SunOS*-gcc) ld=gcc ;;
+*SunOS*) ld=${CC9:-cc}
+ extralibs="$extralibs -lrt -lpthread -lsocket -lnsl"
+ ;;
*)
echo do not know how to link on "$tag" 1>&2
exit 1
esac
-case $ld in
-gcc)
- exec gcc \
- -ggdb \
- -L$PLAN9/lib \
- "$@" \
- $extralibs
- ;;
-esac
+exec $ld -L$PLAN9/lib "$@" $extralibs
blob - f6f3e4cf6c89fab70d5a037d1f0789273a24bdc3
blob + e309de71833dac3eff47a42056f5ab32e321ea5b
--- include/lib9.h
+++ include/lib9.h
#define _NEEDUINT 1
#define _NEEDULONG 1
+/* better to assume we have these and then be proved wrong */
+#define _HAVESTGEN 1
+#define _HAVETIMEGM 1
+#define _HAVETMZONE 1
+#define _HAVETMTZOFF 1
+#define _HAVETIMEZONEINT 1
+#define _HAVEFUTIMESAT 1
+#define _HAVEFUTIMES 1
+
typedef long p9jmp_buf[sizeof(sigjmp_buf)/sizeof(long)];
#if defined(__linux__)
# undef _NEEDUSHORT
# undef _NEEDUINT
# undef _NEEDULONG
+# undef _HAVESTGEN
+# undef _HAVETIMEGM
+# undef _HAVETMZONE
+# undef _HAVETMTZOFF
+# undef _HAVEFUTIMES
+# undef _HAVEUTIMES
#endif
#if defined(__FreeBSD__)
# include <sys/types.h>
# undef _NEEDUSHORT
# undef _NEEDUINT
# endif
+# define _HAVEDISKLABEL 1
#endif
#if defined(__APPLE__)
# include <sys/types.h>
extern int atoi(char*);
extern long atol(char*);
*/
-extern vlong atoll(char*);
+extern vlong atoll(const char*);
extern double charstod(int(*)(void*), void*);
extern char* cleanname(char*);
extern int p9decrypt(void*, void*, int);
extern int errstr(char*, uint);
extern int p9exec(char*, char*[]);
/* extern int execl(char*, ...); <unistd.h> */
-extern int fork(void);
+/* extern int fork(void); <unistd.h> */
extern int p9rfork(int);
/* not implemented
extern int fauth(int, char*);
extern long dirread(int, Dir**);
extern void nulldir(Dir*);
extern long dirreadall(int, Dir**);
-extern int getpid(void);
-extern int getppid(void);
+/* extern int getpid(void); <unistd.h> */
+/* extern int getppid(void); */
extern void rerrstr(char*, uint);
extern char* sysname(void);
extern void werrstr(char*, ...);
blob - b75e3c3596d5666f0be6b7348d5cf707457807b2
blob + 1c8010d4551db9862d509c1122c3d3a21de123d5
--- src/Makefile
+++ src/Makefile
../bin/mk: mkmk.sh
- PATH=`pwd`/../bin:$PATH export PATH
+ PATH=`pwd`/../bin:$$PATH export PATH; \
+ PLAN9=`pwd`/.. export PLAN9; \
sh -x mkmk.sh
all clean install nuke: ../bin/mk
blob - 72a2320a7c8a87e5a74813db844d23a0e0b7583b
blob + b34a61b360021e87dec64473ec70c44f0223be20
--- src/cmd/mkfile
+++ src/cmd/mkfile
<$PLAN9/src/mkmany
-BUGGERED='CVS|oplumb|plumb|plumb2|mk|vac'
+BUGGERED='CVS|oplumb|plumb|plumb2|mk|vac|9term'
DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "$BUGGERED"`
<$PLAN9/src/mkdirs
blob - c7de3531385d2618b2a080252c850c3f21633e4e
blob + 38a01036487be5111198187ef12099605962a136
--- src/cmd/rc/syn.y
+++ src/cmd/rc/syn.y
%left BANG SUBSHELL
%left PIPE
%left '^'
-%right '$' COUNT '"'
+%right '$' COUNT '\"'
%left SUB
%{
#include "rc.h"
blob - 48f2c60fcb284694f42d547aac09a775f5d3c26f
blob + e899ef3fb523acc626b8cf29f88fc71aee5172a2
--- src/cmd/venti/mkfile
+++ src/cmd/venti/mkfile
<$PLAN9/src/mkmany
+$SLIB: $LIBOFILES
+ ar rvc $SLIB $LIBOFILES
+
# xml.c:D: mkxml dat.h
# ./mkxml dat.h > xml.c
-$SLIB(%.$O):N: %.$O
-$SLIB: ${LIBOFILES:%=$SLIB(%)}
- names=`echo $newprereq | sed -E 's/'$SLIB'\(([^)]+)\)/\1/g'`
- # names = `{echo $newprereq |sed 's/ /\n/g' |sed -n 's/'$SLIB'\(([^)]+)\)/\1/gp'}
- ar rvc $SLIB $names
-# rm $names
-
ainstall:V: ${TARG:%=%.ainstall}
%.ainstall:V: $O.%
blob - 93c98425720b350a3d6734c6f1bbffb3f15c2e82
blob + 44594dc00e86c4274e25e9915e96ce33a15e91bc
--- src/lib9/_p9dialparse.c
+++ src/lib9/_p9dialparse.c
-#include <u.h>
-#include <libc.h>
-
#include <netdb.h>
#include <sys/un.h>
+#include <u.h>
+#include <libc.h>
+
static char *nets[] = { "tcp", "udp", nil };
#define CLASS(p) ((*(uchar*)(p))>>6)
int i;
struct servent *se;
struct hostent *he;
- struct sockaddr_un *sun;
+ struct sockaddr_un *sockun;
if(strncmp(addr, "/net/", 5) == 0)
addr += 5;
if((port = strchr(host, '!')) == nil){
if(strcmp(net, "unix")==0 || strcmp(net, "net")==0){
Unix:
- if(strlen(host)+1 > sizeof sun->sun_path){
+ if(strlen(host)+1 > sizeof sockun->sun_path){
werrstr("unix socket name too long");
return -1;
}
blob - 459bd1572bb203767b5d2f303c664a145b2c192d
blob + 0903c57d13efdd5122ef8848fa1460d2b2008e2d
--- src/lib9/_p9dir.c
+++ src/lib9/_p9dir.c
-#include <u.h>
-#define NOPLAN9DEFINES
-#include <libc.h>
-
#include <sys/stat.h>
+#ifdef _HAVEDISKLABEL
#include <sys/disklabel.h>
+#endif
#include <dirent.h>
#include <pwd.h>
#include <grp.h>
+#include <u.h>
+#define NOPLAN9DEFINES
+#include <libc.h>
+
int
_p9dir(struct stat *st, char *name, Dir *d, char **str, char *estr)
{
d->muid = "";
d->qid.path = ((uvlong)st->st_dev<<32) | st->st_ino;
+#ifdef _HAVESTGEN
d->qid.vers = st->st_gen;
+#endif
d->mode = st->st_mode&0777;
d->atime = st->st_atime;
d->mtime = st->st_mtime;
}
/* fetch real size for disks */
+#ifdef _HAVEDISKLABEL
if(S_ISCHR(st->st_mode)){
int fd, n;
struct disklabel lab;
if(fd >= 0)
close(fd);
}
+#endif
}
return sz;
blob - dc8cbbbf4daecd274e51ef2110873c07048d4d0e
blob + 04c712d9b27b96457928dfe0f9836cd075ffec51
--- src/lib9/announce.c
+++ src/lib9/announce.c
#include <netinet/in.h>
#include <sys/un.h>
+#undef sun
+#define sun sockun
extern int _p9dialparse(char*, char**, char**, u32int*, int*);
static int
Unix:
memset(&sun, 0, sizeof sun);
sun.sun_family = AF_UNIX;
- sun.sun_len = sizeof sun;
strcpy(sun.sun_path, unix);
if((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
return -1;
blob - 67e99b829c651d94980543cfdda326be750641ed
blob + ba94c28aefca2321c4e8d5785ed8f37d5a9efae3
--- src/lib9/await.c
+++ src/lib9/await.c
SIGVTALRM, "sys: virtual time alarm",
SIGPROF, "sys: profiling timer alarm",
SIGWINCH, "sys: window size change",
+#ifdef SIGINFO
SIGINFO, "sys: status request",
+#endif
SIGUSR1, "sys: usr1",
SIGUSR2, "sys: usr2",
};
blob - 2e84fd0a08b552a54db4a093f875c821b189a320
blob + 72860aa711496a205148fc01c8f5ac62720c8eae
--- src/lib9/date.c
+++ src/lib9/date.c
bigtm->mon = tm->tm_mon;
bigtm->year = tm->tm_year;
bigtm->wday = tm->tm_wday;
+#ifdef _HAVETMZONE
strecpy(bigtm->zone, bigtm->zone+4, tm->tm_zone);
+#endif
+#ifdef _HAVETZOFF
bigtm->tzoff = tm->tm_gmtoff;
+#endif
}
static void
tm->tm_mon = bigtm->mon;
tm->tm_year = bigtm->year;
tm->tm_wday = bigtm->wday;
+#ifdef _HAVETMZONE
tm->tm_zone = bigtm->zone;
+#endif
+#ifdef _HAVETZOFF
tm->tm_gmtoff = bigtm->tzoff;
+#endif
}
Tm*
return &bigtm;
}
+#if !defined(_HAVETIMEGM) && defined(_HAVETIMEZONEINT)
+static long
+timegm(struct tm *tm)
+{
+ return mktime(tm)-timezone;
+}
+#endif
+
long
p9tm2sec(Tm *bigtm)
{
blob - 1d961b4c4f53d896f4f776835fef5ef212c16b31
blob + fa19cce81eb209f0cb1aca1cf0737a43b67d0417
--- src/lib9/dial.c
+++ src/lib9/dial.c
Unix:
memset(&su, 0, sizeof su);
- su.sun_len = sizeof su;
su.sun_family = AF_UNIX;
if(strlen(unix)+1 > sizeof su.sun_path){
werrstr("unix socket name too long");
blob - 7f6c54aa36629a678b69974817e5f788e0c732bb
blob + 7ca512514db08470444991b53b452edf63fa2df3
--- src/lib9/dirfwstat.c
+++ src/lib9/dirfwstat.c
#include <sys/time.h>
+#if !defined(_HAVEFUTIMES) && defined(_HAVEFUTIMESAT)
+static int
+futimes(int fd, struct timeval *tv)
+{
+ return futimesat(fd, 0, tv);
+}
+#endif
+
int
dirfwstat(int fd, Dir *dir)
{
tv[1].tv_usec = 0;
return futimes(fd, tv);
}
+
blob - f4610f6888f1c0312185de0c9ef83acf901a86fa
blob + 5151b132cb35bf70acf5497c8c08f71d835418ec
--- src/lib9/dirread.c
+++ src/lib9/dirread.c
de = (struct dirent*)p;
if(de->d_reclen <= 4+2+2+1 || p+de->d_reclen > e)
break;
- if(de->d_namlen == 1 && de->d_name[0]=='.')
- de->d_namlen = 0;
- else if(de->d_namlen == 2 && de->d_name[0]=='.' && de->d_name[1]=='.')
- de->d_namlen = 0;
+ if(de->d_name[0]=='.' && de->d_name[1]==0)
+ de->d_name[0] = 0;
+ else if(de->d_name[0]=='.' && de->d_name[1]=='.' && de->d_name[2]==0)
+ de->d_name[0] = 0;
else
m++;
p += de->d_reclen;
for(i=0; i<n; i++){
de = (struct dirent*)p;
if(stat(de->d_name, &st) < 0)
- de->d_namlen = 0;
+ de->d_name[0] = 0;
else
nstr += _p9dir(&st, de->d_name, nil, nil, nil);
p += de->d_reclen;
m = 0;
for(i=0; i<n; i++){
de = (struct dirent*)p;
- if(de->d_namlen != 0 && stat(de->d_name, &st) >= 0)
+ if(de->d_name[0] != 0 && stat(de->d_name, &st) >= 0)
_p9dir(&st, de->d_name, &d[m++], &str, estr);
p += de->d_reclen;
}
if(buf == nil)
return -1;
- n = getdents(fd, buf, st.st_blksize);
+ n = getdents(fd, (struct dirent*)buf, st.st_blksize);
if(n < 0){
free(buf);
return -1;
return -1;
}
buf = nbuf;
- n = getdents(fd, buf+ts, st.st_blksize);
+ n = getdents(fd, (struct dirent*)(buf+ts), st.st_blksize);
if(n <= 0)
break;
ts += n;
blob - 9f5971abcc793f5b7afff24f902eb1cd7b18faf7
blob + deb692490913d172c7408da2cf45d1121ae36d52
--- src/lib9/mkfile
+++ src/lib9/mkfile
getuser.$O\
getwd.$O\
jmp.$O\
- jmp-FreeBSD.$O\
+ jmp-$SYSNAME.$O\
lock.$O\
main.$O\
malloctag.$O\
blob - e248cd78ef328e4b849c599f99e1bd3dbddc67a1
blob + 41d3f9d6fea27e46d7f2e494840b41785d908bc4
--- src/lib9/rfork.c
+++ src/lib9/rfork.c
return -1;
}
if(flags&RFNOTEG){
- setpgrp(0, 0);
+ setpgid(0, getpid());
flags &= ~RFNOTEG;
}
if(flags){
blob - 6740a0027bf239310860a6c81ed448872cd9fff8
blob + a896be23daa59d88da4c567f51b3e4f7c2182ba1
--- src/mkfile
+++ src/mkfile
ls -l ../bin/mk
testcvs:V:
- cvs up -dAP
+ (cd ..; cvs up -dAP)
cp ../bin/_mk ../bin/mk
mk clean
rm ../lib/*.a
blob - 2cc8d973ef964041245cefa60f5017db1c49d72b
blob + d1b65729598827f1c3964d65f899e3aacc5d0c94
--- src/mkhdr
+++ src/mkhdr
OBJTYPE=`uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'`
X11=/usr/X11R6
-LDFLAGS=
+CC=9c
+LD=9l
+AS=9a
CFLAGS=
+LDFLAGS=
AFLAGS=
+O=o
BIN=$PLAN9/bin
LIBDIR=$PLAN9/lib
-<|sed -E '"s/(.*)\+=/\1=$\1 /g"' $PLAN9/src/Make.$SYSNAME-$OBJTYPE
+<$PLAN9/src/mk.$SYSNAME-$OBJTYPE
OS=$O
LD=9l