home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
316.lha
/
EtaleFileReader
/
tnump.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-11-30
|
1KB
|
53 lines
/* tnump.c -- (part of efr) Copyright © 1989 by William F. Hammond */
/* -- parse string for first number ignoring leading white- */
/* -- space, i.e., " ", 0x09, "/", "*", ";", and "'" */
#ifndef TDM_H
#include "tdm.h"
#endif
#define MAXNPSTR 10
LONG tnump(numstr)
UBYTE *numstr;
{
LONG lnum; /* that which is returned */
SHORT jnp, knp;
int npsln;
UBYTE sgnflg, numflg, *nps;
lnum = -1L;
nps = numstr;
npsln = strlen(nps);
if (npsln <= 0) return 0L;
numflg = NULB;
sgnflg = 0;
jnp = 0;
while(jnp < npsln)
{
if( (nps[jnp]==' ') || (nps[jnp]==0x09) || (nps[jnp]=='/')
|| (nps[jnp]=='*') || (nps[jnp]==';') || (nps[jnp]=='\'') )
{
if(numflg) break;
nps++;
}
else if( (nps[jnp] < '0') || (nps[jnp] > '9') )
{
break;
}
else
{
numflg = ONEB;
jnp ++;
}
}
if(numflg == NULB) return 0L;
if(jnp == 0) return 0L;
/* The passed string is OK */
lnum = 0L;
knp = 0;
if(jnp > MAXNPSTR) return 0L;
while(knp < jnp)
{
lnum = 10L * lnum + (LONG)(nps[knp] - '0');
knp ++;
}
return lnum;
}