Example #1
0
static int
dbfield_isnull( Dbptr db )
{
	char	*fnull = NULL;
	long	fsize;
	char	*stringval = NULL;
	int	isnull = 0;

	dbquery( db, dbFIELD_SIZE, &fsize );
	dbquery( db, dbNULL, &fnull );

	allot( char *, stringval, fsize + 2 );

	dbget( db, stringval );

	strtrim( stringval );

	if( ! strcmp( stringval, fnull ) ) {

		isnull = 1;

	} else {

		isnull = 0;
	}

	free( stringval );

	return isnull;
}
Example #2
0
profesor *consultar_docente(long docente_id) {
    profesor *p = NULL;
    char sql[512];
    int num = 0;
    PGconn *conexion = NULL;
    PGresult *resultado = NULL;

    if (docente_id > 0) {
        p = (profesor *) malloc(sizeof (profesor));
        p->docente_id = docente_id;
        p->aprobacion = 0.0;
        p->promedio = 0.0;
        p->reprobacion = 0.0;
        p->stddev = 0.0;

        // Busco Reprobados
        memset(sql, 0, sizeof (sql));
        sprintf(sql, "SELECT AVG(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.docente_id = '%ld' AND asignaturas_cursadas.nota < 4 GROUP BY cursos.docente_id", docente_id);
        conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
        if (conexion != NULL) {
            resultado = dbquery(conexion, sql);
            num = dbnumrows(resultado);
            if (num > 0) {
                p->reprobacion = getDouble(dbresult(resultado, 0, 0));
                dbfree(resultado);
            }
            dbclose(conexion);
        }

        // Busco Aprobados
        memset(sql, 0, sizeof (sql));
        sprintf(sql, "SELECT AVG(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.docente_id = '%ld' AND asignaturas_cursadas.nota >= 4 GROUP BY cursos.docente_id", docente_id);
        conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
        if (conexion != NULL) {
            resultado = dbquery(conexion, sql);
            num = dbnumrows(resultado);
            if (num > 0) {
                p->aprobacion = getDouble(dbresult(resultado, 0, 0));
                dbfree(resultado);
            }
            dbclose(conexion);
        }

        // Busco Promedio
        memset(sql, 0, sizeof (sql));
        sprintf(sql, "SELECT AVG(asignaturas_cursadas.nota) AS promedio, STDDEV(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.docente_id = '%ld' GROUP BY cursos.docente_id ORDER BY promedio DESC", docente_id);
        conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
        if (conexion != NULL) {
            resultado = dbquery(conexion, sql);
            num = dbnumrows(resultado);
            if (num > 0) {
                p->promedio = getDouble(dbresult(resultado, 0, 0));
                p->stddev = getDouble(dbresult(resultado, 0, 1));
                dbfree(resultado);
            }
            dbclose(conexion);
        }
    }
    return p;
}
Example #3
0
/* creates tables with proper schema */
int table_init(MYSQL *dbase)
{
  int r;

  /* drop tables gen, std and penta */
  printf("Table init\n");
  dbquery(dbase, "drop table gen");
  dbquery(dbase, "drop table penta");
  dbquery(dbase, "drop table std");

  /* create with proper schema */
  r = dbquery(dbase, "create table gen (color int, x bigint, "
	      "t1 text, t2 text, t3 text, t4 text, t5 text)");
  if (r < 0) return r;

  r = dbquery(dbase, "create table std (color int, x bigint, y bigint, "
	      "t1 text, t2 text, t3 text, t4 text, t5 text)");
  if (r < 0) return r;

  r = dbquery(dbase, "create table penta (color int, x5 bigint, x bigint, "
	      "t1 text, t2 text, t3 text, t4 text, t5 text)");
  return r;

#ifdef FALSE
  /* create proper indices */
  r = dbquery(dbase, "create index genidx on gen (x)");
  if (r < 0) return r;

  r = dbquery(dbase, "create index genidx on std (x, y)");
  if (r < 0) return r;

  r = dbquery(dbase, "create index genidx on penta (x, x5)");
  if (r < 0) return r;
#endif
}
Example #4
0
void csdb_flushchannelcounters(void *arg) {
  int i;

  if(!channelcounter_count)
    return;

  dbquery("BEGIN TRANSACTION;");

  for(i=0;i<channelcounter_count;i++)
    dbquery("%s", channelcounter_bufs[i]);

  dbquery("COMMIT;");

  channelcounter_count = 0;
}
Example #5
0
ventas_mensuales* getVentasMensuales(char* tienda, int* cantidades_ventas) {
    ventas_mensuales* ventas = NULL;
    int i = 0;
    int num = 0;
    PGconn *conexion = NULL;
    PGresult *resultado = NULL;
    char sql[513];

    if (tienda != NULL) {
        conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
        if (conexion != NULL) {
            memset(sql, 0, sizeof (sql));
            snprintf(sql, 512, "SELECT tienda, EXTRACT(month FROM fecha) AS mes,SUM(monto) AS total FROM ventas WHERE tienda = '%s' GROUP BY tienda, mes ORDER BY mes", tienda);
            resultado = dbquery(conexion, sql);
            num = dbnumrows(resultado);
            if (num > 0) {
                ventas = (ventas_mensuales *) malloc(num * sizeof (ventas_mensuales));
                for (i = 0; i < num; i++) {
                    ventas[i].tienda = getString(dbresult(resultado, i, 0));
                    ventas[i].mes = getInt(dbresult(resultado, i, 1));
                    ventas[i].monto = getLong(dbresult(resultado, i, 2));
                }
                dbfree(resultado);
            }
            dbclose(conexion);
        }
    }
    *cantidades_ventas = num;

    return ventas;
}
Example #6
0
ranking_profesor *ranking_docentes(int semestre, int anio, long *tamano) {
    ranking_profesor *ranking = NULL;
    char sql[512];
    int i = 0;
    int num = 0;
    PGconn *conexion = NULL;
    PGresult *resultado = NULL;

    if (semestre > 0 && anio > 0) {
        memset(sql, 0, sizeof (sql));
        sprintf(sql, "SELECT cursos.docente_id, AVG(asignaturas_cursadas.nota) AS promedio, STDDEV(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.semestre='%d' AND cursos.anio='%d' GROUP BY cursos.docente_id ORDER BY promedio DESC", semestre, anio);
        conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
        if (conexion != NULL) {
            resultado = dbquery(conexion, sql);
            num = dbnumrows(resultado);
            if (num > 0) {
                ranking = (ranking_profesor *) malloc(num * sizeof (ranking_profesor));
                for (i = 0; i < num; i++) {
                    ranking[i].lugar = i + 1;
                    ranking[i].docente_id = getLong(dbresult(resultado, i, 0));
                    ranking[i].nota = getDouble(dbresult(resultado, i, 1));
                    ranking[i].stddev = getDouble(dbresult(resultado, i, 2));
                    ranking[i].semestre = semestre;
                    ranking[i].anio = anio;
                }
                dbfree(resultado);
            }
            dbclose(conexion);
        }
    }
    *tamano = num;

    return ranking;
}
Example #7
0
void csdb_accounthistory_insert(nick *np, char *oldpass, char *newpass, char *oldemail, char *newemail) {
  reguser *rup=getreguserfromnick(np);
  char escoldpass[PASSLEN*2+5];
  char escnewpass[PASSLEN*2+5];
  char escoldemail[EMAILLEN*2+5];
  char escnewemail[EMAILLEN*2+5];

  if (!rup || UHasOperPriv(rup))
    return;

  if (oldpass)
    dbescapestring(escoldpass, oldpass, CSMIN(strlen(oldpass), PASSLEN));
  else
    escoldpass[0]='\0';

  if (newpass)
    dbescapestring(escnewpass, newpass, CSMIN(strlen(newpass), PASSLEN));
  else
    escnewpass[0]='\0';

  if (oldemail)
    dbescapestring(escoldemail, oldemail, CSMIN(strlen(oldemail), EMAILLEN));
  else
    escoldemail[0]='\0';
  if (newemail)
    dbescapestring(escnewemail, newemail, CSMIN(strlen(newemail), EMAILLEN));
  else
    escnewemail[0]='\0';

  dbquery("INSERT INTO chanserv.accounthistory (userID, changetime, authtime, oldpassword, newpassword, oldemail, "
    "newemail) VALUES (%u, %lu, %lu, '%s', '%s', '%s', '%s')", rup->ID, getnettime(), np->accountts, escoldpass, escnewpass,
    escoldemail, escnewemail);
}
Example #8
0
ventas_horarias* getVentasHorarias(int* cantidades_ventas) {
    ventas_horarias* ventas = NULL;
    int i = 0;
    int num = 0;
    PGconn *conexion = NULL;
    PGresult *resultado = NULL;

    conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
    if (conexion != NULL) {
        resultado = dbquery(conexion, "SELECT DISTINCT ON (tienda) tienda, EXTRACT(hour FROM fecha) AS hora,SUM(monto) AS total FROM ventas GROUP BY tienda, hora ORDER BY tienda, SUM(monto) DESC");
        num = dbnumrows(resultado);
        if (num > 0) {
            ventas = (ventas_horarias *) malloc(num * sizeof (ventas_horarias));
            for (i = 0; i < num; i++) {
                ventas[i].tienda = getString(dbresult(resultado, i, 0));
                ventas[i].hora = getInt(dbresult(resultado, i, 1));
                ventas[i].monto = getLong(dbresult(resultado, i, 2));
            }
            dbfree(resultado);
        }
        dbclose(conexion);
    }

    *cantidades_ventas = num;

    return ventas;
}
Example #9
0
Tbl *
dbschema2sqlcreate( Dbptr db, long flags )
{
	Tbl	*sql;
	char	*cmd;
	Tbl	*tables;
	char	*table;
	long	itable;

	sql = newtbl( 0 );

	if( db.table >= 0 ) {
		
		cmd = generate_sqltable_create( db, flags );

		pushtbl( sql, cmd );

	} else {

		dbquery( db, dbSCHEMA_TABLES, &tables );

		for( itable = 0; itable < maxtbl( tables ); itable++ ) {

			table = gettbl( tables, itable );

			db = dblookup( db, "", table, "", "" );
			
			cmd = generate_sqltable_create( db, flags );

			pushtbl( sql, cmd );
		}
	}

	return sql;
}
Example #10
0
int
db2sqldelete( Dbptr db, char *sync, Tbl **tbl, long flags )
{
	void	*stk = 0;
	char	*table;
	char	*cmd;

	if( *tbl == (Tbl *) NULL ) {
		
		*tbl = newtbl( 0 );
	}

	dbquery( db, dbTABLE_NAME, &table );

	pushstr( &stk, "DELETE from `" );
	pushstr( &stk, table );

	pushstr( &stk, "` WHERE " );

	pushstr( &stk, "  `" );
	pushstr( &stk, Db2sql_syncfield_name );
	pushstr( &stk, "` = '" );
	pushstr( &stk, sync );
	pushstr( &stk, "'" );
	pushstr( &stk, ";\n" );

	cmd = popstr( &stk, 1 );

	pushtbl( *tbl, cmd );

	return 1;
}
Example #11
0
void csdb_updateauthinfo(reguser *rup) {
  char eschost[2*HOSTLEN+1];

  dbescapestring(eschost,rup->lastuserhost->content,rup->lastuserhost->length);
  dbquery("UPDATE chanserv.users SET lastauth=%lu,lastuserhost='%s' WHERE ID=%u",
		  rup->lastauth,eschost,rup->ID);
}
Example #12
0
int opendb( Dset *dset )
{
 
   char key[256];
   Tbl *sort_sta_ch_tm;
 
   if (dbopen_database ( dset->dbname, "r+", &(dset->db) ) == dbINVALID )
         die (0, "Can't open database %s\n",  dset->dbname );
 
    dset->db = dblookup ( dset->db, 0, "wfdisc", 0, 0);
    if ( dset->db.table == dbINVALID )
       die (0, "Can't open '%s' wfdisc table.\n", dset->dbname );
 
    /* Select specified sta&chan */
 
    sprintf( key,"(chan =~ /%s/ && sta=~ /%s/)\0", dset->chan, dset->sta );
    dset->db = dbsubset(  dset->db, key, 0 );
    sort_sta_ch_tm = strtbl("sta", "chan", "time", 0 ) ;
    dset->db = dbsort ( dset->db, sort_sta_ch_tm, 0, 0 ) ;
 
    dbquery ( dset->db, dbRECORD_COUNT, &(dset->dbrec) );
    if( dset->dbrec <= 0 )
       die( 0, " no record with sta == %s and chan == %s in %s.\n", 
                 dset->sta, dset->chan, dset->dbname );
 
 
    return 1;
 
}  
Example #13
0
ventas_anuales* getVentasAnuales(int* cantidades_ventas) {
    ventas_anuales* ventas = NULL;
    int i = 0;
    int num = 0;
    PGconn *conexion = NULL;
    PGresult *resultado = NULL;

    conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
    if (conexion != NULL) {
        resultado = dbquery(conexion, "SELECT tienda, SUM(monto) FROM ventas GROUP BY tienda");
        num = dbnumrows(resultado);
        if (num > 0) {
            ventas = (ventas_anuales *) malloc(num * sizeof (ventas_anuales));
            for (i = 0; i < num; i++) {
                ventas[i].tienda = getString(dbresult(resultado, i, 0));
                ventas[i].monto = getLong(dbresult(resultado, i, 1));
            }
            dbfree(resultado);
        }
        dbclose(conexion);
    }

    *cantidades_ventas = num;

    return ventas;
}
Example #14
0
void csdb_chanlevhistory_insert(regchan *rcp, nick *np, reguser *trup, flag_t oldflags, flag_t newflags) {
  reguser *rup=getreguserfromnick(np);
  assert(rup != NULL);

  dbquery("INSERT INTO chanserv.chanlevhistory (userID, channelID, targetID, changetime, authtime, "
    "oldflags, newflags) VALUES (%u, %u, %u, %lu, %lu, %u, %u)",  rup->ID, rcp->ID, trup->ID, getnettime(), np->accountts,
    oldflags, newflags);
}
Example #15
0
void csdb_updatetopic(regchan *rcp) {
  char esctopic[TOPICLEN*2+5];

  if (rcp->topic) {
    dbescapestring(esctopic,rcp->topic->content,rcp->topic->length);
  } else {
    esctopic[0]='\0';
  }
  dbquery("UPDATE chanserv.channels SET topic='%s' WHERE ID=%u",esctopic,rcp->ID);
}
/* returns true if the table t is empty */
int dbtable_empty(Dbptr db,char *t)
{
	long nrows;
	db=dblookup(db,0,t,0,0);
	dbquery(db,dbRECORD_COUNT,&nrows);
	if(nrows>0) 
		return(0);
	else
		return(1);
}
Example #17
0
void csdb_createchanuser(regchanuser *rcup) {
  char escinfo[210];

  if (rcup->info) 
    dbescapestring(escinfo, rcup->info->content, rcup->info->length);
  else
    escinfo[0]='\0';
  
  dbquery("INSERT INTO chanserv.chanusers VALUES(%u, %u, %u, %lu, %lu, '%s')",
		  rcup->user->ID, rcup->chan->ID, rcup->flags, rcup->changetime, 
		  rcup->usetime, escinfo);
}
Example #18
0
void set_shot_variable(Dbptr db, Arr *tables, int evid, SEGYTraceHeader *h)
{
	int *ok;
	char ss_string[30];
	long int ntest;
	double dnorth, deast, elev, edepth;

	ok = getarr(tables,"shot");
	if(ok)
	{
		db = dblookup(db,0,"shot",0,0);
		sprintf(ss_string,"evid == %d",evid);
		db = dbsubset(db,ss_string,0);
		dbquery(db,dbRECORD_COUNT,&ntest);
		if(ntest <= 0)
		{
			elog_complain(0,"evid %d not found in shot table\nShot coordinates will not be saved in segy headers\n",
				evid);
			dbfree(db);
			return;
		}
		else if(ntest > 1)
		{
			elog_notify(0,"multiple rows in shot found for evid %d\n",
				evid);
		}
		db.record = 0;
		if(dbgetv(db,0,
			"dnorth",&dnorth,
			"deast", &deast,
			"elev", &elev,
			"edepth",&edepth,
				NULL) == dbINVALID)
		{
			elog_complain(0,"dbgetv error for evid %d\nShot coordinates will not be saved in segy headers\n",
				evid);
			return;
		}
		/*convert to m from km */
		deast *= 1000.0;
		dnorth *= 1000.0;
		h->sourceLongOrX          = htonl((int32_t) deast);
		h->sourceLatOrY           = htonl((int32_t) dnorth);
		h->sourceSurfaceElevation = htonl((int32_t) elev);
		h->sourceDepth            = htonl((int32_t) edepth);
		/* WARNING:  This assumes receiver coordinates have already been set */
		h->sourceToRecDist = htonl( (int32_t) hypot(
					dnorth - ((double)(ntohl(h->recLatOrY ))),
					deast  - ((double)(ntohl(h->recLongOrX)))
		));
	}
	dbfree(db);
}
Example #19
0
void csdb_updatemaillock(maillock *mlp) {
  char escpattern[1024], escreason[1024];

  dbescapestring(escpattern, mlp->pattern->content, mlp->pattern->length);

  if (mlp->reason)
    dbescapestring(escreason, mlp->reason->content, mlp->reason->length);
  else
    escreason[0]='\0';

  dbquery("UPDATE chanserv.maillocks SET pattern='%s', reason='%s', createdby=%u, created=%jd WHERE ID=%u", escpattern, escreason, mlp->createdby, (intmax_t)mlp->created, mlp->id);
}
Example #20
0
void csdb_updatechanuser(regchanuser *rcup) {
  char escinfo[210];

  if (rcup->info) 
    dbescapestring(escinfo, rcup->info->content, rcup->info->length);
  else
    escinfo[0]='\0';

  dbquery("UPDATE chanserv.chanusers SET flags=%u, changetime=%lu, "
		  "usetime=%lu, info='%s' WHERE channelID=%u and userID=%u",
		  rcup->flags, rcup->changetime, rcup->usetime, escinfo, rcup->chan->ID,rcup->user->ID);
}
Example #21
0
void csdb_createuser(reguser *rup) {
  char escpassword[25];
  char escemail[210];
  char esclastuserhost[160];
  char escreason[510];
  char esccomment[510];
  char escusername[35];
  char escinfo[210];
  char esclastemail[210];

  dbescapestring(escusername, rup->username, strlen(rup->username));
  dbescapestring(escpassword, rup->password, strlen(rup->password));
  
  if (rup->email)
    dbescapestring(escemail, rup->email->content, rup->email->length);
  else
    escemail[0]='\0';

  if (rup->lastemail)
    dbescapestring(esclastemail, rup->lastemail->content, rup->lastemail->length);
  else
    esclastemail[0]='\0';

  if (rup->lastuserhost)
    dbescapestring(esclastuserhost, rup->lastuserhost->content, rup->lastuserhost->length);
  else
    esclastuserhost[0]='\0';

  if (rup->suspendreason)
    dbescapestring(escreason, rup->suspendreason->content, rup->suspendreason->length);
  else
    escreason[0]='\0';

  if (rup->comment)
    dbescapestring(esccomment, rup->comment->content, rup->comment->length);
  else
    esccomment[0]='\0';

  if (rup->info)
    dbescapestring(escinfo, rup->info->content, rup->info->length);
  else
    escinfo[0]='\0';

  dbquery("INSERT INTO chanserv.users (ID, username, created, lastauth, lastemailchng, "
		  "flags, language, suspendby, suspendexp, suspendtime, lockuntil, password, email, lastuserhost, "
		  "suspendreason, comment, info, lastemail, lastpasschng)"
		  "VALUES (%u,'%s',%lu,%lu,%lu,%u,%u,%u,%lu,%lu,%lu,'%s','%s','%s','%s','%s','%s','%s',%lu)",
		  rup->ID, escusername, rup->created, rup->lastauth, rup->lastemailchange, rup->flags, 
		  rup->languageid, rup->suspendby, rup->suspendexp, rup->suspendtime, rup->lockuntil,
		  escpassword, escemail, esclastuserhost, escreason, esccomment, escinfo, esclastemail,
                  rup->lastpasschange);
}  
Example #22
0
void csdb_updatechannel(regchan *rcp) {
  char escwelcome[WELCOMELEN*2+1];
  char esctopic[TOPICLEN*2+1];
  char esckey[70];
  char escreason[510];
  char esccomment[510];
  char escname[1000];

  dbescapestring(escname, rcp->index->name->content, rcp->index->name->length);

  if (rcp->welcome) 
    dbescapestring(escwelcome, rcp->welcome->content, 
			rcp->welcome->length);
  else
    escwelcome[0]='\0';

  if (rcp->topic)
    dbescapestring(esctopic, rcp->topic->content, rcp->topic->length);
  else
    esctopic[0]='\0';

  if (rcp->key)
    dbescapestring(esckey, rcp->key->content, rcp->key->length);
  else
    esckey[0]='\0';

  if (rcp->suspendreason) 
    dbescapestring(escreason, rcp->suspendreason->content, 
			rcp->suspendreason->length);
  else
    escreason[0]='\0';

  if (rcp->comment)
    dbescapestring(esccomment, rcp->comment->content, 
			rcp->comment->length);
  else
    esccomment[0]='\0';

  dbquery("UPDATE chanserv.channels SET name='%s', flags=%d, forcemodes=%d,"
		  "denymodes=%d, chanlimit=%d, autolimit=%d, banstyle=%d,"
		  "lastactive=%lu,statsreset=%lu, banduration=%lu, founder=%u,"
		  "addedby=%u, suspendby=%u, suspendtime=%lu, chantype=%d, totaljoins=%u,"
		  "tripjoins=%u, maxusers=%u, tripusers=%u,"
		  "welcome='%s', topic='%s', chankey='%s', suspendreason='%s',"
		  "comment='%s', lasttimestamp=%jd WHERE ID=%u",escname,rcp->flags,rcp->forcemodes,
		  rcp->denymodes,rcp->limit,rcp->autolimit, rcp->banstyle,
		  rcp->lastactive,rcp->statsreset,rcp->banduration,
		  rcp->founder, rcp->addedby, rcp->suspendby, rcp->suspendtime,
		  rcp->chantype,rcp->totaljoins,rcp->tripjoins,
		  rcp->maxusers,rcp->tripusers,
		  escwelcome,esctopic,esckey,escreason,esccomment,(intmax_t)rcp->ltimestamp,rcp->ID);
}
Example #23
0
void csdb_createchannel(regchan *rcp) {
  char escwelcome[WELCOMELEN*2+1];
  char esctopic[TOPICLEN*2+1];
  char esckey[70];
  char escreason[510];
  char esccomment[510];
  char escname[510];

  dbescapestring(escname, rcp->index->name->content, rcp->index->name->length);

  if (rcp->welcome) 
    dbescapestring(escwelcome, rcp->welcome->content, 
			rcp->welcome->length);
  else
    escwelcome[0]='\0';

  if (rcp->topic)
    dbescapestring(esctopic, rcp->topic->content, rcp->topic->length);
  else
    esctopic[0]='\0';

  if (rcp->key)
    dbescapestring(esckey, rcp->key->content, rcp->key->length);
  else
    esckey[0]='\0';

  if (rcp->suspendreason) 
    dbescapestring(escreason, rcp->suspendreason->content, 
			rcp->suspendreason->length);
  else
    escreason[0]='\0';

  if (rcp->comment)
    dbescapestring(esccomment, rcp->comment->content, 
			rcp->comment->length);
  else
    esccomment[0]='\0';

  dbquery("INSERT INTO chanserv.channels (ID, name, flags, forcemodes, denymodes,"
		  "chanlimit, autolimit, banstyle, created, lastactive, statsreset, "
		  "banduration, founder, addedby, suspendby, suspendtime, chantype, totaljoins, tripjoins,"
		  "maxusers, tripusers, welcome, topic, chankey, suspendreason, "
		  "comment, lasttimestamp) VALUES (%u,'%s',%d,%d,%d,%d,%d,%d,%lu,%lu,%lu,%lu,%u,"
		  "%u,%u,%lu,%d,%u,%u,%u,%u,'%s','%s','%s','%s','%s',%jd)",
		  rcp->ID, escname, rcp->flags,rcp->forcemodes,
		  rcp->denymodes,rcp->limit,rcp->autolimit, rcp->banstyle, rcp->created, 
		  rcp->lastactive,rcp->statsreset,rcp->banduration,
		  rcp->founder, rcp->addedby, rcp->suspendby, rcp->suspendtime,
		  rcp->chantype,rcp->totaljoins,rcp->tripjoins,
		  rcp->maxusers,rcp->tripusers,
		  escwelcome,esctopic,esckey,escreason,esccomment,(intmax_t)rcp->ltimestamp);
}
Example #24
0
void csdb_createmaillock(maillock *mlp) {
  char escpattern[1024], escreason[1024];

  dbescapestring(escpattern, mlp->pattern->content, mlp->pattern->length);

  if (mlp->reason)
    dbescapestring(escreason, mlp->reason->content, mlp->reason->length);
  else
    escreason[0]='\0';

  dbquery("INSERT INTO chanserv.maillocks (id, pattern, reason, createdby, created) VALUES(%u, '%s', '%s', %u, %jd)",
          mlp->id,escpattern,escreason,mlp->createdby,(intmax_t)mlp->created);
}
Example #25
0
void csdb_updateuser(reguser *rup) {
  char escpassword[25];
  char escemail[210];
  char esclastuserhost[160];
  char escreason[510];
  char esccomment[510];
  char escinfo[210];
  char esclastemail[210];

  dbescapestring(escpassword, rup->password, strlen(rup->password));
   
  if (rup->email)
    dbescapestring(escemail, rup->email->content, rup->email->length);
  else
    escemail[0]='\0';

  if (rup->lastemail)
    dbescapestring(esclastemail, rup->lastemail->content, rup->lastemail->length);
  else
    esclastemail[0]='\0';

  if (rup->lastuserhost)
    dbescapestring(esclastuserhost, rup->lastuserhost->content, rup->lastuserhost->length);
  else
    esclastuserhost[0]='\0';

  if (rup->suspendreason)
    dbescapestring(escreason, rup->suspendreason->content, rup->suspendreason->length);
  else
    escreason[0]='\0';

  if (rup->comment)
    dbescapestring(esccomment, rup->comment->content, rup->comment->length);
  else
    esccomment[0]='\0';

  if (rup->info)
    dbescapestring(escinfo, rup->info->content, rup->info->length);
  else
    escinfo[0]='\0';

  dbquery("UPDATE chanserv.users SET lastauth=%lu, lastemailchng=%lu, flags=%u,"
		  "language=%u, suspendby=%u, suspendexp=%lu, suspendtime=%lu, lockuntil=%lu, password='******', email='%s',"
		  "lastuserhost='%s', suspendreason='%s', comment='%s', info='%s', lastemail='%s', lastpasschng=%lu "
                  " WHERE ID=%u",
		  rup->lastauth, rup->lastemailchange, rup->flags, rup->languageid, rup->suspendby, rup->suspendexp,
		  rup->suspendtime, rup->lockuntil, escpassword, escemail, esclastuserhost, escreason, esccomment, escinfo, esclastemail,
                  rup->lastpasschange,
		  rup->ID);
}  
/* Special function used in orbgenloc for repeated task sending a db record 
to the orb.  It basicially implements a standard error message if this
fails.  

Arguments:
	db - input db pointer.  It is ASSUMED that db.record is dbSCRATCH
		and the relevant record has been copied onto the scratch
		record before calling this function. 
	orb - orb descriptor to send the scratch record of db to.  
Returns 0 if all worked.  Returns negative of number of failures 
otherwise with messages placed in error log.  
Author:  Gary L. Pavlis
Written:  May 1997
*/
int save_dbrecord(Dbptr db, int orb)
{
	char *table_name;
	int ret_code=0;


	if(db2orbpkt(db,orb)) 
	{
		dbquery(db,dbTABLE_NAME,table_name);
		elog_log(0,"Error writing a record for table %s to orb\n",
			table_name);
		--ret_code;
	}
	return(ret_code);
}
Example #27
0
Dbptr join_tables(Dbptr db, Pf *pf, Arr *tables)
{
	char *table_name;
	int *ilogic;
	Tbl *t;
	Dbptr dbj;
	long int nrec;
	int i;
	int ntables=0;

	/* This is an exact copy of above, but it is duplicated because
	this function could get stolen by another future program
	because it is pretty general */
	t = pfget_tbl(pf,"join_tables");
	if(t == NULL)
	{
		elog_die(0,"No list of tables to be joined\n");
	}
	for(i=0;i<maxtbl(t);++i)
	{
		table_name = gettbl(t,i);
		ilogic = (int *)getarr(tables,table_name);
		if(ilogic == NULL)
		{
			elog_die(0,"Table %s was not handled previously by check_tables.\nProgramming logic error\n",
				table_name);
		}
		else if(*ilogic)
		{
			if(ntables == 0)
				dbj = dblookup(db,0,table_name,0,0);
			else
				dbj=dbjoin(dbj,dblookup(db,0,table_name,0,0),
					NULL,NULL,0,NULL,0);
			++ntables;
			dbquery(dbj,dbRECORD_COUNT,&nrec);
			if(nrec == 0)
			{
				elog_complain(0,
					"join_tables error\njoined database has 0 length after joining table %s\n",
					table_name);
				dbj.record = dbINVALID;
				return(dbj);
			}
		}
	}
	return(dbj);
}
mxArray *
dbfield2mxArray( Dbptr db )
{
    mxArray	*result;
    long	type;
    Dbvalue	value;
    char	warning[STRSZ];

    dbquery( db, dbFIELD_TYPE, &type );
    antelope_mex_clear_register( 1 );

    if( dbget( db, value.s ) < 0 )
    {
        antelope_mex_clear_register( 1 );
        return (mxArray *) NULL;
    }

    switch( type )
    {
    case dbDBPTR:
        result = CreateDbptrStructFromDbptr( value.db );
        break;
    case dbSTRING:
        copystrip( value.s, value.s, strlen( value.s ) );
        result = mxCreateString( value.s );
        break;
    case dbBOOLEAN:
    case dbINTEGER:
    case dbYEARDAY:
        copystrip( value.s, value.s, strlen( value.s ) );
        result = CreateDouble( (double) atol( value.s ) );
        break;
    case dbREAL:
    case dbTIME:
        copystrip( value.s, value.s, strlen( value.s ) );
        result = CreateDouble( (double) atof( value.s ) );
        break;
    default:
        sprintf( warning,
                 "Can't interpret field of type %s",
                 xlatnum( type, Dbxlat, NDbxlat ) );
        mexWarnMsgTxt( warning );
        result = (mxArray *) NULL;
        break;
    }

    return result;
}
Example #29
0
/* fills the points from the structure into the gen table
 * returns status of the query execution */
int fill_gen_table(MYSQL *dbase, struct gen *g)
{
  int i, r;

  for (i=0; i<g->total; i++) {
    r = dbquery(dbase, "INSERT INTO gen (color, x, t1, t2, t3, t4, t5) "
		"VALUES (%d, %lld, %s, %s, %s, %s, %s)",
		g->color[i], g->x[i],
		BIGTEXT, BIGTEXT, BIGTEXT, BIGTEXT, BIGTEXT);
    if (r < 0) {
      printf("SQL error\n");
      return r;
    }
  }
  return r;
}
Example #30
0
void csdb_createmail(reguser *rup, int type) {
  char sqlquery[6000];
  char escemail[210];

  if (type == QMAIL_NEWEMAIL) {
    if (rup->email) {
      dbescapestring(escemail, rup->email->content, rup->email->length);
      sprintf(sqlquery, "INSERT INTO chanserv.email (userID, emailType, prevEmail) "
	      "VALUES (%u,%u,'%s')", rup->ID, type, escemail);
    }
  } else {
    sprintf(sqlquery, "INSERT INTO chanserv.email (userID, emailType) VALUES (%u,%u)", rup->ID, type);
  }

  dbquery("%s", sqlquery);
}