示例#1
0
/* store_result() - store record from database in B-tree
 * this function is also a valid callback for use with sqlite3_exec()
 * pextra is again unused
 *
 * needs to return zero (nonzero aborts SQL query)
 */
int store_result(void * pextra, int nfields, char ** arrvalues, char ** arrfieldnames) {
    int n;

    /* allocate record on heap */
    struct s_record * prec = alloc_record();


    prec->irecord = record_count+1;
    for (n = 0; n < nfields; n++) {
        if (strcasecmp(arrfieldnames[n], "MovieTitle") == 0)
            prec->name = strdup(arrvalues[n]); /* key */
        else if (strcasecmp(arrfieldnames[n], "MovieCategory") == 0)
            prec->category = strdup(arrvalues[n]);
        else if (strcasecmp(arrfieldnames[n], "ProductionYear") == 0)
            prec->year = atoi(arrvalues[n]);
        else if (strcasecmp(arrfieldnames[n], "Format") == 0)
            prec->format = strdup(arrvalues[n]);
        else if (strcasecmp(arrfieldnames[n], "Language") == 0)
            prec->language = strdup(arrvalues[n]);
        else if (strcasecmp(arrfieldnames[n], "Web") == 0)
            prec->url = strdup(arrvalues[n]);
    }

    /* add record to B-tree */
    if (add_element(prec->name, prec) != NULL) {
        /* element already exists -- don't add record */
        printf("Duplicate record exists: "); /* diagnostic value only */
        display_record(prec, stdout);
        free_record(prec);
    }

    return 0;
}
示例#2
0
record
alloc_intint(val_t rec1, val_t rec2)
{
	val_t fields[2];
	fields[0] = rec1;
	fields[1] = rec2;
	return alloc_record(fields, 2);
}
示例#3
0
static ptr_t
Flockrep(struct flock* flock)
{
	val_t fields[5];
	fields[0] = (val_t) flock->l_type;
	fields[1] = (val_t) flock->l_whence;
	fields[2] = (val_t) flock->l_start;
	fields[3] = (val_t) flock->l_len;
	fields[4] = (val_t) flock->l_pid;
	return alloc_record(fields, arraysize(fields));
}
示例#4
0
static ptr_t
Termiorep(struct termios* termios)
{
	val_t fields[6];
	fields[0] = (val_t) termios->c_iflag;
	fields[1] = (val_t) termios->c_oflag;
	fields[2] = (val_t) termios->c_cflag;
	fields[3] = (val_t) termios->c_lflag;
	fields[4] = (val_t) cfgetispeed(termios);
	fields[5] = (val_t) cfgetospeed(termios);
	return alloc_record(fields, arraysize(fields));
}
示例#5
0
int DbDumperWriter::push_record(const char *data, int lenth)
{
  int ret = OB_SUCCESS;

  RecordInfo *rec = alloc_record(data, lenth);
  if (rec == NULL) {
    TBSYS_LOG(ERROR, "Can't allocate records, len:%d", lenth);
    ret = OB_ERROR;
  } else {
    CThreadGuard gard(&records_lock_);
    pushed_lines_++;
    records_.push_back(rec);
    sem_post(&sem_empty_);
  }

  return ret;
}