Beispiel #1
0
short Dget2(u_char *ret_buffer, mvar *var, cstring *expr)
{ short s;					// for return values 
  if (var->uci == UCI_IS_LOCALVAR)		// for a local var
  { s = ST_Get(var, ret_buffer);		// attempt to get the data
    if (s >= 0) return s;			// if we got data, return it
    if (s == -(ERRM6)) s = 0;			// flag undefined local var
  }
  else if (var->name.var_cu[0] == '$') 		// ssvn?
  { s = SS_Get(var, ret_buffer);		// attempt to get the data
    if (s >= 0) return s;			// if we got data, return it
    if ((s == -(ERRM38)) || (s == -(ERRM7)))
      s = 0;					// flag undefined ssvn
  }
  else						// for a global var
  { bcopy( var, &(partab.jobtab->last_ref), sizeof(var_u) + 5 + var->slen);
    s = DB_Get(var, ret_buffer);		// attempt to get the data
    if (s >= 0) return s;			// if we got data, return it
    if (s == -(ERRM7)) s = 0;			// flag undefined global var
  }
  if (s != 0) return s;				// if an error, return it
  bcopy( &expr->buf[0],                         // copy from here
         &ret_buffer[0],                      	// to here
         expr->len);                            // this many bytes
  ret_buffer[expr->len] = '\0';			// ensure null terminated
  return (expr->len);				// and return the length
}
Beispiel #2
0
const char* GetSegName (segment_t Seg)
/* Get the name of the given segment */
{
    return SS_Get (&SegmentNames[Seg]);
}