From 8c5dc2d1617dafd1b40a5b713ad3791e2f17f49b Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters <miciah@myrealbox.com> Date: Sat, 1 Sep 2007 09:20:40 +0000 Subject: [PATCH] Factor init_textarea_data out of textarea_edit --- src/viewer/text/textarea.c | 40 ++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/viewer/text/textarea.c b/src/viewer/text/textarea.c index cc71525ef..57602a9ac 100644 --- a/src/viewer/text/textarea.c +++ b/src/viewer/text/textarea.c @@ -573,6 +573,32 @@ error: return filename; } +static struct textarea_data * +init_textarea_data(struct terminal *term, struct form_state *fs, + struct document_view *doc_view, struct link *link) +{ + struct textarea_data *td; + + assert(fs && doc_view && link && term); + + td = mem_calloc(1, sizeof(*td)); + if (!td) return NULL; + + td->fn = save_textarea_file(fs->value); + if (!td->fn) { + mem_free(td); + return NULL; + } + + td->fs = fs; + td->doc_view = doc_view; + td->link = link; + td->fc_maxlength = get_link_form_control(link)->maxlength; + td->term = term; + + return td; +} + void textarea_edit(int op, struct terminal *term_, struct form_state *fs_, struct document_view *doc_view_, struct link *link_) @@ -595,14 +621,9 @@ textarea_edit(int op, struct terminal *term_, struct form_state *fs_, assert(fs_ && doc_view_ && link_ && term_); - td = mem_calloc(1, sizeof(*td)); - if (!td) return; - - td->fn = save_textarea_file(fs_->value); - if (!td->fn) { - mem_free(td); + td = init_textarea_data(term_, fs_, doc_view_, link_); + if (!td) return; - } ed = get_opt_str("document.browse.forms.editor", doc_view_->session); @@ -617,11 +638,6 @@ textarea_edit(int op, struct terminal *term_, struct form_state *fs_, goto free_and_return; } - td->fs = fs_; - td->doc_view = doc_view_; - td->link = link_; - td->fc_maxlength = get_link_form_control(link_)->maxlength; - td->term = term_; td->term->textarea_data = td; exec_on_terminal(td->term, ex, "", TERM_EXEC_FG);