diff options
Diffstat (limited to 'manual/examples/rprintf.c')
-rw-r--r-- | manual/examples/rprintf.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/manual/examples/rprintf.c b/manual/examples/rprintf.c deleted file mode 100644 index e49a2c4fbf..0000000000 --- a/manual/examples/rprintf.c +++ /dev/null @@ -1,84 +0,0 @@ -/* Printf Extension Example - Copyright (C) 1991-2017 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, if not, see <http://www.gnu.org/licenses/>. -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <printf.h> - -/*@group*/ -typedef struct -{ - char *name; -} -Widget; -/*@end group*/ - -int -print_widget (FILE *stream, - const struct printf_info *info, - const void *const *args) -{ - 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), - buffer); - - /* Clean up and return. */ - free (buffer); - return len; -} - - -int -print_widget_arginfo (const struct printf_info *info, size_t n, - int *argtypes) -{ - /* We always take exactly one argument and this is a pointer to the - structure.. */ - if (n > 0) - argtypes[0] = PA_POINTER; - return 1; -} - - -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, print_widget_arginfo); - - /* Now print the widget. */ - printf ("|%W|\n", &mywidget); - printf ("|%35W|\n", &mywidget); - printf ("|%-35W|\n", &mywidget); - - return 0; -} |