static void do_openfit_proc(Widget w, XtPointer client_data, XtPointer call_data) { char *s; XmFileSelectionBoxCallbackStruct *cbs = (XmFileSelectionBoxCallbackStruct *) call_data; if (!XmStringGetLtoR(cbs->value, charset, &s)) { errmsg("Error converting XmString to char string in do_openfit_proc()"); return; } set_wait_cursor(); reset_nonl(); getparms(s); XtFree(s); update_nonl_frame(); unset_wait_cursor(); }
main() { register long k; unsigned char t; struct fld_parms fld; putenv("_=record_format_srn"); chdir(getenv("HOME")); sd_open(leave); sd_echo_flag = 0x20; ss_open(); co_open(); fix(record_format_srn); sd_screen_off(); sd_clear_screen(); sd_text(record_format_srn); sd_screen_on(); memcpy(&x, rf, sizeof(struct rf_item)); for (k = 0; k < NUM_PROMPTS; k++) show_field(k); /* * Only Super Operator May Input Data */ getparms(0); if (!SUPER_OP) { eh_post(ERR_SUPER, 0); sd_cursor(0, 23, 3); sd_text("* * * Hit Any Key * * *"); t = sd_keystroke(NOECHO); leave(); } k = 0; while (1) { fld.irow = field[k].row; fld.icol = field[k].col; fld.pcol = 0; fld.arrow = 0; fld.length = &field[k].len; fld.prompt = 0; fld.type = field[k].type; get_field(k); t = sd_input(&fld, 0, 0, buf, 0); put_field(k); if (t == EXIT) leave(); if (field[k].type == 'a') { if (field[k].valid) { if (!memchr(field[k].valid, *buf, strlen(field[k].valid))) { eh_post(ERR_CODE, buf); continue; } } } else { if (value < field[k].min || value > field[k].max) { eh_post(ERR_CODE, buf); continue; } } switch(k) { case 0: if (x.rf_rp == 0x20 || !x.rf_rp) { eh_post(ERR_PREFACE, 0); x.rf_rp = rf->rf_rp; continue; } break; case 1: if (x.rf_rt == 0x20) x.rf_rt = 0; break; case 2: if (x.rf_ft == 0x20) x.rf_ft = 0; break; case 3: if (x.rf_eof == 0x20) x.rf_eof = 0; break; case 13: if (x.rf_box_pos > x.rf_rmks) { eh_post(ERR_CODE, buf); continue; } break; case 14: if (x.rf_box_len && !x.rf_rmks) { eh_post(ERR_CODE, buf); continue; } break; case 15: if (x.rf_box_count && !x.rf_box_len) { eh_post(ERR_CODE, buf); continue; } break; } show_field(k); if (t == UP_CURSOR) {if (k > 0) k--;} else if (t == RETURN) break; else { k++; if (k >= NUM_PROMPTS) k = 0; } } sd_prompt(&fld1, 0); memset(buf, 0, 2); t = sd_input(&fld1, 0, 0, buf, 0); if (t == EXIT) leave(); *buf = tolower(*buf); if (*buf == 'y') { memcpy(rf, &x, sizeof(struct rf_item)); system("ss_dump -sp= -rf=sys/rf_text 1>/dev/null 2>/dev/null"); } leave(); }
open_all() { ss_open(); sd_open(leave); getparms(0); }