thanks to the nice property of my reimplementation of getn to also
return a value in case of an error (0 or the partial result, which is the full result in case of trailing junk even), using it to rid atoi() is possible, saving 9t 4d 1i
This commit is contained in:
parent
d91d7feff0
commit
a1ff719ba4
4
exec.c
4
exec.c
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.17 2006/11/10 01:44:39 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.18 2006/11/10 04:03:58 tg Exp $");
|
||||||
|
|
||||||
static int comexec(struct op *, struct tbl *volatile, char **,
|
static int comexec(struct op *, struct tbl *volatile, char **,
|
||||||
int volatile);
|
int volatile);
|
||||||
@ -1216,7 +1216,7 @@ do_selectargs(char **ap, bool print_menu)
|
|||||||
return NULL;
|
return NULL;
|
||||||
s = str_val(global("REPLY"));
|
s = str_val(global("REPLY"));
|
||||||
if (*s) {
|
if (*s) {
|
||||||
i = atoi(s);
|
getn(s, &i);
|
||||||
return (i >= 1 && i <= argct) ? ap[i - 1] : null;
|
return (i >= 1 && i <= argct) ? ap[i - 1] : null;
|
||||||
}
|
}
|
||||||
print_menu = 1;
|
print_menu = 1;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.28 2006/11/10 03:50:05 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.29 2006/11/10 04:03:59 tg Exp $");
|
||||||
|
|
||||||
#if !defined(__sun__)
|
#if !defined(__sun__)
|
||||||
#define DO_HISTORY
|
#define DO_HISTORY
|
||||||
@ -481,8 +481,9 @@ findhistrel(const char *str)
|
|||||||
{
|
{
|
||||||
int maxhist = histptr - history;
|
int maxhist = histptr - history;
|
||||||
int start = maxhist - 1;
|
int start = maxhist - 1;
|
||||||
int rec = atoi(str);
|
int rec;
|
||||||
|
|
||||||
|
getn(str, &rec);
|
||||||
if (rec == 0)
|
if (rec == 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (rec > 0) {
|
if (rec > 0) {
|
||||||
|
6
jobs.c
6
jobs.c
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.12 2006/11/09 22:08:07 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.13 2006/11/10 04:03:59 tg Exp $");
|
||||||
|
|
||||||
/* Order important! */
|
/* Order important! */
|
||||||
#define PRUNNING 0
|
#define PRUNNING 0
|
||||||
@ -1302,7 +1302,7 @@ j_lookup(const char *cp, int *ecodep)
|
|||||||
int len, job = 0;
|
int len, job = 0;
|
||||||
|
|
||||||
if (digit(*cp)) {
|
if (digit(*cp)) {
|
||||||
job = atoi(cp);
|
getn(cp, &job);
|
||||||
/* Look for last_proc->pid (what $! returns) first... */
|
/* Look for last_proc->pid (what $! returns) first... */
|
||||||
for (j = job_list; j != NULL; j = j->next)
|
for (j = job_list; j != NULL; j = j->next)
|
||||||
if (j->last_proc && j->last_proc->pid == job)
|
if (j->last_proc && j->last_proc->pid == job)
|
||||||
@ -1336,7 +1336,7 @@ j_lookup(const char *cp, int *ecodep)
|
|||||||
|
|
||||||
case '0': case '1': case '2': case '3': case '4':
|
case '0': case '1': case '2': case '3': case '4':
|
||||||
case '5': case '6': case '7': case '8': case '9':
|
case '5': case '6': case '7': case '8': case '9':
|
||||||
job = atoi(cp);
|
getn(cp, &job);
|
||||||
for (j = job_list; j != NULL; j = j->next)
|
for (j = job_list; j != NULL; j = j->next)
|
||||||
if (j->job == job)
|
if (j->job == job)
|
||||||
return j;
|
return j;
|
||||||
|
17
misc.c
17
misc.c
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.31 2006/11/10 03:54:38 tg Exp $\t"
|
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.32 2006/11/10 04:03:59 tg Exp $\t"
|
||||||
MKSH_SH_H_ID);
|
MKSH_SH_H_ID);
|
||||||
|
|
||||||
unsigned char chtypes[UCHAR_MAX + 1]; /* type bits for unsigned char */
|
unsigned char chtypes[UCHAR_MAX + 1]; /* type bits for unsigned char */
|
||||||
@ -416,7 +416,7 @@ parse_args(char **argv,
|
|||||||
int
|
int
|
||||||
getn(const char *s, int *ai)
|
getn(const char *s, int *ai)
|
||||||
{
|
{
|
||||||
int i, c;
|
int i, c, rv = 0;
|
||||||
bool neg = false;
|
bool neg = false;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@ -427,19 +427,22 @@ getn(const char *s, int *ai)
|
|||||||
c = *s++;
|
c = *s++;
|
||||||
} else if (c == '+')
|
} else if (c == '+')
|
||||||
c = *s++;
|
c = *s++;
|
||||||
i = 0;
|
*ai = i = 0;
|
||||||
do {
|
do {
|
||||||
*ai = i;
|
|
||||||
if (!isdigit(c))
|
if (!isdigit(c))
|
||||||
return (0);
|
goto getn_out;
|
||||||
i *= 10;
|
i *= 10;
|
||||||
if (i < *ai)
|
if (i < *ai)
|
||||||
/* overflow */
|
/* overflow */
|
||||||
return (0);
|
goto getn_out;
|
||||||
i += c - '0';
|
i += c - '0';
|
||||||
|
*ai = i;
|
||||||
} while ((c = *s++));
|
} while ((c = *s++));
|
||||||
|
rv = 1;
|
||||||
|
|
||||||
*ai = neg ? -i : i;
|
getn_out:
|
||||||
|
if (neg)
|
||||||
|
*ai = -*ai;
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user