示例#1
0
文件: tareas.c 项目: sebasalazar/C
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;
}
示例#2
0
文件: tareas.c 项目: sebasalazar/C
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;
}
示例#3
0
文件: tareas.c 项目: sebasalazar/C
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;
}
示例#4
0
void
usage(void)
{
    g_fprintf(stderr, _("Usage: amfetchdump [options] [-o configoption]* config hostname [diskname [datestamp [level [hostname [diskname [datestamp [level ... ]]]]]]]\n\n"));
    g_fprintf(stderr, _("Goes and grabs a dump from tape, moving tapes around and assembling parts as\n"));
    g_fprintf(stderr, _("necessary.  Files are restored to the current directory, unless otherwise\nspecified.\n\n"));
    g_fprintf(stderr, _("  -p Pipe exactly *one* complete dumpfile to stdout, instead of to disk.\n"));
    g_fprintf(stderr, _("  -h Output the amanda header to same output as the image.\n"));
    g_fprintf(stderr, _("  --header-fd <fd> Output the amanda header to the numbered file descriptor.\n"));
    g_fprintf(stderr, _("  --header-file <filename> Output the amanda header to the filename.\n"));
    g_fprintf(stderr, _("  -O <output dir> Restore files to this directory.\n"));
    g_fprintf(stderr, _("  -d <device> Force restoration from a particular tape device.\n"));
    g_fprintf(stderr, _("  -c Compress output, fastest method available.\n"));
    g_fprintf(stderr, _("  -C Compress output, best filesize method available.\n"));
    g_fprintf(stderr, _("  -l Leave dumps (un)compressed, whichever way they were originally on tape.\n"));
    g_fprintf(stderr, _("  -a Assume all tapes are available via changer, do not prompt for initial load.\n"));
    g_fprintf(stderr, _("  -i <dst_file> Search through tapes and write out an inventory while we\n     restore.  Useful only if normal logs are unavailable.\n"));
    g_fprintf(stderr, _("  -w Wait to put split dumps together until all chunks have been restored.\n"));
    g_fprintf(stderr, _("  -n Do not reassemble split dumpfiles.\n"));
    g_fprintf(stderr, _("  -k Skip the rewind/label read when reading a new tape.\n"));
    g_fprintf(stderr, _("  -s Do not use fast forward to skip files we won't restore.  Use only if fsf\n     causes your tapes to skip too far.\n"));
    g_fprintf(stderr, _("  -b <blocksize> Force a particular block size (default is 32kb).\n"));
    dbclose();
    exit(1);
}
示例#5
0
文件: tareas.c 项目: sebasalazar/C
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;
}
示例#6
0
int save_pid_to_db(int id,char* pd)
{
   char szUsername[32] = "sa"; 
   char szPassword[32]= "1qazxsw2*";
   char szDBName[32] = "ids_db";
   char szServer[32] = "10.2.10.201";
   char   sqlquery[1024]={0};
   snprintf(sqlquery,1024,"update ids_policy_event set pid='%s' where id='%d'",pd,id);
   dbinit();
   LOGINREC *loginrec = dblogin();
   DBSETLUSER(loginrec, szUsername);
   DBSETLPWD(loginrec, szPassword);
   DBPROCESS *dbprocess = dbopen(loginrec, szServer);
   if(dbprocess == FAIL)
   {
    LOG_INFO(" Conect MS SQL SERVER fail       ");
    return -1;
   }
   if(dbuse(dbprocess, szDBName) == FAIL)
   {
    LOG_INFO(" Open database name fail");
    return -1;
   }
   dbcmd(dbprocess,sqlquery);
   if(dbsqlexec(dbprocess) == FAIL)
   {
    LOG_INFO("task.cpp dbsqlexec  error!!!");
   }
  dbclose(dbprocess);
  return 0; 
}
示例#7
0
 // one arg - logout
 static v8::Handle<Value> Logout(const Arguments& args) {
   v8::HandleScope scope;
   REQ_DBCONN_ARG(0);
   dbfreebuf(dbconn);
   dbclose(dbconn);
   return v8::Undefined();
 }
示例#8
0
pascal boolean odbNewFile (hdlfilenum fnum) {
	
	/*
	4.1b5 dmb: new routine. minimal db creation. does not leave it open
	*/
	
	tyversion2cancoonrecord info;
	dbaddress adr = nildbaddress;
	boolean fl;
	
	setemptystring (bserror);
	
	if (!dbnew (fnum))
		return (false);
	
	clearbytes (&info, sizeof (info));
	
	info.versionnumber = conditionalshortswap (cancoonversionnumber);
	
	fl = dbassign (&adr, sizeof (info), &info);
	
	if (fl) {
		
		dbsetview (cancoonview, adr);
		
		dbclose ();
		}
	
	cancoonglobals = nil;	/*if they've been set, they're out of date*/
	
	dbdispose ();
	
	return (fl);
	} /*odbNewFile*/
示例#9
0
文件: tareas.c 项目: sebasalazar/C
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;
}
int Thread_Exit(int id)
{
	if (Conexion[id].nAbierta) 
          //PQfinish(Conexion[id].dbconn);//Descomentar cuando este implementado
          dbfreebuf(Conexion[id].dbconn);
          dbclose(Conexion[id].dbconn);
          dbexit();
}
示例#11
0
文件: qsql_tds.cpp 项目: Suneal/qt
QTDSResult::~QTDSResult()
{
    cleanup();
    if (d->dbproc)
        dbclose(d->dbproc);
    errs()->remove(d->dbproc);
    delete d;
}
示例#12
0
int syb_terminate_order (int no_des)
{
  if (descriptor[no_des] != NULL && no_des != PRIVATE_DESCRIPTOR)
    {
      dbclose (descriptor[no_des]);
      descriptor[no_des] = NULL;
    }
  return 0;
}
示例#13
0
static VALUE rb_tinytds_close(VALUE self) {
  GET_CLIENT_WRAPPER(self);
  if (cwrap->client && !cwrap->closed) {
    dbclose(cwrap->client);
    cwrap->closed = 1;
    cwrap->userdata->closed = 1;
  }
  return Qtrue;
}
示例#14
0
Connector::~Connector()
{
#ifdef MSSQL
	dbclose(conn_ptr);
	dbloginfree(login_rec);
#elif WATCHLIST_MYSQL
	mysql_close(&mysqlID);
#endif

}
/*************************************************************************
 *
 *	Function: sql_close
 *
 *	Purpose: database specific close. Closes an open database
 *               connection
 *
 *************************************************************************/
static int sql_close(SQLSOCK *sqlsocket, UNUSED SQL_CONFIG *config)
{
	rlm_sql_freetds_sock *freetds_sock = sqlsocket->conn;
	
	if (freetds_sock && freetds_sock->dbproc){
		dbclose(freetds_sock->dbproc);
		freetds_sock->dbproc = NULL;
	}
	
	return 0;
}
示例#16
0
void dealloc()
{
# ifdef _FREETDS
    if (proc)
        dbclose(proc);
# endif

# ifdef _MSSQL
	::CoUninitialize();
# endif
}
示例#17
0
int
main(int argc, char *argv[])
{
	LOGINREC *login;
	DBPROCESS *dbproc;
	int ret_code;
	int num_cols;
	int num_res;

	set_malloc_options();

	read_login_info(argc, argv);
	printf("Starting %s\n", argv[0]);
	dbinit();

	dberrhandle(syb_err_handler);
	dbmsghandle(syb_msg_handler);

	printf("About to logon\n");

	login = dblogin();
	DBSETLPWD(login, PASSWORD);
	DBSETLUSER(login, USER);
	DBSETLAPP(login, "t0012");

	dbproc = dbopen(login, SERVER);
	if (strlen(DATABASE)) {
		dbuse(dbproc, DATABASE);
	}
	dbloginfree(login);
	printf("After logon\n");

	/* select */
	sql_cmd(dbproc);
	dbsqlexec(dbproc);

	num_res = 0;
	while ((ret_code = dbresults(dbproc)) == SUCCEED) {
		num_cols = dbnumcols(dbproc);
		printf("Result %d has %d columns\n", num_res, num_cols);
		if (!(num_res % 2) && num_cols)
			set_failed();
		while(dbnextrow(dbproc) != NO_MORE_ROWS) {};
		num_res++;
	}
	if (ret_code == FAIL)
		set_failed();

	dbclose(dbproc);
	dbexit();

	printf("%s %s\n", __FILE__, (failed ? "failed!" : "OK"));
	return failed ? 1 : 0;
}
示例#18
0
static void rb_tinytds_client_free(void *ptr) {
  tinytds_client_wrapper *cwrap = (tinytds_client_wrapper *)ptr;
  if (cwrap->login)
    dbloginfree(cwrap->login);
  if (cwrap->client && !cwrap->closed) {
    dbclose(cwrap->client);
    cwrap->closed = 1;
    cwrap->userdata->closed = 1;
  }
  xfree(cwrap->userdata);
  xfree(ptr);
}
示例#19
0
int
main(int argc, char **argv)
{
	BCPPARAMDATA params;

	DBPROCESS *dbsrc;
	DBPROCESS *dbtarget;

	setlocale(LC_ALL, "");

	memset(&params, '\0', sizeof(params));

	if (process_parameters(argc, argv, &params) == FALSE) {
		pusage();
		return 1;
	}

	if (login_to_databases(&params, &dbsrc, &dbtarget) == FALSE)
		return 1;

	if (params.cflag) {
		if (create_target_table(params.src.dbobject, params.owner, params.dest.dbobject, dbsrc, dbtarget) == FALSE) {
			printf("datacopy: could not create target table %s.%s . terminating\n", params.owner, params.dest.dbobject);
			dbclose(dbsrc);
			dbclose(dbtarget);
			return 1;
		}
	}

	if (check_table_structures(params.src.dbobject, params.dest.dbobject, dbsrc, dbtarget) == FALSE) {
		printf("datacopy: table structures do not match. terminating\n");
		dbclose(dbsrc);
		dbclose(dbtarget);
		return 1;
	}

	if (transfer_data(params, dbsrc, dbtarget) == FALSE) {
		printf("datacopy: table copy failed.\n");
		printf("           the data may have been partially copied into the target database \n");
		dbclose(dbsrc);
		dbclose(dbtarget);
		return 1;
	}


	dbclose(dbsrc);
	dbclose(dbtarget);

	return 0;
}
示例#20
0
static apr_status_t dbd_freetds_check_conn(apr_pool_t *pool,
                                           apr_dbd_t *handle)
{
    if (dbdead(handle->proc)) {
        /* try again */
        dbclose(handle->proc);
        handle->proc = freetds_open(handle->pool, handle->params, NULL);
        if (!handle->proc || dbdead(handle->proc)) {
            return APR_EGENERAL;
        }
    }
    /* clear it, in case this is called in error handling */
    dbcancel(handle->proc);
    return APR_SUCCESS;
}
示例#21
0
static void
ngx_dbd_freetds_close(ngx_dbd_t *dbd)
{
    RETCODE                 rc;
    ngx_dbd_freetds_ctx_t  *ctx;

    ngx_log_debug0(NGX_LOG_DEBUG_MYSQL, dbd->log, 0, "dbd freetds close");

    ctx = dbd->ctx;

    rc = dbcanquery(ctx->db);

    /* TODO: rc */

    dbclose(ctx->db);
}
示例#22
0
文件: thread.c 项目: dparnell/freetds
static void *
thread_test(void * arg)
{
	int i;
	int num = ptr2int(arg);
	DBPROCESS *dbproc;
	LOGINREC *login;

	login = dblogin();
	DBSETLPWD(login, PASSWORD);
	DBSETLUSER(login, USER);
	DBSETLAPP(login, "thread");

	dbproc = dbopen(login, SERVER);
	if (!dbproc) {
		dbloginfree(login);
		fprintf(stderr, "Unable to connect to %s\n", SERVER);
		set_failed();
		return NULL;
	}
	dbloginfree(login);

	if (strlen(DATABASE))
		dbuse(dbproc, DATABASE);

	pthread_mutex_lock(&mutex);
	++thread_count;
	pthread_mutex_unlock(&mutex);

	printf("thread %2d waiting for all threads to start\n", num+1);
	pthread_mutex_lock(&mutex);
	while (thread_count < NUM_THREAD) {
		pthread_mutex_unlock(&mutex);
		sleep(1);
		pthread_mutex_lock(&mutex);
	}
	pthread_mutex_unlock(&mutex);

	for (i = 1; i <= NUM_LOOP; ++i) {
		printf("thread %2d of %2d loop %d\n", num+1, NUM_THREAD, i);
		if (test(dbproc) || result != 0)
			break;
	}

	dbclose(dbproc);
	return NULL;
}
示例#23
0
void SqlServer::close()
{
# ifdef _FREETDS
    if (d_ptr->proc)
    {
        dbclose(d_ptr->proc);
        d_ptr->proc = NULL;
    }
# endif

# ifdef _MSSQL
	if (d_ptr->conn && d_ptr->conn->State == adStateOpen)
	{
		d_ptr->conn->Close();
	}
# endif
}
示例#24
0
static int dblib_handle_closer(pdo_dbh_t *dbh)
{
	pdo_dblib_db_handle *H = (pdo_dblib_db_handle *)dbh->driver_data;

	if (H) {
		if (H->link) {
			dbclose(H->link);
			H->link = NULL;
		}
		if (H->login) {
			dbfreelogin(H->login);
			H->login = NULL;
		}
		pefree(H, dbh->is_persistent);
		dbh->driver_data = NULL;
	}
	return 0;
}
示例#25
0
文件: qsql_tds.cpp 项目: Suneal/qt
bool QTDSDriver::open(const QString & db,
                       const QString & user,
                       const QString & password,
                       const QString & host,
                       int /*port*/,
                       const QString& /*connOpts*/)
{
    if (isOpen())
        close();
    if (!dbinit()) {
        setOpenError(true);
        return false;
    }
    d->login = dblogin();
    if (!d->login) {
        setOpenError(true);
        return false;
    }
    DBSETLPWD(d->login, const_cast<char*>(password.toLocal8Bit().constData()));
    DBSETLUSER(d->login, const_cast<char*>(user.toLocal8Bit().constData()));

    // Now, try to open and use the database. If this fails, return false.
    DBPROCESS* dbproc;

    dbproc = dbopen(d->login, const_cast<char*>(host.toLatin1().constData()));
    if (!dbproc) {
        setLastError(qMakeError(tr("Unable to open connection"), QSqlError::ConnectionError, -1));
        setOpenError(true);
        return false;
    }
    if (dbuse(dbproc, const_cast<char*>(db.toLatin1().constData())) == FAIL) {
        setLastError(qMakeError(tr("Unable to use database"), QSqlError::ConnectionError, -1));
        setOpenError(true);
        return false;
    }
    dbclose( dbproc );

    setOpen(true);
    setOpenError(false);
    d->hostName = host;
    d->db = db;
    return true;
}
示例#26
0
文件: tareas.c 项目: sebasalazar/C
alumno_ramo *consultar_notas_por_estudiante(long estudiante_id, long *tamano) {
    alumno_ramo *arreglo = NULL;
    char sql[512];
    char asignatura[128];
    int i = 0;
    int num = 0;
    PGconn *conexion = NULL;
    PGresult *resultado = NULL;

    if (estudiante_id > 0) {
        memset(sql, 0, sizeof (sql));
        sprintf(sql, "SELECT cursos.asignatura, asignaturas_cursadas.nota FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE estudiante_id='%ld' ORDER BY cursos.anio ASC, cursos.semestre ASC", estudiante_id);
        conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB);
        if (conexion != NULL) {
            resultado = dbquery(conexion, sql);
            num = dbnumrows(resultado);
            if (num > 0) {
                arreglo = (alumno_ramo *) malloc(num * sizeof (alumno_ramo));
                for (i = 0; i < num; i++) {
                    memset(asignatura, 0, sizeof (asignatura));
                    sprintf(asignatura, "%s", getString(dbresult(resultado, i, 0)));

                    arreglo[i].asignatura = (char *) calloc(strlen(asignatura) + 1, sizeof (char));
                    sprintf(arreglo[i].asignatura, "%s", asignatura);
                    arreglo[i].estudiante_id = estudiante_id;
                    arreglo[i].nota = getDouble(dbresult(resultado, i, 1));
                    arreglo[i].stddev = 0.0;
                }
                dbfree(resultado);
            }
            dbclose(conexion);
        }
    }


    *tamano = (long) num;
    return arreglo;
}
示例#27
0
bool CDBL_Connection::Close(void)
{
    if (GetDBLibConnection()) {
        Refresh();

        // Clean user data ...
        dbsetuserdata(GetDBLibConnection(), (BYTE*) NULL);

        dbclose(GetDBLibConnection());
        CheckFunctCall();

        MarkClosed();

        dbloginfree(m_Login);
        CheckFunctCall();

        m_Link = NULL;

        return true;
    }

    return false;
}
示例#28
0
文件: infofile.c 项目: B-Rich/amanda
int
main(
    int		argc,
    char **	argv)
{
  int i;

  /*
   * Configure program for internationalization:
   *   1) Only set the message locale for now.
   *   2) Set textdomain for all amanda related programs to "amanda"
   *      We don't want to be forced to support dozens of message catalogs.
   */  
  setlocale(LC_MESSAGES, "C");
  textdomain("amanda"); 

  safe_fd(-1, 0);

  set_pname("infofile");

  dbopen(DBG_SUBDIR_SERVER);

  for(i = 1; i < argc; ++i) {
    if(i+1 >= argc) {
      g_fprintf(stderr,_("usage: %s host disk [host disk ...]\n"),argv[0]);
      return 1;
    }
    open_infofile("curinfo");
    dump_db(argv[i], argv[i+1]);
    i++;
    close_infofile();
  }

  dbclose();
  return 0;
}
示例#29
0
int
main(
    int		argc,
    char **	argv)
{
#ifdef GNUTAR
    int i;
    char *e;
    char *dbf;
    char *cmdline;
    GPtrArray *array = g_ptr_array_new();
    gchar **strings;
    char **new_argv;
#endif

    if (argc > 1 && argv[1] && g_str_equal(argv[1], "--version")) {
	printf("runtar-%s\n", VERSION);
	return (0);
    }

    /*
     * Configure program for internationalization:
     *   1) Only set the message locale for now.
     *   2) Set textdomain for all amanda related programs to "amanda"
     *      We don't want to be forced to support dozens of message catalogs.
     */
    setlocale(LC_MESSAGES, "C");
    textdomain("amanda"); 

    safe_fd(-1, 0);
    safe_cd();

    set_pname("runtar");

    /* Don't die when child closes pipe */
    signal(SIGPIPE, SIG_IGN);

    dbopen(DBG_SUBDIR_CLIENT);
    config_init(CONFIG_INIT_CLIENT, NULL);

    if (argc < 3) {
	error(_("Need at least 3 arguments\n"));
	/*NOTREACHED*/
    }

    dbprintf(_("version %s\n"), VERSION);

    if (!g_str_equal(argv[3], "--create")) {
	error(_("Can only be used to create tar archives\n"));
	/*NOTREACHED*/
    }

#ifndef GNUTAR

    g_fprintf(stderr,_("gnutar not available on this system.\n"));
    dbprintf(_("%s: gnutar not available on this system.\n"), argv[0]);
    dbclose();
    return 1;

#else

    /*
     * Print out version information for tar.
     */
    do {
	FILE *	version_file;
	char	version_buf[80];

	if ((version_file = popen(GNUTAR " --version 2>&1", "r")) != NULL) {
	    if (fgets(version_buf, (int)sizeof(version_buf), version_file) != NULL) {
		dbprintf(_(GNUTAR " version: %s\n"), version_buf);
	    } else {
		if (ferror(version_file)) {
		    dbprintf(_(GNUTAR " version: Read failure: %s\n"), strerror(errno));
		} else {
		    dbprintf(_(GNUTAR " version: Read failure; EOF\n"));
		}
	    }
	} else {
	    dbprintf(_(GNUTAR " version: unavailable: %s\n"), strerror(errno));
	}
    } while(0);

#ifdef WANT_SETUID_CLIENT
    check_running_as(RUNNING_AS_CLIENT_LOGIN | RUNNING_AS_UID_ONLY);
    if (!become_root()) {
	error(_("error [%s could not become root (is the setuid bit set?)]\n"), get_pname());
	/*NOTREACHED*/
    }
#else
    check_running_as(RUNNING_AS_CLIENT_LOGIN);
#endif

    /* skip argv[0] */
    argc--;
    argv++;

    dbprintf(_("config: %s\n"), argv[0]);
    if (!g_str_equal(argv[0], "NOCONFIG"))
	dbrename(argv[0], DBG_SUBDIR_CLIENT);
    argc--;
    argv++;

    new_argv = g_new0(char *, argc+1);

    new_argv[0] = g_strdup_printf("%s", argv[0]);
    g_ptr_array_add(array, g_strdup(GNUTAR));
    for (i = 1; argv[i]; i++) {
        g_ptr_array_add(array, quote_string(argv[i]));
	new_argv[i] = g_strdup_printf("%s", argv[i]);
    }

    g_ptr_array_add(array, NULL);
    strings = (gchar **)g_ptr_array_free(array, FALSE);

    cmdline = g_strjoinv(" ", strings);
    g_strfreev(strings);

    dbprintf(_("running: %s\n"), cmdline);
    amfree(cmdline);

    dbf = dbfn();
    if (dbf) {
	dbf = g_strdup(dbf);
    }
    dbclose();

    execve(GNUTAR, new_argv, safe_env());

    e = strerror(errno);
    dbreopen(dbf, "more");
    amfree(dbf);
    dbprintf(_("execve of %s failed (%s)\n"), GNUTAR, e);
    dbclose();

    g_fprintf(stderr, _("runtar: could not exec %s: %s\n"), GNUTAR, e);
    return 1;
#endif
}
int
main (int argc, char **argv)
{
    int             c,
                    verbose = 0,
		    errflg = 0;


	char *dbinname=malloc(1024);
	char *dboutname=malloc(1024);
	Point *poly;
	double lat,lon;
	char *subset_expr=NULL;
	char *name=malloc(100);
	long nregions, nvertices;
	Tbl *sortkeys;
			
	Dbptr dbin,dbout,dbi,dbo,dbs;
	long i,from,to,nv;
	long vertex;
	
    elog_init ( argc, argv ) ; 
    while ((c = getopt (argc, argv, "s:vV")) != -1) {
	switch (c) {

	case 's':
	    subset_expr=optarg;
	    break;
	case 'v':
	    verbose++ ;
	    break;

	case 'V':
	    usage ();
	    break;

	case '?':
	    errflg++;
	    break ;
	}
    }

    if ((errflg) || argc < 3)
	usage ();

	dbinname = argv[optind++];
	dboutname= argv[optind++];

	if (dbopen(dbinname,"r",&dbin)) {
		elog_die(1,"cannot open database %s",dbinname);
	}
	dbi=dblookup(dbin,0,"polygon",0,0);
	if (subset_expr) {
		dbi=dbsubset(dbi,subset_expr,NULL);
	}

	

	sortkeys=newtbl(1);
	pushtbl(sortkeys,"pname");
	
	dbs=dbsort(dbi,sortkeys,0,"sorted");
	dbquery(dbs,dbRECORD_COUNT,&nregions);
	if (nregions <1) {
		elog_die(0,"table regions seems to be empty (or not present)");
	}
	
	if (verbose) elog_notify(0,"creating database descriptor %s",dboutname);
	
	if (dbcreate(dboutname,"places1.2",0,0,0)) {
		elog_die(1,"cannot create database %s",dboutname);
	}
	dbopen(dboutname,"r+",&dbout);
	dbo=dblookup(dbout,0,"regions",0,0);
	
	for (i=0; i< nregions; i++) {
		dbs.record=i;
		dbgetv(dbs,0,"pname",name,NULL );
		nvertices=readPolygon(dbs,&poly);
		for (nv=0;nv < nvertices;nv++) {
			lat=poly[nv].lat;
			lon=poly[nv].lon;
			dbaddv(dbo,0,
					"regname",name,
					"vertex",nv,
					"lat",lat,"lon",lon,
					NULL );
		}
		free(poly);
	}
	dbclose(dbo);
	/*
				*/
    return 0;
}