summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-01-02 04:47:42 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2018-01-02 04:47:42 +0100
commit77ad456b31b2258be4c2fa2f4842910a7c92062c (patch)
tree5c0fad6a985cceeb24403b82c8dae9a6f9c82a1b /sys/src
parente1ca49d625aaca1aae1dc570e7bc63a499d3e741 (diff)
libauth: simplify _attrfmt() using fmtprint() avoiding stack buffer
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/libauth/attr.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/sys/src/libauth/attr.c b/sys/src/libauth/attr.c
index f67a12e31..740fb5f2c 100644
--- a/sys/src/libauth/attr.c
+++ b/sys/src/libauth/attr.c
@@ -5,28 +5,26 @@
int
_attrfmt(Fmt *fmt)
{
- char *b, buf[1024], *ebuf;
Attr *a;
+ int first = 1;
- ebuf = buf+sizeof buf;
- b = buf;
- strcpy(buf, " ");
- for(a=va_arg(fmt->args, Attr*); a; a=a->next){
+ for(a=va_arg(fmt->args, Attr*); a != nil; a=a->next){
if(a->name == nil)
continue;
switch(a->type){
+ default:
+ continue;
case AttrQuery:
- b = seprint(b, ebuf, " %q?", a->name);
+ fmtprint(fmt, first+" %q?", a->name);
break;
case AttrNameval:
- b = seprint(b, ebuf, " %q=%q", a->name, a->val);
- break;
case AttrDefault:
- b = seprint(b, ebuf, " %q:=%q", a->name, a->val);
+ fmtprint(fmt, first+" %q=%q", a->name, a->val);
break;
}
+ first = 0;
}
- return fmtstrcpy(fmt, buf+1);
+ return 0;
}
Attr*