Back to index

glibc  2.9
Classes | Functions
rprintf.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <printf.h>

Go to the source code of this file.


struct  Widget


int print_widget (FILE *stream, const struct printf_info *info, const void *const *args)
int print_widget_arginfo (const struct printf_info *info, size_t n, int *argtypes)
int main (void)

Class Documentation

struct Widget

Definition at line 6 of file rprintf.c.

Class Members
char * name

Function Documentation

int main ( void  )

Definition at line 52 of file rprintf.c.

  /* Make a widget to print. */
  Widget mywidget; = "mywidget";

  /* Register the print function for widgets. */
  register_printf_function ('W', print_widget, print_widget_arginfo);

  /* Now print the widget. */
  printf ("|%W|\n", &mywidget);
  printf ("|%35W|\n", &mywidget);
  printf ("|%-35W|\n", &mywidget);

  return 0;

Here is the call graph for this function:

int print_widget ( FILE stream,
const struct printf_info info,
const void *const args 

Definition at line 14 of file rprintf.c.

  const Widget *w;
  char *buffer;
  int len;

  /* Format the output into a string. */
  w = *((const Widget **) (args[0]));
  len = asprintf (&buffer, "<Widget %p: %s>", w, w->name);
  if (len == -1)
    return -1;

  /* Pad to the minimum field width and print to the stream. */
  len = fprintf (stream, "%*s",
               (info->left ? -info->width : info->width),

  /* Clean up and return. */
  free (buffer);
  return len;

Here is the call graph for this function:

Here is the caller graph for this function:

int print_widget_arginfo ( const struct printf_info info,
size_t  n,
int argtypes 

Definition at line 40 of file rprintf.c.

  /* We always take exactly one argument and this is a pointer to the
     structure..  */
  if (n > 0)
    argtypes[0] = PA_POINTER;
  return 1;

Here is the caller graph for this function: