summaryrefslogtreecommitdiff
path: root/sys/src/ape
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-01-07 19:04:12 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2016-01-07 19:04:12 +0100
commit4308f6e7e6586e3a27aa46c4d54c434b8533b16d (patch)
tree5a0229a80dd8dd900a9dbec809481c8538a80161 /sys/src/ape
parent772afbe98c7e74be35e7e5318967ce594e4d93e8 (diff)
ape/fmt: %p and %z format for amd64
Diffstat (limited to 'sys/src/ape')
-rw-r--r--sys/src/ape/lib/fmt/dofmt.c11
-rw-r--r--sys/src/ape/lib/fmt/fmt.c1
-rw-r--r--sys/src/ape/lib/fmt/mkfile2
-rw-r--r--sys/src/ape/lib/fmt/test.c2
4 files changed, 14 insertions, 2 deletions
diff --git a/sys/src/ape/lib/fmt/dofmt.c b/sys/src/ape/lib/fmt/dofmt.c
index 7f314e93e..3422e62cd 100644
--- a/sys/src/ape/lib/fmt/dofmt.c
+++ b/sys/src/ape/lib/fmt/dofmt.c
@@ -348,7 +348,11 @@ __ifmt(Fmt *f)
break;
}
if(f->r == 'p'){
- u = (ulong)va_arg(f->args, void*);
+ if(sizeof(void*) == sizeof(uvlong)){
+ isv = 1;
+ vu = (uvlong)va_arg(f->args, void*);
+ } else
+ u = (ulong)va_arg(f->args, void*);
f->r = 'x';
fl |= FmtUnsigned;
}else if(fl & FmtVLong){
@@ -538,6 +542,11 @@ __flagfmt(Fmt *f)
f->flags |= FmtVLong;
f->flags |= FmtLong;
break;
+ case 'z':
+ f->flags |= FmtLong;
+ if(sizeof(void*) == sizeof(vlong))
+ f->flags |= FmtVLong;
+ break;
}
return 1;
}
diff --git a/sys/src/ape/lib/fmt/fmt.c b/sys/src/ape/lib/fmt/fmt.c
index 51bf9884d..179de4bca 100644
--- a/sys/src/ape/lib/fmt/fmt.c
+++ b/sys/src/ape/lib/fmt/fmt.c
@@ -66,6 +66,7 @@ static Convfmt knownfmt[] = {
's', __strfmt,
'u', __flagfmt, /* in Unix, __ifmt */
'x', __ifmt,
+ 'z', __flagfmt,
0, nil,
};
diff --git a/sys/src/ape/lib/fmt/mkfile b/sys/src/ape/lib/fmt/mkfile
index 5644f2a45..75d48f29b 100644
--- a/sys/src/ape/lib/fmt/mkfile
+++ b/sys/src/ape/lib/fmt/mkfile
@@ -53,7 +53,7 @@ $NAN.$O: nan.h
strtod.$O: nan.h
test: $LIB test.$O
- $CC -o test test.$O $LIB -L$PLAN9/lib -lutf
+ $CC -o test test.$O $LIB -lutf
CFLAGS=-c -D_POSIX_SOURCE -D_PLAN9_SOURCE -D_BSD_EXTENSION
diff --git a/sys/src/ape/lib/fmt/test.c b/sys/src/ape/lib/fmt/test.c
index a1a1d5edc..3d082a816 100644
--- a/sys/src/ape/lib/fmt/test.c
+++ b/sys/src/ape/lib/fmt/test.c
@@ -35,5 +35,7 @@ main(int argc, char *argv[])
print("%f\n", 3.1415927/4);
print("%d\n", 23);
print("%i\n", 23);
+ print("%p\n", argv);
+ print("%zd\n", &argv[1] - &argv[0]);
return 0;
}