[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] mig: remove local definition of 'vprintf'
From: |
Samuel Thibault |
Subject: |
Re: [PATCH] mig: remove local definition of 'vprintf' |
Date: |
Mon, 2 May 2022 18:05:17 +0200 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Guy-Fleury Iteriteka, le lun. 02 mai 2022 09:27:57 +0200, a ecrit:
> autoconf consider that 'AC_FUNC_VPRINTF' is obsolescent.
> see 'info autoconf AC_FUNC_VPRINTF'
applied, thanks!
> * Makefile.am: remove 'vprint.c' on src files.
> configure.ac: remove 'AC_FUNC_VPRINTF' macro.
> vprint.c: delete file.
> ---
> Makefile.am | 2 +-
> configure.ac | 4 -
> vprint.c | 433 ---------------------------------------------------
> 3 files changed, 1 insertion(+), 438 deletions(-)
> delete mode 100644 vprint.c
>
> diff --git a/Makefile.am b/Makefile.am
> index 5d924da..918efa1 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -19,7 +19,7 @@ migcom_SOURCES = boolean.h error.c error.h global.c
> global.h \
> header.c lexxer.h lexxer.l message.h mig_string.h \
> migcom.c parser.h parser.y routine.c routine.h \
> server.c statement.c statement.h string.c \
> - type.c type.h user.c utils.c utils.h vprint.c write.h
> + type.c type.h user.c utils.c utils.h write.h
> migcom_LDADD = @LEXLIB@
>
> SUFFIXES = .h .symo .symc .sym
> diff --git a/configure.ac b/configure.ac
> index d992264..e4645bd 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -38,10 +38,6 @@ AC_PROG_INSTALL
> dnl Checks for header files.
> AC_HEADER_STDC
>
> -dnl Checks for library functions.
> -AC_FUNC_VPRINTF
> -
> -
> [if [ "$target" = "$host" ]; then
> TARGET_CC='${CC}'
> else]
> diff --git a/vprint.c b/vprint.c
> deleted file mode 100644
> index db5d2cb..0000000
> --- a/vprint.c
> +++ /dev/null
> @@ -1,433 +0,0 @@
> -/*
> - * Copyright (c) 1990,1992,1993 Carnegie Mellon University
> - * All Rights Reserved.
> - *
> - * Permission to use, copy, modify and distribute this software and its
> - * documentation is hereby granted, provided that both the copyright
> - * notice and this permission notice appear in all copies of the
> - * software, derivative works or modified versions, and any portions
> - * thereof, and that both notices appear in supporting documentation.
> - *
> - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
> - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
> - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
> - *
> - * Carnegie Mellon requests users of this software to return to
> - *
> - * Software Distribution Coordinator or Software_Distribution@CS.CMU.EDU
> - * School of Computer Science
> - * Carnegie Mellon University
> - * Pittsburgh PA 15213-3890
> - *
> - * any improvements or extensions that they make and grant Carnegie Mellon
> - * the rights to redistribute these changes.
> - */
> -
> -#ifndef HAVE_VPRINTF
> -
> -/*
> - * ansi varargs versions of printf routines
> - * This are directly included to deal with nonansi libc's.
> - */
> -#include <stdio.h>
> -#include <stdarg.h>
> -#include <ctype.h>
> -#include <limits.h>
> -
> -/*
> - * Forward declaration.
> - */
> -static void _doprnt_ansi(const char *_fmt, va_list _args, FILE *_stream);
> -
> -int
> -vprintf(const char *fmt, va_list args)
> -{
> - _doprnt_ansi(fmt, args, stdout);
> - return (ferror(stdout) ? EOF : 0);
> -}
> -
> -int
> -vfprintf(FILE *f, const char *fmt, va_list args)
> -{
> - _doprnt_ansi(fmt, args, f);
> - return (ferror(f) ? EOF : 0);
> -}
> -
> -int
> -vsprintf(char *s, const char *fmt, va_list args)
> -{
> - FILE fakebuf;
> -
> - fakebuf._flag = _IOSTRG; /* no _IOWRT: avoid stdio bug */
> - fakebuf._ptr = s;
> - fakebuf._cnt = 32767;
> - _doprnt_ansi(fmt, args, &fakebuf);
> - putc('\0', &fakebuf);
> - return (strlen(s));
> -}
> -
> -int
> -vsnprintf(char *s, int n, const char *fmt, va_list args)
> -{
> - FILE fakebuf;
> -
> - fakebuf._flag = _IOSTRG; /* no _IOWRT: avoid stdio bug */
> - fakebuf._ptr = s;
> - fakebuf._cnt = n-1;
> - _doprnt_ansi(fmt, args, &fakebuf);
> - fakebuf._cnt++;
> - putc('\0', &fakebuf);
> - if (fakebuf._cnt<0)
> - fakebuf._cnt = 0;
> - return (n-fakebuf._cnt-1);
> -}
> -
> -/*
> - * Common code for printf et al.
> - *
> - * The calling routine typically takes a variable number of arguments,
> - * and passes the address of the first one. This implementation
> - * assumes a straightforward, stack implementation, aligned to the
> - * machine's wordsize. Increasing addresses are assumed to point to
> - * successive arguments (left-to-right), as is the case for a machine
> - * with a downward-growing stack with arguments pushed right-to-left.
> - *
> - * To write, for example, fprintf() using this routine, the code
> - *
> - * fprintf(fd, format, args)
> - * FILE *fd;
> - * char *format;
> - * {
> - * _doprnt_ansi(format, &args, fd);
> - * }
> - *
> - * would suffice. (This example does not handle the fprintf's "return
> - * value" correctly, but who looks at the return value of fprintf
> - * anyway?)
> - *
> - * This version implements the following printf features:
> - *
> - * %d decimal conversion
> - * %u unsigned conversion
> - * %x hexadecimal conversion
> - * %X hexadecimal conversion with capital letters
> - * %o octal conversion
> - * %c character
> - * %s string
> - * %m.n field width, precision
> - * %-m.n left adjustment
> - * %0m.n zero-padding
> - * %*.* width and precision taken from arguments
> - *
> - * This version does not implement %f, %e, or %g. It accepts, but
> - * ignores, an `l' as in %ld, %lo, %lx, and %lu, and therefore will not
> - * work correctly on machines for which sizeof(long) != sizeof(int).
> - * It does not even parse %D, %O, or %U; you should be using %ld, %o and
> - * %lu if you mean long conversion.
> - *
> - * As mentioned, this version does not return any reasonable value.
> - *
> - * Permission is granted to use, modify, or propagate this code as
> - * long as this notice is incorporated.
> - *
> - * Steve Summit 3/25/87
> - */
> -
> -/*
> - * Added for general use:
> - * # prefix for alternate format:
> - * 0x (0X) for hex
> - * leading 0 for octal
> - * + print '+' if positive
> - * blank print ' ' if positive
> - *
> - */
> -
> -/*
> - * Fixed to handle `l' and `h' prefixes, %% format, and ANSI %p format.
> - * It does not handle the ANSI %n format.
> - *
> - * ANSI NOTE: The formating of %d, %o, %u, %x, and %X are not compliant.
> - *
> - * NOTE: Given that this routine uses stdarg.h, I'm not sure that the
> - * comment above about stack layout is valid.
> - *
> - * Peter Stout, 1/11/93
> - */
> -
> -#define Ctod(c) ((c) - '0')
> -
> -#define MAXBUF (sizeof(long int) * 8) /* enough for binary */
> -
> -typedef int boolean_t;
> -#define FALSE ((boolean_t) 0)
> -#define TRUE ((boolean_t) 1)
> -
> -#define SHORT sizeof(short)
> -#define INT sizeof(int)
> -#define LONG sizeof(long)
> -
> -static void
> -_doprnt_ansi(const char *fmt, va_list args, FILE *stream)
> -{
> - int length;
> - int prec;
> - boolean_t ladjust;
> - char padc;
> - long n;
> - unsigned long u;
> - int plus_sign;
> - int sign_char;
> - boolean_t altfmt;
> - int base;
> - int size;
> - unsigned char char_buf[2];
> -
> - char_buf[1] = '\0';
> -
> - while (*fmt != '\0') {
> - if (*fmt != '%') {
> - putc(*fmt++, stream);
> - continue;
> - }
> -
> - fmt++;
> -
> - length = 0;
> - prec = -1;
> - ladjust = FALSE;
> - padc = ' ';
> - plus_sign = 0;
> - sign_char = 0;
> - altfmt = FALSE;
> -
> - while (TRUE) {
> - if (*fmt == '#') {
> - altfmt = TRUE;
> - fmt++;
> - }
> - else if (*fmt == '-') {
> - ladjust = TRUE;
> - fmt++;
> - }
> - else if (*fmt == '+') {
> - plus_sign = '+';
> - fmt++;
> - }
> - else if (*fmt == ' ') {
> - if (plus_sign == 0)
> - plus_sign = ' ';
> - fmt++;
> - }
> - else
> - break;
> - }
> -
> - if (*fmt == '0') {
> - padc = '0';
> - fmt++;
> - }
> -
> - if (isdigit(*fmt)) {
> - while(isdigit(*fmt))
> - length = 10 * length + Ctod(*fmt++);
> - }
> - else if (*fmt == '*') {
> - length = va_arg(args, int);
> - fmt++;
> - if (length < 0) {
> - ladjust = !ladjust;
> - length = -length;
> - }
> - }
> -
> - if (*fmt == '.') {
> - prec = 0;
> - fmt++;
> - if (isdigit(*fmt)) {
> - prec = 0;
> - while(isdigit(*fmt))
> - prec = 10 * prec + Ctod(*fmt++);
> - }
> - else if (*fmt == '*') {
> - prec = va_arg(args, int);
> - fmt++;
> - }
> - }
> -
> - if (*fmt == 'l' || *fmt == 'h')
> - size = *(fmt++) == 'l' ? LONG : SHORT;
> - else
> - size = INT;
> -
> - switch(*fmt) {
> - case 'c':
> - {
> - const char *p;
> - const char *p2;
> -
> - char_buf[0] = va_arg(args, int);
> - p = char_buf;
> - prec = 1;
> - goto put_string;
> -
> - case 's':
> - if (prec == -1)
> - prec = INT_MAX;
> -
> - p = va_arg(args, char *);
> -
> - if (p == (const char *)0)
> - p = "";
> -
> - put_string:
> - if (length > 0 && !ladjust) {
> - n = 0;
> - p2 = p;
> -
> - for (; *p != '\0' && n < prec; p++)
> - n++;
> -
> - p = p2;
> -
> - while (n < length) {
> - putc(padc, stream);
> - n++;
> - }
> - }
> -
> - n = 0;
> -
> - while (*p != '\0') {
> - if (++n > prec)
> - break;
> -
> - putc(*p++, stream);
> - }
> -
> - if (n < length && ladjust) {
> - while (n < length) {
> - putc(' ', stream);
> - n++;
> - }
> - }
> -
> - break;
> - }
> -
> - case 'o':
> - base = 8;
> - goto print_unsigned;
> -
> - case 'i':
> - case 'd':
> - base = 10;
> - goto print_signed;
> -
> - case 'u':
> - base = 10;
> - goto print_unsigned;
> -
> - case 'x':
> - case 'X':
> - base = 16;
> - goto print_unsigned;
> -
> - case 'p':
> - base = 16;
> - altfmt = TRUE;
> - u = (unsigned long) va_arg(args, void *);
> - goto print_num;
> -
> - print_signed:
> - if (size == INT)
> - n = va_arg(args, int);
> - else if (size == LONG)
> - n = va_arg(args, long);
> - else
> - n = (short) va_arg(args, int);
> - if (n >= 0) {
> - u = n;
> - sign_char = plus_sign;
> - }
> - else {
> - u = -n;
> - sign_char = '-';
> - }
> - goto print_num;
> -
> - print_unsigned:
> - if (size == INT)
> - u = va_arg(args, unsigned int);
> - else if (size == LONG)
> - u = va_arg(args, unsigned long);
> - else
> - u = (unsigned short) va_arg(args, unsigned int);
> - goto print_num;
> -
> - print_num:
> - {
> - char buf[MAXBUF]; /* build number here */
> - char * p = &buf[MAXBUF-1];
> - static const char digits[] = "0123456789abcdef";
> - const char *prefix = 0;
> -
> - if (u != 0 && altfmt) {
> - if (base == 8)
> - prefix = "0";
> - else if (base == 16)
> - prefix = "0x";
> - }
> -
> - do {
> - *p-- = digits[u % base];
> - u /= base;
> - } while (u != 0);
> -
> - length -= (&buf[MAXBUF-1] - p);
> - if (sign_char)
> - length--;
> - if (prefix)
> - length -= strlen(prefix);
> -
> - if (padc == ' ' && !ladjust) {
> - /* blank padding goes before prefix */
> - while (--length >= 0)
> - putc(' ', stream);
> - }
> - if (sign_char)
> - putc(sign_char, stream);
> - if (prefix)
> - while (*prefix)
> - putc(*prefix++, stream);
> - if (padc == '0') {
> - /* zero padding goes after sign and prefix */
> - while (--length >= 0)
> - putc('0', stream);
> - }
> - while (++p != &buf[MAXBUF])
> - putc(*p, stream);
> -
> - if (ladjust) {
> - while (--length >= 0)
> - putc(' ', stream);
> - }
> - break;
> - }
> -
> - case '%':
> - putc('%', stream);
> - break;
> -
> - case '\0':
> - fmt--;
> - break;
> -
> - default:
> - putc(*fmt, stream);
> - }
> - fmt++;
> - }
> -}
> -
> -#endif /* !HAVE_VPRINTF */
> --
> 2.34.0
>
>
--
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.