diff --git a/WEGA/contrib/ingres/dbs/src/form/edit.c b/WEGA/contrib/ingres/dbs/src/form/edit.c new file mode 100644 index 0000000..4c6184c --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/form/edit.c @@ -0,0 +1,122 @@ +# include "form.h" + +static int _del_ch(field, length) +register char *field; +register int length; +{ + register char *p; + + for (p = field; length; --length, p++) + *p = *(p + 1); + *p = ' '; + MM_pts(field); + MM_repos(); + + return (1); +} + + +static int _ins_ch(field, length) +register char *field; +register int length; +{ + register char *p; + + for (p = field + length; length; --length, --p) + *p = *(p - 1); + *field = ' '; + MM_pts(field); + MM_repos(); + + return (1); +} + + +MM_edit(form) +register struct MM_form *form; +{ + register int ch; + register char *t; + register int p; + register int l; + register int line; + register int col; + + t = form->f_field; + l = form->f_len - 1; + p = 0; + for ( ; ; ) + { + switch (ch = MM_getchar()) + { + case C_HELP: + case C_MENUE: + if (form->f_help) + { + line = MMline; + MMline = 1; + col = MMcol; + MMcol = 1; + MMclr_screen(1, 1); + (*form->f_help)(form); + MMclr_screen(2, 1); + MMframe(form, line, col); + } + continue; + + case C_NEXT: + case C_PREV: + if (form->f_mode & F_SENDED) + { + MM_input(form); + if (form->f_func && !(*form->f_func)(form)) + continue; + form->f_mode &= ~F_SENDED; + } + /* fall through */ + + case C_QUIT: + MM_backup(ch); + MMline = form->f_line; + MMcol = form->f_col; + return (1); + + case C_FIELD: + ch = -p; +rel_pos: + t += ch; + MM_rel_pos(ch); + p += ch; + continue; + + case C_LEFT: + ch = p? -1: l; + goto rel_pos; + + case C_RIGHT: +right_pos: + ch = (p == l)? -p: 1; + goto rel_pos; + + case C_DELETE: + form->f_mode |= F_SENDED | F_FILLED; + _del_ch(t, l - p); + continue; + + case C_INSERT: + form->f_mode |= F_SENDED | F_FILLED; + _ins_ch(t, l - p); + continue; + + default: + if (ch >= ' ' && ch < 0177) + { + form->f_mode |= F_SENDED | F_FILLED; + *t = ch; + write(1, t, 1); + goto right_pos; + } + MMerror(" UNGUELTIGES ZEICHEN "); + } + } +} diff --git a/WEGA/contrib/ingres/dbs/src/form/frame.c b/WEGA/contrib/ingres/dbs/src/form/frame.c new file mode 100644 index 0000000..0964f4a --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/form/frame.c @@ -0,0 +1,32 @@ +# include "form.h" + +MMframe(frame, line, col) +register struct MM_form *frame; +int line; +int col; +{ + register struct MM_form *form; + register int invers; + + MMclr_screen(2, 1); + form = frame; + do + { + if (form->f_len) + { + if (invers = form->f_mode & (F_INPUT | F_MENUE)) + { + MM_pos(form->f_line, form->f_col); + MM_pts(MM_cs[(form == frame)? CS_SO: CS_SE]); + } + MM_pos(form->f_line, form->f_col + 1); + MM_pta(form->f_field, form->f_len); + if (invers) + MM_pts(MM_cs[CS_SE]); + } + } + while ((form = form->f_next) != frame); + MM_abs_pos(line, col); + + return (1); +} diff --git a/WEGA/contrib/ingres/dbs/src/form/shell.c b/WEGA/contrib/ingres/dbs/src/form/shell.c new file mode 100644 index 0000000..6dd2a73 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/form/shell.c @@ -0,0 +1,62 @@ +# include "form.h" + +/* +** SHELL CALL BS SHELL +** return (0) = ok +** return (1) = error +*/ +MMshell(frame, shell, quit, command) +struct MM_form *frame; +int shell; +int quit; +register char *command; +{ + register int i; + register int pid; + register int line; + register int col; + int status; + + if (!command || !*command) + return (0); + + line = MMline; + MMline = 1; + col = MMcol; + MMcol = 1; + MMclr_line(1, 1); + MMclr_screen(2, 1); + + if ((pid = fork()) < 0) + { + return (1); + } + if (!pid) + { + setuid(getuid()); + setgid(getgid()); + for (i = 3; i < 20; i++) + close(i); + if (shell) + execlp("sh", "sh", "-c", command, (char *) 0); + else + execlp(command, command, (char *) 0); + exit(1); + } + + /* wait for shell to complete */ + while ((i = wait(&status)) != -1) + if (i == pid) + break; + + i = status >> 8; + if (!i && quit) + { + MMclr_line(1, 1); + MM_ptis(" ENDE "); + MM_getchar(); + MMclr_line(1, 1); + } + MMframe(frame, line, col); + return (i); +} diff --git a/WEGA/contrib/ingres/dbs/src/form/tags b/WEGA/contrib/ingres/dbs/src/form/tags new file mode 100644 index 0000000..fba2d68 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/form/tags @@ -0,0 +1,224 @@ +STATIC +------ +_del_ch: edit.c _del_ch(field, length) + char *field; + int length; + +_find: value.c struct MM_form *_find(frame, var, no) + struct MM_form *frame; + char *var; + int no; + +_getcha:r getchar.c _getchar() + +_ins_ch edit.c _ins_ch(field, length) + char *field; + int length; + +_transl:ate getchar.c _translate(key_string) + char **key_string; + +_value value.c _value(form) + struct MM_form *form; + +_Error: error.c int _Error; + +_Peek_c:h getchar.c int _Peek_ch[]; + +_Peek_p:tr getchar.c int _Peek_ptr; + +_Tree: getchar.c struct MM_tree *_Tree; + +_Tty main.c struct sgttyb _Tty; + +_Tty_fd main.c int _Tty_fd; + +_Tty_flags main.c int _Tty_flags; + + +INTERN +------ +MM_abs_:pos screen.c MM_abs_pos(line, col) + int line; + int col; + +MM_back:up getchar.c MM_backup(character) + int character; + +MM_cs: string.c char *MM_cs[]; + +MM_cs_c:m screen.c int MM_cs_cm; + +MM_edit: edit.c MM_edit(form) + struct MM_form *form; + +MM_getc:har getchar.c MM_getchar() + +MM_inco:de getchar.c MM_incode(key_string, key_code) + char *key_string; + int key_code; + +MM_inpu:t input.c MM_input(form) + struct MM_form *form; + +MM_need: input.c struct MM_form *MM_need(frame) + struct MM_form *frame; + +MM_outp:ut output.c MM_output(form) + struct MM_form *form; + +MM_pos: screen.c MM_pos(line, col) + int line; + int col; + +MM_pta: string.c MM_pta(string, length) + char *string; + int length; + +MM_ptis: string.c MM_ptis(string) + char *string; + +MM_pts: string.c MM_pts(string) + char *string; + +MM_rel_:pos screen.c MM_rel_pos(col) + int col; + +MM_repo:s screen.c MM_repos() + +MM_outc:ode getchar.c MM_outcode(key_stroutg, key_code) + char *key_string; + int key_code; + +MM_var: var.c MM_var(form, var, format, type) + struct MM_form *form; + char *var; + char *format; + int type; + +EXTERN +------ +MMalloc: alloc.c struct MM_form *MMalloc(frame, line, col, len, var) + struct MM_form **frame; + int line; + int col; + int len; + char *var; + +MMclr_e:rror error.c MMclr_error() + +MMclr_l:ine screen.c MMclr_line(line, col) + int line; + int col; + +MMclr_s:creen screen.c MMclr_screen(line, col) + int line; + int col; + +MMclr_v:alue value.c MMclr_value(frame) + struct MM_form *frame; + +MMcol: screen.c int MMcol; + +MMerror: error.c MMerror(error_text) + char *error_text; + +MMexit_:form main.c MMexit_form(clear) + int clear; + +MMform: form.c MMform(frame) + struct MM_form *frame; + +MMframe: frame.c MMframe(frame, line, col) + struct MM_form *frame; + int line; + int col; + +MMfree: free.c MMfree(frame) + struct MM_form **frame; + +MMinit_:form main.c MMinit_form(clear) + int clear; + +MMin_fi:eld input.c MMin_field(form, func, help, need) + struct MM_form *form; + int (*func)(); + int (*help)(); + int need; + +MMline: screen.c int MMline; + +MMmen_f:ield menue.c MMmen_field(form, func, help, menue_text) + struct MM_form *form; + int (*func)(); + int (*help)(); + char *menue_text; + +MMnext: next.c MMnext() + +MMout_f:ield output.c MMout_field(form, output_text) + struct MM_form *form; + char *output_text; + +MMpmove: screen.c char *MMpmove(src, dst, len, ch) + char *src; + char *dst; + int len; + int ch; + +MMsmove: screen.c MMsmove(src, dst) + char *src; + char *dst; + +MMset_f:ield value.c MMset_field(frame, var, no) + struct MM_form *frame; + char *var; + int no; + +MMset_v:alue value.c MMset_value(frame, var, no) + struct MM_form *frame; + char *var; + int no; + +MMshell: shell.c MMshell(form, shell, quit, command) + struct MM_form *form; + int shell; + int quit; + char *command; + +MMval_f:ield value.c MMval_field(form, func) + struct MM_form *form; + int (*func)(); + +MMvalue: value.c MMvalue(frame) + struct MM_form *frame; + +MMvarc: var_c.c MMvarc(form, var, format) + struct MM_form *form; + char *var; + char *format; + +MMvarf4: var_f4.c MMvarf4(form, var, format) + struct MM_form *form; + char *var; + char *format; + +MMvarf8: var_f8.c MMvarf8(form, var, format) + struct MM_form *form; + char *var; + char *format; + +MMvari1: var_i1.c MMvari1(form, var, format) + struct MM_form *form; + char *var; + char *format; + +MMvari2: var_i2.c MMvari2(form, var, format) + struct MM_form *form; + char *var; + char *format; + +MMvari4: var_i4.c MMvari4(form, var, format) + struct MM_form *form; + char *var; + char *format;