patch 7.4.1539
Problem:    Too much code in eval.c.
Solution:   Move job and channel code to channel.c.
diff --git a/src/proto/channel.pro b/src/proto/channel.pro
index bb7bab3..e6e5446 100644
--- a/src/proto/channel.pro
+++ b/src/proto/channel.pro
@@ -1,13 +1,14 @@
 /* channel.c */
-void ch_logfile(FILE *file);
+void ch_logfile(char_u *fname, char_u *opt);
 int ch_log_active(void);
 void ch_log(channel_T *ch, char *msg);
 void ch_logs(channel_T *ch, char *msg, char *name);
 channel_T *add_channel(void);
-int channel_may_free(channel_T *channel);
+int channel_unref(channel_T *channel);
 void channel_free(channel_T *channel);
 void channel_gui_register_all(void);
 channel_T *channel_open(char *hostname, int port_in, int waittime, void (*nb_close_cb)(void));
+channel_T *channel_open_func(typval_T *argvars);
 void channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err);
 void channel_set_job(channel_T *channel, job_T *job, jobopt_T *options);
 void channel_set_options(channel_T *channel, jobopt_T *opt);
@@ -27,9 +28,13 @@
 void channel_read(channel_T *channel, int part, char *func);
 char_u *channel_read_block(channel_T *channel, int part, int timeout);
 int channel_read_json_block(channel_T *channel, int part, int timeout, int id, typval_T **rettv);
+void common_channel_read(typval_T *argvars, typval_T *rettv, int raw);
 channel_T *channel_fd2channel(sock_T fd, int *partp);
 void channel_handle_events(void);
 int channel_send(channel_T *channel, int part, char_u *buf, char *fun);
+channel_T *send_common(typval_T *argvars, char_u *text, int id, int eval, jobopt_T *opt, char *fun, int *part_read);
+void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval);
+void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval);
 int channel_poll_setup(int nfd_in, void *fds_in);
 int channel_poll_check(int ret_in, void *fds_in);
 int channel_select_setup(int maxfd_in, void *rfds_in);
@@ -40,4 +45,14 @@
 int channel_part_read(channel_T *channel);
 ch_mode_T channel_get_mode(channel_T *channel, int part);
 int channel_get_timeout(channel_T *channel, int part);
+void clear_job_options(jobopt_T *opt);
+int get_job_options(typval_T *tv, jobopt_T *opt, int supported);
+channel_T *get_channel_arg(typval_T *tv, int check_open);
+void job_unref(job_T *job);
+void job_set_options(job_T *job, jobopt_T *opt);
+void job_stop_on_exit(void);
+void job_check_ended(void);
+job_T *job_start(typval_T *argvars);
+char *job_status(job_T *job);
+int job_stop(job_T *job, typval_T *argvars);
 /* vim: set ft=c : */