ape/fmt: %p and %z format for amd64
This commit is contained in:
parent
772afbe98c
commit
4308f6e7e6
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -66,6 +66,7 @@ static Convfmt knownfmt[] = {
|
|||
's', __strfmt,
|
||||
'u', __flagfmt, /* in Unix, __ifmt */
|
||||
'x', __ifmt,
|
||||
'z', __flagfmt,
|
||||
0, nil,
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue