VALUE *v;
if (argc == 1) {
- error_msg_and_die("too few arguments");
+ bb_error_msg_and_die("too few arguments");
}
args = argv + 1;
v = eval ();
if (*args)
- error_msg_and_die ("syntax error");
+ bb_error_msg_and_die ("syntax error");
if (v->type == integer)
printf ("%d\n", v->u.i);
- else
- printf ("%s\n", v->u.s);
+ else
+ puts (v->u.s);
exit (null (v));
}
static void tostring (VALUE *v)
{
- char *temp;
-
if (v->type == integer) {
- temp = xmalloc (4 * (sizeof (int) / sizeof (char)));
- sprintf (temp, "%d", v->u.i);
- v->u.s = temp;
+ bb_xasprintf (&(v->u.s), "%d", v->u.i);
v->type = string;
}
}
/* The comparison operator handling functions. */
#define cmpf(name, rel) \
-static int name (l, r) VALUE *l; VALUE *r; \
+static int name (VALUE *l, VALUE *r) \
{ \
if (l->type == string || r->type == string) { \
tostring (l); \
#define arithf(name, op) \
static \
-int name (l, r) VALUE *l; VALUE *r; \
+int name (VALUE *l, VALUE *r) \
{ \
if (!toarith (l) || !toarith (r)) \
- error_msg_and_die ("non-numeric argument"); \
+ bb_error_msg_and_die ("non-numeric argument"); \
return l->u.i op r->u.i; \
}
#define arithdivf(name, op) \
-static int name (l, r) VALUE *l; VALUE *r; \
+static int name (VALUE *l, VALUE *r) \
{ \
if (!toarith (l) || !toarith (r)) \
- error_msg_and_die ( "non-numeric argument"); \
+ bb_error_msg_and_die ( "non-numeric argument"); \
if (r->u.i == 0) \
- error_msg_and_die ( "division by zero"); \
+ bb_error_msg_and_die ( "division by zero"); \
return l->u.i op r->u.i; \
}
re_syntax_options = RE_SYNTAX_POSIX_BASIC;
errmsg = re_compile_pattern (pv->u.s, len, &re_buffer);
if (errmsg) {
- error_msg_and_die("%s", errmsg);
+ bb_error_msg_and_die("%s", errmsg);
}
len = re_match (&re_buffer, sv->u.s, strlen (sv->u.s), 0, &re_regs);
VALUE *v;
if (!*args)
- error_msg_and_die ( "syntax error");
+ bb_error_msg_and_die ( "syntax error");
if (nextarg ("(")) {
args++;
v = eval ();
if (!nextarg (")"))
- error_msg_and_die ( "syntax error");
+ bb_error_msg_and_die ( "syntax error");
args++;
return v;
}
if (nextarg (")"))
- error_msg_and_die ( "syntax error");
+ bb_error_msg_and_die ( "syntax error");
return str_value (*args++);
}
if (nextarg ("quote")) {
args++;
if (!*args)
- error_msg_and_die ( "syntax error");
+ bb_error_msg_and_die ( "syntax error");
return str_value (*args++);
}
else if (nextarg ("length")) {
else {
v = xmalloc (sizeof(VALUE));
v->type = string;
- v->u.s = strncpy ((char *) xmalloc (i2->u.i + 1),
- l->u.s + i1->u.i - 1, i2->u.i);
- v->u.s[i2->u.i] = 0;
+ v->u.s = bb_xstrndup(l->u.s + i1->u.i - 1, i2->u.i);
}
freev (l);
freev (i1);
static VALUE *eval4 (void)
{
VALUE *l, *r;
- int (*fxn) (), val;
+ int (*fxn) (VALUE *, VALUE *), val;
l = eval5 ();
while (1) {
static VALUE *eval3 (void)
{
VALUE *l, *r;
- int (*fxn) (), val;
+ int (*fxn) (VALUE *, VALUE *), val;
l = eval4 ();
while (1) {
static VALUE *eval2 (void)
{
VALUE *l, *r;
- int (*fxn) (), val;
+ int (*fxn) (VALUE *, VALUE *), val;
l = eval3 ();
while (1) {