char ret_shape(t_param *arg, char *name) { if (!(my_strcmp(FLD(arg->ini, name, SHAPE, 0), PIXEL))) return (1); if (!(my_strcmp(FLD(arg->ini, name, SHAPE, 0), LINE))) return (2); if (!(my_strcmp(FLD(arg->ini, name, SHAPE, 0), POLY))) return (3); return (0); }
static SEM_PC SEM_FN_NAME (lm32bf,wcsr) (SIM_CPU *current_cpu, SEM_ARG sem_arg) { #define FLD(f) abuf->fields.sfmt_wcsr.f ARGBUF *abuf = SEM_ARGBUF (sem_arg); int UNUSED written = 0; IADDR UNUSED pc = abuf->addr; SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4); lm32bf_wcsr_insn (current_cpu, FLD (f_csr), CPU (h_gr[FLD (f_r1)])); return vpc; #undef FLD }
static SEM_PC SEM_FN_NAME (lm32bf,calli) (SIM_CPU *current_cpu, SEM_ARG sem_arg) { #define FLD(f) abuf->fields.sfmt_bi.f ARGBUF *abuf = SEM_ARGBUF (sem_arg); int UNUSED written = 0; IADDR UNUSED pc = abuf->addr; SEM_BRANCH_INIT SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4); { { SI opval = ADDSI (pc, 4); CPU (h_gr[((UINT) 29)]) = opval; TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); } { USI opval = EXTSISI (FLD (i_call)); SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); } } SEM_BRANCH_FINI (vpc); return vpc; #undef FLD }
char open_ini(t_param *arg, char **av) { if ((arg->ini = bunny_load_ini(av[1])) == NULL) return (1); if (FLD(arg->ini, NULL, "objlist", 0) == NULL) return (2); return (0); }
static SEM_PC SEM_FN_NAME (lm32bf,cmpgeu) (SIM_CPU *current_cpu, SEM_ARG sem_arg) { #define FLD(f) abuf->fields.sfmt_user.f ARGBUF *abuf = SEM_ARGBUF (sem_arg); int UNUSED written = 0; IADDR UNUSED pc = abuf->addr; SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4); { SI opval = GEUSI (CPU (h_gr[FLD (f_r0)]), CPU (h_gr[FLD (f_r1)])); CPU (h_gr[FLD (f_r2)]) = opval; TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); } return vpc; #undef FLD }
static SEM_PC SEM_FN_NAME (lm32bf,muli) (SIM_CPU *current_cpu, SEM_ARG sem_arg) { #define FLD(f) abuf->fields.sfmt_addi.f ARGBUF *abuf = SEM_ARGBUF (sem_arg); int UNUSED written = 0; IADDR UNUSED pc = abuf->addr; SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4); { SI opval = MULSI (CPU (h_gr[FLD (f_r0)]), EXTHISI (TRUNCSIHI (FLD (f_imm)))); CPU (h_gr[FLD (f_r1)]) = opval; TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); } return vpc; #undef FLD }
static SEM_PC SEM_FN_NAME (lm32bf,modu) (SIM_CPU *current_cpu, SEM_ARG sem_arg) { #define FLD(f) abuf->fields.sfmt_user.f ARGBUF *abuf = SEM_ARGBUF (sem_arg); int UNUSED written = 0; IADDR UNUSED pc = abuf->addr; SEM_BRANCH_INIT SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4); { USI opval = lm32bf_modu_insn (current_cpu, pc, FLD (f_r0), FLD (f_r1), FLD (f_r2)); SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc); TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); } SEM_BRANCH_FINI (vpc); return vpc; #undef FLD }
static SEM_PC SEM_FN_NAME (lm32bf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg) { #define FLD(f) abuf->fields.sfmt_be.f ARGBUF *abuf = SEM_ARGBUF (sem_arg); int UNUSED written = 0; IADDR UNUSED pc = abuf->addr; SEM_BRANCH_INIT SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4); if (NESI (CPU (h_gr[FLD (f_r0)]), CPU (h_gr[FLD (f_r1)]))) { { USI opval = FLD (i_branch); SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc); written |= (1 << 3); TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval); } } abuf->written = written; SEM_BRANCH_FINI (vpc); return vpc; #undef FLD }
char check_scope(t_param *arg, char *name) { if (FLD(arg->ini, name, "type", 0) == NULL || my_strcmp(FLD(arg->ini, name, "type", 0), TYPE)) return (0); if (FLD(arg->ini, name, DATA, 0) == NULL) return (0); if (FLD(arg->ini, name, SHAPE, 0) == NULL || (my_strcmp(FLD(arg->ini, name, SHAPE, 0), PIXEL) && my_strcmp(FLD(arg->ini, name, SHAPE, 0), LINE) && my_strcmp(FLD(arg->ini, name, SHAPE, 0), POLY))) return (0); return (1); }
static int imx_uart_getc(struct uart_bas *bas, struct mtx *hwmtx) { int c; uart_lock(hwmtx); while (!(IS(bas, USR2, RDR))) ; c = GETREG(bas, REG(URXD)); uart_unlock(hwmtx); #if defined(KDB) if (c & FLD(URXD, BRK)) { if (kdb_break()) return (0); } #endif return (c & 0xff); }
WCL_XRM_OPTIONS }; typedef struct CWNET_CONFIG { int traceLevel; Widget widget_draw1; int sln; /* slopnet server connection */ int lgfx; /* graphics server connection */ } CWNET_CONFIG; #define FLD(n) XtOffsetOf(CWNET_CONFIG,n) static XtResource CWNET_CONFIG_RES [] = { { "traceLevel", "TraceLevel", XtRInt, sizeof(int), FLD(traceLevel), XtRImmediate, 0 }, { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_draw1), XtRString, "*draw1" } }; #undef FLD struct CWNET_CONFIG CWNET; void test_cb( Widget w, void *u, void *c ) { printf("cb\n"); if(! XtIsSubclass(w, weditWidgetClass ) ) return; char *s;
static naRef f_stat(naContext ctx, naRef me, int argc, naRef* args) { int n=0; struct stat s; naRef result, path = argc > 0 ? naStringValue(ctx, args[0]) : naNil(); if(!IS_STR(path)) naRuntimeError(ctx, "bad argument to stat()"); if(stat(naStr_data(path), &s) < 0) { if(errno == ENOENT) return naNil(); naRuntimeError(ctx, strerror(errno)); } result = naNewVector(ctx); naVec_setsize(result, 12); #define FLD(x) naVec_set(result, n++, naNum(s.st_##x)); FLD(dev); FLD(ino); FLD(mode); FLD(nlink); FLD(uid); FLD(gid); FLD(rdev); FLD(size); FLD(atime); FLD(mtime); FLD(ctime); #undef FLD naVec_set(result, n++, ftype(ctx, s.st_mode)); return result; }
static void imx_uart_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, int parity) { uint32_t baseclk, reg; /* Enable the device and the RX/TX channels. */ SET(bas, REG(UCR1), FLD(UCR1, UARTEN)); SET(bas, REG(UCR2), FLD(UCR2, RXEN) | FLD(UCR2, TXEN)); if (databits == 7) DIS(bas, UCR2, WS); else ENA(bas, UCR2, WS); if (stopbits == 2) ENA(bas, UCR2, STPB); else DIS(bas, UCR2, STPB); switch (parity) { case UART_PARITY_ODD: DIS(bas, UCR2, PROE); ENA(bas, UCR2, PREN); break; case UART_PARITY_EVEN: ENA(bas, UCR2, PROE); ENA(bas, UCR2, PREN); break; case UART_PARITY_MARK: case UART_PARITY_SPACE: /* FALLTHROUGH: Hardware doesn't support mark/space. */ case UART_PARITY_NONE: default: DIS(bas, UCR2, PREN); break; } /* * The hardware has an extremely flexible baud clock: it allows setting * both the numerator and denominator of the divider, as well as a * separate pre-divider. We simplify the problem of coming up with a * workable pair of numbers by assuming a pre-divider and numerator of * one because our base clock is so fast we can reach virtually any * reasonable speed with a simple divisor. The numerator value actually * includes the 16x over-sampling (so a value of 16 means divide by 1); * the register value is the numerator-1, so we have a hard-coded 15. * Note that a quirk of the hardware requires that both UBIR and UBMR be * set back to back in order for the change to take effect. */ if (baudrate > 0) { baseclk = imx_ccm_uart_hz(); reg = GETREG(bas, REG(UFCR)); reg = (reg & ~IMXUART_UFCR_RFDIV_MASK) | IMXUART_UFCR_RFDIV_DIV1; SETREG(bas, REG(UFCR), reg); SETREG(bas, REG(UBIR), 15); SETREG(bas, REG(UBMR), (baseclk / baudrate) - 1); } /* * Program the tx lowater and rx hiwater levels at which fifo-service * interrupts are signaled. The tx value is interpetted as "when there * are only this many bytes remaining" (not "this many free"). */ reg = GETREG(bas, REG(UFCR)); reg &= ~(IMXUART_UFCR_TXTL_MASK | IMXUART_UFCR_RXTL_MASK); reg |= (IMX_FIFOSZ - IMX_TXFIFO_LEVEL) << IMXUART_UFCR_TXTL_SHIFT; reg |= IMX_RXFIFO_LEVEL << IMXUART_UFCR_RXTL_SHIFT; SETREG(bas, REG(UFCR), reg); }
} BasicSetting; /* application resource struct syntax Widget ent = <String> "*ent1" int thermal1div = 0; Type <ResourceName> VariableNameC = <Type> Value */ #define FLD(n) XtOffsetOf(BasicSetting,n) static XtResource basicSettingRes[] = { { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_ent[0]), XtRString, "*ent1" }, { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_ent[1]), XtRString, "*ent2" }, { "thermal1", "Thermal1", XtRString, sizeof(String), FLD(p[0]), XtRString, "" }, { "thermal2", "Thermal2", XtRString, sizeof(String), FLD(p[1]), XtRString, "" }, { "thermal1div", "Thermal1div", XtRInt, sizeof(int), FLD(thermaldiv[0]), XtRImmediate, 0 }, { "thermal2div", "Thermal2div", XtRInt, sizeof(int),
TCPSTREAM *tcp_open (char *host,char *service,unsigned long port) { char *s,tmp[MAILTMPLEN]; TCPSTREAM *stream = NIL; int argblk[5],jfn; unsigned long i,j,k,l; char file[MAILTMPLEN]; port &= 0xffff; /* erase flags */ /* domain literal? */ if (host[0] == '[' && host[strlen (host)-1] == ']') { if (((i = strtoul (s = host+1,&s,10)) <= 255) && *s++ == '.' && ((j = strtoul (s,&s,10)) <= 255) && *s++ == '.' && ((k = strtoul (s,&s,10)) <= 255) && *s++ == '.' && ((l = strtoul (s,&s,10)) <= 255) && *s++ == ']' && !*s) { argblk[3] = (i << 24) + (j << 16) + (k << 8) + l; sprintf (tmp,"[%lu.%lu.%lu.%lu]",i,j,k,l); } else { sprintf (tmp,"Bad format domain-literal: %.80s",host); mm_log (tmp,ERROR); return NIL; } } else { /* host name */ argblk[1] = _GTHPN; /* get IP address and primary name */ argblk[2] = (int) (host-1); /* pointer to host */ argblk[4] = (int) (tmp-1); if (!jsys (GTHST,argblk)) { /* first try DEC's domain way */ argblk[1] = _GTHPN; /* get IP address and primary name */ argblk[2] = (int) (host-1); argblk[4] = (int) (tmp-1); if (!jsys (GTDOM,argblk)){/* try the CHIVES domain way */ argblk[1] = _GTHSN; /* failed, do the host table then */ if (!jsys (GTHST,argblk)) { sprintf (tmp,"No such host as %s",host); mm_log (tmp,ERROR); return NIL; } argblk[1] = _GTHNS; /* convert number to string */ argblk[2] = (int) (tmp-1); /* get the official name */ if (!jsys (GTHST,argblk)) strcpy (tmp,host); } } } sprintf (file,"TCP:.%o-%d;PERSIST:30;CONNECTION:ACTIVE",argblk[3],port); argblk[1] = GJ_SHT; /* short form GTJFN% */ argblk[2] = (int) (file-1); /* pointer to file name */ /* get JFN for TCP: file */ if (!jsys (GTJFN,argblk)) fatal ("Unable to create TCP JFN"); jfn = argblk[1]; /* note JFN for later */ /* want 8-bit bidirectional I/O */ argblk[2] = OF_RD|OF_WR|(FLD (8,monsym("OF%BSZ"))); if (!jsys (OPENF,argblk)) { sprintf (file,"Can't connect to %s,%d server",tmp,port); mm_log (file,ERROR); return NIL; } /* create TCP/IP stream */ stream = (TCPSTREAM *) fs_get (sizeof (TCPSTREAM)); stream->host = cpystr (tmp); /* copy official host name */ argblk[1] = _GTHNS; /* convert number to string */ argblk[2] = (int) (tmp-1); argblk[3] = -1; /* want local host */ if (!jsys (GTHST,argblk)) strcpy (tmp,"LOCAL"); stream->localhost = cpystr (tmp); stream->port = port; /* save port number */ stream->jfn = jfn; /* init JFN */ return stream; }
int mp_set_content(id3_tag* tag, const int field, id3_content* new_content) { id3v1_tag *v1; id3v2_tag *v2; if(!tag) return MP_EERROR; if(tag->version == 2) { return mp_set_content_at_pos(tag, field, new_content, 0); } else if(tag->version == 1) { unsigned char c; char *my_val; int len, j; v1 = tag->tag; switch(field) { #define FLD(str1, str2, str3, str4) \ case str1:\ if(!new_content) v1->str2 = NULL;\ else\ {\ id3_text_content *tc = str4(new_content);\ if(strlen(tc->text) > str3 || tc->encoding != ISO_8859_1)\ {\ mp_convert_to_v2(tag);\ mp_free_text_content(tc);\ return mp_set_content(tag, field, new_content);\ }\ \ v1->str2 = tc->text;\ xfree(tc);\ }\ break; FLD(MP_ARTIST, artist, 30, mp_parse_artist); FLD(MP_TITLE, title, 30, mp_parse_title); FLD(MP_ALBUM, album, 30, mp_parse_album); FLD(MP_YEAR, year, 4, mp_parse_year); case MP_COMMENT: if(!new_content) v1->comment = NULL; else { id3_comment_content *tc = mp_parse_comment(new_content); if(strlen(tc->text) > 30 || tc->short_descr || tc->encoding != ISO_8859_1) { mp_convert_to_v2(tag); mp_free_comment_content(tc); return mp_set_content(tag, field, new_content); } v1->comment = xmallocd0(strlen(tc->text)+1, "mp_set_content:v1->comment"); memcpy(v1->comment, tc->text, strlen(tc->text)); mp_free_comment_content(tc); } break; case MP_TRACK: if(!new_content) v1->track = 0; else { id3_text_content *tc = mp_parse_track(new_content); #ifdef HAVE_STRTOL errno = 0; j = strtol(tc->text, (char **)NULL, 10); if(errno != ERANGE) v1->track = j; else return MP_EERROR; #else v1->track = atoi(tc->text); #endif mp_free_text_content(tc); } break; case MP_GENRE: if(!new_content) v1->genre = 0xFF; else { int b = 0, i; id3_text_content *tc = mp_parse_genre(new_content); /* i = strlen(tc->text); */ for(c = 0; c < GLL; c++) { if(!strcmp(genre_list[c], tc->text)) { v1->genre = c; b = 1; } } mp_free_text_content(tc); if(!b) { mp_convert_to_v2(tag); return mp_set_content(tag, field, new_content); } break; } } } else if(tag->version == -1) return MP_EVERSION; else return MP_EFNF; return 0; }
long deviceId; char *matrix; char *screenSize; } app_conf; static app_conf CONF; static XrmOptionDescRec options[] = { { "-deviceName", "*deviceName", XrmoptionSepArg, NULL }, { "-matrix", "*CTM", XrmoptionSepArg, NULL }, { "-screenSize", "*screenSize", XrmoptionSepArg, NULL }, }; #define FLD(n) XtOffsetOf(app_conf,n) static XtResource app_res[] = { { "deviceName", "DeviceName", XtRString, sizeof(String), FLD(deviceName), XtRString, "" }, { "matrix", "CTM", XtRString, sizeof(String), FLD(matrix), XtRString, "" }, { "screenSize", "ScreenSize", XtRString, sizeof(String), FLD(screenSize), XtRString, "" }, }; #undef FLD static void get_config(Widget top) { /* get application resources */ XtGetApplicationResources( top, (XtPointer)&CONF, app_res,
int traceLevel; Widget widget_startstop; Widget widget_frame; XtAppContext ctx; } BasicSetting; #define FLD(n) XtOffsetOf(BasicSetting,n) static XtResource basicSettingRes[] = { { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_startstop), XtRString, "*startstop" }, { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_frame), XtRString, "*frame" }, { "traceLevel", "TraceLevel", XtRInt, sizeof(int), FLD(traceLevel), XtRImmediate, 0 } }; #undef FLD struct BasicSetting CONFIG; void startstop_cb( Widget w, void *u, void *c )
/* All Wcl applications should provide at least these Wcl options: */ static XrmOptionDescRec options[] = { { "-TraceLevel", "*traceLevel", XrmoptionSepArg, NULL }, WCL_XRM_OPTIONS }; typedef struct CWRI_CONFIG { int traceLevel; } CWRI_CONFIG; #define FLD(n) XtOffsetOf(CWRI_CONFIG,n) static XtResource CWRI_CONFIG_RES [] = { { "traceLevel", "TraceLevel", XtRInt, sizeof(int), FLD(traceLevel), XtRImmediate, 0 } }; #undef FLD struct CWRI_CONFIG CWRI; void test_cb( Widget w, void *u, void *c ) { printf("cb\n"); if(! XtIsSubclass(w, weditWidgetClass ) ) return; char *s; XtVaGetValues(w, "label", &s, NULL ); if( is_empty(s) ) return;
int filelist; int traceLevel; char *listenPort; Widget widget_filelist; Widget widget_entry; Widget widget_filter; } BasicSetting; #define FLD(n) XtOffsetOf(BasicSetting,n) static XtResource basicSettingRes[] = { { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_filelist), XtRString, "*fileList" }, { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_entry), XtRString, "*entry" }, { NULL, NULL, XtRWidget, sizeof(Widget), FLD(widget_filter), XtRString, "*filter" }, { "listenPort", "ListenPort", XtRString, sizeof(String), FLD(listenPort), XtRString, "10000" }, { "traceLevel", "TraceLevel", XtRInt, sizeof(int), FLD(traceLevel), XtRImmediate, 0