static char *
consume_argument(struct argparse *ap)
{
  char *ret = get_argument(ap);
  delete_argument(ap);
  return ret;
}
Beispiel #2
0
gboolean test_argument(FILE *fp,const char *option,char **result)
{
	char buf[1024];

	while(!feof(fp))
	{
		bzero(buf,sizeof(buf));

		fgets(buf,sizeof(buf)-1,fp);

		/*以#开头的为注释被忽视掉*/
		if(buf[0]=='#')
			continue;

		if(strstr(buf,option))
		{
			*result=get_argument(buf);
			break;
		}
	}

	if(feof(fp))
	{
		fseek(fp,0,SEEK_SET);
		return FALSE;
	}

	fseek(fp,0,SEEK_SET);

	return TRUE;
}
Beispiel #3
0
void		serv_seg(t_on_screen *screen, char *msg)
{
  char		*team;
  SDL_Color	color;
  SDL_Rect	pos;
  SDL_Surface	*victory;

  pos.x = 0;
  pos.y = 0;
  team = get_argument(msg, 2);
  team[n_strlen(team, 1)] = '\0';
  victory = img_load("images/victory.png");
  xsdl_blitsurface(victory, NULL, screen->window, &pos);
  if (TTF_Init() != -1)
    {
      color.r = 250;
      color.g = 250;
      color.b = 0;
      send_team(screen, team, &pos, &color);
      TTF_Quit();
    }
  SDL_FreeSurface(victory);
  xsdl_flip(screen->window);
  SDL_Delay(10000);
}
Beispiel #4
0
static awk_value_t *
test_array_param(int nargs, awk_value_t *result)
{
	awk_value_t new_array;
	awk_value_t arg0;

	(void) nargs;		/* silence warnings */
	make_number(0.0, result);

	if (! get_argument(0, AWK_UNDEFINED, & arg0)) {
		printf("test_array_param: could not get argument\n");
		goto out;
	}

	if (arg0.val_type != AWK_UNDEFINED) {
		printf("test_array_param: argument is not undefined (%d)\n",
				arg0.val_type);
		goto out;
	}

	fill_in_array(& new_array);
	if (! set_argument(0, new_array.array_cookie)) {
		printf("test_array_param: could not change type of argument\n");
		goto out;
	}

	make_number(1.0, result);
out:
	return result;	/* for now */
}
short ListCount::process(SqlciEnv * sqlci_env)
{
  if (!get_argument())
  {
    sqlci_env->setListCount();
  }
  else
  {
    char *tmp;
    ULng32 val = strtoul(get_argument(), &tmp, 10/*decimal base*/);
    if (tmp == get_argument())
      { /* ##?emit an errmsg, illegal value? */ }
    else
      sqlci_env->setListCount(val);
  }
  return 0;
}
Beispiel #6
0
static awk_value_t *
var_test(int nargs, awk_value_t *result)
{
	awk_value_t value, value2;
	awk_value_t *valp;

	assert(result != NULL);
	make_number(0.0, result);

	if (nargs != 1) {
		printf("var_test: nargs not right (%d should be 1)\n", nargs);
		goto out;
	}

	/* look up PROCINFO - should fail */
	if (sym_lookup("PROCINFO", AWK_ARRAY, & value))
		printf("var_test: sym_lookup of PROCINFO failed - got a value!\n");
	else
		printf("var_test: sym_lookup of PROCINFO passed - did not get a value\n");

	/* look up a reserved variable - should pass */
	if (sym_lookup("ARGC", AWK_NUMBER, & value))
		printf("var_test: sym_lookup of ARGC passed - got a value!\n");
	else
		printf("var_test: sym_lookup of ARGC failed - did not get a value\n");

	/* now try to set it - should fail */
	value.num_value++;
	if (sym_update("ARGC", & value))
		printf("var_test: sym_update of ARGC passed and should not have!\n");
	else
		printf("var_test: sym_update of ARGC failed - correctly\n");

	/* look up variable whose name is passed in, should pass */
	if (get_argument(0, AWK_STRING, & value)) {
		if (sym_lookup(value.str_value.str, AWK_STRING, & value2)) {
			/* change the value, should be reflected in awk script */
			valp = make_number(42.0, & value2);

			if (sym_update(value.str_value.str, valp)) {
				printf("var_test: sym_update(\"%s\") succeeded\n", value.str_value.str);
			} else {
				printf("var_test: sym_update(\"%s\") failed\n", value.str_value.str);
				goto out;
			}
		} else {
			printf("var_test: sym_lookup(\"%s\") failed\n", value.str_value.str);
			goto out;
		}
	} else {
		printf("var_test: get_argument() failed\n");
		goto out;
	}

	make_number(1.0, result);
out:
	return result;
}
Beispiel #7
0
void Server::c_cmsg(string msg) {
	string argument = get_argument(msg, 1);
	for (vector<string>::iterator i = channels.begin(); i != channels.end(); i++) {
		if (*i == argument) {
			for (map<string, CList*>::iterator it = chanmap.begin(); it != chanmap.end(); it++ ) {
				if (it->first == argument) {
					say("S_CMSG " + argument);
					for(vector<int>::iterator j = it->second->begin(); j != it->second->end(); j++) {
						say("CMSG " + argument + " " + nick + " " + get_argument(msg, 2), *j);
					}
					return;
				}
			}
		}
	}
	say("E_CMSG " + argument);
	return;
}
Beispiel #8
0
  Array* Arguments::as_array(STATE) {
    Array* ary = Array::create(state, total());

    for(uint32_t i = 0; i < total(); i++) {
      ary->set(state, i, get_argument(i));
    }

    return ary;
  }
Beispiel #9
0
const std::string& ClArgs::get_option_value(
    const std::string& option_name) const
{
    int option_index = find_option(option_name);

    if (option_index >= 0)
        ++option_index;

    return get_argument(option_index);
}
Beispiel #10
0
/**
 * Deletes a file
 */
void console_delete(char *dir, char *command) {
    memset(senddir, 0, 64);
    strcpy(senddir, dir);
    strcat(senddir, "/");
    strcat(senddir, get_argument(command, 1));

    if(!vfs_delete(senddir)) {
        printk("delete: Error deleting file\n");
    }
}
Beispiel #11
0
/**
 * Creates a file
 */
void console_touch(char *dir, char *command) {
    memset(senddir, 0, 64);
    strcpy(senddir, dir);
    strcat(senddir, "/");
    strcat(senddir, get_argument(command, 1));

    if(!vfs_touch(senddir)) {
        printk("touch: Error creating file\n");
    }
}
Beispiel #12
0
void Server::c_join(string msg) {
	string argument = get_argument(msg, 1);
	bool found = false;
	if (chanmap.find(argument) == chanmap.end()) {
		chanmap.insert(make_pair(argument, new CList()));
	}
	for (vector<int>::iterator it = chanmap.find(argument)->second->begin(); it != chanmap.find(argument)->second->end(); it++) {
		if (*it == this->fd) {
			found = true;
		} else {
			say("CMSG " + argument + " JOINS: " + nick + " " + get_argument(msg, 2), *it);
		}
	}
	if (!found) {
		chanmap.find(argument)->second->push_back(this->fd);
	}
	channels.push_back(argument);
	say("SJOIN "+argument);	
}
Beispiel #13
0
static awk_value_t *
do_pg_getvalue(int nargs, awk_value_t *result)
{
  PGresult *res;
  awk_value_t rowarg, colarg;
  int row;
  int col;

  if (do_lint && (nargs > 3))
    lintwarn(ext_id, _("pg_getvalue: called with too many arguments"));

  if (!(res = find_handle(results, 0))) {
    set_ERRNO(_("pg_getvalue called with unknown result handle"));
    RET_NULSTR;
  }

  if (!get_argument(1, AWK_NUMBER, &rowarg)) {
    set_ERRNO(_("pg_getvalue: 2nd argument must be a row number"));
    RET_NULSTR;
  }
  row = rowarg.num_value;

  if (!get_argument(2, AWK_NUMBER, &colarg)) {
    set_ERRNO(_("pg_getvalue: 3rd argument must be a column number"));
    RET_NULSTR;
  }
  col = colarg.num_value;

  if ((row < 0) || (row >= PQntuples(res))) {
    set_ERRNO(_("pg_getvalue: 2nd argument row_number is out of range"));
    RET_NULSTR;
  }

  if ((col < 0) || (col >= PQnfields(res))) {
    set_ERRNO(_("pg_getvalue: 3rd argument col_number is out of range"));
    RET_NULSTR;
  }

  {
    char *val = PQgetvalue(res, row, col);
    return make_string_malloc(val, strlen(val), result);
  }
}
bool IOHandler::fseek_exec()
{
    if (!m_file)
        return false;

    int64_t offset, whence;
    if (!get_argument(offset, whence))
        return false;

    return return_argument(fseek(m_file, offset, whence));
}
Beispiel #15
0
short SetParam::process(SqlciEnv * sqlci_env)
{
  if (get_arglen() == -1)
    {
      // set param to null value
      Param * param = sqlci_env->get_paramlist()->get(param_name);
      if (param)
	param->makeNull();
      else
	{
	  param = new Param(param_name, (char*)0);
	  
	  sqlci_env->get_paramlist()->append(param);
	  param->makeNull();
	}
    }
  else
    if (!get_argument())
    {
      /* RESET PARAM command */
      if (!param_name)
	{
	  /* RESET all params */
	  Param * param = sqlci_env->get_paramlist()->getFirst();
	  while (param)
	    {
	      sqlci_env->get_paramlist()->remove(param->getName());
	      delete param;
	      param = sqlci_env->get_paramlist()->getNext();
	    }
	}
      else
	{
	  Param * param = sqlci_env->get_paramlist()->get(param_name);
	  sqlci_env->get_paramlist()->remove(param_name);
	  delete param;
	 }
    } 
  else
    {
      /* SET PARAM command */
      Param * param = sqlci_env->get_paramlist()->get(param_name);
      if (param) {
	param->setValue(this);
      } else
	{
	  param = new Param(param_name, this);
	  
	  sqlci_env->get_paramlist()->append(param);
	}
    }
  
  return 0;
}
Beispiel #16
0
  void Arguments::unshift(STATE, Object* val) {
    Tuple* tup = Tuple::create_dirty(state, total() + 1);

    tup->put(state, 0, val);

    for(uint32_t i = 0; i < total(); i++) {
      tup->put(state, i + 1, get_argument(i));
    }

    use_tuple(tup, total() + 1);
  }
Beispiel #17
0
static void *
find_handle(strhash *ht, unsigned int argnum)
{
  awk_value_t handle;
  strhash_entry *ent;

  if (!get_argument(argnum, AWK_STRING, &handle))
    return NULL;
  ent = strhash_get(ht, handle.str_value.str, handle.str_value.len, 0);
  return ent ? ent->data : NULL;
}
bool IOHandler::ungetc_exec()
{
    if (!m_file)
        return false;

    int64_t c;
    if (!get_argument(c))
        return false;

    return return_argument(ungetc(c, m_file));
}
Beispiel #19
0
/* Get parameters for calling PQsendQueryParams, PQsendQueryPrepared,
   PQexecParams, and PQexecPrepared.  For these functions, the SQL
   uses $1, $2, ... to represent the parameters, so we map the gawk
   associative array values array[1] -> $1, array[2] -> $2, etc.
   Note that the C API uses C arrays which start with subscript 0,
   so be careful about off-by-one errors. */
static int
get_params(unsigned int nargs, unsigned int argnum, const char ***pvp)
{
  awk_value_t paramValues_array;
  const char **paramValues;
  int nParams;

  {
    awk_value_t nParams_node;
    if (!get_argument(argnum, AWK_NUMBER, &nParams_node))
      return -1;
    nParams = nParams_node.num_value;
  }

  if (nParams < 0)
    return nParams;

  if (!nParams || (argnum+1 >= nargs))
    paramValues = NULL;
  else {
    int i;
    if (!get_argument(argnum+1, AWK_ARRAY, &paramValues_array))
      return -1;
    emalloc(paramValues, const char **, nParams*sizeof(*paramValues),
	    "get_params");
    for (i = 0; i < nParams; i++) {
      awk_value_t idx;
      awk_value_t val;
      /* Must add one when doing the array lookup because, for example, we
         must set paramValues[0] to the value for $1 (which is stored in
	 the gawk array with subscript [1]) */
      if (!get_array_element(paramValues_array.array_cookie,
      			     make_number(i+1, &idx), AWK_STRING, &val))
        paramValues[i] = NULL;
      else
	paramValues[i] = val.str_value.str;
    }
  }
  *pvp = paramValues;
  return nParams;
}
Beispiel #20
0
short SetPattern::process(SqlciEnv * sqlci_env)
{
  if (!get_argument())
    {
      /* RESET PATTERN command */
      if (!pattern_name)
	{
	  /* RESET all patterns */
	  Param * pattern = sqlci_env->get_patternlist()->getFirst();
	  while (pattern)
	    {
	      sqlci_env->get_patternlist()->remove(pattern->getName());
	      delete pattern;
	      pattern = sqlci_env->get_patternlist()->getNext();
	    }
	}
      else
	{
	  Param * pattern = sqlci_env->get_patternlist()->get(pattern_name);
	  sqlci_env->get_patternlist()->remove(pattern_name);
	  delete pattern;
	}
    } 
  else
    {
      /* SET PATTERN command */
      Param * pattern = sqlci_env->get_patternlist()->get(pattern_name);
      if (pattern)
      {
	pattern->setValue(get_argument(), sqlci_env->getTerminalCharset());
      }
      else
	{
	  pattern = new Param(pattern_name, get_argument());
	  
	  sqlci_env->get_patternlist()->append(pattern);
	}
    }
  
  return 0;
}
Beispiel #21
0
  void Arguments::unshift2(STATE, Object* one, Object* two) {
    Tuple* tup = Tuple::create_dirty(state, total() + 2);

    tup->put(state, 0, one);
    tup->put(state, 1, two);

    for(uint32_t i = 0; i < total(); i++) {
      tup->put(state, i + 2, get_argument(i));
    }

    use_tuple(tup, total() + 2);
  }
Beispiel #22
0
/**
 * Starts a program
 */
void console_start(char *dir, char *command) {
    memset(senddir, 0, 64);
    strcpy(senddir, dir);
    strcat(senddir, "/");
    strcat(senddir, get_argument(command, 1));
    // Cut the arguments from the path
    if(get_argument(senddir, 1)) {
        strncpy(senddir, senddir, strlen(senddir) - strlen(get_argument(senddir, 1)) - 1);
    }

    char *arguments = kmalloc(128);
    memset(arguments, 0, 128);
    strcpy(arguments, get_argument(command, 2));

    int procn = start_proc(senddir, arguments);
    if(procn != PROC_STOPPED) {
        while(proc_state(procn) != PROC_STOPPED);
        remove_proc(procn);
        printk("\n");
    }
}
Beispiel #23
0
void	serv_plv(t_on_screen *screen, char *msg)
{
  int	num_cli;
  int	lvl;
  t_cli	*list_cli;

  num_cli = atoi(get_argument(msg, 2));
  lvl = atoi(get_argument(msg, 3));
  list_cli = screen->world->client;
  while (list_cli != NULL)
    {
      if (num_cli == list_cli->num)
	{
	  list_cli->lvl = lvl;
	  init_perso(screen, list_cli);
	  screen->world->loading = 0;
	  return ;
	}
      list_cli = list_cli->next;
    }
}
short Reset::reset_define(SqlciEnv * sqlci_env)
{
  if (!get_argument())
    {
      /* RESET all defines */
      Define * define = sqlci_env->get_definelist()->getFirst();
      while (define)
	{
	  define->reset(sqlci_env);
	  sqlci_env->get_definelist()->remove(define->getName());
	  define = sqlci_env->get_definelist()->getNext();
	}
    }
  else
    {
      // DEFINEs are case insensitive (currently).
      // Upcase the argument.
      char * define_name = new char[strlen(get_argument())+1];
      
      // NT_PORT 7/10/96 (LS) changed k definition from int to size_t
      //
      for (size_t k=0; k < strlen(get_argument()); k++)
	{
#pragma nowarn(1506)   // warning elimination 
	  define_name[k] = toupper((get_argument())[k]);
#pragma warn(1506)  // warning elimination 
	}
      define_name[strlen(get_argument())] = 0;
 
      Define * define = sqlci_env->get_definelist()->get(define_name);
      if (define)
	{
	  define->reset(sqlci_env);
	  sqlci_env->get_definelist()->remove(define_name);
	}
      delete define_name;
    }
  
  return 0;
}
Beispiel #25
0
static awk_value_t *
do_pg_getisnull(int nargs, awk_value_t *result)
{
  PGresult *res;
  awk_value_t rowarg, colarg;
  int row;
  int col;

  if (do_lint && (nargs > 3))
    lintwarn(ext_id, _("pg_getisnull: called with too many arguments"));

  if (!(res = find_handle(results, 0))) {
    set_ERRNO(_("pg_getisnull called with unknown result handle"));
    RET_NUM(-1);
  }

  if (!get_argument(1, AWK_NUMBER, &rowarg)) {
    set_ERRNO(_("pg_getisnull: 2nd argument must be a row number"));
    RET_NUM(-1);
  }
  row = rowarg.num_value;

  if (!get_argument(2, AWK_NUMBER, &colarg)) {
    set_ERRNO(_("pg_getisnull: 3rd argument must be a column number"));
    RET_NUM(-1);
  }
  col = colarg.num_value;

  if ((row < 0) || (row >= PQntuples(res))) {
    set_ERRNO(_("pg_getisnull: 2nd argument row_number is out of range"));
    RET_NUM(-1);
  }

  if ((col < 0) || (col >= PQnfields(res))) {
    set_ERRNO(_("pg_getisnull: 3rd argument col_number is out of range"));
    RET_NUM(-1);
  }

  RET_NUM(PQgetisnull(res, row, col));
}
Beispiel #26
0
/**
 * Outputs a file into the console
 */
void console_read(char *dir, char *command) {
    memset(senddir, 0, 64);
    strcpy(senddir, dir);
    strcat(senddir, "/");
    strcat(senddir, get_argument(command, 1));
    file *f = vfs_file_open(senddir, "r");
    if(f->type != FS_FILE) {
        printk("read: file %s not found\n", senddir);
    } else {
        print_file(f);
    }
    vfs_file_close(f);
}
Beispiel #27
0
  void Message::append_splat(STATE, Array* splat) {
    Array* args = Array::create(state, splat->size() + total_args);

    for(size_t i = 0; i < total_args; i++) {
      args->set(state, i, get_argument(i));
    }

    for(size_t i = 0, n = total_args; i < splat->size(); i++, n++) {
      args->set(state, n, splat->get(state, i));
    }

    use_array(args);
  }
Beispiel #28
0
void		serv_ebo(t_on_screen *screen, char *msg)
{
  int		ghost_num;
  t_point	pos;

  ghost_num = atoi(get_argument(msg, 2));
  pos = ghost_killer(screen, ghost_num);
  if (pos.x != screen->world->width)
    {
      screen->world->map[pos.y][pos.x].nb_ghost -= 1;
      screen->world->loading = 0;
    }
}
Beispiel #29
0
int main()
{
#if DEBUG
	parse_argument("action=read&tag_epc=E20494546478545324401C10");
	getchar();
#else
	char *request=NULL;
	printf("Content-type; text/plain\n\n");
	request=get_argument();
	parse_argument(request);
#endif
	return 0;
}
Beispiel #30
0
  Array* Message::as_array(STATE) {
    if(arguments_array) {
      return arguments_array;
    }

    Array* ary = Array::create(state, args());

    for(size_t i = 0; i < args(); i++) {
      ary->set(state, i, get_argument(i));
    }

    return ary;
  }