diff options
author | paul <paul@FreeBSD.org> | 1994-11-13 07:43:43 +0000 |
---|---|---|
committer | paul <paul@FreeBSD.org> | 1994-11-13 07:43:43 +0000 |
commit | 5fde216ffb3514c71bf09f6a7bc5ed0e72227b5d (patch) | |
tree | 1e29869220e29026ddf3582d47291ef316482ef6 /lib/libforms | |
parent | df17864f4f97fba1ca5f8f270799857e1d780601 (diff) | |
download | FreeBSD-src-5fde216ffb3514c71bf09f6a7bc5ed0e72227b5d.zip FreeBSD-src-5fde216ffb3514c71bf09f6a7bc5ed0e72227b5d.tar.gz |
Fix some bugs with forms that have only text fields.
Add an extern form to forms.h for apps to pick up.
Diffstat (limited to 'lib/libforms')
-rw-r--r-- | lib/libforms/forms.c | 12 | ||||
-rw-r--r-- | lib/libforms/forms.h | 5 |
2 files changed, 14 insertions, 3 deletions
diff --git a/lib/libforms/forms.c b/lib/libforms/forms.c index 5c29b10..05f7fbd 100644 --- a/lib/libforms/forms.c +++ b/lib/libforms/forms.c @@ -239,7 +239,7 @@ find_link(int id) return(0); } -void +int edit_form(struct form *form) { WINDOW *window; @@ -247,6 +247,10 @@ edit_form(struct form *form) int key; window = newwin(form->height, form->width, form->y, form->x); + if (!window) { + fprintf(stderr, "Failed to open window\n"); + return(-1); + } keypad(window, TRUE); refresh_form(window, form); @@ -254,8 +258,11 @@ edit_form(struct form *form) cur_field = form->fields; do { - /* Just skip over text fields */ + /* Skip over any preceeding text fields */ if (cur_field->type == FORM_FTYPE_TEXT) { + if (!cur_field->link) + /* No editable fields, reached end of text fields */ + return(0); cur_field = cur_field->link; continue; } @@ -297,6 +304,7 @@ edit_form(struct form *form) } else beep(); } while (key != keymap[FORM_EXIT]); + return (0); } void diff --git a/lib/libforms/forms.h b/lib/libforms/forms.h index 606bd1c..1fb9535 100644 --- a/lib/libforms/forms.h +++ b/lib/libforms/forms.h @@ -24,6 +24,7 @@ #define MAX_FIELD_SIZE 80 + struct form { int x; int y; @@ -32,6 +33,8 @@ struct form { struct field *fields; }; +extern struct form *form; + struct input_field { int y_prompt; int x_prompt; @@ -76,6 +79,6 @@ extern unsigned int keymap[FORM_NO_KEYS]; int init_forms(); int edit_line(WINDOW *window, struct field *); -void edit_form(struct form *); +int edit_form(struct form *); void refresh_form(WINDOW *, struct form *); struct field *find_link(int); |