delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2002/11/24/04:25:30

Message-ID: <000f01c2939b$5e7057f0$0100a8c0@p4>
From: "Andrew Cottrell" <acottrel AT ihug DOT com DOT au>
To: <djgpp-workers AT delorie DOT com>
Subject: Re: LIBC 2.04 new function atoll() and STDLIB long long changes
Date: Sun, 24 Nov 2002 20:24:32 +1100
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1123
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1123
Reply-To: djgpp-workers AT delorie DOT com

As I understand it from the way the thread ended a few weeks ago regarding
the changes below they should be okay to put in.

I checked out the CVS code and spotted that atoll.c and atoll.txh are not in
CVS.

Could someone with access please check the updated fiels into CVS.

Thanks,
Andrew


----- Original Message ----- 
From: "Andrew Cottrell" <acottrel AT ihug DOT com DOT au>
To: <djgpp-workers AT delorie DOT com>
Sent: Sunday, November 03, 2002 3:20 PM
Subject: LIBC 2.04 new function atoll() and STDLIB long long changes


> This is try #2 for atoll() as the C99 standard has the definition 'long
long
> int' not 'long long' and now includes other changes for C99 'long long
int'
> defintions.
>
> Below are atoll.c and atoll.txh, which together implement the missing
> atoll() function. I copied the existing atol.c and atol.txh and made
> hopefully the correct changes. Please let me know if I have made any
> mistakes as I don't know if I got the compatability right.
>
> These were all the changes I could see in the stdlib.h and
> src\libc\ansi\stdlib directory
>
> The patches for the following files are after the new files
>     src\libc\ansi\stdlib\makefile
>     src\libc\ansi\stdlib\strtoll.c
>     src\libc\ansi\stdlib\strtoll.txh
>     src\libc\ansi\stdlib\strtoull.c
>     src\libc\ansi\stdlib\strtoull.txh
>     src\libc\ansi\stdlib\llabs.c
>     src\libc\ansi\stdlib\llabs.txh
>     src\libc\ansi\stdlib\lldiv.c
>     src\libc\ansi\stdlib\lldiv.txh
>
> I used the C99 draft of 18-Jan-1999 to check what needed to be changed.
>
> =============== START NEW FILE src\libc\ansi\stdlib\atoll.c
> ====================
> /* Copyright (C) 2002 DJ Delorie, see COPYING.DJ for details */
> #include <stdlib.h>
>
> long long int
> atoll(const char *str)
> {
>   return strtoll(str, 0, 10);
> }
>
>  ==================== END atoll.c ====================
> =============== START NEW FILE src\libc\ansi\stdlib\atoll.txh
> ====================
> @node atoll, string
> @subheading Syntax
>
> @example
> #include <stdlib.h>
>
> long long int atoll(const char *string);
> @end example
>
> @subheading Description
>
> Convert as much of the string as possible to an equivalent long long
integer
> value.
>
> This function is almost like @code{strtoll(string, NULL, 10)}
> (@pxref{strtol}).
>
> @subheading Return Value
>
> The equivalent value, or zero if the string does not represent a number.
>
> @subheading Portability
>
> @portability !ansi-c89, ansi-c99, !posix
>
> @subheading Example
>
> @example
> main(int argc, char **argv)
> @{
>   long long int l = atoll(argv[1]);
>   @dots{}
> @end example
>
> ==================== END atoll.txh ===================
>
> ============= START of PATCHES ====================
> *** old\src\libc\ansi\stdlib\makefile Fri Oct 18 09:00:24 2002
> --- src\libc\ansi\stdlib\makefile Sun Nov  3 14:57:10 2002
> ***************
> *** 10,15 ****
> --- 10,16 ----
>   SRC += atof.c
>   SRC += atoi.c
>   SRC += atol.c
> + SRC += atoll.c
>   SRC += atold.c
>   SRC += bsearch.c
>   SRC += calloc.c
>
> *** old\src\libc\ansi\stdlib\strtoll.c Fri Oct 18 09:00:24 2002
> --- src\libc\ansi\stdlib\strtoll.c Sun Nov  3 14:57:10 2002
> ***************
> *** 1,3 ****
> --- 1,4 ----
> + /* Copyright (C) 2002 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 2001 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1999 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
> ***************
> *** 8,20 ****
>   #include <stdlib.h>
>   #include <libc/unconst.h>
>
> ! long long
>   strtoll(const char *nptr, char **endptr, int base)
>   {
>     const unsigned char *s = (const unsigned char *) nptr;
> !   unsigned long long acc;
>     unsigned char c;
> !   unsigned long long cutoff;
>     int neg = 0, any, cutlim;
>
>     /*
> --- 9,21 ----
>   #include <stdlib.h>
>   #include <libc/unconst.h>
>
> ! long long int
>   strtoll(const char *nptr, char **endptr, int base)
>   {
>     const unsigned char *s = (const unsigned char *) nptr;
> !   unsigned long long int acc;
>     unsigned char c;
> !   unsigned long long int cutoff;
>     int neg = 0, any, cutlim;
>
>     /*
> *** old\src\libc\ansi\stdlib\strtoll.txh Mon Sep 28 01:20:54 1998
> --- src\libc\ansi\stdlib\strtoll.txh Sun Nov  3 14:26:06 2002
> ***************
> *** 4,10 ****
>   @example
>   #include <stdlib.h>
>
> ! long long strtoll(const char *s, char **endp, int base);
>   @end example
>
>   @subheading Description
> --- 4,10 ----
>   @example
>   #include <stdlib.h>
>
> ! long long int strtoll(const char *s, char **endp, int base);
>   @end example
>
>   @subheading Description
> ***************
> *** 25,31 ****
>
>   @subheading Portability
>
> ! @portability !ansi, !posix
>
>   @subheading Example
>
> --- 25,31 ----
>
>   @subheading Portability
>
> ! @portability !ansi-c89, ansi-c99, !posix
>
>   @subheading Example
>
> *** old\src\libc\ansi\stdlib\strtoull.c Fri Oct 18 09:00:24 2002
> --- src\libc\ansi\stdlib\strtoull.c Sun Nov  3 14:57:20 2002
> ***************
> *** 1,3 ****
> --- 1,4 ----
> + /* Copyright (C) 2002 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 2001 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1999 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
> ***************
> *** 14,26 ****
>    * Ignores `locale' stuff.  Assumes that the upper and lower case
>    * alphabets and digits are each contiguous.
>    */
> ! unsigned long long
>   strtoull(const char *nptr, char **endptr, int base)
>   {
>     const unsigned char *s = (const unsigned char*) nptr;
> !   unsigned long long acc;
>     unsigned char c;
> !   unsigned long long cutoff;
>     int neg = 0, any, cutlim;
>
>     /*
> --- 15,27 ----
>    * Ignores `locale' stuff.  Assumes that the upper and lower case
>    * alphabets and digits are each contiguous.
>    */
> ! unsigned long long int
>   strtoull(const char *nptr, char **endptr, int base)
>   {
>     const unsigned char *s = (const unsigned char*) nptr;
> !   unsigned long long int acc;
>     unsigned char c;
> !   unsigned long long int cutoff;
>     int neg = 0, any, cutlim;
>
>     /*
> ***************
> *** 45,52 ****
>     }
>     if (base == 0)
>       base = c == '0' ? 8 : 10;
> !   cutoff = (unsigned long long)ULLONG_MAX / base;
> !   cutlim = (unsigned long long)ULLONG_MAX % base;
>     for (acc = 0, any = 0; ; c = *s++)
>     {
>       if (isdigit(c))
> --- 46,53 ----
>     }
>     if (base == 0)
>       base = c == '0' ? 8 : 10;
> !   cutoff = (unsigned long long int)ULLONG_MAX / base;
> !   cutlim = (unsigned long long int)ULLONG_MAX % base;
>     for (acc = 0, any = 0; ; c = *s++)
>     {
>       if (isdigit(c))
> *** old\src\libc\ansi\stdlib\strtoull.txh Mon Sep 28 01:20:56 1998
> --- src\libc\ansi\stdlib\strtoull.txh Sun Nov  3 14:27:36 2002
> ***************
> *** 4,10 ****
>   @example
>   #include <stdlib.h>
>
> ! unsigned long long strtoull(const char *s, char **endp, int base);
>   @end example
>
>   @subheading Description
> --- 4,10 ----
>   @example
>   #include <stdlib.h>
>
> ! unsigned long long int strtoull(const char *s, char **endp, int base);
>   @end example
>
>   @subheading Description
> ***************
> *** 18,24 ****
>
>   @subheading Portability
>
> ! @portability !ansi, !posix
>
>   @subheading Example
>
> --- 18,24 ----
>
>   @subheading Portability
>
> ! @portability !ansi-c89, ansi-c99, !posix
>
>   @subheading Example
>
> *** old\src\libc\ansi\stdlib\llabs.c Sun May 19 04:50:02 1996
> --- src\libc\ansi\stdlib\llabs.c Sun Nov  3 14:56:56 2002
> ***************
> *** 1,9 ****
>   /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
>   #include <stdlib.h>
>
> ! long long
> ! llabs(long long j)
>   {
>     return j<0 ? -j : j;
>   }
> --- 1,10 ----
> + /* Copyright (C) 2002 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
>   #include <stdlib.h>
>
> ! long long int
> ! llabs(long long int j)
>   {
>     return j<0 ? -j : j;
>   }
> *** old\src\libc\ansi\stdlib\llabs.txh Mon Sep 28 01:20:54 1998
> --- src\libc\ansi\stdlib\llabs.txh Sun Nov  3 14:43:14 2002
> ***************
> *** 4,10 ****
>   @example
>   #include <stdlib.h>
>
> ! long long llabs(long long x);
>   @end example
>
>   @subheading Description
> --- 4,10 ----
>   @example
>   #include <stdlib.h>
>
> ! long long int llabs(long long x);
>   @end example
>
>   @subheading Description
> ***************
> *** 18,22 ****
>
>   @subheading Portability
>
> ! @portability !ansi, !posix
>
> --- 18,23 ----
>
>   @subheading Portability
>
> ! @portability !ansi-c89, ansi-c99, !posix
> !
>
> *** old\src\libc\ansi\stdlib\lldiv.c Sun May 19 04:53:42 1996
> --- src\libc\ansi\stdlib\lldiv.c Sun Nov  3 14:44:20 2002
> ***************
> *** 1,9 ****
>   /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
>   #include <stdlib.h>
>
>   lldiv_t
> ! lldiv(long long num, long long denom)
>   {
>     lldiv_t r;
>
> --- 1,10 ----
> + /* Copyright (C) 2002 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
>   /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
>   #include <stdlib.h>
>
>   lldiv_t
> ! lldiv(long long int num, long long int denom)
>   {
>     lldiv_t r;
>
> *** old\src\libc\ansi\stdlib\lldiv.txh Mon Sep 28 01:20:54 1998
> --- src\libc\ansi\stdlib\lldiv.txh Sun Nov  3 14:44:56 2002
> ***************
> *** 4,10 ****
>   @example
>   #include <stdlib.h>
>
> ! lldiv_t lldiv(long long numerator, long long denominator);
>   @end example
>
>   @subheading Description
> --- 4,10 ----
>   @example
>   #include <stdlib.h>
>
> ! lldiv_t lldiv(long long int numerator, long long int denominator);
>   @end example
>
>   @subheading Description
> ***************
> *** 14,21 ****
>
>   @example
>   typedef struct @{
> !   long long quot;
> !   long long rem;
>   @} lldiv_t;
>   @end example
>
> --- 14,21 ----
>
>   @example
>   typedef struct @{
> !   long long int quot;
> !   long long int rem;
>   @} lldiv_t;
>   @end example
>
>
>


- Raw text -


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