delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/03/01/08:51:29

From: "Rafael García" <rafael AT geninfor DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: RE: atoi() with 8 bit chars
Date: Thu, 1 Mar 2001 14:44:03 +0100
Organization: BT Tel. Netnews service (readers)
Lines: 58
Message-ID: <3a9e528a$1@filemon.telecable.es>
References: <3a9cf8f1$1 AT filemon DOT telecable DOT es> <1438-Wed28Feb2001223955+0200-eliz AT is DOT elta DOT co DOT il>
NNTP-Posting-Host: filemon.telecable.es
Mime-Version: 1.0
X-Trace: titan.bt.es 983454250 13500 212.89.0.4 (1 Mar 2001 13:44:10 GMT)
X-Complaints-To: abuse AT bt DOT es
NNTP-Posting-Date: 1 Mar 2001 13:44:10 GMT
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2615.200
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200
X-Original-NNTP-Posting-Host: cm05118.telecable.es
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Eli Zaretskii <eliz AT is DOT elta DOT co DOT il> escribió en el mensaje de noticias
1438-Wed28Feb2001223955+0200-eliz AT is DOT elta DOT co DOT il...
> It's a bug in the library; thanks for reporting it.  Here's a patch
> for the strtol function which is responsible for this bug:
> .........

I don't know how to aply that. I only have binary version of the compiler.
Nor I am interested in substitute all the compiler instalations I can use.

I prefer to patch my own source when compiling with DJGPP:

In a general header I have put:

#ifdef __DJGPP__
#define atol myatol
#define atoi (int)myatol
#define strtol mystrtol
#endif

Then, all the source code stay untouched, except one file that includes
this:

#ifdef __DJGPP__

#undef atol        // now I have to call original ones
#undef atoi
#undef strtol

long myatol(const char *s) {
   while (isspace(*s)) s++;
   if (*s & 0x80) return 0;
   else return atol(s);
   }

long mystrtol(const char *s, char **endp, int base) {
   while (isspace(*s)) s++;
   if (*s & 0x80) {
      if (endp) *endp=s;
      return 0;
      }
   else return strtol(s,endp,base);
   }

#endif


Well, this works ok, but I have two questions:

1) How can I remove "assignment discards qualifiers from pointer target
type" warning at
"*endp=s" line?

2) Is it possible to know library version, to not use this patch when not
necessary?...
Something like #if defined(__DJGPP__) && (__DJGPPVER__<XXX)


- Raw text -


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