//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;
}
Пример #2
0
// 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;
}
Пример #3
0
/**
	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) );
}
Пример #4
0
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()
Пример #5
0
int64_t MySQLResult::getRowCount() const {
  if (!m_localized) {
    return (int64_t)mysql_num_rows(m_res);
  }
  return m_row_count;
}
Пример #6
0
	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;
	}
Пример #7
0
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;
}
Пример #8
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;
}
Пример #9
0
/* 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;
}
Пример #10
0
unsigned long wxMySQLResult::GetRowCount()
{
	return mysql_num_rows(m_Res);
}
Пример #11
0
unsigned int wxMySQL::GetTableCount()
{
	MYSQL_RES * res = mysql_list_tables(m_pDB, NULL);
	return mysql_num_rows(res);
}
Пример #12
0
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;
}
Пример #13
0
//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;
}
Пример #14
0
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;
}
Пример #15
0
//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 );
}
Пример #16
0
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;
}
Пример #17
0
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;
	}
}
Пример #18
0
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;
}
Пример #19
0
// 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;
}
Пример #20
0
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;
}
Пример #21
0
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();
Пример #22
0
//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);

}
Пример #23
0
/**
 * \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;
}
Пример #24
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);
    
}
Пример #25
0
// 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;        
}
Пример #26
0
//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);
}
Пример #27
0
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);
}
Пример #28
0
//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);
}
Пример #29
0
int QMYSQLResult::size()
{
    return isSelect() ? (int)mysql_num_rows( d->result ) : -1;
}
Пример #30
0
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;
}