ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2008/05/13/12:35:13.1

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
Message-Id: <200805131628.m4DGSMsN007756@delorie.com>
X-Recipient: djgpp-announce AT delorie DOT com
X-Authenticated: #27081556
X-Provags-ID: V01U2FsdGVkX18szhZhT3Ys5t8m0pibuZ9p55Yq81e1YrUNSHpyGd
jI6jSeV/e6rBu/
From: Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
To: djgpp-announce AT delorie DOT com
Subject: ANNOUNCE: libsupp 4.0 for DJGPP 2.03 and 2.04 uploaded.
Date: Tue, 13 May 2008 14:38:41 +0200
X-Y-GMX-Trusted: 0
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id m4DCXr1u010691

This is libsupp 4.0 for MSDOS/DJGPP.


1.:    Introduction.
       =============

       This is a support library for DJGPP 2.04 and 2.03.  It shall provide a
       small set of new functions that still have not been implemented for DJGPP
       or improved versions of functions from DJGPP's CVS source tree so that
       the original functions provided with DJGPP's libc.a (2.04 and 2.03) can
       be replaced with these new ones.
       The decision which function is part and which one is not part of this
       library is based on the usefullnes for porting current GNU packages.  If
       the amount of provided functions increases in the future will depend on
       the requirements of the GNU packages to be ported.

       The following functions have been implemented to improve compatibility
       with GNU glibc:
         strndup()
         strnlen()

       The following functions have already been provided in previous versions
       of this library:
         argz_add()
         argz_add_sep()
         argz_append()
         argz_count()
         argz_create()
         argz_createsep()
         argz_delete()
         argz_extract()
         argz_insert()
         argz_next()
         argz_replace()
         argz_stringify()
         strtod()
         strtof()
         strtold()
         signbit()
         __signbitd()
         __signbitf()
         __signbitld()
         asnprintf()
         asprintf()
         cprintf()
         fprintf()
         fseeko()
         ftello()
         printf()
         snprintf()
         sprintf()
         vasnprintf()
         vasprintf()
         vfprintf()
         vprintf()
         vsnprntf()
         vsprintf()
         _doprnt()

       The argz functions store strings in a contiguous chunk of memory using
       '\0' as separator token. They are GNU extensions to glibc and have been
       implemented to make porting easier.

       The strto[dfld] functions now support the conversion of the hex format
       strings like this:
         "0xh.hhhhP[+|-]ddd"
       into variables of the type float, double and long double.

       signbit returns 0 if the sign of the mantissa of a floating point number
       is positive; if the sign is negative it returns non-zero.  __signbit[dfld]
       are the internal implementations and should not be called except through
       the macro signbit.

       fseeko() and ftello() are wrappers for fseek() and ftell().

       Apart from the features already provided by the familiy of printf()
       functions from djdev204, this version of the functions will provide:
         1: Flags.
            ': This flag allows to format the integer part with the thousands'
               character.  Because DJGPP only offers C/POSIX locale and this
               do not define a thousands' character the flag is ignored.
         2: Length modifiers.
            DJGPP provides all of them.
         3: Conversion specifiers.
            %F: 'F' Has been added and works like 'f'.
         %[aA]: With this conversion specifier a floating point number will be
                converted in the style "[-]0xh.hhhhp$-3õ½d", where h are hexadecimal
                digits, p stands for the power of 2 and d is exponent expressed
                in decimal digits.  %a prints lower case characters and %A
                prints upper case characters.
           %n$: This implementation of printf family of functions also supports
           *n$  numbered conversion specifiers (%n$ for defining the position
                of the argument to be printed in the argument list, and *n$ for
                defining the position of the field width and precision to be
                used in the argument list).
         4: To increase compatibility with glibc's printf, _doprnt() has been
            changed to return for 80 bit floating point numbers starting with
            0 integer bit and non-zero exponent (Pseudo-NaN, Pseudo-Infinity,
            Pseudo-Zero and denormalized numbers (unnormal)) "nan" or "NAN"
            instead of "Unnormal" as used to be.  This may break backward
            compatibility but makes it easier to port GNU programs.

       To be able to use the new functions you will have to include the header
       (libsupp.h) in your source code.  This header will provide the macros
       to map the conventional function names to their real library names.
       All library names start with the prefix "libsupp_".  E.g.:
         printf --> libsupp_printf
       If you still use djdev203 then the header will also provide the data
       types definitions for intmax_t and uintmax_t.  The definitios have been
       taken from stdint.h and I have not been able to figure out a way to
       check if your code already provides a definition of these data types,
       so these are always defined and this may trigger warnings or errors when
       your code is compiled.  If this happens it will be your job to fix your
       code.

       Because the provided functions depend on other libc functions, this
       library must be linked before the standard C library, libc.a, is linked
       into your programs by gcc.  E.g.:
         gcc -Wall -O2 prog.c -lsupp

       The /diffs directory contains two patches that documents the changes I
       have done.  The diffs-cvs patch shows all changes I have done against
       the sources of the CVS tree as checked out on 2008-03-10.  The second
       patch is diffs-lib and shows the changes against the *patched* checked
       out CVS sources that are required to create the sources of this library.
       It is your choice if you prefer to check out the CVS sources, patch them
       and build your own libc.a with the proposed new functionality or if you
       prefer to use this library.




2.:    Installation.
       =============

       The binary package provides a header file, libsupp.h, the library file,
       libsupp.a, and the info docs.  All this is installed in the standard
       places of your DJGPP installation tree.  Copy the binary distribution
       into the top DJGPP installation directory, just unzip it preserving
       the directory structure running *one* of the following commands:
         unzip32 lsupp40a.zip      or
         djtarx lsupp40a.zip       or
         pkunzip -d lsupp40a.zip
       You must add an entry in your /info/dir file to be able to read the
       docs.  Edit manually your /info/dir and add the following lines:

>From lsuppNNa.zip

* libsupp.a: (libsupp).
	The Support Library Reference




3.:    Building the binaries from sources.
       ===================================

       The library can *only* be build with *djdev204*.

3.1.:  Create a temporary directory and copy the source package into the
       directory.  Just unzip it preserving the directory structure running
       *one* of the following commands:
         unzip32 lsupp40s.zip      or
         djtarx lsupp40s.zip       or
         pkunzip -d lsupp40s.zip

3.2.:  To build the library cd into the top srcdir and run the shell script
       like this:
         sh mklib.sh
       The script accepts only a single optional argument that specifies the
       installation directory.  If it is omitted the products will be stored
       in the /_build_ directory created in the top srcdir.
       The script will build the library and the info docs; if everything is
       successfully build then the test program in the /tests directory is
       build and started.  The output of the test program ist stored in
       /tests/test.txt for inspection.  During the building of the test
       program a lot of warnings will appear.  This is intentional to test
       that the compiler recognizes the new functions as functions of the type
       of *printf family and produces the typical warnings if flag combinations
       are used that are not allowed or defined.

       You *cannot* build the library with djdev203.  If you want to run the
       test program with djdev203 and the library compile it with a command
       like this:
         gcc -Wall -O2 test.c -o test.exe -lsupp
       start it and inspect the output stored in test.txt.

       The description of printf() can be found at:
         <http://www.opengroup.org/onlinepubs/000095399/functions/printf.html>
       The description of signbit() can be found at:
         <http://www.opengroup.org/onlinepubs/000095399/functions/signbit.html>
       The description of strto[dfld]() can be found at:
         <http://www.opengroup.org/onlinepubs/000095399/functions/strtod.html>



4.:    Downloading.
       ============

       The library consists of two packages that have been compiled using
       djdev204 and that can be downloaded from ftp.delorie.com and mirrors
       as (timestamp 2008-05-11):

         libsupp 4.0 header, lib and info docs:
         ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/lsupp40a.zip

         libsupp 4.0 source:
         ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/lsupp40s.zip




       Send suggestions and bug reports concerning the library to
       comp.os.msdos.djgpp or <djgpp AT delorie DOT com>.


Enjoy.

       Guerrero, Juan Manuel <juan DOT guerrero AT gmx DOT de>

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019