misc cleanups.
authorroland <roland>
Mon, 19 Oct 1992 20:28:19 +0000 (20:28 +0000)
committerroland <roland>
Mon, 19 Oct 1992 20:28:19 +0000 (20:28 +0000)
manual/examples/rprintf.c

index c62ff49..eff1d8e 100644 (file)
@@ -2,55 +2,51 @@
 #include <printf.h>
 #include <stdarg.h>
 
-typedef struct widget
+/*@group*/
+typedef struct
   {
     char *name;
   } Widget;
+/*@end group*/
 
 int 
 print_widget (FILE *stream, const struct printf_info *info, va_list *app)
 {
   Widget *w;
   char *buffer;
-  int len, fill, i;
+  int len;
 
   /* Format the output into a string. */
   w = va_arg (*app, Widget *);
   len = asprintf (&buffer, "<Widget %p: %s>", w, w->name);
   if (len == -1)
     return -1;
-  fill = info->width - len;
-  if (fill < 0)
-    fill = 0;
 
   /* Pad to the minimum field width and print to the stream. */
-  if (!info->left)
-    for (i = 0; i < fill; i++)
-      putc (' ', stream);
-  fputs (buffer, stream);
-  if (info->left)
-    for (i = 0; i < fill; i++)
-      putc (' ', stream);
+  len = fprintf (stream, "%*s",
+                (info->left ? - info->width : info->width),
+                buffer);
 
   /* Clean up and return. */
   free (buffer);
-  return (len + fill);
+  return len;
 }
 
 
-void 
+int
 main (void)
 {
-
   /* Make a widget to print. */
   Widget mywidget;
   mywidget.name = "mywidget";
 
   /* Register the print function for widgets. */
-  register_printf_function ('W', print_widget);
+  register_printf_function ('W', print_widget, NULL); /* No arginfo.  */
 
   /* Now print the widget. */
   printf ("|%W|\n", &mywidget);
   printf ("|%35W|\n", &mywidget);
   printf ("|%-35W|\n", &mywidget);
+
+  return 0;
 }