xref: /inferno-os/libkern/fmtprint.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1  /*
2   * The authors of this software are Rob Pike and Ken Thompson.
3   *              Copyright (c) 2002 by Lucent Technologies.
4   * Permission to use, copy, modify, and distribute this software for any
5   * purpose without fee is hereby granted, provided that this entire notice
6   * is included in all copies of any software which is or includes a copy
7   * or modification of this software and in all copies of the supporting
8   * documentation for such software.
9   * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
10   * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
11   * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
12   * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
13   */
14  #include "lib9.h"
15  #include "fmtdef.h"
16  
17  
18  /*
19   * format a string into the output buffer
20   * designed for formats which themselves call fmt,
21   * but ignore any width flags
22   */
23  int
24  fmtprint(Fmt *f, char *fmt, ...)
25  {
26  	va_list va;
27  	int n;
28  
29  	f->flags = 0;
30  	f->width = 0;
31  	f->prec = 0;
32  	va = f->args;
33  	va_start(f->args, fmt);
34  	n = dofmt(f, fmt);
35  	va_end(f->args);
36  	f->flags = 0;
37  	f->width = 0;
38  	f->prec = 0;
39  	f->args = va;
40  	if(n >= 0)
41  		return 0;
42  	return n;
43  }
44  
45