summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-01-07 04:39:09 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2016-01-07 04:39:09 +0100
commit3e38194d72b2b017b85bf85f11ef4e580d44be4f (patch)
treed7eba462a903793200bce8aa0b8bc10836244eb5 /sys/src
parent59245c73f0645e4e2ca1b01b3e3551dbbc5273d9 (diff)
introduce signed intptr and %z format modifier for formating uintptr and intptr
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/9/port/lib.h8
-rw-r--r--sys/src/cmd/cc/dpchk.c1
-rw-r--r--sys/src/libc/fmt/dofmt.c5
-rw-r--r--sys/src/libc/fmt/fmt.c1
4 files changed, 15 insertions, 0 deletions
diff --git a/sys/src/9/port/lib.h b/sys/src/9/port/lib.h
index 67d08e502..1dbccbcc5 100644
--- a/sys/src/9/port/lib.h
+++ b/sys/src/9/port/lib.h
@@ -98,6 +98,14 @@ extern int sprint(char*, char*, ...);
#pragma varargck type "lb" ulong
#pragma varargck type "ld" ulong
#pragma varargck type "lx" ulong
+#pragma varargck type "zd" intptr
+#pragma varargck type "zo" intptr
+#pragma varargck type "zx" intptr
+#pragma varargck type "zb" intptr
+#pragma varargck type "zd" uintptr
+#pragma varargck type "zo" uintptr
+#pragma varargck type "zx" uintptr
+#pragma varargck type "zb" uintptr
#pragma varargck type "b" int
#pragma varargck type "d" int
#pragma varargck type "x" int
diff --git a/sys/src/cmd/cc/dpchk.c b/sys/src/cmd/cc/dpchk.c
index 217e005c3..a08dd6970 100644
--- a/sys/src/cmd/cc/dpchk.c
+++ b/sys/src/cmd/cc/dpchk.c
@@ -165,6 +165,7 @@ arginit(void)
argflag('*', Fstar);
argflag('l', Fl);
+ argflag('z', ewidth[TVLONG]==ewidth[TIND] ? Fvl : Fl);
argflag('o', Fverb);
flagbits['x'] = flagbits['o'];
diff --git a/sys/src/libc/fmt/dofmt.c b/sys/src/libc/fmt/dofmt.c
index 95852f5c2..bb6ee99a5 100644
--- a/sys/src/libc/fmt/dofmt.c
+++ b/sys/src/libc/fmt/dofmt.c
@@ -504,6 +504,11 @@ _flagfmt(Fmt *f)
f->flags |= FmtVLong;
f->flags |= FmtLong;
break;
+ case 'z':
+ f->flags |= FmtLong;
+ if(sizeof(uintptr) == sizeof(uvlong))
+ f->flags |= FmtVLong;
+ break;
}
return 1;
}
diff --git a/sys/src/libc/fmt/fmt.c b/sys/src/libc/fmt/fmt.c
index a1dee68d5..84f4004b5 100644
--- a/sys/src/libc/fmt/fmt.c
+++ b/sys/src/libc/fmt/fmt.c
@@ -48,6 +48,7 @@ static Convfmt knownfmt[] = {
's', _strfmt,
'u', _flagfmt,
'x', _ifmt,
+ 'z', _flagfmt,
0, nil,
};