int Database::query()
{
  if (!checkArgument(2, GLua::TYPE_STRING))
    return 0;

  if (m_connectionThread->isRunning())
    return 0;
  if (!m_connectionThread->wasSuccessful())
    return 0;

  const char* query = m_luaInterface->GetString(2);
  if (!query)
    return 0;

  Query* queryObject = new Query(this, m_luaInterface);
  queryObject->setQuery(query);
  queryObject->pushObject();
  return 1;
}
Example #2
0
Ink_Object *InkNative_Object_Each(Ink_InterpreteEngine *engine, Ink_ContextChain *context, Ink_ArgcType argc, Ink_Object **argv, Ink_Object *this_p)
{
	Ink_Object *base = context->searchSlot(engine, "base");
	Ink_Object **args;
	Ink_Object *ret_tmp;
	Ink_HashTable *hash;
	Ink_ArrayValue ret_val;

	if (!checkArgument(engine, argc, argv, 1, INK_FUNCTION)) {
		return NULL_OBJ;
	}

	args = (Ink_Object **)malloc(2 * sizeof(Ink_Object *));
	for (hash = base->hash_table; hash && hash->getValue(); hash = hash->next) {
		args[0] = new Ink_String(engine, string(hash->key));
		args[1] = hash->getValue() ? hash->getValue() : UNDEFINED;
		ret_val.push_back(new Ink_HashTable(ret_tmp = argv[0]->call(engine, context, 2, args)));
		if (engine->getSignal() != INTER_NONE) {
			switch (engine->getSignal()) {
				case INTER_RETURN:
					free(args);
					cleanArrayHashTable(ret_val);
					return engine->getInterruptValue(); // signal penetrated
				case INTER_DROP:
				case INTER_BREAK:
					free(args);
					cleanArrayHashTable(ret_val);
					return engine->trapSignal(); // trap the signal
				case INTER_CONTINUE:
					engine->trapSignal(); // trap the signal, but do not return
					continue;
				default:
					free(args);
					cleanArrayHashTable(ret_val);
					return NULL_OBJ;
			}
		}
	}
	free(args);

	return new Ink_Array(engine, ret_val);
}
Example #3
0
Ink_Object *InkNative_Object_SetSetter(Ink_InterpreteEngine *engine, Ink_ContextChain *context, Ink_ArgcType argc, Ink_Object **argv, Ink_Object *this_p)
{
	Ink_Object *base = context->searchSlot(engine, "base");
	Ink_HashTable *hash;
	const char *tmp;

	if (!checkArgument(engine, argc, argv, 1, INK_STRING)) {
		return NULL_OBJ;
	}

	tmp = as<Ink_String>(argv[0])->getValue().c_str();
	if (!(hash = base->getSlotMapping(engine, tmp))) {
		string *tmp_p = new string(tmp);
		hash = base->setSlot(tmp_p->c_str(), NULL, tmp_p);
	}

	hash->setter = argc > 1 ? argv[1] : NULL;

	return NULL_OBJ;
}
int Database::escape()
{
  if (!checkArgument(2, GLua::TYPE_STRING))
    return 0;

	const char* sQuery = m_luaInterface->GetString(2);
  size_t nQueryLength = strlen(sQuery);

	char* sEscapedQuery = (char*)malloc( (nQueryLength * 2) + 4 );

	if (sEscapedQuery == 0)
		return 0;

  m_sqlMutex.lock();
	mysql_real_escape_string(m_sql, sEscapedQuery, sQuery, (unsigned long)nQueryLength );
  m_sqlMutex.unLock();

  m_luaInterface->Push( sEscapedQuery );

  free(sEscapedQuery);
  return 1;
}
Example #5
0
static void
handleSysArgument(int i, int *pNewI, char **argv)
{	
	/* Check for things we know about */
	if (checkArgument(argv[i], "Wconfig="))
		/* Dunnit */;
	else if (checkArgument(argv[i], "Wsys="))
		/* Dunnit */;
	else if (checkArgument(argv[i], "WV="))
		/* Dunnit */;
	else if (checkArgument(argv[i], "Wopts="))
		uclAddSysArgs(&uclStartOptions, argv[i] + strlen("-Wopts="));
	else if (checkArgument(argv[i], "Wpost="))
		uclAddSysArgs(&uclPostOptions, argv[i] + strlen("-Wpost="));
	else if (checkArgument(argv[i], "Wtwixt="))
		uclAddSysArgs(&uclTwixtOptions, argv[i] + strlen("-Wtwixt="));
	else if (checkArgument(argv[i], "Wkey="))
		uclAddSysArgs(&uclExtraKeys, argv[i] + strlen("-Wkey="));
	else if (checkArgument(argv[i], "Wv=") || checkArgument(argv[i], "WV="))
		dbgLevel = argv[i][4] > '\0' ? argv[i][4] - '0' : 1;
	else if (checkArgument(argv[i], "Wstdc"))
		uclStdc = true;
	else if (checkArgument(argv[i], "Wfnonstd"))
		uclFloatNonStd = true;
	else if (checkArgument(argv[i], "Wfortran"))
		uclFortran = true;
	else if (checkArgument(argv[i], "Wn") || checkArgument(argv[i], "WN"))
		ccSetNoExecute();
	else if (checkArgument(argv[i], "Wv") || checkArgument(argv[i], "WV"))
		dbgLevel = 1;
	else if (checkArgument(argv[i], "Wshared"))
		uclShared = true;
	else if (checkArgument(argv[i], "Wh") || checkArgument(argv[i], "WH"))
		printHelp();
	else
		fprintf(stderr, "Option: `%s' unknown.\n", argv[i]);
}