int main(int argc, const char * const *argv) { const char *env_pkgname; int ret; dpkg_locales_init(PACKAGE); dpkg_program_init("dpkg-divert"); dpkg_options_parse(&argv, cmdinfos, printforhelp); admindir = dpkg_db_set_dir(admindir); instdir = dpkg_fsys_set_dir(instdir); env_pkgname = getenv("DPKG_MAINTSCRIPT_PACKAGE"); if (opt_pkgname_match_any && env_pkgname) set_package(NULL, env_pkgname); if (!cipaction) setaction(&cmdinfo_add, NULL); modstatdb_open(msdbrw_readonly); fsys_hash_init(); ensure_diversions(); ret = cipaction->action(argv); modstatdb_shutdown(); dpkg_program_done(); return ret; }
/* assemble call as string in C code */ void menu_ttest2() { char cmd[256]; done = 0; create_dialog(); setaction(bCancel, cancel2); show(win); for(;;) { R_WaitEvent(); R_ProcessEvents(); if(done > 0) break; } if(done == 1) { sprintf(cmd, "t.test(x=%s, y=%s, alternative=\"%s\",\n paired=%s, var.equal=%s, conf.level=%s)\n", v[0], v[1], alts[getlistitem(alt)], ischecked(paired) ? "TRUE" : "FALSE", ischecked(varequal) ? "TRUE" : "FALSE", GA_gettext(lvl)); Rconsolecmd(cmd); } hide(win); delobj(bApply); delobj(win); }
/*! \brief Set the action using the specified parameters */ int setaction(int channel, int event, hwpl_callback_t callback, void * context){ eint_action_t action; action.channel = channel; action.event = event; action.callback = callback; action.context = context; return setaction(&action); }
radiobutton newradiobutton(char *text, rect r, actionfn fn) { radiobutton obj = newcontrol(text, r); if (obj) { obj->kind = RadioObject; setredraw(obj, draw_radio); setmousedown(obj, checkbox_mousedown); setmousemove(obj, checkbox_mousemove); setmousedrag(obj, checkbox_mousemove); setmouseup(obj, radio_mouseup); setkeydown(obj, radio_keydown); setaction(obj, fn); setbackground(obj, getbackground(parentwindow(obj))); settextfont(obj, SystemFont); show(obj); } return obj; }
checkbox newcheckbox(char *text, rect r, actionfn fn) { checkbox obj = newcontrol(text, r); if (obj) { obj->kind = CheckboxObject; setredraw(obj, draw_checkbox); setmousedown(obj, checkbox_mousedown); setmousemove(obj, checkbox_mousemove); setmousedrag(obj, checkbox_mousemove); setmouseup(obj, checkbox_mouseup); setkeydown(obj, checkbox_keydown); setaction(obj, fn); setbackground(obj, getbackground(parentwindow(obj))); settextfont(obj, SystemFont); show(obj); } return obj; }
button newbutton(char *text, rect r, actionfn fn) { button obj = newcontrol(text, r); if (obj) { obj->kind = ButtonObject; setredraw(obj, draw_button); setmousedown(obj, button_mousedown); setmousemove(obj, button_mousemove); setmousedrag(obj, button_mousemove); setmouseup(obj, button_mouseup); setkeydown(obj, button_keydown); setaction(obj, fn); setbackground(obj, LightGrey); settextfont(obj, SystemFont); show(obj); } return obj; }
SEXP menu_ttest3() { char cmd[256]; SEXP cmdSexp, cmdexpr, ans = R_NilValue; int i; ParseStatus status; done = 0; create_dialog(); setaction(bCancel, cancel2); show(win); for(;;) { R_WaitEvent(); R_ProcessEvents(); if(done > 0) break; } if(done == 1) { sprintf(cmd, "t.test(x=%s, y=%s, alternative=\"%s\",\n paired=%s, var.equal=%s, conf.level=%s)\n", v[0], v[1], alts[getlistitem(alt)], ischecked(paired) ? "TRUE" : "FALSE", ischecked(varequal) ? "TRUE" : "FALSE", GA_gettext(lvl)); } hide(win); delobj(bApply); delobj(win); if(done == 1) { PROTECT(cmdSexp = allocVector(STRSXP, 1)); SET_STRING_ELT(cmdSexp, 0, mkChar(cmd)); cmdexpr = PROTECT(R_ParseVector(cmdSexp, -1, &status, R_NilValue)); if (status != PARSE_OK) { UNPROTECT(2); error("invalid call %s", cmd); } /* Loop is needed here as EXPSEXP will be of length > 1 */ for(i = 0; i < length(cmdexpr); i++) ans = eval(VECTOR_ELT(cmdexpr, i), R_GlobalEnv); UNPROTECT(2); } return ans; }
/* just retrieve values from the dialog box and assemble call in interpreted code */ void menu_ttest(char **vars, int ints[], double level[]) { done = 0; create_dialog(); setaction(bCancel, cancel); show(win); for(;;) { R_WaitEvent(); R_ProcessEvents(); if(done > 0) break; } vars[0] = v[0]; vars[1] = v[1]; ints[0] = getlistitem(alt); ints[1] = ischecked(paired); ints[2] = ischecked(varequal); ints[3] = done; level[0] = R_atof(GA_gettext(lvl)); hide(win); delobj(bApply); delobj(win); }
button newimagecheckbox(image img, rect r, actionfn fn) { button obj; obj = newdrawing(r, draw_image_button); if (! obj) return NULL; setmousedown(obj, checkbox_mousedown); setmousemove(obj, checkbox_mousemove); setmousedrag(obj, checkbox_mousemove); setmouseup(obj, checkbox_mouseup); setkeydown(obj, checkbox_keydown); setaction(obj, fn); setbackground(obj, LightGrey); settextfont(obj, SystemFont); setimage(obj, img); show(obj); return obj; }
button newimagebutton(image img, rect r, actionfn fn) { button obj; obj = newcontrol(NULL, r); if (! obj) return NULL; setredraw(obj, draw_image_button); setmousedown(obj, button_mousedown); setmousemove(obj, button_mousemove); setmousedrag(obj, button_mousemove); setmouseup(obj, button_mouseup); setkeydown(obj, button_keydown); setaction(obj, fn); setbackground(obj, LightGrey); settextfont(obj, SystemFont); setimage(obj, img); show(obj); return obj; }
int commandfd(const char *const *argv) { struct varbuf linevb = VARBUF_INIT; const char * pipein; const char **newargs = NULL; char *ptr, *endptr; FILE *in; long infd; int ret = 0; int c, lno, i; bool skipchar; pipein = *argv++; if (pipein == NULL || *argv) badusage(_("--%s takes exactly one argument"), cipaction->olong); infd = dpkg_options_parse_arg_int(cipaction, pipein); in = fdopen(infd, "r"); if (in == NULL) ohshite(_("couldn't open '%i' for stream"), (int)infd); for (;;) { bool mode = false; int argc= 1; lno= 0; push_error_context(); do { c = getc(in); if (c == '\n') lno++; } while (c != EOF && c_isspace(c)); if (c == EOF) break; if (c == '#') { do { c= getc(in); if (c == '\n') lno++; } while (c != EOF && c != '\n'); continue; } varbuf_reset(&linevb); do { varbuf_add_char(&linevb, c); c= getc(in); if (c == '\n') lno++; /* This isn't fully accurate, but overestimating can't hurt. */ if (c_isspace(c)) argc++; } while (c != EOF && c != '\n'); if (c == EOF) ohshit(_("unexpected end of file before end of line %d"), lno); if (!argc) continue; varbuf_end_str(&linevb); newargs = m_realloc(newargs, sizeof(const char *) * (argc + 1)); argc= 1; ptr= linevb.buf; endptr = ptr + linevb.used + 1; skipchar = false; while(ptr < endptr) { if (skipchar) { skipchar = false; } else if (*ptr == '\\') { memmove(ptr, (ptr+1), (linevb.used-(linevb.buf - ptr)-1)); endptr--; skipchar = true; continue; } else if (c_isspace(*ptr)) { if (mode == true) { *ptr = '\0'; mode = false; } } else { if (mode == false) { newargs[argc]= ptr; argc++; mode = true; } } ptr++; } *ptr = '\0'; newargs[argc++] = NULL; /* We strdup() each argument, but never free it, because the * error messages contain references back to these strings. * Freeing them, and reusing the memory, would make those * error messages confusing, to say the least. */ for(i=1;i<argc;i++) if (newargs[i]) newargs[i] = m_strdup(newargs[i]); setaction(NULL, NULL); dpkg_options_parse((const char *const **)&newargs, cmdinfos, printforhelp); if (!cipaction) badusage(_("need an action option")); ret |= cipaction->action(newargs); pop_error_context(ehflag_normaltidy); } return ret; }
void commandfd(const char *const *argv) { struct varbuf linevb = VARBUF_INIT; const char * pipein; const char **newargs = NULL; char *ptr, *endptr; FILE *in; unsigned long infd; int c, lno, i; bool skipchar; void (*actionfunction)(const char *const *argv); pipein = *argv++; if (pipein == NULL) badusage(_("--command-fd takes one argument, not zero")); if (*argv) badusage(_("--command-fd only takes one argument")); errno = 0; infd = strtoul(pipein, &endptr, 10); if (pipein == endptr || *endptr || infd > INT_MAX) ohshite(_("invalid integer for --%s: `%.250s'"), "command-fd", pipein); if ((in= fdopen(infd, "r")) == NULL) ohshite(_("couldn't open `%i' for stream"), (int) infd); for (;;) { bool mode = false; int argc= 1; lno= 0; push_error_context(); do { c= getc(in); if (c == '\n') lno++; } while (c != EOF && isspace(c)); if (c == EOF) break; if (c == '#') { do { c= getc(in); if (c == '\n') lno++; } while (c != EOF && c != '\n'); continue; } varbufreset(&linevb); do { varbufaddc(&linevb,c); c= getc(in); if (c == '\n') lno++; /* This isn't fully accurate, but overestimating can't hurt. */ if (isspace(c)) argc++; } while (c != EOF && c != '\n'); if (c == EOF) ohshit(_("unexpected eof before end of line %d"),lno); if (!argc) continue; varbufaddc(&linevb,0); newargs = m_realloc(newargs, sizeof(const char *) * (argc + 1)); argc= 1; ptr= linevb.buf; endptr= ptr + linevb.used; skipchar = false; while(ptr < endptr) { if (skipchar) { skipchar = false; } else if (*ptr == '\\') { memmove(ptr, (ptr+1), (linevb.used-(linevb.buf - ptr)-1)); endptr--; skipchar = true; continue; } else if (isspace(*ptr)) { if (mode == true) { *ptr = '\0'; mode = false; } } else { if (mode == false) { newargs[argc]= ptr; argc++; mode = true; } } ptr++; } *ptr = '\0'; newargs[argc++] = NULL; /* We strdup() each argument, but never free it, because the * error messages contain references back to these strings. * Freeing them, and reusing the memory, would make those * error messages confusing, to say the least. */ for(i=1;i<argc;i++) if (newargs[i]) newargs[i] = m_strdup(newargs[i]); setaction(NULL, NULL); myopt((const char *const**)&newargs,cmdinfos); if (!cipaction) badusage(_("need an action option")); actionfunction= (void (*)(const char* const*))cipaction->farg; actionfunction(newargs); pop_error_context(ehflag_normaltidy); } }