ING_DB
This commit is contained in:
parent
393b893ba0
commit
e9c0c12576
|
|
@ -0,0 +1,42 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
struct MM_form *MMalloc(frame, line, col, len, var)
|
||||||
|
register struct MM_form **frame;
|
||||||
|
int line;
|
||||||
|
int col;
|
||||||
|
int len;
|
||||||
|
char *var;
|
||||||
|
{
|
||||||
|
register struct MM_form *form;
|
||||||
|
register struct MM_form *f;
|
||||||
|
register int i;
|
||||||
|
extern char *calloc();
|
||||||
|
|
||||||
|
i = sizeof (struct MM_form);
|
||||||
|
if (!var)
|
||||||
|
i += len + 1;
|
||||||
|
if (!(f = (struct MM_form *) calloc(1, i)))
|
||||||
|
return ((struct MM_form *) 0);
|
||||||
|
|
||||||
|
if (form = *frame)
|
||||||
|
{
|
||||||
|
f->f_next = form;
|
||||||
|
f->f_prev = form->f_prev;
|
||||||
|
form->f_prev->f_next = f;
|
||||||
|
form->f_prev = f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*frame = f;
|
||||||
|
f->f_next = f;
|
||||||
|
f->f_prev = f;
|
||||||
|
f->f_mode = F_START;
|
||||||
|
}
|
||||||
|
|
||||||
|
f->f_line = line;
|
||||||
|
f->f_col = col;
|
||||||
|
f->f_len = len;
|
||||||
|
f->f_field = var? var: ((char *) f) + sizeof (struct MM_form);
|
||||||
|
|
||||||
|
return (f);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
static int _Error;
|
||||||
|
|
||||||
|
MMclr_error()
|
||||||
|
{
|
||||||
|
if (!_Error)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
MMclr_line(1, 1);
|
||||||
|
MM_repos();
|
||||||
|
_Error = 0;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MMerror(error_text)
|
||||||
|
register char *error_text;
|
||||||
|
{
|
||||||
|
MMclr_line(1, 1);
|
||||||
|
MM_ptis(error_text);
|
||||||
|
MM_repos();
|
||||||
|
_Error = 1;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
# include "../conf/gen.h"
|
||||||
|
|
||||||
|
struct MM_form
|
||||||
|
{
|
||||||
|
struct MM_form *f_next; /* next field */
|
||||||
|
struct MM_form *f_prev; /* previous field */
|
||||||
|
int (*f_func)(); /* field function */
|
||||||
|
int (*f_help)(); /* help function */
|
||||||
|
char *f_var; /* field variable */
|
||||||
|
char *f_format; /* format of variable */
|
||||||
|
short f_mode; /* field specifications */
|
||||||
|
short f_line; /* line no. of field */
|
||||||
|
short f_col; /* column no. of field */
|
||||||
|
short f_len; /* length of field */
|
||||||
|
char *f_field; /* fieldbuffer */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* field specifications */
|
||||||
|
# define F_START 020000 /* (first) start field */
|
||||||
|
# define F_OUTPUT 000001 /* output field */
|
||||||
|
# define F_MENUE 000002 /* menue field */
|
||||||
|
# define F_INPUT 000004 /* input field */
|
||||||
|
# define F_VALUE 000010 /* value field */
|
||||||
|
# define F_FIELD 000017 /* field type bits */
|
||||||
|
# define F_NEED 000020 /* needed input field */
|
||||||
|
# define F_SENDED 000040 /* input just given */
|
||||||
|
# define F_FILLED 000100 /* in/output filled in */
|
||||||
|
|
||||||
|
# define F_I1 000200 /* variable of type i1 */
|
||||||
|
# define F_I2 000400 /* variable of type i2 */
|
||||||
|
# define F_I4 001000 /* variable of type i4 */
|
||||||
|
# define F_F4 002000 /* variable of type f4 */
|
||||||
|
# define F_F8 004000 /* variable of type f8 */
|
||||||
|
# define F_C 010000 /* variable of type c */
|
||||||
|
# define F_TYPE (F_I1 | F_I2 | F_I4 | F_F4 | F_F8 | F_C)
|
||||||
|
|
||||||
|
|
||||||
|
/* screen sequences */
|
||||||
|
# define CS_CD 0 /* clear rest of screen */
|
||||||
|
# define CS_CE 1 /* clear rest of line */
|
||||||
|
# define CS_CM 2 /* move cursor */
|
||||||
|
# define CS_SO 3 /* invers on */
|
||||||
|
# define CS_SE 4 /* invers off */
|
||||||
|
|
||||||
|
|
||||||
|
/* function keys */
|
||||||
|
# define C_CONTINUE -11 /* next record(s) */
|
||||||
|
# define C_DELETE -12 /* delete one char */
|
||||||
|
# define C_FIELD -13 /* cursor field begin */
|
||||||
|
# define C_HELP -14 /* select help */
|
||||||
|
# define C_INSERT -15 /* insert one char */
|
||||||
|
# define C_LEFT -16 /* cursor left */
|
||||||
|
# define C_MENUE -17 /* select menue */
|
||||||
|
# define C_NEXT -18 /* next field */
|
||||||
|
# define C_PREV -19 /* previous field */
|
||||||
|
# define C_QUIT -20 /* quit frame */
|
||||||
|
# define C_RIGHT -21 /* cursor right */
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef SIGN_EXT
|
||||||
|
# define AAi1toi2(val) MM_i1toi2(val)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
extern struct MM_form *MM_need();
|
||||||
|
extern struct MM_form *MMalloc();
|
||||||
|
extern char *MM_cs[CS_SE + 1];
|
||||||
|
extern int MM_cs_cm;
|
||||||
|
extern int MMline;
|
||||||
|
extern int MMcol;
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMfree(frame)
|
||||||
|
register struct MM_form **frame;
|
||||||
|
{
|
||||||
|
register struct MM_form *form;
|
||||||
|
register struct MM_form *f;
|
||||||
|
|
||||||
|
if (form = *frame)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
f = form->f_next;
|
||||||
|
free(form);
|
||||||
|
} while ((form = f) != *frame);
|
||||||
|
|
||||||
|
*frame = (struct MM_form *) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,191 @@
|
||||||
|
# include <errno.h>
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
struct MM_tree
|
||||||
|
{
|
||||||
|
struct MM_tree *t_other;
|
||||||
|
struct MM_tree *t_next;
|
||||||
|
short t_char;
|
||||||
|
short t_code;
|
||||||
|
};
|
||||||
|
static struct MM_tree *_Tree;
|
||||||
|
|
||||||
|
# define PEEKS 10
|
||||||
|
static int _Peek_ch[PEEKS];
|
||||||
|
static int _Peek_ptr;
|
||||||
|
|
||||||
|
static int _translate(key_string)
|
||||||
|
char **key_string;
|
||||||
|
{
|
||||||
|
register char *k;
|
||||||
|
register int key_char;
|
||||||
|
register int c;
|
||||||
|
|
||||||
|
k = *key_string;
|
||||||
|
key_char = *k++;
|
||||||
|
if (key_char == '\\')
|
||||||
|
{
|
||||||
|
key_char = 0;
|
||||||
|
while ((c = *k++) >= '0' && c <= '7')
|
||||||
|
key_char = (key_char << 3) | (c &= 7);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
k++;
|
||||||
|
key_char &= 0377;
|
||||||
|
}
|
||||||
|
*key_string = k;
|
||||||
|
|
||||||
|
return ((key_char == '\t')? 0: key_char);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MM_incode(key_string, key_code)
|
||||||
|
char *key_string;
|
||||||
|
int key_code;
|
||||||
|
{
|
||||||
|
register struct MM_tree *tree;
|
||||||
|
register struct MM_tree *t;
|
||||||
|
register int key_char;
|
||||||
|
register struct MM_tree *prev;
|
||||||
|
extern char *calloc();
|
||||||
|
|
||||||
|
prev = t = (struct MM_tree *) 0;
|
||||||
|
tree = _Tree;
|
||||||
|
while (key_char = _translate(&key_string))
|
||||||
|
{
|
||||||
|
if (!tree)
|
||||||
|
{
|
||||||
|
new_node:
|
||||||
|
if (!(t = (struct MM_tree *) calloc(1, sizeof (struct MM_tree))))
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
t->t_char = key_char;
|
||||||
|
if (tree)
|
||||||
|
tree->t_other = t;
|
||||||
|
else if (prev)
|
||||||
|
prev->t_next = t;
|
||||||
|
else
|
||||||
|
_Tree = t;
|
||||||
|
prev = t;
|
||||||
|
tree = (struct MM_tree *) 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
other_node:
|
||||||
|
if (tree->t_char == key_char)
|
||||||
|
{
|
||||||
|
if (tree->t_code)
|
||||||
|
return (0);
|
||||||
|
tree = tree->t_next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (t = tree->t_other)
|
||||||
|
{
|
||||||
|
tree = t;
|
||||||
|
goto other_node;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
goto new_node;
|
||||||
|
}
|
||||||
|
if (!t || t->t_code)
|
||||||
|
return (0);
|
||||||
|
t->t_code = key_code;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MM_outcode(key_string, key_code)
|
||||||
|
char *key_string;
|
||||||
|
int key_code;
|
||||||
|
{
|
||||||
|
register int len;
|
||||||
|
register char *ka;
|
||||||
|
register char *ke;
|
||||||
|
extern char *malloc();
|
||||||
|
|
||||||
|
ka = ke = key_string;
|
||||||
|
len = 0;
|
||||||
|
while (*ke++ = _translate(&key_string))
|
||||||
|
len++;
|
||||||
|
MM_cs[key_code] = ke = malloc(len + 1);
|
||||||
|
MMsmove(ka, ke);
|
||||||
|
if (key_code == CS_CM)
|
||||||
|
MM_cs_cm = _translate(&key_string);
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MM_backup(character)
|
||||||
|
register int character;
|
||||||
|
{
|
||||||
|
_Peek_ch[_Peek_ptr++] = character;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int _getchar()
|
||||||
|
{
|
||||||
|
register int ret_ch;
|
||||||
|
char ch;
|
||||||
|
extern int errno;
|
||||||
|
|
||||||
|
if (_Peek_ptr)
|
||||||
|
ret_ch = _Peek_ch[--_Peek_ptr];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
interrupted_system_call:
|
||||||
|
errno = 0;
|
||||||
|
switch (read(0, &ch, 1))
|
||||||
|
{
|
||||||
|
case -1:
|
||||||
|
if (errno == EINTR)
|
||||||
|
goto interrupted_system_call;
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
ret_ch = C_QUIT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ret_ch = ch;
|
||||||
|
ret_ch &= 0377;
|
||||||
|
}
|
||||||
|
MMclr_error();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (ret_ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MM_getchar()
|
||||||
|
{
|
||||||
|
register int character;
|
||||||
|
register struct MM_tree *tree;
|
||||||
|
register int peekptr;
|
||||||
|
char peekch[PEEKS];
|
||||||
|
|
||||||
|
tree = _Tree;
|
||||||
|
peekptr = 0;
|
||||||
|
next_char:
|
||||||
|
peekch[peekptr++] = character = _getchar();
|
||||||
|
same_char:
|
||||||
|
if (tree->t_char == character)
|
||||||
|
{
|
||||||
|
if (tree->t_code)
|
||||||
|
return (tree->t_code);
|
||||||
|
tree = tree->t_next;
|
||||||
|
goto next_char;
|
||||||
|
}
|
||||||
|
if (tree->t_other)
|
||||||
|
{
|
||||||
|
tree = tree->t_other;
|
||||||
|
goto same_char;
|
||||||
|
}
|
||||||
|
while (--peekptr)
|
||||||
|
MM_backup(peekch[peekptr]);
|
||||||
|
|
||||||
|
return (peekch[0]);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MM_input(form)
|
||||||
|
register struct MM_form *form;
|
||||||
|
{
|
||||||
|
register char *p;
|
||||||
|
|
||||||
|
p = form->f_var;
|
||||||
|
switch (form->f_mode & F_TYPE)
|
||||||
|
{
|
||||||
|
case F_I2:
|
||||||
|
*((short *) p) = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case F_I4:
|
||||||
|
*((long *) p) = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
# ifndef NO_F4
|
||||||
|
case F_F4:
|
||||||
|
*((float *) p) = 0;
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
case F_F8:
|
||||||
|
*((double *) p) = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
*p = 0;
|
||||||
|
}
|
||||||
|
form->f_field[form->f_len] = 0;
|
||||||
|
if (form->f_format)
|
||||||
|
sscanf(form->f_field, form->f_format, p);
|
||||||
|
else
|
||||||
|
MMsmove(form->f_field, form->f_var);
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct MM_form *MM_need(frame)
|
||||||
|
register struct MM_form *frame;
|
||||||
|
{
|
||||||
|
register struct MM_form *form;
|
||||||
|
|
||||||
|
form = frame;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ((form->f_mode & F_NEED) && !(form->f_mode & F_FILLED))
|
||||||
|
{
|
||||||
|
MMerror(" BITTE Wert eingegeben ");
|
||||||
|
return (form);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while ((form = form->f_next) != frame);
|
||||||
|
|
||||||
|
return ((struct MM_form *) 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MMin_field(form, func, help, need)
|
||||||
|
register struct MM_form *form;
|
||||||
|
int (*func)();
|
||||||
|
int (*help)();
|
||||||
|
register int need;
|
||||||
|
{
|
||||||
|
register int len;
|
||||||
|
|
||||||
|
if (form->f_mode & F_FIELD)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
form->f_mode |= F_INPUT;
|
||||||
|
if (need)
|
||||||
|
form->f_mode |= F_NEED;
|
||||||
|
form->f_func = func;
|
||||||
|
form->f_help = help;
|
||||||
|
form->f_field[len = form->f_len] = 0;
|
||||||
|
while (len--)
|
||||||
|
form->f_field[len] = ' ';
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,190 @@
|
||||||
|
# include <sgtty.h>
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
# define cbreak() (_Tty.sg_flags |= CBREAK)
|
||||||
|
# define no_cbreak() (_Tty.sg_flags &= ~CBREAK)
|
||||||
|
|
||||||
|
# define echo() (_Tty.sg_flags |= ECHO)
|
||||||
|
# define no_echo() (_Tty.sg_flags &= ~ECHO)
|
||||||
|
|
||||||
|
# define nl() (_Tty.sg_flags |= CRMOD)
|
||||||
|
# define no_nl() (_Tty.sg_flags &= ~CRMOD)
|
||||||
|
|
||||||
|
# define raw() (_Tty.sg_flags |= RAW)
|
||||||
|
# define no_raw() (_Tty.sg_flags &= ~RAW)
|
||||||
|
|
||||||
|
# define tabs() (_Tty.sg_flags |= XTABS)
|
||||||
|
# define no_tabs() (_Tty.sg_flags &= ~XTABS)
|
||||||
|
|
||||||
|
# define reset_tty() (_Tty.sg_flags = _Tty_flags)
|
||||||
|
# define save_tty() (_Tty_flags = _Tty.sg_flags)
|
||||||
|
|
||||||
|
# define get_tty() (gtty(_Tty_fd, &_Tty))
|
||||||
|
# define set_tty() (stty(_Tty_fd, &_Tty))
|
||||||
|
|
||||||
|
static int _Tty_fd;
|
||||||
|
static int _Tty_flags;
|
||||||
|
static struct sgttyb _Tty;
|
||||||
|
|
||||||
|
|
||||||
|
MMinit_form(clear)
|
||||||
|
register int clear;
|
||||||
|
{
|
||||||
|
register int file;
|
||||||
|
register char *p;
|
||||||
|
register int code;
|
||||||
|
char buf[255];
|
||||||
|
extern char *getenv();
|
||||||
|
|
||||||
|
if (!(p = getenv("TERM")))
|
||||||
|
return (0);
|
||||||
|
MMsmove(p, &buf[MMsmove("/usr/lib/form/", buf)]);
|
||||||
|
if ((file = open(buf, 0)) < 0)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
for (_Tty_fd = 0; _Tty_fd < 20; _Tty_fd++)
|
||||||
|
if (isatty(_Tty_fd))
|
||||||
|
break;
|
||||||
|
if ((get_tty() < 0) || (set_tty() < 0))
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
save_tty();
|
||||||
|
|
||||||
|
no_cbreak();
|
||||||
|
no_echo();
|
||||||
|
no_nl();
|
||||||
|
raw();
|
||||||
|
no_tabs();
|
||||||
|
|
||||||
|
set_tty();
|
||||||
|
ioctl(0, TIOCFLUSH, 0);
|
||||||
|
ioctl(1, TIOCFLUSH, 1);
|
||||||
|
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
for (p = buf; ; p++)
|
||||||
|
{
|
||||||
|
if (read(file, p, 1) != 1)
|
||||||
|
{
|
||||||
|
close(file);
|
||||||
|
if (clear)
|
||||||
|
MMclr_screen(1, 1);
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (*p == '\n')
|
||||||
|
{
|
||||||
|
*p++ = 0;
|
||||||
|
*p = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p = buf;
|
||||||
|
switch (*p++)
|
||||||
|
{
|
||||||
|
case 'C':
|
||||||
|
code = C_CONTINUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'D':
|
||||||
|
code = C_DELETE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'F':
|
||||||
|
code = C_FIELD;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'H':
|
||||||
|
code = C_HELP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'I':
|
||||||
|
code = C_INSERT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'L':
|
||||||
|
code = C_LEFT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'M':
|
||||||
|
code = C_MENUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'N':
|
||||||
|
code = C_NEXT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'P':
|
||||||
|
code = C_PREV;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'Q':
|
||||||
|
code = C_QUIT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'R':
|
||||||
|
code = C_RIGHT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'c':
|
||||||
|
switch (*p++)
|
||||||
|
{
|
||||||
|
case 'd':
|
||||||
|
code = CS_CD;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'e':
|
||||||
|
code = CS_CE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'm':
|
||||||
|
code = CS_CM;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
switch (*p++)
|
||||||
|
{
|
||||||
|
case 'e':
|
||||||
|
code = CS_SE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'o':
|
||||||
|
code = CS_SO;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (*p++ != '\t')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (code < 0)
|
||||||
|
MM_incode(p, code);
|
||||||
|
else
|
||||||
|
MM_outcode(p, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MMexit_form(clear)
|
||||||
|
register int clear;
|
||||||
|
{
|
||||||
|
if (clear)
|
||||||
|
MMclr_screen(1, 1);
|
||||||
|
|
||||||
|
reset_tty();
|
||||||
|
set_tty();
|
||||||
|
ioctl(0, TIOCFLUSH, 0);
|
||||||
|
ioctl(1, TIOCFLUSH, 1);
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMmen_field(form, func, help, menue_text)
|
||||||
|
register struct MM_form *form;
|
||||||
|
int (*func)();
|
||||||
|
int (*help)();
|
||||||
|
register char *menue_text;
|
||||||
|
{
|
||||||
|
register int len;
|
||||||
|
|
||||||
|
if (form->f_mode & F_FIELD)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
form->f_mode |= F_MENUE;
|
||||||
|
form->f_func = func;
|
||||||
|
form->f_help = help;
|
||||||
|
MMpmove(menue_text, form->f_field, len = form->f_len, ' ');
|
||||||
|
form->f_field[len] = 0;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMnext()
|
||||||
|
{
|
||||||
|
register int character;
|
||||||
|
register int ret_val;
|
||||||
|
|
||||||
|
MMerror(" RECHERCHE FORTSETZEN ? ");
|
||||||
|
|
||||||
|
if (ret_val = ((character = MM_getchar()) != C_CONTINUE))
|
||||||
|
MM_backup(character);
|
||||||
|
else
|
||||||
|
MMerror(" RECHERCHE LAEUFT ");
|
||||||
|
|
||||||
|
return (ret_val);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MM_output(form)
|
||||||
|
register struct MM_form *form;
|
||||||
|
{
|
||||||
|
register char *p;
|
||||||
|
|
||||||
|
p = form->f_var;
|
||||||
|
switch (form->f_mode & F_TYPE)
|
||||||
|
{
|
||||||
|
case F_I1:
|
||||||
|
sprintf(form->f_field, form->f_format, ctoi(p));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case F_I2:
|
||||||
|
sprintf(form->f_field, form->f_format, *((short *) p));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case F_I4:
|
||||||
|
sprintf(form->f_field, form->f_format, *((long *) p));
|
||||||
|
break;
|
||||||
|
|
||||||
|
# ifndef NO_F4
|
||||||
|
case F_F4:
|
||||||
|
sprintf(form->f_field, form->f_format, *((float *) p));
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
case F_F8:
|
||||||
|
sprintf(form->f_field, form->f_format, *((double *) p));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (form->f_format)
|
||||||
|
sprintf(form->f_field, form->f_format, p);
|
||||||
|
else
|
||||||
|
MMpmove(p, form->f_field, form->f_len, ' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MMout_field(form, output_text)
|
||||||
|
register struct MM_form *form;
|
||||||
|
register char *output_text;
|
||||||
|
{
|
||||||
|
register int len;
|
||||||
|
|
||||||
|
if (form->f_mode & F_FIELD)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
form->f_mode |= F_OUTPUT;
|
||||||
|
MMpmove(output_text, form->f_field, len = form->f_len, ' ');
|
||||||
|
form->f_field[len] = 0;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
char *MM_cs[CS_SE + 1];
|
||||||
|
|
||||||
|
MM_ptis(string)
|
||||||
|
register char *string;
|
||||||
|
{
|
||||||
|
MM_pts(MM_cs[CS_SO]);
|
||||||
|
MM_pts(string);
|
||||||
|
MM_pts(MM_cs[CS_SE]);
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MM_pts(string)
|
||||||
|
register char *string;
|
||||||
|
{
|
||||||
|
register int time_out;
|
||||||
|
register int esc;
|
||||||
|
register int len;
|
||||||
|
|
||||||
|
esc = *string != 033;
|
||||||
|
len = 0;
|
||||||
|
while (*string)
|
||||||
|
{
|
||||||
|
write(1, string++, 1);
|
||||||
|
len++;
|
||||||
|
if (esc)
|
||||||
|
continue;
|
||||||
|
for (time_out = 1000; time_out; --time_out)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (len);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MM_pta(string, length)
|
||||||
|
register char *string;
|
||||||
|
register int length;
|
||||||
|
{
|
||||||
|
string[length] = 0;
|
||||||
|
for (length -= MM_pts(string); length > 0; --length)
|
||||||
|
write(1, " ", 1);
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MM_var(form, var, format, type)
|
||||||
|
register struct MM_form *form;
|
||||||
|
register char *var;
|
||||||
|
register char *format;
|
||||||
|
register int type;
|
||||||
|
{
|
||||||
|
if (!(form->f_mode & (F_INPUT | F_VALUE)) || (form->f_mode & F_TYPE))
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
form->f_mode |= type;
|
||||||
|
form->f_var = var;
|
||||||
|
form->f_format = format;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMvarf4(form, var, format)
|
||||||
|
register struct MM_form *form;
|
||||||
|
register char *var;
|
||||||
|
register char *format;
|
||||||
|
{
|
||||||
|
# ifdef NO_F4
|
||||||
|
return (MM_var(form, var, format, F_F8));
|
||||||
|
# else
|
||||||
|
return (MM_var(form, var, format, F_F4));
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMvarf8(form, var, format)
|
||||||
|
register struct MM_form *form;
|
||||||
|
register char *var;
|
||||||
|
register char *format;
|
||||||
|
{
|
||||||
|
return (MM_var(form, var, format, F_F8));
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMvari1(form, var, format)
|
||||||
|
register struct MM_form *form;
|
||||||
|
register char *var;
|
||||||
|
register char *format;
|
||||||
|
{
|
||||||
|
return (MM_var(form, var, format, F_I1));
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMvari2(form, var, format)
|
||||||
|
register struct MM_form *form;
|
||||||
|
register char *var;
|
||||||
|
register char *format;
|
||||||
|
{
|
||||||
|
return (MM_var(form, var, format, F_I2));
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# include "form.h"
|
||||||
|
|
||||||
|
MMvari4(form, var, format)
|
||||||
|
register struct MM_form *form;
|
||||||
|
register char *var;
|
||||||
|
register char *format;
|
||||||
|
{
|
||||||
|
return (MM_var(form, var, format, F_I4));
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue