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; }
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); }
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")); }