aboutsummaryrefslogtreecommitdiff
path: root/src/lib9
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9')
-rw-r--r--src/lib9/_p9translate.c4
-rw-r--r--src/lib9/access.c19
-rw-r--r--src/lib9/announce.c5
-rw-r--r--src/lib9/create.c10
-rw-r--r--src/lib9/ctime.c7
-rw-r--r--src/lib9/date.c12
-rw-r--r--src/lib9/dirread.c4
-rw-r--r--src/lib9/errstr.c3
-rw-r--r--src/lib9/ffork-OpenBSD.c1
-rw-r--r--src/lib9/getuser.c3
-rw-r--r--src/lib9/lock.c3
-rw-r--r--src/lib9/mallocz.c3
-rw-r--r--src/lib9/mkfile4
-rw-r--r--src/lib9/notify.c3
-rw-r--r--src/lib9/open.c9
-rw-r--r--src/lib9/rendez-Linux.c2
-rw-r--r--src/lib9/rendez-OpenBSD.c1
-rw-r--r--src/lib9/rendez-pthread.c3
-rw-r--r--src/lib9/time.c4
19 files changed, 44 insertions, 56 deletions
diff --git a/src/lib9/_p9translate.c b/src/lib9/_p9translate.c
index 4eb6eac9..84cd65ca 100644
--- a/src/lib9/_p9translate.c
+++ b/src/lib9/_p9translate.c
@@ -14,7 +14,7 @@ static struct {
};
char*
-_p9translate(char *old)
+plan9translate(char *old)
{
char *new;
int i, olen, nlen, len;
@@ -36,7 +36,7 @@ _p9translate(char *old)
len = strlen(old)+nlen-olen;
new = malloc(len+1);
if(new == nil)
- return nil;
+ return "<out of memory>";
strcpy(new, replace[i].new);
strcpy(new+nlen, old+olen);
assert(strlen(new) == len);
diff --git a/src/lib9/access.c b/src/lib9/access.c
deleted file mode 100644
index 20b00c32..00000000
--- a/src/lib9/access.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <u.h>
-#define NOPLAN9DEFINES
-#include <libc.h>
-
-char *_p9translate(char*);
-
-int
-p9access(char *xname, int what)
-{
- int ret;
- char *name;
-
- if((name = _p9translate(xname)) == nil)
- return -1;
- ret = access(name, what);
- if(name != xname)
- free(name);
- return ret;
-}
diff --git a/src/lib9/announce.c b/src/lib9/announce.c
index 9f07bd22..8fdf1d40 100644
--- a/src/lib9/announce.c
+++ b/src/lib9/announce.c
@@ -40,7 +40,8 @@ p9announce(char *addr, char *dir)
char *net;
u32int host;
int port, s;
- int n, sn;
+ int n;
+ socklen_t sn;
struct sockaddr_in sa;
struct sockaddr_un sun;
@@ -72,7 +73,7 @@ p9announce(char *addr, char *dir)
if((s = socket(AF_INET, proto, 0)) < 0)
return -1;
sn = sizeof n;
- if(port && getsockopt(s, SOL_SOCKET, SO_TYPE, (char*)&n, &sn) >= 0
+ if(port && getsockopt(s, SOL_SOCKET, SO_TYPE, (void*)&n, &sn) >= 0
&& n == SOCK_STREAM){
n = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&n, sizeof n);
diff --git a/src/lib9/create.c b/src/lib9/create.c
index bdad5f6a..97f6e7e2 100644
--- a/src/lib9/create.c
+++ b/src/lib9/create.c
@@ -3,16 +3,10 @@
#include <libc.h>
#include <sys/stat.h>
-extern char *_p9translate(char*);
-
int
-p9create(char *xpath, int mode, ulong perm)
+p9create(char *path, int mode, ulong perm)
{
int fd, cexec, umode, rclose;
- char *path;
-
- if((path = _p9translate(xpath)) == nil)
- return -1;
cexec = mode&OCEXEC;
rclose = mode&ORCLOSE;
@@ -48,7 +42,5 @@ out:
if(rclose)
remove(path);
}
- if(path != xpath)
- free(path);
return fd;
}
diff --git a/src/lib9/ctime.c b/src/lib9/ctime.c
index e9d971bf..0782d099 100644
--- a/src/lib9/ctime.c
+++ b/src/lib9/ctime.c
@@ -15,6 +15,7 @@ ct_numb(char *cp, int n)
char*
asctime(Tm *t)
{
+ int i;
char *ncp;
static char cbuf[30];
@@ -32,6 +33,12 @@ asctime(Tm *t)
ct_numb(cbuf+14, t->min+100);
ct_numb(cbuf+17, t->sec+100);
ncp = t->zone;
+ for(i=0; i<3; i++)
+ if(ncp[i] == 0)
+ break;
+ for(; i<3; i++)
+ ncp[i] = '?';
+ ncp = t->zone;
cbuf[20] = *ncp++;
cbuf[21] = *ncp++;
cbuf[22] = *ncp;
diff --git a/src/lib9/date.c b/src/lib9/date.c
index 8ece0c68..8f852de2 100644
--- a/src/lib9/date.c
+++ b/src/lib9/date.c
@@ -1,6 +1,5 @@
-#include <stdlib.h> /* setenv etc. */
-
#include <u.h>
+#include <stdlib.h> /* setenv etc. */
#define NOPLAN9DEFINES
#include <libc.h>
#include <time.h>
@@ -25,6 +24,8 @@ static Tm bigtm;
static void
tm2Tm(struct tm *tm, Tm *bigtm)
{
+ char *s;
+
memset(bigtm, 0, sizeof *bigtm);
bigtm->sec = tm->tm_sec;
bigtm->min = tm->tm_min;
@@ -39,6 +40,13 @@ tm2Tm(struct tm *tm, Tm *bigtm)
#ifdef _HAVETZOFF
bigtm->tzoff = tm->tm_gmtoff;
#endif
+ if(bigtm->zone[0] == 0){
+ s = getenv("TIMEZONE");
+ if(s){
+ strecpy(bigtm->zone, bigtm->zone+4, tm->tm_zone);
+ free(s);
+ }
+ }
}
static void
diff --git a/src/lib9/dirread.c b/src/lib9/dirread.c
index aef0102f..0a72d62e 100644
--- a/src/lib9/dirread.c
+++ b/src/lib9/dirread.c
@@ -18,7 +18,7 @@ mygetdents(int fd, struct dirent *buf, int n)
nn = getdirentries(fd, (void*)buf, n, &off);
return nn;
}
-#elif defined(__APPLE__) || defined(__FreeBSD__)
+#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
static int
mygetdents(int fd, struct dirent *buf, int n)
{
@@ -171,7 +171,7 @@ dirreadall(int fd, Dir **d)
ts += n;
}
if(ts >= 0)
- ts = dirpackage(fd, buf, ts, d);
+ ts = dirpackage(fd, (char*)buf, ts, d);
free(buf);
if(ts == 0 && n < 0)
return -1;
diff --git a/src/lib9/errstr.c b/src/lib9/errstr.c
index 0c6ab315..578f4895 100644
--- a/src/lib9/errstr.c
+++ b/src/lib9/errstr.c
@@ -5,9 +5,10 @@
* okay.
*/
+#include <u.h>
#include <errno.h>
#include <string.h>
-#include <lib9.h>
+#include <libc.h>
enum
{
diff --git a/src/lib9/ffork-OpenBSD.c b/src/lib9/ffork-OpenBSD.c
new file mode 100644
index 00000000..5e677f72
--- /dev/null
+++ b/src/lib9/ffork-OpenBSD.c
@@ -0,0 +1 @@
+#include "ffork-pthread.c"
diff --git a/src/lib9/getuser.c b/src/lib9/getuser.c
index b53a3892..09c07041 100644
--- a/src/lib9/getuser.c
+++ b/src/lib9/getuser.c
@@ -1,6 +1,5 @@
-#include <pwd.h>
-
#include <u.h>
+#include <pwd.h>
#include <libc.h>
char*
diff --git a/src/lib9/lock.c b/src/lib9/lock.c
index 5d6f2f3e..e97b967f 100644
--- a/src/lib9/lock.c
+++ b/src/lib9/lock.c
@@ -1,6 +1,7 @@
+#include <u.h>
#include <unistd.h>
#include <sched.h>
-#include <lib9.h>
+#include <libc.h>
int _ntas;
static int
diff --git a/src/lib9/mallocz.c b/src/lib9/mallocz.c
index c6313008..a3e91510 100644
--- a/src/lib9/mallocz.c
+++ b/src/lib9/mallocz.c
@@ -1,6 +1,7 @@
+#include <u.h>
#include <unistd.h>
#include <string.h>
-#include <lib9.h>
+#include <libc.h>
void*
mallocz(unsigned long n, int clr)
diff --git a/src/lib9/mkfile b/src/lib9/mkfile
index d388d224..4dda2e19 100644
--- a/src/lib9/mkfile
+++ b/src/lib9/mkfile
@@ -69,8 +69,6 @@ LIB9OFILES=\
_p9dialparse.$O\
_p9dir.$O\
_p9proc.$O\
- _p9translate.$O\
- access.$O\
announce.$O\
argv0.$O\
atexit.$O\
@@ -100,6 +98,7 @@ LIB9OFILES=\
exec.$O\
fcallfmt.$O\
ffork-$SYSNAME.$O\
+ get9root.$O\
getcallerpc-$OBJTYPE.$O\
getenv.$O\
getfields.$O\
@@ -142,6 +141,7 @@ LIB9OFILES=\
u16.$O\
u32.$O\
u64.$O\
+ unsharp.$O\
wait.$O\
waitpid.$O\
diff --git a/src/lib9/notify.c b/src/lib9/notify.c
index 2e589de7..4d2a79ef 100644
--- a/src/lib9/notify.c
+++ b/src/lib9/notify.c
@@ -1,6 +1,5 @@
-#include <signal.h>
-
#include <u.h>
+#include <signal.h>
#define NOPLAN9DEFINES
#include <libc.h>
#include "9proc.h"
diff --git a/src/lib9/open.c b/src/lib9/open.c
index bb597e8f..0356a7da 100644
--- a/src/lib9/open.c
+++ b/src/lib9/open.c
@@ -2,12 +2,9 @@
#define NOPLAN9DEFINES
#include <libc.h>
-extern char* _p9translate(char*);
-
int
-p9open(char *xname, int mode)
+p9open(char *name, int mode)
{
- char *name;
int cexec, rclose;
int fd, umode;
@@ -23,8 +20,6 @@ p9open(char *xname, int mode)
werrstr("mode not supported");
return -1;
}
- if((name = _p9translate(xname)) == nil)
- return -1;
fd = open(name, umode);
if(fd >= 0){
if(cexec)
@@ -32,7 +27,5 @@ p9open(char *xname, int mode)
if(rclose)
remove(name);
}
- if(name != xname)
- free(name);
return fd;
}
diff --git a/src/lib9/rendez-Linux.c b/src/lib9/rendez-Linux.c
index 05c52ae7..673818e0 100644
--- a/src/lib9/rendez-Linux.c
+++ b/src/lib9/rendez-Linux.c
@@ -1 +1,3 @@
+/* Could use futex(2) here instead of signals? */
+
#include "rendez-signal.c"
diff --git a/src/lib9/rendez-OpenBSD.c b/src/lib9/rendez-OpenBSD.c
new file mode 100644
index 00000000..05c52ae7
--- /dev/null
+++ b/src/lib9/rendez-OpenBSD.c
@@ -0,0 +1 @@
+#include "rendez-signal.c"
diff --git a/src/lib9/rendez-pthread.c b/src/lib9/rendez-pthread.c
index b4b95f21..fe930cef 100644
--- a/src/lib9/rendez-pthread.c
+++ b/src/lib9/rendez-pthread.c
@@ -32,9 +32,10 @@
* shared memory and mutexes.
*/
+#include <u.h>
#include <pthread.h>
#include <signal.h>
-#include <lib9.h>
+#include <libc.h>
enum
{
diff --git a/src/lib9/time.c b/src/lib9/time.c
index 169a82f5..36706367 100644
--- a/src/lib9/time.c
+++ b/src/lib9/time.c
@@ -1,7 +1,7 @@
+#include <u.h>
#include <sys/time.h>
+#include <time.h>
#include <sys/resource.h>
-
-#include <u.h>
#define NOPLAN9DEFINES
#include <libc.h>