//Document me int SelectModulesToMeasure(vector<string> * v){ MYSQL_RES * results; MYSQL_ROW row; char * fixedInsertStr; unsigned int len; int holder; unsigned int numRows = 0, numFields = 0; MYSQL * conn; fixedInsertStr = "SELECT moduleName FROM ModulesToMeasure"; len = strlen(fixedInsertStr); if(WaitForSingleObject(mysqlMutex, INFINITE) != WAIT_OBJECT_0){ printf("SelectModulesToMeasure: Couldn't acquire mutex. Returning\n"); return GENERIC_ERROR; } conn = OpenDatabaseConnection(gffServerDBName); if(conn == NULL){ printf("SelectModulesToMeasure: OpenDatabaseConnection(gffServerDBName) failed\n"); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } ////////////////////////////////// if(0 != mysql_real_query(conn, fixedInsertStr, len)){ holder = CheckError(conn,mysql_errno(conn)); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, holder); } results = mysql_store_result(conn); if(results == NULL){ printf("SelectModulesToMeasure: mysql_use_result failed\n"); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } numRows = (unsigned int)mysql_num_rows(results); if(numRows == 0){ mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, NO_RESULTS_FOUND); } //This function expects that the results will be a single column of wstrings for(unsigned int i = 0; i < numRows; i++){ row = mysql_fetch_row(results); if(row == NULL){ printf("SelectModulesToMeasure: mysql_fetch_row failed\n"); mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } string temp = (string)row[0]; v->push_back(temp); } mysql_free_result(results); ////////////////////////////////// CloseDatabaseConnection(conn); if(!ReleaseMutex(mysqlMutex)){ printf("SelectModulesToMeasure: Couldn't release mutex. Exiting thread\n"); return GENERIC_ERROR; } return GENERIC_SUCCESS; }
// Create a character bool CCharServer::pakCreateChar( CCharClient* thisclient, CPacket* P ) { if (!thisclient->isLoggedIn) return false; // Get info from packet BYTE sex = GETBYTE((*P), 0 ) % 2; BYTE hairstyle = GETBYTE((*P), 2 ); BYTE face = GETBYTE((*P), 3 ); string newname = (char*)&P->Buffer[7]; MYSQL_RES *result; result = DB->QStore("SELECT id FROM characters WHERE account_name='%s'", thisclient->username); if(result==NULL) return false; if ( mysql_num_rows( result ) == 5 ) { BEGINPACKET( pak, 0x713 ); ADDWORD ( pak, 4 ); thisclient->SendPacket( &pak ); DB->QFree( ); return true; } DB->QFree( ); result = DB->QStore("SELECT id FROM characters WHERE char_name='%s'", newname.c_str()); if(result==NULL) return false; if ( mysql_num_rows( result ) > 0 ) { BEGINPACKET( pak, 0x713); ADDWORD ( pak, 2 ); thisclient->SendPacket( &pak ); DB->QFree( ); return true; } DB->QFree( ); if(!DB->QExecute("INSERT INTO characters (account_name, char_name, face, hairStyle, sex) VALUES('%s','%s',%i,%i,%i)", thisclient->username, newname.c_str(), face, hairstyle, sex)) return false; unsigned int mid = (unsigned)mysql_insert_id( DB->Mysql ); MYSQL_ROW row; if(!DB->QExecute("INSERT INTO items VALUES(%i,29,3,0,40,100,3,1,0,0,0,0,0)", mid)) return false; if(!DB->QExecute("INSERT INTO items VALUES(%i,29,5,0,40,100,6,1,0,0,0,0,0)", mid)) return false; if(!DB->QExecute("INSERT INTO items VALUES(%i,1,8,0,40,100,7,1,0,0,0,0,0)", mid)) return false; if(sex==0) { if(!DB->QExecute("INSERT INTO items VALUES(%i,221,2,0,40,100,12,1,0,0,0,0,0)", mid)) return false; } else { if(!DB->QExecute("INSERT INTO items VALUES(%i,222,2,0,40,100,12,1,0,0,0,0,0)", mid)) return false; } BEGINPACKET( pak, 0x713 ); ADDWORD ( pak, 0 ); thisclient->SendPacket( &pak ); return true; }
/** result_get_length : 'result -> int <doc>Return the number of rows returned or affected</doc> **/ static value result_get_length( value o ) { if( val_is_int(o) ) return o; val_check_kind(o,k_result); return alloc_int( (int)mysql_num_rows(RESULT(o)->r) ); }
void tBlackListList(void) { MYSQL_RES *res; MYSQL_ROW field; ExttBlackListListSelect(); macro_mySQLRunAndStore(res); guI=mysql_num_rows(res); PageMachine("tBlackListList",1,"");//1 is auto header list guMode. Opens table! //Filter select drop down ExttBlackListListFilter(); printf("<input type=text size=16 name=gcCommand maxlength=98 value=\"%s\" >",gcCommand); printf("</table>\n"); printf("<table bgcolor=#9BC1B3 border=0 width=100%%>\n"); printf("<tr bgcolor=black><td><font face=arial,helvetica color=white>uBlackList<td><font face=arial,helvetica color=white>cLabel<font face=arial,helvetica color=white>uUser<td><font face=arial,helvetica color=white>uServerGroup<td><font face=arial,helvetica color=white>uOwner<td><font face=arial,helvetica color=white>uCreatedBy<td><font face=arial,helvetica color=white>uCreatedDate<td><font face=arial,helvetica color=white>uModBy<td><font face=arial,helvetica color=white>uModDate</tr>"); mysql_data_seek(res,guStart-1); for(guN=0;guN<(guEnd-guStart+1);guN++) { field=mysql_fetch_row(res); if(!field) { printf("<tr><td><font face=arial,helvetica>End of data</table>"); Footer_ism3(); } if(guN % 2) printf("<tr bgcolor=#BBE1D3>"); else printf("<tr>"); time_t luTime5=strtoul(field[5],NULL,10); char cBuf5[32]; if(luTime5) ctime_r(&luTime5,cBuf5); else sprintf(cBuf5,"---"); time_t luTime7=strtoul(field[7],NULL,10); char cBuf7[32]; if(luTime7) ctime_r(&luTime7,cBuf7); else sprintf(cBuf7,"---"); printf("<td><input type=submit name=ED%s value=Edit> %s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s</tr>" ,field[0] ,field[0] ,field[1] ,ForeignKey("tUser","cLogin",strtoul(field[8],NULL,10)) ,ForeignKey("tServerGroup","cLabel",strtoul(field[2],NULL,10)) ,ForeignKey(TCLIENT,"cLabel",strtoul(field[3],NULL,10)) ,ForeignKey(TCLIENT,"cLabel",strtoul(field[4],NULL,10)) ,cBuf5 ,ForeignKey(TCLIENT,"cLabel",strtoul(field[6],NULL,10)) ,cBuf7 ); } printf("</table></form>\n"); Footer_ism3(); }//tBlackListList()
int64_t MySQLResult::getRowCount() const { if (!m_localized) { return (int64_t)mysql_num_rows(m_res); } return m_row_count; }
int DBTools::getIdByLine(IN Line& line) { int lineid = 0; bool flag = true; std::vector<Point3D> vPointTemp = line.getPoints(); int frompointID = getIdByPoint(vPointTemp[0]); int topointID = getIdByPoint(vPointTemp[1]); std::stringstream ss_from; std::stringstream ss_to; ss_from<<frompointID; ss_to<<topointID; std::string sql="select line_id from line where from_point ="+ss_from.str()+" and to_point ="+ss_to.str()+";"; int res=mysql_query(&myCont,sql.c_str()); if(!res) { MYSQL_RES *result = mysql_store_result(&myCont); if(mysql_num_rows(result)) { MYSQL_ROW sql_row; while(sql_row=mysql_fetch_row(result)) { lineid = atoi(sql_row[0]); std::stringstream ss_id; ss_id<<lineid; std::string sql="select point_id,sequence_number from shape_points where line_id ="+ss_id.str()+" order by sequence_number;"; int res=mysql_query(&myCont,sql.c_str()); if(!res) { MYSQL_RES *result = mysql_store_result(&myCont); if(mysql_num_rows(result)) { MYSQL_ROW sql_row_in; int index = 0; //int endWhile = 1; while(sql_row_in=mysql_fetch_row(result)) { index = atoi(sql_row_in[1])+1; if(atoi(sql_row_in[0]) != getIdByPoint(vPointTemp[index])) { lineid = 0; flag = false; } } if(flag) { mysql_free_result(result); break; } } else if(vPointTemp.size() == 2) { mysql_free_result(result); break; } mysql_free_result(result); } } } else { lineid = 0; } mysql_free_result(result); } return lineid; }
int main(){ MYSQL *MySQLConRet; MYSQL *MySQLConnection = NULL; char *hostname = "localhost"; char *user = "******"; char password[20]; char *db = "hedistest"; MySQLConnection = mysql_init(NULL); printf("enter password: "******"%s", password); MySQLConRet = mysql_real_connect(MySQLConnection, hostname, user, password, db, 0, NULL, 0); if(MySQLConRet == NULL){ printf("fail\n"); return 1; } printf("MySQL Connection Info: %s \n", mysql_get_host_info(MySQLConnection)); printf("MySQL Client Info: %s \n", mysql_get_client_info()); printf("MySQL Server Info: %s \n", mysql_get_server_info(MySQLConnection)); int mysqlStatus = 0; MYSQL_RES *mysqlResult = NULL; if(mysqlResult){ mysql_free_result(mysqlResult); mysqlResult = NULL; } MYSQL_ROW mysqlRow; MYSQL_FIELD *mysqlFields; my_ulonglong numRows; unsigned int numFields; char *sqlSelStatement = "select * from user"; mysqlStatus = mysql_query(MySQLConnection, sqlSelStatement); if(mysqlStatus){ printf((char *)mysql_error(MySQLConnection)); return 1; } mysqlResult = mysql_store_result(MySQLConnection); if(mysqlResult){ numRows = mysql_num_rows(mysqlResult); numFields = mysql_field_count(MySQLConnection); numFields = mysql_num_fields(mysqlResult); printf("Number of rows=%u Number of fields=%u \n", numRows, numFields); }else{ printf("Result set is empty\n"); } mysqlFields = mysql_fetch_fields(mysqlResult); for(int i = 0; i < numFields; i++){ printf("%s\t", mysqlFields[i].name); } printf("\n"); while(mysqlRow = mysql_fetch_row(mysqlResult)){ for(int i = 0; i < numFields; i++){ printf("%s\t", mysqlRow[i] ? mysqlRow[i] : "NULL"); } printf("\n"); } if(mysqlResult){ mysql_free_result(mysqlResult); mysqlResult = NULL; } mysql_close(MySQLConnection); return 0; }
int main(int argc, char *argv[], char *envp[]) { int res; int i; int status; const char *userp = getenv("USER"); /* vem är inloggad? */ char databas[25]="olfix"; char usr[21]; /* userid 20070214 utökat från 15 till 21 tecken */ /* ================================================================================ */ /* Val av databas, START */ /* ================================================================================ */ status = which_database(envp); if (status != 0) exit(status); strncpy(usr,userp,sizeof(usr)); /* Den inloggades userid 20070214 */ /* fprintf(stderr,"status=%d ANTARG=%d len(database)=%d\n",status,ANTARG,strlen(database)); */ if (argc < ANTARG+1){ if (strlen(database)!= 0){ strncpy(databas,database,15); }else{ strncpy(databas,"olfixtst",15); /* olfixtst = testföretag */ } }else{ if (strlen(argv[ANTARG]) != 0){ if (strncmp(argv[ANTARG],"99",2)==0){ strncpy(databas,"olfixtst",sizeof(databas)); /*2005-02-24 */ }else{ strncpy(databas,argv[ANTARG],sizeof(databas)); /*2005-02-24 */ } } } /* fprintf(stderr,"ANTARG=%d,argv[ANTARG]=%s\n",ANTARG,argv[ANTARG]); */ /* Om usr (userid) börjar på 'test' eller 'prov' använd databas 'olfixtst' */ if (strncmp(usr,"test",4)==0 || strncmp(usr,"prov",4)==0 ) { strncpy(databas,"olfixtst",15); } /* fprintf(stderr,"Databas=%s\n",databas); */ /* ================================================================================ */ /* Val av databas, END! */ /* ================================================================================ */ mysql_init(&my_connection); if (mysql_real_connect(&my_connection, "localhost", "olfix", "olfix", databas, 0, NULL, 0)){ /* fprintf(stderr,"KTOLST:Connection success\n"); */ res = mysql_query(&my_connection,"SELECT * FROM KTOPLAN ORDER BY ARID, KTONR"); if (res){ fprintf(stderr,"Error: KTOLST SELECT error: %s\n",mysql_error(&my_connection)); }else{ res_ptr=mysql_store_result(&my_connection); if (res_ptr){ i=1; /* fprintf(stdout,"KTOLST:Retrieved %lu rows\n",(unsigned long)mysql_num_rows(res_ptr)); */ fprintf(stdout,"OK: NR_%lu_:",(unsigned long)mysql_num_rows(res_ptr)); while ((sqlrow=mysql_fetch_row(res_ptr))) { /* printf("KTOLST:Fetched data....}"); */ display_row(); i++; } if (mysql_errno(&my_connection)) { fprintf(stderr,"Error: KTOLST Retriev error: %s\n", mysql_error(&my_connection)); } } mysql_free_result(res_ptr); } mysql_close(&my_connection); } else { fprintf(stderr,"Error: KTOLST Connection failed\n"); if (mysql_errno(&my_connection)) { fprintf(stderr,"Error: KTOLST Connection error %d: %s\n", mysql_errno(&my_connection), mysql_error(&my_connection)); } } fprintf(stdout,"\n"); return EXIT_SUCCESS; }
/* This needs to happen to make since 2.1 code doesn't have enough * smarts to figure out it isn't adding a default wckey if just * adding a new wckey for a user that has never been on the cluster before. */ static int _make_sure_users_have_default( mysql_conn_t *mysql_conn, List user_list) { char *query = NULL, *cluster = NULL, *user = NULL; ListIterator itr = NULL, clus_itr = NULL; int rc = SLURM_SUCCESS; if (!user_list) return SLURM_SUCCESS; slurm_mutex_lock(&as_mysql_cluster_list_lock); clus_itr = list_iterator_create(as_mysql_cluster_list); itr = list_iterator_create(user_list); while ((user = list_next(itr))) { while ((cluster = list_next(clus_itr))) { MYSQL_RES *result = NULL; MYSQL_ROW row; char *wckey = NULL; /* only look at non * and non deleted ones */ query = xstrdup_printf( "select distinct is_def, wckey_name from " "\"%s_%s\" where user='******' and wckey_name " "not like '*%%' and deleted=0 FOR UPDATE;", cluster, wckey_table, user); debug4("%d(%s:%d) query\n%s", mysql_conn->conn, THIS_FILE, __LINE__, query); if (!(result = mysql_db_query_ret( mysql_conn, query, 0))) { xfree(query); error("couldn't query the database"); rc = SLURM_ERROR; break; } xfree(query); /* Check to see if the user is even added to the cluster. */ if (!mysql_num_rows(result)) { mysql_free_result(result); continue; } while ((row = mysql_fetch_row(result))) { if (row[0][0] == '1') break; if (!wckey) wckey = xstrdup(row[1]); } mysql_free_result(result); /* we found one so just continue */ if (row || !wckey) { xfree(wckey); continue; } query = xstrdup_printf( "update \"%s_%s\" set is_def=1 where " "user='******' and wckey_name='%s';", cluster, wckey_table, user, wckey); xfree(wckey); if (debug_flags & DEBUG_FLAG_DB_WCKEY) DB_DEBUG(mysql_conn->conn, "query\n%s", query); rc = mysql_db_query(mysql_conn, query); xfree(query); if (rc != SLURM_SUCCESS) { error("problem with update query"); rc = SLURM_ERROR; break; } } if (rc != SLURM_SUCCESS) break; list_iterator_reset(clus_itr); } list_iterator_destroy(itr); list_iterator_destroy(clus_itr); slurm_mutex_unlock(&as_mysql_cluster_list_lock); return rc; }
unsigned long wxMySQLResult::GetRowCount() { return mysql_num_rows(m_Res); }
unsigned int wxMySQL::GetTableCount() { MYSQL_RES * res = mysql_list_tables(m_pDB, NULL); return mysql_num_rows(res); }
int SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp(self_check_t * selfCheckInput, self_check_t * selfCheckTiresias){ MYSQL_RES * results; MYSQL_ROW row; //really a char ** unsigned int numRows = 0, numFields = 0; char query[200]; unsigned int len; char * fixedSelectStr; MYSQL * conn; fixedSelectStr = "SELECT * FROM Checksums WHERE nonce = %#x AND timeDateStamp = %#x AND baseVA = %#x"; len = sprintf_s(query, 200, fixedSelectStr, selfCheckInput->nonce, selfCheckInput->timeDateStamp, selfCheckInput->baseVA); if(WaitForSingleObject(mysqlMutex, INFINITE) != WAIT_OBJECT_0){ printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: Couldn't acquire mutex. Returning\n"); return GENERIC_ERROR; } conn = OpenDatabaseConnection(gffTiresiasDBName); if(conn == NULL){ printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: OpenDatabaseConnection(gffTiresiasDBName) failed\n"); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } ////////////////////////////////// if(0 != mysql_real_query(conn, query, len)){ printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: mysql_real_query failed\n"); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } results = mysql_store_result(conn); if(results == NULL){ printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: mysql_use_result failed\n"); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } numRows = (unsigned int)mysql_num_rows(results); if(numRows == 0){//Will fail here if an empty set is returned mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, NO_RESULTS_FOUND); } //There should only ever be one correct checksum value //for a given combination of nonce/timeDateStamp/baseVA if(numRows > 1){ mysql_free_result(results); printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: More than one checksum found for the nonce/timeDateStamp/baseVA combination. Check tiresias database\n"); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, TOO_MANY_RESULTS_FOUND); } row = mysql_fetch_row(results); if(row == NULL){ printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: mysql_fetch_row failed\n"); mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } numFields = mysql_num_fields(results); if(numFields != (4 + SELF_CHECKSUM_SIZE)){ printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: mysql_num_fields says we have the wrong number of fields\n"); mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } selfCheckTiresias->nonce = selfCheckInput->nonce; selfCheckTiresias->timeDateStamp = selfCheckInput->timeDateStamp; selfCheckTiresias->baseVA = selfCheckInput->baseVA; for(unsigned int i = 0; i < SELF_CHECKSUM_SIZE; i++){ selfCheckTiresias->checksum[i] = strtoul(row[4+i], NULL, 10); } mysql_free_result(results); ////////////////////////////////// CloseDatabaseConnection(conn); if(!ReleaseMutex(mysqlMutex)){ printf("SelectTiresiasChecksumByNonceAndBaseAndTimedatestamp: Couldn't release mutex. Exiting thread\n"); return GENERIC_ERROR; } return GENERIC_SUCCESS; }
//TODO: Document me int SelectAllHostsToMeasureForPolling(int tolerance, queue<int> * q){ int hostID; MYSQL_RES * results; MYSQL_ROW row; unsigned int len; int holder; unsigned int numRows = 0, numFields = 0; char query[200]; MYSQL * conn; time_t rawtime; time (&rawtime); unsigned int tempTimeStamp = (unsigned int)rawtime; tempTimeStamp = tempTimeStamp - (unsigned int)tolerance; if(WaitForSingleObject(mysqlMutex, INFINITE) != WAIT_OBJECT_0){ printf("SelectAllHostsToMeasureForPolling: Couldn't acquire mutex. Returning\n"); return GENERIC_ERROR; } conn = OpenDatabaseConnection(gffServerDBName); if(conn == NULL){ printf("SelectAllHostsToMeasureForPolling: OpenDatabaseConnection(gffServerDBName) failed\n"); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } len = sprintf_s(query, 200, "SELECT hostID FROM HostsToMeasure WHERE readiness = %u and lastTimeMeasurementRequested < %u",READY, tempTimeStamp); ////////////////////////////////// if(0 != mysql_real_query(conn, query, len)){ holder = CheckError(conn,mysql_errno(conn)); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, holder); } results = mysql_store_result(conn); if(results == NULL){ printf("SelectAllHostsToMeasureForPolling: mysql_use_result failed\n"); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } numRows = (unsigned int)mysql_num_rows(results); if(numRows == 0){//Will fail here if an empty set is returned mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, NO_RESULTS_FOUND); } //This function expects that the results will be a single column of integers (IDs) for(unsigned int i = 0; i < numRows; i++){ row = mysql_fetch_row(results); if(row == NULL){ printf("SelectAllHostsToMeasureForPolling: mysql_fetch_row failed\n"); mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } hostID = strtoul(row[0], NULL, 10); q->push(hostID); } mysql_free_result(results); ////////////////////////////////// CloseDatabaseConnection(conn); if(!ReleaseMutex(mysqlMutex)){ printf("SelectAllHostsToMeasureForPolling: Couldn't release mutex. Exiting thread\n"); return GENERIC_ERROR; } return GENERIC_SUCCESS; }
int SelectHostIPsByHostName(char * hostName, list<string> * v){ char query[300]; char * fixedInsertStr; unsigned int len; int holder; MYSQL_RES * results; MYSQL_ROW row; unsigned int numRows = 0, numFields = 0; MYSQL * conn; if(hostName == NULL || strlen(hostName) == 0){ printf("SelectHostIPsByHostName(): hostName passed was null\n"); return GENERIC_ERROR; } fixedInsertStr = "SELECT ip_str FROM Hosts WHERE hostName like '%s'"; len = sprintf_s(query, 300, fixedInsertStr, hostName); if(WaitForSingleObject(mysqlMutex, INFINITE) != WAIT_OBJECT_0){ printf("SelectHostIPsByHostName: Couldn't acquire mutex. Returning\n"); return GENERIC_ERROR; } conn = OpenDatabaseConnection(gffServerDBName); if(conn == NULL){ printf("SelectHostIPsByHostName(): OpenDatabaseConnection(gffServerDBName) failed\n"); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } ////////////////////////////////// if(0 != mysql_real_query(conn, query, len)){ holder = CheckError(conn,mysql_errno(conn)); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, holder); } results = mysql_store_result(conn); if(results == NULL){ printf("SelectHostIPsByHostName(): mysql_use_result failed\n"); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } numRows = (unsigned int)mysql_num_rows(results); if(numRows == 0){ mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, NO_RESULTS_FOUND); } //This function expects that the results will be a single column of strings for(unsigned int i = 0; i < numRows; i++){ row = mysql_fetch_row(results); if(row == NULL){ printf("SelectHostIPsByHostName(): mysql_fetch_row failed\n"); mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } string temp = (string)row[0]; v->push_back(temp); } mysql_free_result(results); ////////////////////////////////// CloseDatabaseConnection(conn); if(!ReleaseMutex(mysqlMutex)){ printf("SelectHostIPsByHostName(): Couldn't release mutex. Exiting thread\n"); return GENERIC_ERROR; } return GENERIC_SUCCESS; }
//student menu screen void studentMenu(char* username) { //query char q[150] = "\0"; MYSQL_RES *res_set; MYSQL_ROW row; strcat(q, "SELECT name FROM student where id = "); strcat(q, username); mysql_query(connection,q); res_set = mysql_store_result(connection); row = mysql_fetch_row(res_set); int z; int m = 0, y = 0; char* semester; get_year(&y); semester = get_semester(m); printf("\t\t\t---------------------------------------\n"); printf("\t\t\t Student Menu \n"); printf("\t\t\t---------------------------------------\n\n"); printf("\t\t\tHi, %s\n", row[0]); printf("\n\t\t\t%s, %d\n", semester, y); memset(q, 0, sizeof(q)); MYSQL_RES *res_set2; MYSQL_ROW row2; sprintf(q, "select u.UoSName from unitofstudy u, transcript t where u.UoSCode = t.UoSCode and t.Studid = %s and t.Semester = '%s' and t.Year = %d;", username, semester, y); //puts(q); mysql_query(connection,q); res_set2 = mysql_store_result(connection); int numrows = (int)mysql_num_rows(res_set2); for (int i = 0; i < numrows; i++) { row2 = mysql_fetch_row(res_set2); if( row2 != NULL ) { printf("\t\t\t%s\n", row2[0]); } } printf("\n\t\t\t---------------------------------------\n"); //free? if(semester != NULL) { //free(semester); semester = NULL; } // free resources mysql_free_result(res_set); mysql_free_result(res_set2); do { printf("\t\t\t---------------------------------------\n"); printf("\t\t\t Commands List \n"); printf("\t\t\t---------------------------------------\n"); printf("\t\t\t [1]Transcript \n"); printf("\t\t\t [2]Enroll Class \n"); printf("\t\t\t [3]Withdraw Class \n"); printf("\t\t\t [4]Personal Details \n"); printf("\t\t\t [5]Logout \n"); printf("\t\t\t [0]Exit \n"); printf("\t\t\t---------------------------------------\n\n"); printf("Please enter the command: "); scanf("%d", &z); //system("color 2f"); switch(z) { case 0 :return; case 1 :transcript(username);break; case 2 :enroll(username);break; case 3 :withdraw(username);break; case 4 :personaldetail(username);break; case 5 :logoutStudent(username);break; default:printf("\n INVALID COMMAND"); } } while( 1 ); }
static int _cluster_remove_wckeys(mysql_conn_t *mysql_conn, char *extra, char *cluster_name, char *user_name, List ret_list) { int rc = SLURM_SUCCESS; MYSQL_RES *result = NULL; MYSQL_ROW row; char *assoc_char = NULL; time_t now = time(NULL); char *query = xstrdup_printf("select t1.id_wckey, t1.wckey_name " "from \"%s_%s\" as t1%s;", cluster_name, wckey_table, extra); if (!(result = mysql_db_query_ret(mysql_conn, query, 0))) { xfree(query); return SLURM_ERROR; } if (!mysql_num_rows(result)) { mysql_free_result(result); xfree(query); return SLURM_SUCCESS; } while ((row = mysql_fetch_row(result))) { slurmdb_wckey_rec_t *wckey_rec = NULL; list_append(ret_list, xstrdup(row[1])); if (!assoc_char) xstrfmtcat(assoc_char, "id_wckey='%s'", row[0]); else xstrfmtcat(assoc_char, " || id_wckey='%s'", row[0]); wckey_rec = xmalloc(sizeof(slurmdb_wckey_rec_t)); /* we only need id and cluster when removing no real need to init */ wckey_rec->id = slurm_atoul(row[0]); wckey_rec->cluster = xstrdup(cluster_name); if (addto_update_list(mysql_conn->update_list, SLURMDB_REMOVE_WCKEY, wckey_rec) != SLURM_SUCCESS) slurmdb_destroy_wckey_rec(wckey_rec); } mysql_free_result(result); if (!list_count(ret_list)) { errno = SLURM_NO_CHANGE_IN_DATA; if (debug_flags & DEBUG_FLAG_DB_WCKEY) DB_DEBUG(mysql_conn->conn, "didn't effect anything\n%s", query); xfree(query); xfree(assoc_char); return SLURM_SUCCESS; } xfree(query); rc = remove_common(mysql_conn, DBD_REMOVE_WCKEYS, now, user_name, wckey_table, assoc_char, assoc_char, cluster_name, NULL, NULL); xfree(assoc_char); if (rc == SLURM_ERROR) { FREE_NULL_LIST(ret_list); return SLURM_ERROR; } return SLURM_SUCCESS; }
int calculate_balance(int *argc, char **argv) { MYSQL_RES *result; MYSQL_ROW row; my_ulonglong num_rows; unsigned long long balance_amount = 0, amount = 0; char * date; date = mysql_date(); snprintf(query, BUFSIZE, "select amount from balance where day='%s'", date); if (mysql_query(con, query)) finish_with_error(con); if ((result = mysql_store_result(con)) == 0) finish_with_error(con); num_rows = mysql_num_rows(result); mysql_data_seek(result, num_rows - 1); if ((row = mysql_fetch_row(result)) == NULL) { fprintf(stderr, "error from fetch\n"); finish_with_error(con); } balance_amount = atoll(row[0]); mysql_free_result(result); switch(*argv[1]) { case 'i': amount = atoll(argv[2]); snprintf(query, BUFSIZE, "insert into balance values (CURDATE(), %lld)", balance_amount + amount); mysql_insert(query); break; case 'b': amount = atoll(argv[2]); snprintf(query, BUFSIZE, "insert into balance values (CURDATE(), %lld)", balance_amount - amount); mysql_insert(query); break; case 'e': amount = atoll(argv[2]); snprintf(query, BUFSIZE, "insert into balance values (CURDATE(), %lld)", balance_amount - amount); mysql_insert(query); break; case 'f': amount = atoll(argv[2]); snprintf(query, BUFSIZE, "insert into balance values (CURDATE(), %lld)", balance_amount - amount); mysql_insert(query); break; case 'm': amount = atoll(argv[2]); snprintf(query, BUFSIZE, "insert into balance values (CURDATE(), %lld)", balance_amount - amount); mysql_insert(query); break; default: break; } }
static int _cluster_modify_wckeys(mysql_conn_t *mysql_conn, slurmdb_wckey_rec_t *wckey, char *cluster_name, char *extra, char *vals, char *user_name, List ret_list) { int rc = SLURM_SUCCESS; MYSQL_RES *result = NULL; MYSQL_ROW row; char *wckey_char = NULL; time_t now = time(NULL); char *query = NULL; query = xstrdup_printf("select t1.id_wckey, t1.wckey_name, t1.user " "from \"%s_%s\" as t1%s;", cluster_name, wckey_table, extra); if (!(result = mysql_db_query_ret(mysql_conn, query, 0))) { xfree(query); return SLURM_ERROR; } /* This key doesn't exist on this cluster, that is ok. */ if (!mysql_num_rows(result)) return SLURM_SUCCESS; while ((row = mysql_fetch_row(result))) { slurmdb_wckey_rec_t *wckey_rec = NULL; char *object = xstrdup_printf( "C = %-10s W = %-20s U = %-9s", cluster_name, row[1], row[2]); list_append(ret_list, object); if (!wckey_char) xstrfmtcat(wckey_char, "id_wckey='%s'", row[0]); else xstrfmtcat(wckey_char, " || id_wckey='%s'", row[0]); wckey_rec = xmalloc(sizeof(slurmdb_wckey_rec_t)); /* we only need id and cluster when removing no real need to init */ wckey_rec->id = slurm_atoul(row[0]); wckey_rec->cluster = xstrdup(cluster_name); wckey_rec->is_def = wckey->is_def; if (addto_update_list(mysql_conn->update_list, SLURMDB_MODIFY_WCKEY, wckey_rec) != SLURM_SUCCESS) slurmdb_destroy_wckey_rec(wckey_rec); if (wckey->is_def == 1) { /* Use fresh one here so we don't have to worry about dealing with bad values. */ slurmdb_wckey_rec_t tmp_wckey; slurmdb_init_wckey_rec(&tmp_wckey, 0); tmp_wckey.is_def = 1; tmp_wckey.cluster = cluster_name; tmp_wckey.name = row[1]; tmp_wckey.user = row[2]; if ((rc = _reset_default_wckey(mysql_conn, &tmp_wckey)) != SLURM_SUCCESS) break; } } mysql_free_result(result); if (!list_count(ret_list)) { errno = SLURM_NO_CHANGE_IN_DATA; if (debug_flags & DEBUG_FLAG_DB_WCKEY) DB_DEBUG(mysql_conn->conn, "didn't effect anything\n%s", query); xfree(query); xfree(wckey_char); return SLURM_SUCCESS; } xfree(query); rc = modify_common(mysql_conn, DBD_MODIFY_WCKEYS, now, user_name, wckey_table, wckey_char, vals, cluster_name); xfree(wckey_char); return rc; }
// This function is called just before the server starts bool CWorldServer::OnServerReady( ) { ServerOnline = true; GServer = this; clock_t timer = clock(); LastUpdateTime = clock(); ATTK_SPEED_MODIF = 120; HIT_DELAY_MODIF = 0; MOVE_SPEED_MODIF = 100000; //LMA: We init ObjVar, just in case. for (int k=0;k<MAX_NPC;k++) { for (int j=0;j<20;j++) { ObjVar[k][j]=0; } } //Load our Server Info LoadConfig( ); //LoadLTB( ); LoadSTBData( ); LoadIfoObjects(); //LMA: init default values. InitDefaultValues(); LoadZoneData( ); LoadGrids( ); //resetting grids... LoadConsItem( ); LoadSellData( ); LoadProductItem( ); LoadPatItem( ); LoadNaturalItem( ); LoadJemItem( ); LoadEquip( ); LoadItemStats( ); LoadGrades(); //LMA: loading refine (grades) bonuses. LoadJobReq( ); // PY new Stat Lookup table LoadStatLookup( ); // PY end //LoadBreakList( ); // geo edit for disassemble // 22 oct 07 LoadBreakChestBlueList(); //LMA: loading chests, breaks from STB... LoadSkillData( ); //LMA: Forcing Union Wars. UWForceFrom=0; //deactivated. UWNbPlayers=0; //deactivated //In t + 5 minutes (deactivated, use gm command instead). //pakGMForceUW(NULL,5); //LMA: forcing gem quets GemQuestForce=0; GemQuestReset=0; //LMA: for debug (load old skill system and compares to new one). /* LoadSkillDataOld( ); LMACheckSkills(); LMACheckStuff(); */ //End debug. //Load our Server Info LoadQuestSTB(); //hidden // LoadDropsData( ); // new drops routine load //LMA: Drop And system if(!Config.drop_rev) { LoadPYDropsData( ); } else { LoadPYDropsDataAnd(); } LoadSkillBookDropsData( ); // end of new drops data //LoadChestData( ); //LMA: loaded now by STB in LoadBreakChestBlueList. #ifdef PYCUSTOM // PY custom events start LoadCustomTeleGate( ); LoadCustomEvents( ); // PY custom events end #endif LoadNPCData( ); LoadQuestItemData( ); LoadTeleGateData( ); LoadRespawnData( ); LoadLTB(); //LMA: Loading LTB for AIP. LoadAipData(); //LMA: loading AIP. TimerForNPC(); //LMA: loading timers for NPCs and Monsters. LoadMobGroups( ); //LoadMobGroupsSpecial( ); //LMA: Special spawns (Halloween for example). LoadNPCs( ); LoadNPCsSpecial( ); //Special NPC load LoadNPCsEvents(); //LMA: loading pre defined events. LoadMonsters( ); LoadUpgrade( ); //LoadLTB(); //LMA: Loading LTB for AIP. LoadQuestData( ); //LoadAipData(); //LMA: loading AIP. CleanConnectedList( ); Log(MSG_INFO, "Database Loaded " ); pthread_create( &WorldThread[WORLD_THREAD], &at, WorldProcess, NULL); pthread_create( &WorldThread[VISUALITY_THREAD], &at, VisibilityProcess, NULL); pthread_create( &MapThread[0], &at, MapProcess, NULL); Log (MSG_INFO, "osRose Revision %s", Config.osRoseVer ); Log( MSG_INFO, "Process Loaded. WorldDelay %i | MapDelay %i | VisualDelay %i",Config.WorldDelay,Config.MapDelay,Config.VisualDelay); DB->QExecute( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType ); if(!DB->QExecute("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)", Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID)) { Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" ); } MYSQL_ROW row; bool pflag = false; //Get IP and Port from Charserver MYSQL_RES *result = DB->QStore( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID ); if(result==NULL) return false; if (mysql_num_rows( result ) == 1) { row = mysql_fetch_row( result ); switch(Config.Connection) { case 0://wanip Config.CharIP = row[0]; break; case 1://lanip Config.CharIP = row[2]; break; default://localhost Config.CharIP = (char*) "127.0.0.1"; break; } Config.CharPort = atoi(row[1]); pflag = true; } DB->QFree( ); if(pflag) { Log( MSG_INFO, "Initialized Charserver connection" ); // Connect To LoginServer csock = socket( AF_INET, SOCK_STREAM, 0 ); if (csock == INVALID_SOCKET) { Log( MSG_WARNING, "Could not access login server" ); } struct sockaddr_in ain; ain.sin_family = AF_INET; ain.sin_addr.s_addr = inet_addr( Config.CharIP ); ain.sin_port = htons( Config.CharPort ); if ( connect( csock, (SOCKADDR*) &ain, sizeof(ain) ) == SOCKET_ERROR ) Log( MSG_WARNING, "Could not access charserver" ); BEGINPACKET( pak, 0x500 ); ADDDWORD ( pak, Config.CharPass ); ADDDWORD ( pak, Config.ServerID ); ADDWORD ( pak, Config.WorldPort ); cryptPacket( (char*)&pak, NULL ); send( csock, (char*)&pak, pak.Size, 0 ); } float loadtime = (float)( clock() - timer ) / CLOCKS_PER_SEC; Log( MSG_INFO, "Server took %.4f seconds to load", loadtime ); return true; }
static int _cluster_get_wckeys(mysql_conn_t *mysql_conn, slurmdb_wckey_cond_t *wckey_cond, char *fields, char *extra, char *cluster_name, List sent_list) { List wckey_list = NULL; MYSQL_RES *result = NULL; MYSQL_ROW row; char *query = NULL; bool with_usage = 0; if (wckey_cond) with_usage = wckey_cond->with_usage; xstrfmtcat(query, "select distinct %s from \"%s_%s\" as t1%s " "order by wckey_name, user;", fields, cluster_name, wckey_table, extra); if (debug_flags & DEBUG_FLAG_DB_WCKEY) DB_DEBUG(mysql_conn->conn, "query\n%s", query); if (!(result = mysql_db_query_ret( mysql_conn, query, 0))) { xfree(query); if (mysql_errno(mysql_conn->db_conn) == ER_NO_SUCH_TABLE) return SLURM_SUCCESS; else return SLURM_ERROR; } xfree(query); if (!mysql_num_rows(result)) { mysql_free_result(result); return SLURM_SUCCESS; } wckey_list = list_create(slurmdb_destroy_wckey_rec); while ((row = mysql_fetch_row(result))) { slurmdb_wckey_rec_t *wckey = xmalloc(sizeof(slurmdb_wckey_rec_t)); list_append(wckey_list, wckey); wckey->id = slurm_atoul(row[WCKEY_REQ_ID]); wckey->is_def = slurm_atoul(row[WCKEY_REQ_DEFAULT]); wckey->user = xstrdup(row[WCKEY_REQ_USER]); /* we want a blank wckey if the name is null */ if (row[WCKEY_REQ_NAME]) wckey->name = xstrdup(row[WCKEY_REQ_NAME]); else wckey->name = xstrdup(""); wckey->cluster = xstrdup(cluster_name); } mysql_free_result(result); if (with_usage && wckey_list && list_count(wckey_list)) get_usage_for_list(mysql_conn, DBD_GET_WCKEY_USAGE, wckey_list, cluster_name, wckey_cond->usage_start, wckey_cond->usage_end); list_transfer(sent_list, wckey_list); FREE_NULL_LIST(wckey_list); return SLURM_SUCCESS; }
void tBlackList(const char *cResult) { MYSQL_RES *res; MYSQL_RES *res2; MYSQL_ROW field; //Internal skip reloading if(!cResult[0]) { if(guMode) ExttBlackListSelectRow(); else ExttBlackListSelect(); mysql_query(&gMysql,gcQuery); if(mysql_errno(&gMysql)) { if(strstr(mysql_error(&gMysql)," doesn't exist")) { CreatetBlackList(); unxsMail("New tBlackList table created"); } else { htmlPlainTextError(mysql_error(&gMysql)); } } res=mysql_store_result(&gMysql); if((guI=mysql_num_rows(res))) { if(guMode==6) { sprintf(gcQuery,"SELECT _rowid FROM tBlackList WHERE uBlackList=%u" ,uBlackList); macro_mySQLRunAndStore(res2); field=mysql_fetch_row(res2); sscanf(field[0],"%lu",&gluRowid); gluRowid++; } PageMachine("",0,""); if(!guMode) mysql_data_seek(res,gluRowid-1); field=mysql_fetch_row(res); sscanf(field[0],"%u",&uBlackList); sprintf(cLabel,"%.32s",field[1]); sscanf(field[2],"%u",&uServerGroup); sscanf(field[3],"%u",&uOwner); sscanf(field[4],"%u",&uCreatedBy); sscanf(field[5],"%lu",&uCreatedDate); sscanf(field[6],"%u",&uModBy); sscanf(field[7],"%lu",&uModDate); sscanf(field[8],"%u",&uUser); } }//Internal Skip Header_ism3(":: tBlackList",0); printf("<table width=100%% cellspacing=0 cellpadding=0>\n"); printf("<tr><td colspan=2 align=right valign=center>"); printf("<input type=hidden name=gcFunction value=tBlackListTools>"); printf("<input type=hidden name=gluRowid value=%lu>",gluRowid); if(guI) { if(guMode==6) //printf(" Found"); printf(LANG_NBR_FOUND); else if(guMode==5) //printf(" Modified"); printf(LANG_NBR_MODIFIED); else if(guMode==4) //printf(" New"); printf(LANG_NBR_NEW); printf(LANG_NBRF_SHOWING,gluRowid,guI); } else { if(!cResult[0]) //printf(" No records found"); printf(LANG_NBR_NORECS); } if(cResult[0]) printf("%s",cResult); printf("</td></tr>"); printf("<tr><td valign=top width=25%%>"); ExttBlackListButtons(); printf("</td><td valign=top>"); // OpenFieldSet("tBlackList Record Data",100); if(guMode==2000 || guMode==2002) tBlackListInput(1); else tBlackListInput(0); // CloseFieldSet(); //Bottom table printf("<tr><td colspan=2>"); ExttBlackListAuxTable(); Footer_ism3(); }//end of tBlackList();
//transcript screen void transcript(char * username) { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Transcript \n"); printf("\t\t\t---------------------------------------\n"); //query char q[500] = "\0"; MYSQL_RES *res_set; MYSQL_ROW row; sprintf(q, "select t.semester, u.UoSCode, t.grade, u.UoSName from unitofstudy u, transcript t where u.UoSCode = t.UoSCode and t.Studid = %s order by t.semester;", username); //puts(q); mysql_query(connection,q); res_set = mysql_store_result(connection); int numrows = (int)mysql_num_rows(res_set); // Display results for (int i = 0; i < numrows; i++) { row = mysql_fetch_row(res_set); if( row != NULL ) { printf("\t%s ", row[0]); printf("\t%s ", row[1]); printf("\t%-10s", row[2]); printf("\t%s\n", row[3]); } } //free resources mysql_free_result(res_set); char z[20]; do { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Commands List \n"); printf("\t\t\t---------------------------------------\n"); printf("\t\t\t [course number]Check course details \n"); printf("\t\t\t [0]Back to main menu \n"); printf("\t\t\t---------------------------------------\n\n"); printf("Please enter the command: "); scanf("%s", z); //system("color 2f"); if(strcmp(z, "0") == 0) { studentMenu(username); break; } else { memset(q, 0, sizeof(q)); MYSQL_RES *res_set2; MYSQL_ROW row2; sprintf(q, "select t.UoSCode, u.uosname, o.year, o.semester, o.Enrollment, o.MaxEnrollment, f.name, t.grade from uosoffering o, transcript t, unitofstudy u, faculty f where t.UoSCode = o.UoSCode and f.id = o.instructorid and t.uoscode = u.uoscode and t.semester = o.semester and t.year = o.year and t.studid = %s and t.uoscode = '%s';", username, z); //puts(q); mysql_query(connection,q); res_set2 = mysql_store_result(connection); int numrows = (int)mysql_num_rows(res_set2); for (int i = 0; i < numrows; i++) { row2 = mysql_fetch_row(res_set2); if( row2 != NULL ) { printf("\n\t\t\t\tcourse number: %s\n", row2[0]); printf("\t\t\t\ttitle: %s\n", row2[1]); printf("\t\t\t\tyear: %s\n", row2[2]); printf("\t\t\t\tquarter: %s\n", row2[3]); printf("\t\t\t\tenrollment: %s\n", row2[4]); printf("\t\t\t\tcapacity: %s\n", row2[5]); printf("\t\t\t\tlecturer: %s\n", row2[6]); printf("\t\t\t\tgrade: %s\n", row2[7]); } } if (numrows == 0) { printf("\nInvalid course number.\n"); } //free resources mysql_free_result(res_set2); } } while(1); }
/** * \brief Gets a partial result set, fetch rows from a result * * Gets a partial result set, fetch a number of rows from a database result. * This function initialize the given result structure on the first run, and * fetches the nrows number of rows. On subsequenting runs, it uses the * existing result and fetches more rows, until it reaches the end of the * result set. Because of this the result needs to be null in the first * invocation of the function. If the number of wanted rows is zero, the * function returns anything with a result of zero. * \param _h structure representing the database connection * \param _r pointer to a structure representing the result * \param nrows number of fetched rows * \return zero on success, negative value on failure */ int db_mysql_fetch_result(const db1_con_t* _h, db1_res_t** _r, const int nrows) { int rows, i, code; if (!_h || !_r || nrows < 0) { LM_ERR("Invalid parameter value\n"); return -1; } /* exit if the fetch count is zero */ if (nrows == 0) { db_mysql_free_result(_h, *_r); *_r = 0; return 0; } if(*_r==0) { /* Allocate a new result structure */ *_r = db_mysql_new_result(); if (*_r == 0) { LM_ERR("could not allocate new result\n"); return -2; } RES_RESULT(*_r) = mysql_store_result(CON_CONNECTION(_h)); if (!RES_RESULT(*_r)) { if (mysql_field_count(CON_CONNECTION(_h)) == 0) { (*_r)->col.n = 0; (*_r)->n = 0; return 0; } else { LM_ERR("driver error: %s\n", mysql_error(CON_CONNECTION(_h))); code = mysql_errno(CON_CONNECTION(_h)); if (code == CR_SERVER_GONE_ERROR || code == CR_SERVER_LOST) { counter_inc(mysql_cnts_h.driver_err); } db_mysql_free_result(_h, *_r); *_r = 0; return -3; } } if (db_mysql_get_columns(_h, *_r) < 0) { LM_ERR("error while getting column names\n"); return -4; } RES_NUM_ROWS(*_r) = mysql_num_rows(RES_RESULT(*_r)); if (!RES_NUM_ROWS(*_r)) { LM_DBG("no rows returned from the query\n"); RES_ROWS(*_r) = 0; return 0; } } else { /* free old rows */ if(RES_ROWS(*_r)!=0) db_free_rows(*_r); RES_ROWS(*_r) = 0; RES_ROW_N(*_r) = 0; } /* determine the number of rows remaining to be processed */ rows = RES_NUM_ROWS(*_r) - RES_LAST_ROW(*_r); /* If there aren't any more rows left to process, exit */ if(rows<=0) return 0; /* if the fetch count is less than the remaining rows to process */ /* set the number of rows to process (during this call) equal to the fetch count */ if(nrows < rows) rows = nrows; RES_ROW_N(*_r) = rows; LM_DBG("converting row %d of %d count %d\n", RES_LAST_ROW(*_r), RES_NUM_ROWS(*_r), RES_ROW_N(*_r)); RES_ROWS(*_r) = (struct db_row*)pkg_malloc(sizeof(db_row_t) * rows); if (!RES_ROWS(*_r)) { PKG_MEM_ERROR; return -5; } for(i = 0; i < rows; i++) { RES_ROW(*_r) = mysql_fetch_row(RES_RESULT(*_r)); if (!RES_ROW(*_r)) { LM_ERR("driver error: %s\n", mysql_error(CON_CONNECTION(_h))); RES_ROW_N(*_r) = i; db_free_rows(*_r); return -6; } if (db_mysql_convert_row(_h, *_r, &(RES_ROWS(*_r)[i])) < 0) { LM_ERR("error while converting row #%d\n", i); RES_ROW_N(*_r) = i; db_free_rows(*_r); return -7; } } /* update the total number of rows processed */ RES_LAST_ROW(*_r) += rows; return 0; }
//enroll screen void enroll(char * username) { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Enroll Class \n"); printf("\t\t\t---------------------------------------\n"); int m = 0, y = 0; char * semester; char * next_semester; get_year(&y); semester = get_semester(m); next_semester = get_next_semester(m); int y_next_semester = get_yearofnextsemester(y, semester); //print current quarter course list printf("\tCurrent Quarter: %s, %d\n\n", semester, y); //query char q[500] = "\0"; MYSQL_RES *res_set; MYSQL_ROW row; sprintf(q, "select u.UoSCode, u.UoSName, o.Enrollment, o.MaxEnrollment,u.Credits from uosoffering o, unitofstudy u where o.uoscode = u.uoscode and o.semester ='%s' and o.year = %d;", semester, y); //puts(q); mysql_query(connection,q); res_set = mysql_store_result(connection); int numrows = (int)mysql_num_rows(res_set); // Display results printf("\tUoSCode"); printf("\tCourse\t\t\t\t\t\t"); printf("\tEnrollment"); printf("\tCapacity"); printf("\tCredit\n"); for (int i = 0; i < numrows; i++) { row = mysql_fetch_row(res_set); if( row != NULL ) { printf("\t%s ", row[0]); printf("\t%-40s ", row[1]); printf("\t%s", row[2]); printf("\t\t%s", row[3]); printf("\t\t%s\n", row[4]); } } //free resources mysql_free_result(res_set); //print next quarter course list printf("\n\tNext Quarter: %s, %d\n\n", next_semester, y_next_semester); //query memset(q, 0, sizeof(q)); MYSQL_RES *res_set2; MYSQL_ROW row2; sprintf(q, "select u.UoSCode, u.UoSName, o.Enrollment, o.MaxEnrollment,u.Credits from uosoffering o, unitofstudy u where o.uoscode = u.uoscode and o.semester ='%s' and o.year = %d;", next_semester, y_next_semester); //puts(q); mysql_query(connection,q); res_set2 = mysql_store_result(connection); int numrows2 = (int)mysql_num_rows(res_set2); // Display results printf("\tUoSCode"); printf("\tCourse\t\t\t\t\t\t"); printf("\tEnrollment"); printf("\tCapacity"); printf("\tCredit\n"); for (int i = 0; i < numrows2; i++) { row2 = mysql_fetch_row(res_set2); if( row2 != NULL ) { printf("\t%s ", row2[0]); printf("\t%-40s ", row2[1]); printf("\t%s", row2[2]); printf("\t\t%s", row2[3]); printf("\t\t%s\n", row2[4]); } } //free resources mysql_free_result(res_set2); char z[20]; do { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Commands List \n"); printf("\t\t\t---------------------------------------\n"); printf("\t\t\t [1]Enroll a class\n"); printf("\t\t\t [0]Back to main menu \n"); printf("\t\t\t---------------------------------------\n\n"); printf("Please enter the command: "); scanf("%s", z); //system("color 2f"); if(strcmp(z, "0") == 0) { //studentMenu(username); break; } else if(strcmp(z, "1") == 0) { char coursenumber[9]; int whichsemester; memset(q, 0, sizeof(q)); MYSQL_RES *res_set3; MYSQL_ROW row3; printf("\nPlease enter course number: "); scanf("%s", coursenumber); printf("\nPlease choose current quarter or next quarter(input 1 for now, or 2 for next) : "); scanf("%d", &whichsemester); sprintf(q, "CALL enrollclass(%s, '%s', %d, '%s', %d);", username, semester, y, coursenumber, whichsemester); // Display results mysql_query(connection,q); res_set3 = mysql_store_result(connection); int numrows3 = (int)mysql_num_rows(res_set3); for (int i = 0; i < numrows3; i++) { row3 = mysql_fetch_row(res_set3); if(row3 != NULL) { if (i == 0) { fprintf(stdout, "%s\n", row3[0]); } else { fprintf(stdout, "Prerequisites: %s %s\n", row3[0], row3[1]); } } } //free resources mysql_free_result(res_set3); } else printf("INVALID COMMAND."); } while(1); }
// Send away the world IP bool CCharServer::pakRequestWorld( CCharClient* thisclient, CPacket* P ) { if (!thisclient->isLoggedIn) return false; MYSQL_ROW row; MYSQL_RES *result; memset( &thisclient->charname, '\0', 17 ); memcpy( thisclient->charname, &P->Buffer[3], (P->Size-6-4)>16?16:(P->Size-6-4) ); Log( MSG_INFO,"User %s(%i) selected char '%s'", thisclient->username, thisclient->userid, thisclient->charname); if(!DB->QExecute("UPDATE accounts SET lastchar='%s' WHERE id=%i", thisclient->charname, thisclient->userid)) return false; result = DB->QStore("SELECT host,port,lanip,lansubmask FROM channels WHERE id=%u and owner=%u and type=2", thisclient->channel, Config.ServerID); if(result==NULL) return false; if(mysql_num_rows( result )!=1 ) { Log( MSG_WARNING, "Invalid Server: %i", thisclient->channel ); DB->QFree( ); return false; } row = mysql_fetch_row( result ); BEGINPACKET( pak, 0x711 ); ADDWORD ( pak, atoi(row[1]) ); // PORT ADDDWORD ( pak, thisclient->userid ); ADDDWORD ( pak, 0x87654321 ); if(strcmp(thisclient->ClientSubNet,row[3])==0)//from lan { ADDSTRING( pak, row[2] ); Log(MSG_INFO, "Sending LanIP" ); } else if(strcmp( thisclient->ClientSubNet ,"127.0.0")==0)//same computer { ADDSTRING( pak, "127.0.0.1" ); Log(MSG_INFO, "Sending Localhost IP" ); } else { ADDSTRING( pak, row[0] ); Log(MSG_INFO, "Sending InetIP"); } ADDBYTE ( pak, 0 ); thisclient->SendPacket( &pak ); DB->QFree( ); //CHAR INFORMATION 0 1 2 3 4 result = DB->QStore("SELECT clanid,clan_rank,id,level,classid,rewardpoints FROM characters WHERE char_name='%s'", thisclient->charname); if(result==NULL) return false; if(mysql_num_rows(result)!=1) { Log( MSG_WARNING, "Number of user with charname '%s' is %i", thisclient->charname,mysql_num_rows(result)); DB->QFree( ); return false; } row = mysql_fetch_row( result ); thisclient->clanid = atoi( row[0] ); thisclient->clan_rank = atoi( row[1] ); thisclient->charid = atoi( row[2] ); thisclient->level = atoi( row[3] ); thisclient->job = atoi( row[4] ); thisclient->reward_points=atoi( row[5] ); //LMA: reward points: DB->QFree( ); //MESSENGER INFORMATION // // 0 1 result = DB->QStore("SELECT idfriend,namefriend FROM list_friend WHERE id=%i", thisclient->charid); if(result==NULL) return false; BYTE nfriends = mysql_num_rows(result) & 0xff; RESETPACKET( pak, 0x7e1 );// Friend list command ADDBYTE ( pak, 0x06 );// Sending Friend List ADDBYTE ( pak, nfriends );// # friends while(row = mysql_fetch_row( result )) { CFriendList * newfriend = new CFriendList; assert(newfriend); newfriend->id = atoi(row[0]); //friendid strcpy(newfriend->name, row[1]); //friend name thisclient->FriendList.push_back( newfriend ); ADDWORD (pak, newfriend->id);// friend id ADDWORD (pak, 0x0000 ); CCharClient* otherclient = (CCharClient*) GetClientByID( newfriend->id ); if(otherclient!=NULL) //is online?? { ADDBYTE (pak, 0x07 ); //online ChangeMessengerStatus ( thisclient, otherclient, 0x07); } else { ADDBYTE (pak, 0x08 );//offline } ADDSTRING (pak, newfriend->name); //friend name ADDBYTE (pak, 0x00 ); } thisclient->SendPacket( &pak ); DB->QFree( ); thisclient->logout = false; //SEND CLAN INFORMATION SendClanInfo (thisclient); return true; }
//withdraw screen void withdraw(char * username) { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Withdraw Class \n"); printf("\t\t\t---------------------------------------\n"); int m = 0, y = 0; char * semester; get_year(&y); semester = get_semester(m); //print current quarter course list printf("\tCurrent Registered classes: \n\n\t%s, %d\n\n", semester, y); //queryjj char q[500] = "\0"; MYSQL_RES *res_set; MYSQL_ROW row; sprintf(q, "select t.uoscode, u.uosname, t.grade from transcript t, unitofstudy u where t.uoscode = u.uoscode and t.studid = %s and t.semester = '%s' and t.year = %d;",username , semester, y); //puts(q); mysql_query(connection,q); res_set = mysql_store_result(connection); int numrows = (int)mysql_num_rows(res_set); // Display results for (int i = 0; i < numrows; i++) { row = mysql_fetch_row(res_set); if( row != NULL ) { printf("\t%s ", row[0]); printf("\t%-40s ", row[1]); printf("\t%s\n", row[2]); } } //free resources mysql_free_result(res_set); char z[20]; do { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Commands List \n"); printf("\t\t\t---------------------------------------\n"); printf("\t\t\t [course number]Withdraw a class\n"); printf("\t\t\t [0]Back to main menu \n"); printf("\t\t\t---------------------------------------\n\n"); printf("Please enter the command: "); scanf("%s", z); //system("color 2f"); if(strcmp(z, "0") == 0) { //studentMenu(username); break; } else { //call procedure withdraw here memset(q, 0, sizeof(q)); MYSQL_RES *res_set2; MYSQL_ROW row2; sprintf(q, "call withdraw(%s, '%s', '%s', %d);", username, z, semester, y); //puts(q); mysql_query(connection,q); res_set2 = mysql_store_result(connection); int numrows2 = (int)mysql_num_rows(res_set); // Display results for (int i = 0; i < numrows2; i++) { row2 = mysql_fetch_row(res_set2); if( row2 != NULL ) { printf("\t%s\n", row2[0]); } } //free resources mysql_free_result(res_set2); } } while(1); }
void sendNicks(int sd, char *buff) { char email[GP_EMAIL_LEN]; char pass[GP_PASSWORD_LEN]; char query[1024]; char gamename[32]; bool sendUnique = false; if(!find_param("email", buff, email, sizeof(email))) { sendError(sd,"Error recieving request"); return; } if(find_param("gamename", buff, gamename, sizeof(gamename))) { sendUnique = true;//just assume you want it sent } if(!find_param("pass", buff, pass, sizeof(pass))) { if(!find_param("passenc",buff,pass,sizeof(pass))) { sendError(sd,"Error recieving request"); return; } else { char *dpass; int passlen = strlen(pass); dpass = (char *)base64_decode((uint8_t *)pass, &passlen); passlen = gspassenc((uint8_t *)dpass); strcpy(pass,dpass); free(dpass); } } mysql_real_escape_string(conn,email,email,strlen(email)); mysql_real_escape_string(conn,pass,pass,strlen(pass)); sprintf_s(query,sizeof(query),"SELECT `nick`,`uniquenick` FROM `GameTracker`.`users` INNER JOIN `GameTracker`.`profiles` ON `GameTracker`.`profiles`.`userid` = `GameTracker`.`users`.`userid` WHERE `GameTracker`.`users`.`email` = '%s' AND `password` = '%s'",email,pass); if (mysql_query(conn, query)) { fprintf(stderr, "%s\n", mysql_error(conn)); return; } res = mysql_store_result(conn); char *sendmsg; char namestr[256]; int num_rows = mysql_num_rows(res); if(num_rows == 0) { formatSend(sd,true,0,"\\nr\\\\ndone\\"); return; } int len = 1024; sendmsg = (char *)malloc(len); memset((void *)sendmsg,0,len); sprintf_s(sendmsg,len,"\\nr\\%d",num_rows); while ((row = mysql_fetch_row(res)) != NULL) { sprintf_s(namestr,sizeof(namestr),"\\nick\\%s",row[0]); strncat(sendmsg,namestr,strlen(namestr)%len); if(sendUnique) { sprintf_s(namestr,sizeof(namestr),"\\uniquenick\\%s",row[1]); strncat(sendmsg,namestr,strlen(namestr)%len); } if(strlen(sendmsg)>(len/2)) { len *= 2; sendmsg = (char *)realloc(sendmsg,len); } } strcat(sendmsg,"\\ndone\\"); formatSend(sd,true,0,"%s",sendmsg); mysql_free_result(res); free((void *)sendmsg); }
//personal detail screen void personaldetail(char * username) { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Personal Details \n"); printf("\t\t\t---------------------------------------\n\n"); //query char q[500] = "\0"; MYSQL_RES *res_set; MYSQL_ROW row; sprintf(q, "select * from student where id = %s;",username); //puts(q); mysql_query(connection,q); res_set = mysql_store_result(connection); int numrows = (int)mysql_num_rows(res_set); // Display results printf("\t\t\tID: "); printf("\tName:"); printf("\t\t\tPassword:"******"\tAddress:\n"); for (int i = 0; i < numrows; i++) { row = mysql_fetch_row(res_set); if( row != NULL ) { printf("\t\t\t%s ", row[0]); printf("\t%s ", row[1]); printf("\t%s ", row[2]); printf("\t%s\n", row[3]); } } //free resources mysql_free_result(res_set); char z[20]; char np[20]; char na[30]; do { printf("\n\t\t\t---------------------------------------\n"); printf("\t\t\t Commands List \n"); printf("\t\t\t---------------------------------------\n"); printf("\t\t\t [1]Change password\n"); printf("\t\t\t [2]Change address\n"); printf("\t\t\t [0]Back to main menu \n"); printf("\t\t\t---------------------------------------\n\n"); printf("Please enter the command: "); scanf("%s", z); //system("color 2f"); if(strcmp(z, "0") == 0) { studentMenu(username); break; } else if(strcmp(z,"1") == 0){ printf("\nPlease enter the new password: "******"%s", np); //call procedure change password here memset(q, 0, sizeof(q)); MYSQL_RES *res_set2; //MYSQL_ROW row2; sprintf(q, "call changepassword(%s, '%s');", username, np); //puts(q); mysql_query(connection,q); res_set2 = mysql_store_result(connection); //int numrows2 = (int)mysql_num_rows(res_set2); //free resources mysql_free_result(res_set2); } else if(strcmp(z, "2") == 0){ printf("\nPlease enter the new address: "); scanf("%s", na); //call procedure chage address here memset(q, 0, sizeof(q)); MYSQL_RES *res_set2; //MYSQL_ROW row2; sprintf(q, "call changeaddress(%s, '%s');", username, na); //puts(q); mysql_query(connection,q); res_set2 = mysql_store_result(connection); //int numrows2 = (int)mysql_num_rows(res_set2); //free resources mysql_free_result(res_set2); } else { printf("INVALID COMMAND.\n"); } } while(1); }
int QMYSQLResult::size() { return isSelect() ? (int)mysql_num_rows( d->result ) : -1; }
int SelectAllHostsToMeasure(queue<string> * q, queue<int> * r){ MYSQL_RES * results; MYSQL_ROW row; //really a char ** string hostIP; int hostID; char * endptr = ""; char * fixedInsertStr; unsigned int len; int holder; unsigned int numRows = 0, numFields = 0; MYSQL * conn; fixedInsertStr = "SELECT Hosts.id, Hosts.ip_str FROM Hosts INNER JOIN HostsToMeasure WHERE Hosts.id = HostsToMeasure.hostID"; len = strlen(fixedInsertStr); if(WaitForSingleObject(mysqlMutex, INFINITE) != WAIT_OBJECT_0){ printf("SelectAllHostsToMeasure: Couldn't acquire mutex. Returning\n"); return GENERIC_ERROR; } conn = OpenDatabaseConnection(gffServerDBName); if(conn == NULL){ printf("SelectAllHostsToMeasure: OpenDatabaseConnection(gffServerDBName) failed\n"); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } ////////////////////////////////// if(0 != mysql_real_query(conn, fixedInsertStr, len)){ holder = CheckError(conn,mysql_errno(conn)); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, holder); } results = mysql_store_result(conn); if(results == NULL){ printf("SelectAllHostsToMeasure: mysql_use_result failed\n"); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } numRows = (unsigned int)mysql_num_rows(results); if(numRows == 0){//Will fail here if an empty set is returned mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, NO_RESULTS_FOUND); } //This function expects that the results will be a single column of integers (IDs) for(unsigned int i = 0; i < numRows; i++){ row = mysql_fetch_row(results); if(row == NULL){ printf("SelectAllHostsToMeasure: mysql_fetch_row failed\n"); mysql_free_result(results); CloseDatabaseConnection(conn); return ReleaseMutexAndReturnError(mysqlMutex, GENERIC_ERROR); } hostID = strtoul(row[0], &endptr, 10); r->push(hostID); q->push(row[1]); } holder = GENERIC_SUCCESS; mysql_free_result(results); ////////////////////////////////// CloseDatabaseConnection(conn); if(!ReleaseMutex(mysqlMutex)){ printf("SelectAllHostsToMeasure: Couldn't release mutex. Exiting thread\n"); return GENERIC_ERROR; } return holder; }