diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-03-06 08:17:54 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-03-06 08:17:54 +0000 |
commit | a36e0c78c90917c4d5cc78f67b3808913795f264 (patch) | |
tree | 81deaaa0cacb33bd81163aac0a358755c85df2cd /missing/strtol.c | |
parent | 4a7d313e4a263f5c2f2f42dd573fa612f0d0c0a7 (diff) | |
download | ruby-a36e0c78c90917c4d5cc78f67b3808913795f264.tar.gz |
* parse.y (primary): rescue and ensure clauses should be allowed
to appear in singleton method body.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'missing/strtol.c')
-rw-r--r-- | missing/strtol.c | 89 |
1 files changed, 17 insertions, 72 deletions
diff --git a/missing/strtol.c b/missing/strtol.c index 4941f43b91..e94aa54ca0 100644 --- a/missing/strtol.c +++ b/missing/strtol.c @@ -1,84 +1,29 @@ -/* - * strtol.c -- - * - * Source code for the "strtol" library procedure. - * - * Copyright 1988 Regents of the University of California - * Permission to use, copy, modify, and distribute this - * software and its documentation for any purpose and without - * fee is hereby granted, provided that the above copyright - * notice appear in all copies. The University of California - * makes no representations about the suitability of this - * software for any purpose. It is provided "as is" without - * express or implied warranty. - */ +/* public domain rewrite of strtol(3) */ #include <ctype.h> - -/* - *---------------------------------------------------------------------- - * - * strtol -- - * - * Convert an ASCII string into an integer. - * - * Results: - * The return value is the integer equivalent of string. If endPtr - * is non-NULL, then *endPtr is filled in with the character - * after the last one that was part of the integer. If string - * doesn't contain a valid integer value, then zero is returned - * and *endPtr is set to string. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - -long int -strtol(string, endPtr, base) - char *string; /* String of ASCII digits, possibly - * preceded by white space. For bases - * greater than 10, either lower- or - * upper-case digits may be used. - */ - char **endPtr; /* Where to store address of terminating - * character, or NULL. */ - int base; /* Base for conversion. Must be less - * than 37. If 0, then the base is chosen - * from the leading characters of string: - * "0x" means hex, "0" means octal, anything - * else means decimal. - */ +long +strtol(nptr, endptr, base) + char *nptr; + char **endptr; + int base; { - register char *p; - int result; - - /* - * Skip any leading blanks. - */ + long result; + char *p = nptr; - p = string; while (isspace(*p)) { - p += 1; + p++; } - - /* - * Check for a sign. - */ - if (*p == '-') { - p += 1; - result = -(strtoul(p, endPtr, base)); - } else { - if (*p == '+') { - p += 1; - } - result = strtoul(p, endPtr, base); + p++; + result = -strtoul(p, endptr, base); + } + else { + if (*p == '+') p++; + result = strtoul(p, endptr, base); } - if ((result == 0) && (endPtr != 0) && (*endPtr == p)) { - *endPtr = string; + if (endptr != 0 && *endptr == p) { + *endptr = nptr; } return result; } |