Mercurial > hg > octave-lyh > gnulib-hg
changeset 5282:149d795beeb2
New snprintf module from Simon Josefsson.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Thu, 30 Sep 2004 23:29:25 +0000 |
parents | 0d530b5eb57b |
children | dc424f1dfc9f |
files | ChangeLog MODULES.html.sh lib/ChangeLog lib/snprintf.c lib/snprintf.h m4/ChangeLog m4/snprintf.m4 modules/snprintf |
diffstat | 8 files changed, 140 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-09-30 Simon Josefsson <jas@extundo.com> + + * MODULES.html.sh (Support for systems lacking POSIX:2001): Add + snprintf. + + * modules/snprintf: New file. + 2004-09-30 Paul Eggert <eggert@cs.ucla.edu> * modules/argp (Maintainer): Replace Simon Josefsson
--- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -1735,6 +1735,7 @@ func_module regex func_module rename func_module rmdir + func_module snprintf func_module utime func_end_table
--- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2004-09-30 Simon Josefsson <jas@extundo.com> + + * snprintf.h, snprintf.c: New files. + 2004-09-30 Sergey Poznyakoff <gray@Mirddin.farlep.net> * argp-help.c (canon_doc_option): Fixed coredump if *name==NULL
new file mode 100644 --- /dev/null +++ b/lib/snprintf.c @@ -0,0 +1,55 @@ +/* Formatted output to strings. + Copyright (C) 2004 Free Software Foundation, Inc. + Written by Simon Josefsson. + + 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, 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, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +/* Get specification. */ +#include "snprintf.h" + +/* Get vasnprintf. */ +#include "vasnprintf.h" + +/* Get MIN. */ +#include <minmax.h> + +/* Print formatted output to string STR. Similar to sprintf, but + additional length SIZE limit how much is written into STR. Returns + string length of formatted string (which may be larger than SIZE). + STR may be NULL, in which case nothing will be written. On error, + return a negative value. */ +int +snprintf (char *str, size_t size, const char *format, ...) +{ + size_t len; + char *out = vasnprintf (NULL, &len, format, args); + + if (!out) + return -1; + + if (str) + { + memcpy (str, out, MIN (len + 1, size)); + str[size - 1] = '\0'; + } + + free (out); + + return len; +}
new file mode 100644 --- /dev/null +++ b/lib/snprintf.h @@ -0,0 +1,29 @@ +/* Formatted output to strings. + Copyright (C) 2004 Free Software Foundation, Inc. + Written by Simon Josefsson. + + 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, 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, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef SNPRINTF_H +#define SNPRINTF_H + +/* Get snprintf declaration, if available. */ +#include <stdio.h> + +#if defined HAVE_DECL_SNPRINTF && !HAVE_DECL_SNPRINTF +int snprintf(char *str, size_t size, const char *format, ...); +#endif + +#endif /* SNPRINTF_H */
--- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,7 @@ +2004-09-30 Simon Josefsson <jas@extundo.com> + + * snprintf.m4: New file. + 2004-09-09 Bruno Haible <bruno@clisp.org> * eoverflow.m4: New file, taken from GNU libiconv eilseq.m4 with
new file mode 100644 --- /dev/null +++ b/m4/snprintf.m4 @@ -0,0 +1,17 @@ +# sprintf.m4 serial 1 +dnl Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +AC_DEFUN([gl_FUNC_SNPRINTF], +[ + AC_REPLACE_FUNCS(snprintf) + AC_CHECK_DECLS_ONCE(snprintf) + gl_PREREQ_SNPRINTF +]) + +# Prerequisites of lib/snprintf.c. +AC_DEFUN([gl_PREREQ_SNPRINTF], [:])
new file mode 100644 --- /dev/null +++ b/modules/snprintf @@ -0,0 +1,23 @@ +Description: +snprintf() function: print formatted output to a fixed length string + +Files: +lib/snprintf.h +lib/snprintf.c +m4/snprintf.m4 + +Depends-on: +vasnprintf +minmax + +configure.ac: +gl_FUNC_SNPRINTF + +Makefile.am: +lib_SOURCES += snprintf.h + +Include: +"snprintf.h" + +Maintainer: +Simon Josefsson