ape/fmt: %p and %z format for amd64

This commit is contained in:
cinap_lenrek 2016-01-07 19:04:12 +01:00
parent 772afbe98c
commit 4308f6e7e6
4 changed files with 14 additions and 2 deletions

View file

@ -348,7 +348,11 @@ __ifmt(Fmt *f)
break; break;
} }
if(f->r == 'p'){ 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'; f->r = 'x';
fl |= FmtUnsigned; fl |= FmtUnsigned;
}else if(fl & FmtVLong){ }else if(fl & FmtVLong){
@ -538,6 +542,11 @@ __flagfmt(Fmt *f)
f->flags |= FmtVLong; f->flags |= FmtVLong;
f->flags |= FmtLong; f->flags |= FmtLong;
break; break;
case 'z':
f->flags |= FmtLong;
if(sizeof(void*) == sizeof(vlong))
f->flags |= FmtVLong;
break;
} }
return 1; return 1;
} }

View file

@ -66,6 +66,7 @@ static Convfmt knownfmt[] = {
's', __strfmt, 's', __strfmt,
'u', __flagfmt, /* in Unix, __ifmt */ 'u', __flagfmt, /* in Unix, __ifmt */
'x', __ifmt, 'x', __ifmt,
'z', __flagfmt,
0, nil, 0, nil,
}; };

View file

@ -53,7 +53,7 @@ $NAN.$O: nan.h
strtod.$O: nan.h strtod.$O: nan.h
test: $LIB test.$O 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 CFLAGS=-c -D_POSIX_SOURCE -D_PLAN9_SOURCE -D_BSD_EXTENSION

View file

@ -35,5 +35,7 @@ main(int argc, char *argv[])
print("%f\n", 3.1415927/4); print("%f\n", 3.1415927/4);
print("%d\n", 23); print("%d\n", 23);
print("%i\n", 23); print("%i\n", 23);
print("%p\n", argv);
print("%zd\n", &argv[1] - &argv[0]);
return 0; return 0;
} }