summaryrefslogtreecommitdiff
path: root/src/vsnprintf.c
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2020-07-01 18:03:10 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-07-06 20:28:20 +0200
commitf09e17c3c564e8310125a10c03397cbf473ff643 (patch)
tree8d0fd4a28e3686c33aaa140d07ddba26ab28bdc2 /src/vsnprintf.c
parentb0e0c355edaa2e23148cb0260ada907aec930f05 (diff)
Remove $Id$ tags, update URL's, and more
- remove obsolete svn '$Id$' tags from all source files - update .fl files and generated files accordingly - replace 'http://www.fltk.org' URL's with 'https://...' - replace bug report URL 'str.php' with 'bugs.php' - remove trailing whitespace - fix other whitespace errors flagged by Git - add and/or fix missing or wrong standard headers - convert tabs to spaces in all source files The only relevant code changes are in the fluid/ folder where some .fl files and other source files were used to generate the '$Id' headers and footers.
Diffstat (limited to 'src/vsnprintf.c')
-rw-r--r--src/vsnprintf.c267
1 files changed, 130 insertions, 137 deletions
diff --git a/src/vsnprintf.c b/src/vsnprintf.c
index a4e5bc9c0..08aed7fc7 100644
--- a/src/vsnprintf.c
+++ b/src/vsnprintf.c
@@ -1,6 +1,4 @@
/*
- * "$Id$"
- *
* snprintf() and vsnprintf() functions for the Fast Light Tool Kit (FLTK).
*
* Copyright 1998-2010 by Bill Spitzak and others.
@@ -9,11 +7,11 @@
* the file "COPYING" which should have been included with this file. If this
* file is missing or damaged, see the license at:
*
- * http://www.fltk.org/COPYING.php
+ * https://www.fltk.org/COPYING.php
*
- * Please report all bugs and problems on the following page:
+ * Please see the following page on how to report bugs and issues:
*
- * http://www.fltk.org/str.php
+ * https://www.fltk.org/bugs.php
*/
#include <stdio.h>
@@ -31,19 +29,19 @@ int fl_vsnprintf(char* buffer, size_t bufsize, const char* format, va_list ap) {
#if defined(HAVE_VSNPRINTF) && defined(__linux__)
return vsnprintf(buffer, bufsize, format, ap);
#else
- char *bufptr, /* Pointer to position in buffer */
- *bufend, /* Pointer to end of buffer */
- sign, /* Sign of format width */
- size, /* Size character (h, l, L) */
- type; /* Format type character */
- int width, /* Width of field */
- prec; /* Number of characters of precision */
- char tformat[100], /* Temporary format string for sprintf() */
- *tptr, /* Pointer into temporary format */
- temp[1024]; /* Buffer for formatted numbers */
- char *s; /* Pointer to string */
- int slen; /* Length of string */
- int bytes; /* Total number of bytes needed */
+ char *bufptr, /* Pointer to position in buffer */
+ *bufend, /* Pointer to end of buffer */
+ sign, /* Sign of format width */
+ size, /* Size character (h, l, L) */
+ type; /* Format type character */
+ int width, /* Width of field */
+ prec; /* Number of characters of precision */
+ char tformat[100], /* Temporary format string for sprintf() */
+ *tptr, /* Pointer into temporary format */
+ temp[1024]; /* Buffer for formatted numbers */
+ char *s; /* Pointer to string */
+ int slen; /* Length of string */
+ int bytes; /* Total number of bytes needed */
/*
@@ -63,7 +61,7 @@ int fl_vsnprintf(char* buffer, size_t bufsize, const char* format, va_list ap) {
if (bufptr && bufptr < bufend) *bufptr++ = *format;
bytes ++;
format ++;
- continue;
+ continue;
} else if (strchr(" -+#\'", *format)) {
*tptr++ = *format;
sign = *format++;
@@ -71,48 +69,48 @@ int fl_vsnprintf(char* buffer, size_t bufsize, const char* format, va_list ap) {
if (*format == '*') {
/* Get width from argument... */
- format ++;
- width = va_arg(ap, int);
- snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", width);
- tptr += strlen(tptr);
+ format ++;
+ width = va_arg(ap, int);
+ snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", width);
+ tptr += strlen(tptr);
} else {
- width = 0;
- while (isdigit(*format & 255)) {
- if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
- width = width * 10 + *format++ - '0';
- }
+ width = 0;
+ while (isdigit(*format & 255)) {
+ if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
+ width = width * 10 + *format++ - '0';
+ }
}
if (*format == '.') {
- if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
+ if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
format ++;
if (*format == '*') {
/* Get precision from argument... */
- format ++;
- prec = va_arg(ap, int);
- snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", prec);
- tptr += strlen(tptr);
- } else {
- prec = 0;
- while (isdigit(*format & 255)) {
- if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
- prec = prec * 10 + *format++ - '0';
- }
- }
+ format ++;
+ prec = va_arg(ap, int);
+ snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", prec);
+ tptr += strlen(tptr);
+ } else {
+ prec = 0;
+ while (isdigit(*format & 255)) {
+ if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
+ prec = prec * 10 + *format++ - '0';
+ }
+ }
} else prec = -1;
size = '\0';
if (*format == 'l' && format[1] == 'l') {
size = 'L';
- if (tptr < (tformat + sizeof(tformat) - 2)) {
- *tptr++ = 'l';
- *tptr++ = 'l';
- }
- format += 2;
+ if (tptr < (tformat + sizeof(tformat) - 2)) {
+ *tptr++ = 'l';
+ *tptr++ = 'l';
+ }
+ format += 2;
} else if (*format == 'h' || *format == 'l' || *format == 'L') {
- if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
+ if (tptr < (tformat + sizeof(tformat) - 1)) *tptr++ = *format;
size = *format++;
}
@@ -123,121 +121,121 @@ int fl_vsnprintf(char* buffer, size_t bufsize, const char* format, va_list ap) {
*tptr = '\0';
switch (type) {
- case 'E' : /* Floating point formats */
- case 'G' :
- case 'e' :
- case 'f' :
- case 'g' :
- if ((width + 2) > (int)sizeof(temp)) break;
+ case 'E' : /* Floating point formats */
+ case 'G' :
+ case 'e' :
+ case 'f' :
+ case 'g' :
+ if ((width + 2) > (int)sizeof(temp)) break;
- sprintf(temp, tformat, va_arg(ap, double));
+ sprintf(temp, tformat, va_arg(ap, double));
bytes += (int) strlen(temp);
if (bufptr) {
- if ((bufptr + strlen(temp)) > bufend) {
- strncpy(bufptr, temp, (size_t)(bufend - bufptr));
- bufptr = bufend;
- } else {
- strcpy(bufptr, temp);
- bufptr += strlen(temp);
- }
- }
- break;
+ if ((bufptr + strlen(temp)) > bufend) {
+ strncpy(bufptr, temp, (size_t)(bufend - bufptr));
+ bufptr = bufend;
+ } else {
+ strcpy(bufptr, temp);
+ bufptr += strlen(temp);
+ }
+ }
+ break;
case 'B' : /* Integer formats */
- case 'X' :
- case 'b' :
+ case 'X' :
+ case 'b' :
case 'd' :
- case 'i' :
- case 'o' :
- case 'u' :
- case 'x' :
- if ((width + 2) > (int)sizeof(temp)) break;
+ case 'i' :
+ case 'o' :
+ case 'u' :
+ case 'x' :
+ if ((width + 2) > (int)sizeof(temp)) break;
#ifdef HAVE_LONG_LONG
- if (size == 'L')
- sprintf(temp, tformat, va_arg(ap, long long));
- else
+ if (size == 'L')
+ sprintf(temp, tformat, va_arg(ap, long long));
+ else
#endif /* HAVE_LONG_LONG */
- if (size == 'l')
- sprintf(temp, tformat, va_arg(ap, long));
- else
- sprintf(temp, tformat, va_arg(ap, int));
+ if (size == 'l')
+ sprintf(temp, tformat, va_arg(ap, long));
+ else
+ sprintf(temp, tformat, va_arg(ap, int));
bytes += (int) strlen(temp);
- if (bufptr) {
- if ((bufptr + strlen(temp)) > bufend) {
- strncpy(bufptr, temp, (size_t)(bufend - bufptr));
- bufptr = bufend;
- } else {
- strcpy(bufptr, temp);
- bufptr += strlen(temp);
- }
- }
- break;
-
- case 'p' : /* Pointer value */
- if ((width + 2) > (int)sizeof(temp)) break;
-
- sprintf(temp, tformat, va_arg(ap, void *));
+ if (bufptr) {
+ if ((bufptr + strlen(temp)) > bufend) {
+ strncpy(bufptr, temp, (size_t)(bufend - bufptr));
+ bufptr = bufend;
+ } else {
+ strcpy(bufptr, temp);
+ bufptr += strlen(temp);
+ }
+ }
+ break;
+
+ case 'p' : /* Pointer value */
+ if ((width + 2) > (int)sizeof(temp)) break;
+
+ sprintf(temp, tformat, va_arg(ap, void *));
bytes += (int) strlen(temp);
- if (bufptr) {
- if ((bufptr + strlen(temp)) > bufend) {
- strncpy(bufptr, temp, (size_t)(bufend - bufptr));
- bufptr = bufend;
- } else {
- strcpy(bufptr, temp);
- bufptr += strlen(temp);
- }
- }
- break;
+ if (bufptr) {
+ if ((bufptr + strlen(temp)) > bufend) {
+ strncpy(bufptr, temp, (size_t)(bufend - bufptr));
+ bufptr = bufend;
+ } else {
+ strcpy(bufptr, temp);
+ bufptr += strlen(temp);
+ }
+ }
+ break;
case 'c' : /* Character or character array */
- bytes += width;
+ bytes += width;
- if (bufptr) {
- if (width <= 1) *bufptr++ = va_arg(ap, int);
- else {
- if ((bufptr + width) > bufend) width = (int) (bufend - bufptr);
+ if (bufptr) {
+ if (width <= 1) *bufptr++ = va_arg(ap, int);
+ else {
+ if ((bufptr + width) > bufend) width = (int) (bufend - bufptr);
- memcpy(bufptr, va_arg(ap, char *), (size_t)width);
- bufptr += width;
- }
- }
- break;
+ memcpy(bufptr, va_arg(ap, char *), (size_t)width);
+ bufptr += width;
+ }
+ }
+ break;
- case 's' : /* String */
- if ((s = va_arg(ap, char *)) == NULL) s = "(null)";
+ case 's' : /* String */
+ if ((s = va_arg(ap, char *)) == NULL) s = "(null)";
- slen = (int) strlen(s);
- if (slen > width && prec != width) width = slen;
+ slen = (int) strlen(s);
+ if (slen > width && prec != width) width = slen;
bytes += width;
- if (bufptr) {
- if ((bufptr + width) > bufend) width = (int) (bufend - bufptr);
+ if (bufptr) {
+ if ((bufptr + width) > bufend) width = (int) (bufend - bufptr);
if (slen > width) slen = width;
- if (sign == '-') {
- strncpy(bufptr, s, (size_t)slen);
- memset(bufptr + slen, ' ', (size_t)(width - slen));
- } else {
- memset(bufptr, ' ', (size_t)(width - slen));
- strncpy(bufptr + width - slen, s, (size_t)slen);
- }
-
- bufptr += width;
- }
- break;
-
- case 'n' : /* Output number of chars so far */
- *(va_arg(ap, int *)) = bytes;
- break;
+ if (sign == '-') {
+ strncpy(bufptr, s, (size_t)slen);
+ memset(bufptr + slen, ' ', (size_t)(width - slen));
+ } else {
+ memset(bufptr, ' ', (size_t)(width - slen));
+ strncpy(bufptr + width - slen, s, (size_t)slen);
+ }
+
+ bufptr += width;
+ }
+ break;
+
+ case 'n' : /* Output number of chars so far */
+ *(va_arg(ap, int *)) = bytes;
+ break;
}
} else {
bytes ++;
@@ -269,8 +267,3 @@ int fl_snprintf(char* str, size_t size, const char* fmt, ...) {
#ifdef __cplusplus
}
#endif
-
-/*
- * End of "$Id$".
- */
-