Пример #1
0
int FC_FUNC_(oraclesim_getanahead, ORACLESIM_GETANAHEAD)
     (OracleDbConnection **fdbconnid, int *net) {
  OracleDbConnection *dbconnid = *fdbconnid;

  int ostatid;
  float oqs, oqp;
  double olon, olat;
  char oname[NAMELEN], onet[NAMELEN];
  
  /* Preparo l'estrazione anagrafica */
  checkerr(dbconnid, OCIStmtPrepare(dbconnid->stmthp, dbconnid->errhp,
				    (text *) anaquery,
				    (ub4) strlen(anaquery),
				    (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT));


  checkerr(dbconnid, OCIBindByName(dbconnid->stmthp, &dbconnid->bnd1p,
				   dbconnid->errhp, (text *) ":net",
				   -1, (dvoid *) net,
				   (sword) sizeof(*net), SQLT_INT, (dvoid *) NULL,
				   (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0,
				   OCI_DEFAULT));

  /* definisco l'uscita */
  anadefine(dbconnid, &ostatid, &olon, &olat, &oqs, &oqp, oname, onet, NAMELEN);
  return countrows(dbconnid);
}
Пример #2
0
char
*checksys(char *isvuln)
{
        struct utsname name;

        if(uname(&name) < 0) {
                puts("uname failed");
        }

        isvuln = malloc(6);
        if(!isvuln) {
                perror("malloc");
                _exit(EXIT_FAILURE);
        }

        if((name.sysname == NULL) || (strlen(name.sysname) < 1) || (strlen(name.sysname) > 5)) {
                checkerr(isvuln);
        }

        memcpy(isvuln, name.sysname, strlen(name.sysname));
        if(!isvuln) {
                checkerr(isvuln);
        }

        return(isvuln);
}
Пример #3
0
static int db_getn(int type, int keytype)
{
    int        n = 0;
    char       table[20];
    char      *sql =  "select count(*) as n from %s where type=%d";
    OraText    row[4000];
    OCIDefine *dnp = NULL;

    strcpy(table, (type == TYPE_KILL)? "kill_key" : "monitor_key");
    sprintf((char*)row, sql,table, keytype);
    checkerr(OCIHandleAlloc((dvoid *)myenvhp, (dvoid **)&mystmthp,
                            OCI_HTYPE_STMT, (size_t)0, (dvoid **)0), myerrhp);
    checkerr(OCIStmtPrepare(mystmthp, myerrhp, row, (ub4)strlen((char*)row),
                            (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT), myerrhp);
    checkerr(OCIStmtExecute(mysvchp, mystmthp, myerrhp, (ub4)0, (ub4)0,
                            (CONST OCISnapshot *)0, (OCISnapshot *)0,
                            OCI_DEFAULT), myerrhp);
    if ((status = OCIDefineByPos(mystmthp, &dnp, myerrhp, 1, &n, sizeof(n),
                                 SQLT_INT, (dvoid *)0, 0, (ub2 *)0,
                                 OCI_DEFAULT))) {
        checkerr(status, myerrhp);
        return -1;
    }
    if(OCIStmtFetch2(mystmthp, myerrhp, 1, OCI_FETCH_NEXT, 0,
                     OCI_DEFAULT) != OCI_NO_DATA) {
        return n;
    }
    return 0;
}
Пример #4
0
int main(int argc, char ** argv) {
  // TOOD use getprotoent?
  int s = socket(PF_INET, SOCK_DGRAM, 0);

  checkerr(s, "Opening socket");

  struct sockaddr_in gateaddr;
  bzero((char *)&gateaddr, sizeof(gateaddr));
  gateaddr.sin_family = AF_INET;
  // COMMAND LINE CFG
  gateaddr.sin_port = htons(30012);
  // COMMAND LINE CFG
  gateaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

  int r = connect(s, (struct sockaddr *)&gateaddr, sizeof(gateaddr));
  struct timeval tv;
  tv.tv_sec = 3;

  //setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (struct timeval * )&tv, sizeof(tv));

  checkerr(r, "Connecting");

  const char * msg = "OPEN!";
  r = send(s, msg, strlen(msg), 0);

  checkerr(r, "Writing");

  char buf[2048];
  // can get EAGAIN, connection refused here.
  ssize_t r2 = recv(s, buf, 2048, 0);
  checkerr(r2, "Reading");
  
  printf("Read: %d\n", r2);
}
Пример #5
0
int FC_FUNC_(oraclesim_getdatavol, ORACLESIM_GETDATAVOL)
     (OracleDbConnection **fdbconnid, int *nr, int *vnr, 
      char *odate, int *ostatid, int *ovarid,
      float *ovalp, float *ovala, char *ovalc, char *oflag, float *rmiss) {
  OracleDbConnection *dbconnid = *fdbconnid;
  sword status;
  int i, ret;

  /* definisco l'uscita */
  datadefine(dbconnid, odate, DATELEN, ostatid, ovarid, ovalp, ovala, ovalc, oflag, CVALLEN, FLAGLEN);

  status=checkerr(dbconnid, OCIStmtFetch2(dbconnid->stmthp, dbconnid->errhp,
					  (ub4) *nr, OCI_FETCH_FIRST, (sb4) 0,
					  (ub4) OCI_DEFAULT));
  if (status == OCI_SUCCESS || status == OCI_NO_DATA) {
    if (checkerr(dbconnid, OCIAttrGet(dbconnid->stmthp, OCI_HTYPE_STMT, vnr, 0, 
				      OCI_ATTR_ROW_COUNT, dbconnid->errhp))
	== OCI_SUCCESS) {
      for (i=0; i<*vnr; i++) { /* inserisco i dati mancanti stile libsim */
 	if (ovalp[i] > 1.0E+14) ovalp[i] = *rmiss;
  	if (ovala[i] > 1.0E+14) ovala[i] = *rmiss;
      }
    } else {
      *vnr = 0;
    }
    ret = 0;
  } else {
    *vnr = 0;
    ret = 2;
  }
  return ret;
}
Пример #6
0
int FC_FUNC_(oraclesim_getanavol, ORACLESIM_GETANAVOL)
     (OracleDbConnection **fdbconnid, int *nr, int *vnr, int *namelen,
      int *ostatid, double *olon, double *olat, float *oqs, float *oqp,
      char *oname, char *onet, float *rmiss, double *dmiss) {
  OracleDbConnection *dbconnid = *fdbconnid;
  int i, ret;
  sword status;

  /* definisco l'uscita */
  anadefine(dbconnid, ostatid, olon, olat, oqs, oqp, oname, onet, *namelen);

  status=checkerr(dbconnid, OCIStmtFetch2(dbconnid->stmthp, dbconnid->errhp,
					  (ub4) *nr, OCI_FETCH_FIRST, (sb4) 0,
					  (ub4) OCI_DEFAULT));
  if (status == OCI_SUCCESS || status == OCI_NO_DATA) {
    if (checkerr(dbconnid, OCIAttrGet(dbconnid->stmthp, OCI_HTYPE_STMT, vnr, 0, 
				      OCI_ATTR_ROW_COUNT, dbconnid->errhp))
	== OCI_SUCCESS) {
      for (i=0; i<*vnr; i++) { /* inserisco i dati mancanti stile libsim */
 	if (olon[i] < -999.) olon[i] = *dmiss;
 	if (olat[i] < -999.) olat[i] = *dmiss;
  	if (oqs[i] < -9999.) oqs[i] = *rmiss;
  	if (oqp[i] < -9999.) oqp[i] = *rmiss;
      }
    } else {
      *vnr = 0;
    }
    ret = 0;
  } else {
    *vnr = 0;
    ret = 2;
  }
  return ret;
}
Пример #7
0
int countrows(OracleDbConnection *dbconnid) {
  int nr;
  sword status;
  
  /* Lancio l'estrazione */
  if ((status = OCIStmtExecute(dbconnid->svchp, dbconnid->stmthp, dbconnid->errhp,
			       (ub4) 0, (ub4) 0,
			       (CONST OCISnapshot *) NULL, (OCISnapshot *) NULL,
 			       OCI_STMT_SCROLLABLE_READONLY)) != OCI_SUCCESS) {
    if (status != OCI_NO_DATA) {
      checkerr(dbconnid, status);
      return -1;
    }
  }
  /* Vado all'ultima riga e chiedo dove sono */
  if ((status=OCIStmtFetch2(dbconnid->stmthp, dbconnid->errhp, (ub4) 1,
			    (ub2) OCI_FETCH_LAST, (sb4) 0,
			    (ub4) OCI_DEFAULT)) != OCI_SUCCESS) {
    if (status != OCI_NO_DATA) {
      checkerr(dbconnid, status);
      return -1;
    }
  }
  if (checkerr(dbconnid, OCIAttrGet(dbconnid->stmthp, OCI_HTYPE_STMT, &nr, 0, 
				    OCI_ATTR_CURRENT_POSITION, dbconnid->errhp))
      != OCI_SUCCESS) return -1;
  return nr;
}
Пример #8
0
/* This select empno, ename from myemp table or empview view 
   - can take different SQL texts 
*/
void multirow_fetch_from_emp(OCISvcCtx *svchp, OCIStmt * stmthp, OCIError *errhp, 
			     thdata *pthdata)
{
#define ARRAY_SIZE 3
  OCIDefine *defhp1, *defhp2;       
  ub4 empid[ARRAY_SIZE];
  sb2 empid_ind[ARRAY_SIZE];
  char lname[ARRAY_SIZE][30];
  sb2  lname_ind[ARRAY_SIZE];
  ub2  lname_len[ARRAY_SIZE];
  boolean done=FALSE;
  ub4 rows = 0;
  ub4 i =0;
  sb4 status;

  /* Define output buffers */
  checkerr(errhp, OCIDefineByPos (stmthp, &defhp1, errhp, 1,
                                  (void *) empid, (sb4) sizeof(empid[0]),
                                  SQLT_INT, (void *) empid_ind,
                                  (ub2 *) NULL, (ub2 *) NULL, OCI_DEFAULT));

  checkerr(errhp, OCIDefineByPos (stmthp, &defhp2, errhp, 2,
                                  (void *) lname[0], (sb4) sizeof(lname[0]),
                                  SQLT_STR, (void *) lname_ind,
                                  (ub2 *) lname_len, (ub2 *) NULL,
                                  OCI_DEFAULT));

  /* Fetch ARRAY_SIZE rows at a time */
  while (!done)
  {
    status = OCIStmtFetch(stmthp, errhp, ARRAY_SIZE,
                          OCI_FETCH_NEXT, OCI_DEFAULT);

    if ((status == OCI_SUCCESS) || (status == OCI_NO_DATA))
    {
      if (status == OCI_SUCCESS)
        rows = ARRAY_SIZE;               /* all rows asked for were obtained */
      else if (status == OCI_NO_DATA)
      {
        /* might have gotten fewer rows */
        checkerr(errhp, OCIAttrGet(stmthp, OCI_HTYPE_STMT,
                             &rows, (ub4 *) NULL,
                             OCI_ATTR_ROWS_FETCHED, errhp));
        done = TRUE;
      }

      for (i=0; i < rows; i++)
      {
        if (verbose_flag)
          printf ("empno=%d, ename=%s\n", empid[i], lname[i]);
      }
    }
    else
    {
      checkerr (errhp, status);
      done =TRUE;
    }
  }
}
Пример #9
0
int main(int argc, char *argv[])
{
  OCIError *errhp = NULL;

  printf("stage4: Demonstrating OCI statement caching \n");

  /* parse command line options */
  parse_options(argc, argv);
  
  checkenv(envhp, OCIEnvCreate(&envhp,                /* returned env handle */
                               OCI_THREADED,         /* initialization modes */
                               NULL, NULL, NULL, NULL, /* callbacks, context */
                               (size_t) 0,    /* extra memory size: optional */
                               (void **) NULL));    /* returned extra memory */

  /* allocate error handle
   * note: for OCIHandleAlloc(), we always check error on environment handle
   */
  checkenv(envhp, OCIHandleAlloc(envhp,                /* environment handle */
                                 (void **) &errhp,    /* returned err handle */
                                 OCI_HTYPE_ERROR,/*type of handle to allocate*/
                                 (size_t) 0,  /* extra memory size: optional */
                                 (void **) NULL));  /* returned extra memory */

  create_session_pool(envhp, errhp, &poolName, &poolNameLen);

  /* allocate auth handle
   * note: for OCIHandleAlloc(), we check error on environment handle
   */
  checkenv(envhp, OCIHandleAlloc(envhp,
                          (void **) &authp, OCI_HTYPE_AUTHINFO,
                          (size_t) 0, (void **) NULL));

  /* setup username and password */
  checkerr(errhp, OCIAttrSet(authp, OCI_HTYPE_AUTHINFO,
                             (void *) username, strlen((char *)username),
                             OCI_ATTR_USERNAME, errhp));

  checkerr(errhp, OCIAttrSet(authp, OCI_HTYPE_AUTHINFO,
                            apppassword, strlen((char *) apppassword),
                            OCI_ATTR_PASSWORD, errhp));

  spawn_threads(envhp, errhp, &thread_function);
  
  /* Destroy the session pool */
  OCISessionPoolDestroy(spoolhp, errhp, OCI_DEFAULT);

  /* clean up */
  if (authp)
    OCIHandleFree(authp, OCI_HTYPE_AUTHINFO);
  if (spoolhp)
    OCIHandleFree(spoolhp, OCI_HTYPE_SPOOL); 
  if (errhp)
    OCIHandleFree(errhp, OCI_HTYPE_ERROR);
  if (envhp)
    OCIHandleFree(envhp, OCI_HTYPE_ENV);
  
  return 0;
}
Пример #10
0
void BfileLobClose_proc(OCILobLocator *Bfile_loc, OCIEnv *envhp,
                        OCIError *errhp, OCISvcCtx *svchp, OCIStmt *stmthp)
{ 
   printf ("----------- OCILobOpen Demo --------------\n");
   checkerr(errhp, OCILobOpen(svchp, errhp, Bfile_loc,
                    (ub1) OCI_LOB_READONLY));

   checkerr(errhp, OCILobClose(svchp, errhp, Bfile_loc));
}
Пример #11
0
ocisession::ocisession(const char * connect_str, const int connect_str_len,
					   const char * user_name, const int user_name_len,
					   const char * password, const int password_len)
{
	intf_ret r;
	OCIAuthInfo *authp = NULL;

	init();

	r.handle = envhp;

	// allocate error handle
	checkenv(&r, OCIHandleAlloc((OCIEnv*)envhp,	/* environment handle */
                            (void **) &_errhp,	/* returned err handle */
                            OCI_HTYPE_ERROR,	/* typ of handle to allocate */
                            (size_t) 0,			/* optional extra memory size */
                            (void **) NULL));	/* returned extra memeory */

	if(r.fn_ret != SUCCESS) {
   		REMOTE_LOG("failed OCISessionGet %s\n", r.gerrbuf);
        throw r;
	}

	// allocate auth handle
	checkenv(&r, OCIHandleAlloc((OCIEnv*)envhp,
							(void**)&authp, OCI_HTYPE_AUTHINFO,
							(size_t)0, (void **) NULL));

	r.handle = _errhp;

	// usrname and password
	checkerr(&r, OCIAttrSet(authp, OCI_HTYPE_AUTHINFO,
								(void*) user_name, user_name_len,
								OCI_ATTR_USERNAME, (OCIError *)_errhp));
	checkerr(&r, OCIAttrSet(authp, OCI_HTYPE_AUTHINFO,
								(void*) password, password_len,
								OCI_ATTR_PASSWORD, (OCIError *)_errhp));


    /* get the database connection */
    checkerr(&r, OCISessionGet((OCIEnv*)envhp, (OCIError *)_errhp,
                               (OCISvcCtx**)&_svchp,					/* returned database connection */
                               authp,									/* initialized authentication handle */                               
                               (OraText *) connect_str, connect_str_len,/* connect string */
                               NULL, 0, NULL, NULL, NULL,				/* session tagging parameters: optional */
                               OCI_SESSGET_STMTCACHE));					/* modes */
	if(r.fn_ret != SUCCESS) {
		REMOTE_LOG("failed OCISessionGet %s\n", r.gerrbuf);
        throw r;
	}

	(void) OCIHandleFree(authp, OCI_HTYPE_AUTHINFO);

	REMOTE_LOG("got session %p\n", _svchp);

	_sessions.push_back(this);
}
Пример #12
0
int gettab(OracleDbConnection *dbconnid, int *var, int nvar, int *net) {
  sword status;

  checkerr(dbconnid,
	   OCIStmtPrepare(dbconnid->stmthp, dbconnid->errhp,
			  (text *) tabquery,
			  (ub4) strlen(tabquery),
			  (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT));

  /*  checkerr(dbconnid,
	   OCIBindByName(dbconnid->stmthp, &dbconnid->bnd1p,
			 dbconnid->errhp, (text *) ":var",
			 -1, (dvoid *) var,
			 (sword) sizeof(*var), SQLT_INT, (dvoid *) NULL,
			 (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0,
			 OCI_DEFAULT)); */

  checkerr(dbconnid,
	   OCIBindByName(dbconnid->stmthp, &dbconnid->bnd1p,
			 dbconnid->errhp, (text *) ":net",
			 -1, (dvoid *) net,
			 (sword) sizeof(*net), SQLT_INT, (dvoid *) NULL,
			 (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0,
			 OCI_DEFAULT));

  checkerr(dbconnid,
	   OCIDefineByPos(dbconnid->stmthp, &dbconnid->defn1p,
			  dbconnid->errhp, 1,
			  (dvoid *) dbconnid->table, TABLEN, SQLT_STR,
			  (dvoid *) NULL,
			  (ub2 *) 0, (ub2 *) 0, OCI_DEFAULT));


  /* Lancio l'estrazione */
  if ((status = OCIStmtExecute(dbconnid->svchp, dbconnid->stmthp, dbconnid->errhp,
			       (ub4) 0, (ub4) 0,
			       (CONST OCISnapshot *) NULL, (OCISnapshot *) NULL,
 			       OCI_STMT_SCROLLABLE_READONLY)) != OCI_SUCCESS) {
    if (status != OCI_NO_DATA) {
      checkerr(dbconnid, status);
      return -1;
    }
  }
  /* Prendo la prima riga di dati */
  if ((status = OCIStmtFetch2(dbconnid->stmthp, dbconnid->errhp, (ub4) 1,
			      (ub2) OCI_FETCH_NEXT, (sb4) 0,
			      (ub4) OCI_DEFAULT)) != OCI_SUCCESS) {
    if (status == OCI_NO_DATA) {
      return -1;
    } else {
      checkerr(dbconnid, status);
      return -1;
    }
  }
  return 0;
}
Пример #13
0
void locatorIsEqual_proc(OCILobLocator *Lob_loc1, OCILobLocator *Lob_loc2,
                         OCIEnv *envhp, OCIError *errhp, OCISvcCtx *svchp, 
                         OCIStmt *stmthp)
{
  boolean       isEqual;
  OCILobLocator *Lob_loc3;
  
  printf ("----------- OCILobIsEqual Demo --------------\n");


  /* Call OCI to see if the two locators are Equal: */
  printf (" check if Lob1 and Lob2 are Equal.\n");
  checkerr (errhp, OCILobIsEqual(envhp, Lob_loc1, Lob_loc2, &isEqual));

  if (isEqual)
  {
    /* ... The LOB locators are Equal: */
    printf(" Lob Locators are equal.\n");
  }
  else
  {
    /* ... The LOB locators are not Equal: */
    printf(" Lob Locators are NOT Equal.\n");
  }

  (void)OCIDescriptorAlloc((void *) envhp, (void **) &Lob_loc3,
                             (ub4)OCI_DTYPE_LOB, (size_t) 0, (void **) 0);

  /* Assign Lob_loc1 to Lob_loc2 thereby saving a copy of the value of the LOB
     at this point in time: */
  printf(" assign the src locator to dest locator\n");
  checkerr (errhp, OCILobLocatorAssign(svchp, errhp, Lob_loc1, &Lob_loc3)); 

  /* When you write some data to the LOB through Lob_loc1, Lob_loc2 will not
     see the newly written data whereas Lob_loc1 will see the new data: */

  /* Call OCI to see if the two locators are Equal: */
  printf (" check if Lob1 and Lob3 are Equal.\n");
  checkerr (errhp, OCILobIsEqual(envhp, Lob_loc1, Lob_loc3, &isEqual));

  if (isEqual)
  {
    /* ... The LOB locators are Equal: */
    printf(" Lob Locators are equal.\n");
  }
  else
  {
    /* ... The LOB locators are not Equal: */
    printf(" Lob Locators are NOT Equal.\n");
  }

  OCIDescriptorFree((void *)Lob_loc3, (ub4)OCI_DTYPE_LOB); 
  
  return;
}
Пример #14
0
int FC_FUNC_(oraclesim_getnet, ORACLESIM_GETNET)
     (OracleDbConnection **fdbconnid, const char *netdesc) {
  OracleDbConnection *dbconnid = *fdbconnid;
  sword status;
  int onetid;

  /* Preparo l'estrazione per ottenere il numero della rete dal nome */
  checkerr(dbconnid,
	   OCIStmtPrepare(dbconnid->stmthp, dbconnid->errhp,
			  (text *) netquery,
			  (ub4) strlen(netquery),
			  (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT));

  checkerr(dbconnid,
	   OCIBindByName(dbconnid->stmthp, &dbconnid->bnd1p,
			 dbconnid->errhp, (text *) ":netdesc",
			 -1, (dvoid *) netdesc,
			 (sword) strlen(netdesc)+1, SQLT_STR, (dvoid *) NULL,
			 (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0,
			 OCI_DEFAULT));

  checkerr(dbconnid,
	   OCIDefineByPos(dbconnid->stmthp, &dbconnid->defn1p,
			  dbconnid->errhp, 1,
			  (dvoid *) &onetid, sizeof(onetid), SQLT_INT,
			  (dvoid *) 0,
			  (ub2 *) 0, (ub2 *) 0, OCI_DEFAULT));


  /* Lancio l'estrazione */
  if ((status = OCIStmtExecute(dbconnid->svchp, dbconnid->stmthp, dbconnid->errhp,
			       (ub4) 0, (ub4) 0,
			       (CONST OCISnapshot *) NULL, (OCISnapshot *) NULL,
 			       OCI_STMT_SCROLLABLE_READONLY)) != OCI_SUCCESS) {
    if (status != OCI_NO_DATA) {
      checkerr(dbconnid, status);
      return -1;
    }
  }
  /* Prendo la prima riga di dati */
  if ((status = OCIStmtFetch2(dbconnid->stmthp, dbconnid->errhp, (ub4) 1,
			      (ub2) OCI_FETCH_NEXT, (sb4) 0,
			      (ub4) OCI_DEFAULT)) != OCI_SUCCESS) {
    if (status == OCI_NO_DATA) {
      return 0;
    } else {
      checkerr(dbconnid, status);
      return -1;
    }
  }
  return onetid;
}
Пример #15
0
// Begins an Oracle session.
void OraSession::startSession(const std::string& sConnectAsUser, const std::string& sConnectAsUserPwd,
		const std::string& sConnectDBLink) 
{
	dvoid* tmp;
	sword status;

	status = OCIInitialize((ub4) OCI_THREADED | OCI_OBJECT, 0, 0, 0, 0);

	status = OCIHandleAlloc((dvoid *)NULL, (dvoid **)&ociHandles.envhp, (ub4)OCI_HTYPE_ENV, 52, (dvoid **)&tmp);

	status = OCIEnvInit(&ociHandles.envhp, (ub4)OCI_DEFAULT, 21, (dvoid **)&tmp);

	status = OCIHandleAlloc((dvoid *)ociHandles.envhp, (dvoid **)&ociHandles.errhp, (ub4)OCI_HTYPE_ERROR, 52, (dvoid **)&tmp);

	status = OCIHandleAlloc((dvoid *)ociHandles.envhp, (dvoid **)&ociHandles.srvhp, (ub4)OCI_HTYPE_SERVER, 52, (dvoid **)&tmp);

	if(checkerr(&ociHandles, OCIServerAttach(ociHandles.srvhp, ociHandles.errhp, (text *)sConnectDBLink.c_str(),
		(sb4)sConnectDBLink.length(), (ub4)OCI_DEFAULT)) != 0) {
		std::cout << "OCIServerAttach failed." << std::endl << std::endl;
		return;
	}

	status = OCIHandleAlloc((dvoid *)ociHandles.envhp, (dvoid **)&ociHandles.svchp, 
		(ub4)OCI_HTYPE_SVCCTX, 52, (dvoid **)&tmp);

	/* set attribute server context in the service context */
	status = OCIAttrSet((dvoid *) ociHandles.svchp, (ub4)OCI_HTYPE_SVCCTX, (dvoid *)ociHandles.srvhp, (ub4)0,
		(ub4)OCI_ATTR_SERVER, (OCIError *)ociHandles.errhp);

	/* allocate a user context handle */
	status = OCIHandleAlloc((dvoid *)ociHandles.envhp, (dvoid **)&ociHandles.usrhp, (ub4)OCI_HTYPE_SESSION, (size_t)0,
		(dvoid **)0);

	status = OCIAttrSet((dvoid *)ociHandles.usrhp, (ub4)OCI_HTYPE_SESSION, (dvoid *)sConnectAsUser.c_str(),
		(ub4)sConnectAsUser.length(), OCI_ATTR_USERNAME, ociHandles.errhp);

	status = OCIAttrSet((dvoid *)ociHandles.usrhp, (ub4)OCI_HTYPE_SESSION, (dvoid *)sConnectAsUserPwd.c_str(),
		(ub4)sConnectAsUserPwd.length(), OCI_ATTR_PASSWORD, ociHandles.errhp);

	if(checkerr(&ociHandles, OCISessionBegin(ociHandles.svchp, ociHandles.errhp, ociHandles.usrhp, OCI_CRED_RDBMS, OCI_DEFAULT)) != 0) {
		std::cout << "OCISessionBegin failed." << std::endl << std::endl;
		return;
	}

	status = OCIAttrSet((dvoid *)ociHandles.svchp, (ub4)OCI_HTYPE_SVCCTX, (dvoid *)ociHandles.usrhp, (ub4)0, OCI_ATTR_SESSION,
		ociHandles.errhp);

	status = OCIHandleAlloc((dvoid *)ociHandles.envhp, (dvoid **)&ociHandles.stmthp, (ub4)OCI_HTYPE_STMT, 50, (dvoid **)&tmp);

	connectedUser = sConnectAsUser;
}
Пример #16
0
void
net·runtime_pollWait(PollDesc* pd, intgo mode, intgo err)
{
#line 112 "/tmp/bindist907131767/go/src/pkg/runtime/netpoll.goc"

	runtime·lock(pd);
	err = checkerr(pd, mode);
	if(err)
		goto ret;
	netpollblock(pd, mode);
	err = checkerr(pd, mode);
ret:
	runtime·unlock(pd);
	FLUSH(&err);
}
Пример #17
0
int COracleDB::oracle_rollback( void )
{
	ORACLE_HANDLE* handle = ( ORACLE_HANDLE* ) _handle;

	int status = 0;

	int errcode = 0;

	time_t t1 = time( NULL );

	while ( ( status = OCITransRollback( handle->svchp, handle->errhp, 0 ) ) == OCI_STILL_EXECUTING ) {
		if ( time( NULL ) - t1 > 60 ) {
			// timeout
			errcode = DB_ERR_TIMEOUT;
			break;
		}
		my_usleep();
	}

	if ( errcode != DB_ERR_TIMEOUT && status ) {
		errcode = checkerr( handle->errhp, status, _errinfo );

		if ( errcode == 1012 || errcode == 12705 || errcode == 3113 || errcode == 3114 || errcode == 12541
				|| errcode == 12547 ) {
			errcode = DB_ERR_NOCONNECTION;
		} else {
			errcode = DB_ERR_FAILED;
		}
	}

	return errcode;
}
Пример #18
0
int GetHandles(OCIExtProcContext* extProcCtx, Handles_t* handles)
{
    /* store the ext-proc context in the handles struct */
    handles->extProcCtx=extProcCtx;

    /* Get OCI handles */
    if (checkerr(handles, OCIExtProcGetEnv(extProcCtx, &handles->envhp, &handles->svchp, &handles->errhp)))
        return -1;

    /* get the user handle */
    if (checkerr(handles, OCIAttrGet((dvoid*)handles->svchp, (ub4)OCI_HTYPE_SVCCTX, (dvoid*)&handles->usrhp, (ub4*)0,
                                     (ub4)OCI_ATTR_SESSION, handles->errhp)))
        return -1;

    return 0;
}
Пример #19
0
static int
puffs_vnop_advlock(struct vop_advlock_args *ap)
{
    PUFFS_MSG_VARS(vn, advlock);
    struct vnode *vp = ap->a_vp;
    struct puffs_node *pn = VPTOPP(vp);
    struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount);
    int error;

    if (!EXISTSOP(pmp, ADVLOCK))
        return lf_advlock(ap, &pn->pn_lockf, vp->v_filesize);

    PUFFS_MSG_ALLOC(vn, advlock);
    (void)memcpy(&advlock_msg->pvnr_fl, ap->a_fl,
                 sizeof(advlock_msg->pvnr_fl));
    advlock_msg->pvnr_id = ap->a_id;
    advlock_msg->pvnr_op = ap->a_op;
    advlock_msg->pvnr_flags = ap->a_flags;
    puffs_msg_setinfo(park_advlock, PUFFSOP_VN,
                      PUFFS_VN_ADVLOCK, VPTOPNC(vp));
    PUFFS_MSG_ENQUEUEWAIT2(pmp, park_advlock, vp->v_data, NULL, error);
    error = checkerr(pmp, error, __func__);
    PUFFS_MSG_RELEASE(advlock);

    return error;
}
Пример #20
0
static int
puffs_vnop_open(struct vop_open_args *ap)
{
    PUFFS_MSG_VARS(vn, open);
    struct vnode *vp = ap->a_vp;
    struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount);
    int mode = ap->a_mode;
    int error;

    DPRINTF(("puffs_open: vp %p, mode 0x%x\n", vp, mode));

    if (vp->v_type == VREG && mode & FWRITE && !EXISTSOP(pmp, WRITE))
        ERROUT(EROFS);

    if (!EXISTSOP(pmp, OPEN))
        ERROUT(0);

    PUFFS_MSG_ALLOC(vn, open);
    open_msg->pvnr_mode = mode;
    puffs_credcvt(&open_msg->pvnr_cred, ap->a_cred);
    puffs_msg_setinfo(park_open, PUFFSOP_VN,
                      PUFFS_VN_OPEN, VPTOPNC(vp));

    PUFFS_MSG_ENQUEUEWAIT2(pmp, park_open, vp->v_data, NULL, error);
    error = checkerr(pmp, error, __func__);

out:
    DPRINTF(("puffs_open: returning %d\n", error));
    PUFFS_MSG_RELEASE(open);
    if (error)
        return error;
    return vop_stdopen(ap);
}
Пример #21
0
static bool
netpollblock ( PollDesc *pd , int32 mode , bool waitio )
{
    G **gpp , *old;
#line 328 "/home/14/ren/source/golang/go/src/pkg/runtime/netpoll.goc"
    gpp = &pd->rg;
    if ( mode == 'w' )
        gpp = &pd->wg;
#line 333 "/home/14/ren/source/golang/go/src/pkg/runtime/netpoll.goc"
    for ( ;; ) {
        old = *gpp;
        if ( old == READY ) {
            *gpp = nil;
            return true;
        }
        if ( old != nil )
            runtime·throw ( "netpollblock: double wait" ) ;
        if ( runtime·casp ( gpp , nil , WAIT ) )
            break;
    }
#line 348 "/home/14/ren/source/golang/go/src/pkg/runtime/netpoll.goc"
    if ( waitio || checkerr ( pd , mode ) == 0 )
        runtime·park ( ( bool ( * ) ( G* , void* ) ) blockcommit , gpp , "IO wait" ) ;
#line 351 "/home/14/ren/source/golang/go/src/pkg/runtime/netpoll.goc"
    old = runtime·xchgp ( gpp , nil ) ;
    if ( old > WAIT )
        runtime·throw ( "netpollblock: corrupted state" ) ;
    return old == READY;
}
Пример #22
0
int FC_FUNC_(oraclesim_getvarhead, ORACLESIM_GETVARHEAD)
     (OracleDbConnection **fdbconnid /*, int *var */) {
  OracleDbConnection *dbconnid = *fdbconnid;

  int oidentnr, olt1, ol1, olt2, ol2, opind, op1, op2;

  /* Preparo l'estrazione variabili */
  checkerr(dbconnid, OCIStmtPrepare(dbconnid->stmthp, dbconnid->errhp,
				    (text *) varquery,
				    (ub4) strlen(varquery),
				    (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT));

  /*
  checkerr(dbconnid, OCIBindByName(dbconnid->stmthp, &dbconnid->bnd1p,
				   dbconnid->errhp, (text *) ":var",
				   -1, (dvoid *) var,
				   (sword) sizeof(*var), SQLT_INT, (dvoid *) NULL,
				   (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0,
				   OCI_DEFAULT));
  */
  
  /* definisco l'uscita */
  vardefine(dbconnid, &oidentnr, &olt1, &ol1, &olt2, &ol2, &opind, &op1, &op2);
  return countrows(dbconnid);
}
Пример #23
0
  bool Regex::matchp(const std::string& str_, std::string::size_type p, RegexSMatch& smatch, int eflags) const
  {
    if (expr.getPointer() == 0)
    {
      smatch.matchbuf[0].rm_so = 0;
      return true;
    }

    smatch.str = str_;
    int ret = regexec(expr.getPointer(), str_.c_str() + p,
        sizeof(smatch.matchbuf) / sizeof(regmatch_t), smatch.matchbuf, eflags);

    if (ret == REG_NOMATCH)
      return false;

    checkerr(ret);

    if (p > 0)
    {
      for (unsigned n = 0; n < 10 && smatch.matchbuf[n].rm_so >= 0; ++n)
      {
        smatch.matchbuf[n].rm_so += p;
        smatch.matchbuf[n].rm_eo += p;
      }
    }

    return true;
  }
static bool 
netpollblock ( PollDesc *pd , int32 mode , bool waitio ) 
{ 
G **gpp , *old; 
#line 328 "C:\Users\gopher\AppData\Local\Temp\1\makerelease745458658\go\src\pkg\runtime\netpoll.goc"
gpp = &pd->rg; 
if ( mode == 'w' ) 
gpp = &pd->wg; 
#line 333 "C:\Users\gopher\AppData\Local\Temp\1\makerelease745458658\go\src\pkg\runtime\netpoll.goc"
for ( ;; ) { 
old = *gpp; 
if ( old == READY ) { 
*gpp = nil; 
return true; 
} 
if ( old != nil ) 
runtime·throw ( "netpollblock: double wait" ) ; 
if ( runtime·casp ( gpp , nil , WAIT ) ) 
break; 
} 
#line 348 "C:\Users\gopher\AppData\Local\Temp\1\makerelease745458658\go\src\pkg\runtime\netpoll.goc"
if ( waitio || checkerr ( pd , mode ) == 0 ) 
runtime·park ( ( bool ( * ) ( G* , void* ) ) blockcommit , gpp , "IO wait" ) ; 
#line 351 "C:\Users\gopher\AppData\Local\Temp\1\makerelease745458658\go\src\pkg\runtime\netpoll.goc"
old = runtime·xchgp ( gpp , nil ) ; 
if ( old > WAIT ) 
runtime·throw ( "netpollblock: corrupted state" ) ; 
return old == READY; 
} 
Пример #25
0
void
puffs_parkdone_asyncbioread(struct puffs_mount *pmp,
	struct puffs_req *preq, void *arg)
{
	struct puffs_vnmsg_read *read_msg = (void *)preq;
	struct buf *bp = arg;
	size_t moved;

	DPRINTF(("%s\n", __func__));

	bp->b_error = checkerr(pmp, preq->preq_rv, __func__);
	if (bp->b_error == 0) {
		if (read_msg->pvnr_resid > bp->b_bcount) {
			puffs_senderr(pmp, PUFFS_ERR_READ, E2BIG,
			    "resid grew", preq->preq_cookie);
			bp->b_error = E2BIG;
		} else {
			moved = bp->b_bcount - read_msg->pvnr_resid;
			bp->b_resid = read_msg->pvnr_resid;

			memcpy(bp->b_data, read_msg->pvnr_data, moved);
		}
	}

	biodone(bp);
}
Пример #26
0
/*
 * XXX: can't use callremove now because can't catch setbacks with
 * it due to lack of a pnode argument.
 */
static int
puffs_vnop_remove(struct vop_nremove_args *ap)
{
    PUFFS_MSG_VARS(vn, remove);
    struct vnode *dvp = ap->a_dvp;
    struct vnode *vp;
    struct puffs_node *dpn = VPTOPP(dvp);
    struct puffs_node *pn;
    struct nchandle *nch = ap->a_nch;
    struct namecache *ncp = nch->ncp;
    struct ucred *cred = ap->a_cred;
    struct mount *mp = dvp->v_mount;
    struct puffs_mount *pmp = MPTOPUFFSMP(mp);
    int error;

    if (!EXISTSOP(pmp, REMOVE))
        return EOPNOTSUPP;

    error = vget(dvp, LK_EXCLUSIVE);
    if (error != 0) {
        DPRINTF(("puffs_vnop_remove: EAGAIN on parent vnode %p %s\n",
                 dvp, ncp->nc_name));
        return EAGAIN;
    }

    error = cache_vget(nch, cred, LK_EXCLUSIVE, &vp);
    if (error != 0) {
        DPRINTF(("puffs_vnop_remove: cache_vget error: %p %s\n",
                 dvp, ncp->nc_name));
        return EAGAIN;
    }
    if (vp->v_type == VDIR) {
        error = EISDIR;
        goto out;
    }

    pn = VPTOPP(vp);
    PUFFS_MSG_ALLOC(vn, remove);
    remove_msg->pvnr_cookie_targ = VPTOPNC(vp);
    puffs_makecn(&remove_msg->pvnr_cn, &remove_msg->pvnr_cn_cred,
                 ncp, cred);
    puffs_msg_setinfo(park_remove, PUFFSOP_VN,
                      PUFFS_VN_REMOVE, VPTOPNC(dvp));

    puffs_msg_enqueue(pmp, park_remove);
    error = puffs_msg_wait2(pmp, park_remove, dpn, pn);

    PUFFS_MSG_RELEASE(remove);

    error = checkerr(pmp, error, __func__);

out:
    vput(dvp);
    vn_unlock(vp);
    if (error == 0)
        cache_unlink(nch);
    vrele(vp);
    return error;
}
Пример #27
0
/*
** Execute an SQL statement.
** Return a Cursor object if the statement is a query, otherwise
** return the number of tuples affected by the statement.
*/
static int conn_execute (lua_State *L) {
	env_data *env;
	conn_data *conn = getconnection (L);
	const char *statement = luaL_checkstring (L, 2);
	sword status;
	ub4 prefetch = 0;
	ub4 iters;
	ub4 mode;
	ub2 type;
	OCIStmt *stmthp;

	/* get environment */
	lua_rawgeti (L, LUA_REGISTRYINDEX, conn->env);
	if (!lua_isuserdata (L, -1))
		luaL_error(L,LUASQL_PREFIX"invalid environment in connection!");
	env = (env_data *)lua_touserdata (L, -1);
	/* statement handle */
	ASSERT (L, OCIHandleAlloc ((dvoid *)env->envhp, (dvoid **)&stmthp,
		OCI_HTYPE_STMT, (size_t)0, (dvoid **)0), conn->errhp);
	ASSERT (L, OCIAttrSet ((dvoid *)stmthp, (ub4)OCI_HTYPE_STMT,
		(dvoid *)&prefetch, (ub4)0, (ub4)OCI_ATTR_PREFETCH_ROWS,
		conn->errhp), conn->errhp);
	ASSERT (L, OCIStmtPrepare (stmthp, conn->errhp, (text *)statement,
		(ub4) strlen(statement), (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT),
		conn->errhp);
	/* statement type */
	ASSERT (L, OCIAttrGet ((dvoid *)stmthp, (ub4) OCI_HTYPE_STMT,
		(dvoid *)&type, (ub4 *)0, (ub4)OCI_ATTR_STMT_TYPE, conn->errhp),
		conn->errhp);
	if (type == OCI_STMT_SELECT)
		iters = 0;
	else
		iters = 1;
	if (conn->auto_commit)
		mode = OCI_COMMIT_ON_SUCCESS;
	else
		mode = OCI_DEFAULT;
	/* execute statement */
	status = OCIStmtExecute (conn->svchp, stmthp, conn->errhp, iters,
		(ub4)0, (CONST OCISnapshot *)NULL, (OCISnapshot *)NULL, mode);
	if (status && (status != OCI_NO_DATA)) {
		OCIHandleFree ((dvoid *)stmthp, OCI_HTYPE_STMT);
		return checkerr (L, status, conn->errhp);
	}
	if (type == OCI_STMT_SELECT) {
		/* create cursor */
		return create_cursor (L, 1, conn, stmthp, statement);
	} else {
		/* return number of rows */
		int rows_affected;
		ASSERT (L, OCIAttrGet ((dvoid *)stmthp, (ub4)OCI_HTYPE_STMT,
			(dvoid *)&rows_affected, (ub4 *)0,
			(ub4)OCI_ATTR_ROW_COUNT, conn->errhp), conn->errhp);
		OCIHandleFree ((dvoid *)stmthp, OCI_HTYPE_STMT);
		lua_pushnumber (L, rows_affected);
		return 1;
	}
}
Пример #28
0
int main (int argc, char **argv) {
//	printf("%d\n", argc);	//-> argument number check
    char *output="fconc.out";
    if (argc!=3 && argc!=4) {
        fprintf(stderr, "Usage: ./fconc infile1 infile2 [outfile (default:fconc.out)]\n");
        return 1;
    } else if (argc==4) {
        output=argv[3];
    }
//	printf("Out: %s\n", output);
    //File Opening
    int r1_f=open(argv[1], O_RDONLY);
    int r2_f=open(argv[2], O_RDONLY);
    int r_w=open(output, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG | S_IRWXO);
    if (r1_f==-1 || r2_f==-1) {
        checkerr();
    } else if (r_w==-1) {
        checkerr();
    }
    ssize_t c_rd=0, c_wr=0;
    char *p=(char *)malloc(100*sizeof(char));
    size_t l=0;
//	Write File1 to Output
    do {
        for (l=0; l<100; l++)
            p[l]='\0';
        c_rd=read(r1_f, p, 100);
        if (c_rd==-1) {
            checkerr();
        } else {
            c_wr=write(r_w, p, c_rd);
            if (c_wr==-1 || c_wr!=c_rd)
                checkerr();
        }
    } while (c_rd==100);
//	Append File2 to Output
    do {
        for (l=0; l<100; l++)
            p[l]='\0';
        c_rd=read(r2_f, p, 100);
        if (c_rd==-1) {
            checkerr();
        } else {
            c_wr=write(r_w, p, c_rd);
            if (c_wr==-1 || c_wr!=c_rd)
                checkerr();
        }
    } while (c_rd==100);
//	Flush and close
    if (fsync(r_w)==-1)
        checkerr();
    if (close(r1_f)!=0 || close(r2_f)!=0 || close(r_w)!=0)
        checkerr();
    return 0;
}
Пример #29
0
int FC_FUNC_(oraclesim_getvarvol, ORACLESIM_GETVARVOL)
     (OracleDbConnection **fdbconnid, int *nr, int *vnr, int *oidentnr,
      int *olt1, int *ol1, int *olt2, int *ol2,
      int *opind, int *op1, int *op2, int *imiss) {
  OracleDbConnection *dbconnid = *fdbconnid;
  int i, ret;
  sword status;

  /* definisco l'uscita */
  vardefine(dbconnid, oidentnr, olt1, ol1, olt2, ol2, opind, op1, op2);

  status=checkerr(dbconnid, OCIStmtFetch2(dbconnid->stmthp, dbconnid->errhp,
					  (ub4) *nr, OCI_FETCH_FIRST, (sb4) 0,
					  (ub4) OCI_DEFAULT));
  if (status == OCI_SUCCESS || status == OCI_NO_DATA) {
    if (checkerr(dbconnid, OCIAttrGet(dbconnid->stmthp, OCI_HTYPE_STMT, vnr, 0, 
				      OCI_ATTR_ROW_COUNT, dbconnid->errhp))
	== OCI_SUCCESS) {
      for (i=0; i<*vnr; i++) { /* inserisco i dati mancanti stile libsim */
 	if (olt1[i] == -999) {
	  olt1[i] = *imiss;
	  ol1[i] = *imiss;
	} else {
	  if (ol1[i] == -999) ol1[i] = *imiss;
	}
	if (olt2[i] == 0 || olt2[i] == -999) { /* in Oracle qui c'e` 0 al posto di mancante */
	  olt2[i] = *imiss;
	  ol2[i] = *imiss;
	} else {
	  if (ol2[i] == -999) ol2[i] = *imiss;
	}
	if (opind[i] == -999) opind[i] = *imiss;
	if (op1[i] == -999) op1[i] = *imiss;
	if (op2[i] == -999) op2[i] = *imiss;
      }
    } else {
      *vnr = 0;
    }
    ret = 0;
  } else {
    *vnr = 0;
    ret = 2;
  }
  return ret;
}
Пример #30
0
static int
puffs_vnop_mknod(struct vop_nmknod_args *ap)
{
    PUFFS_MSG_VARS(vn, mknod);
    struct vnode *dvp = ap->a_dvp;
    struct vattr *vap = ap->a_vap;
    struct puffs_node *dpn = VPTOPP(dvp);
    struct nchandle *nch = ap->a_nch;
    struct namecache *ncp = nch->ncp;
    struct ucred *cred = ap->a_cred;
    struct mount *mp = dvp->v_mount;
    struct puffs_mount *pmp = MPTOPUFFSMP(mp);
    int error;

    if (!EXISTSOP(pmp, MKNOD))
        return EOPNOTSUPP;

    DPRINTF(("puffs_mknod: dvp %p, name: %s\n",
             dvp, ncp->nc_name));

    if (vap->va_type != VFIFO)
        return EINVAL;

    if ((error = vget(dvp, LK_EXCLUSIVE)) != 0) {
        DPRINTF(("puffs_vnop_mknod: EAGAIN on ncp %p %s\n",
                 ncp, ncp->nc_name));
        return EAGAIN;
    }

    PUFFS_MSG_ALLOC(vn, mknod);
    puffs_makecn(&mknod_msg->pvnr_cn, &mknod_msg->pvnr_cn_cred,
                 ncp, cred);
    mknod_msg->pvnr_va = *ap->a_vap;
    puffs_msg_setinfo(park_mknod, PUFFSOP_VN,
                      PUFFS_VN_MKNOD, VPTOPNC(dvp));

    PUFFS_MSG_ENQUEUEWAIT2(pmp, park_mknod, dvp->v_data, NULL, error);

    error = checkerr(pmp, error, __func__);
    if (error)
        goto out;

    error = puffs_newnode(mp, dvp, ap->a_vpp,
                          mknod_msg->pvnr_newnode, vap->va_type);
    if (error)
        puffs_abortbutton(pmp, PUFFS_ABORT_MKNOD, dpn->pn_cookie,
                          mknod_msg->pvnr_newnode, ncp, cred);

out:
    vput(dvp);
    if (!error) {
        cache_setunresolved(nch);
        cache_setvp(nch, *ap->a_vpp);
    }
    PUFFS_MSG_RELEASE(mknod);
    return error;
}