Exemplo n.º 1
0
int SRM_mk_select(SRM *srmp,char *DBOWN,char *where)
{
    register char *p,*p1;
    char *whp=0;

    if(!where) return -1;
    if(*where && (toupper(*where)=='S' && toupper(where[1])=='E')) return 0; //如果是select,不作处理
    if(!srmp->tp) return -1;
    if(*where) {
        whp=strdup(where);
        if(!whp) {
            return MEMERR;
        }
    }
    p=where;
    if(srmp->befor) {
        p=stpcpy(p,srmp->befor);
        *p++ = ' ';
        srmp->befor=0;
    }
    p=stpcpy(p,"SELECT ");
    if(srmp->hint) {
        p=stpcpy(p, srmp->hint);
        *p++ = ' ';
    }
    mkfield(p,srmp->tp,0);
    p1=where;
    while((p1=strcasestr((const char *)p1,(const char *)pre_tabname)) != 0) {
        if(*DBOWN) p1=strsubst(p1,3,DBOWN);
        else	   p1=strsubst(p1,4,DBOWN);
    }
    p+=strlen(p);
    p=stpcpy(p," FROM ");

    p1=stptok(srmp->tabname,0,0," ,.");
    if(!*p1) {			//简单表名
        if(DBOWN && *DBOWN) {
            p=stpcpy(p, DBOWN);
            *p++='.';
            *p=0;
        }
        p=stpcpy(p,srmp->tabname);
        *p++=' ';
        *p=0;
    } else {
        p=addown_to_name(p,DBOWN,srmp->tabname);
        *p++=' ';
        *p=0;
    }
    if(whp) {
        p=addown_to_name(p,DBOWN,whp);
        free(whp);
    }
    return 0;
}
static int log_failure_mkmsg(int flags, pool *p, const unsigned char *fmt,
    void *json,
    void (*mkfield)(void *, const char *, size_t, unsigned int, const void *)) {

  if (flags == LOG_FAILURE_EVENT_FL_CONNECT &&
      session.prev_server == NULL) {
    unsigned int meta = LOG_FAILURE_META_CONNECT;
    const struct field_info *fi;
    bool connecting = true;

    fi = pr_table_kget(log_failure_fields, (const void *) &meta,
      sizeof(unsigned int), NULL);

    mkfield(json, fi->field_name, fi->field_namelen, fi->field_type,
      &connecting);

  } else if (flags == LOG_FAILURE_EVENT_FL_DISCONNECT) {
    unsigned int meta = LOG_FAILURE_META_DISCONNECT;
    struct field_info *fi;
    bool disconnecting = true;

    fi = pr_table_kget(field_idtab, (const void *) &meta, sizeof(unsigned int),
      NULL);

    mkfield(json, fi->field_name, fi->field_namelen, fi->field_type,
      &disconnecting);
  }

  while (*fmt) {
    pr_signals_handle();

    if (*fmt == LOGFMT_META_START) {
      find_next_meta(p, flags, cmd, &fmt, json, mkfield);

    } else {
      fmt++;
    }
  }

  return 0;
}
Exemplo n.º 3
0
realpart(register Addrp p)
#endif
{
	register Addrp q;

	if (p->tag == TADDR
	 && p->uname_tag == UNAM_CONST
	 && ISCOMPLEX (p->vtype))
		return (Addrp)mkrealcon (p -> vtype + TYREAL - TYCOMPLEX,
			p->user.kludge.vstg1 ? p->user.Const.cds[0]
				: cds(dtos(p->user.Const.cd[0]),CNULL));

	q = (Addrp) cpexpr((expptr) p);
	if( ISCOMPLEX(p->vtype) )
		q = mkfield (q, "r", p -> vtype + TYREAL - TYCOMPLEX);

	return(q);
}
Exemplo n.º 4
0
imagpart(register Addrp p)
#endif
{
	register Addrp q;

	if( ISCOMPLEX(p->vtype) )
	{
		if (p->tag == TADDR && p->uname_tag == UNAM_CONST)
			return mkrealcon (p -> vtype + TYREAL - TYCOMPLEX,
				p->user.kludge.vstg1 ? p->user.Const.cds[1]
				: cds(dtos(p->user.Const.cd[1]),CNULL));
		q = (Addrp) cpexpr((expptr) p);
		q = mkfield (q, "i", p -> vtype + TYREAL - TYCOMPLEX);
		return( (expptr) q );
	}
	else

/* Cast an integer type onto a Double Real type */

		return( mkrealcon( ISINT(p->vtype) ? TYDREAL : p->vtype , "0"));
}