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; }
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); }
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; }
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]); }