summaryrefslogtreecommitdiffstats
path: root/lib/libforms
diff options
context:
space:
mode:
authorpaul <paul@FreeBSD.org>1994-11-13 07:43:43 +0000
committerpaul <paul@FreeBSD.org>1994-11-13 07:43:43 +0000
commit5fde216ffb3514c71bf09f6a7bc5ed0e72227b5d (patch)
tree1e29869220e29026ddf3582d47291ef316482ef6 /lib/libforms
parentdf17864f4f97fba1ca5f8f270799857e1d780601 (diff)
downloadFreeBSD-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.c12
-rw-r--r--lib/libforms/forms.h5
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);
OpenPOWER on IntegriCloud