(setup_process_coding_systems): New function.
(Fset_process_buffer, Fset_process_filter): Call
setup_process_coding_systems.
(Fstart_process): Initialize the member `filter_multibyte' of
struct Lisp_Process.
(create_process): Call setup_process_coding_systems.
(Fmake_network_process): New keyward `:filter-multibyte'.
Initialize the member `filter_multibyte' of struct Lisp_Process.
Call setup_process_coding_systems.
(server_accept_connection): Call setup_process_coding_systems.
(read_process_output): If the process has a filter, decide the
multibyteness of a string to given to the filter by
`filter_multibyte' member of the process. If the process doesn't
have a filter and the result of conversion is unibyte, use
Fstring_to_multibyte (not Fstring_make_multibyte) to get the
multibyte form.
(Fset_process_coding_system): Call setup_process_coding_systems.
(Fset_process_filter_multibyte): New function.
(Fprocess_filter_multibyte_p): New function.
(syms_of_process): Intern and staticpro QCfilter_multibyte.
Defsubr Sset_process_filter_multibyte and
Sprocess_filter_multibyte_p.
(syms_of_process): Intern and staticpro it.
(Fprocess_variable, Fset_process_variable): New functions.
(syms_of_process): Defsubr them.
(Fstart_process): Initialize private_vars plist to nil.
(Fmake_network_process): New arg :vars to setup the private
variables for new network process.
(server_accept_connection): Copy server's private variables to
client process.
connection's local address in :local property of contact info.
(Fmake_network_process): Record local network address for new
client processes in :local property of contact info.
(syms_of_process): Defsubr it.
(list_processes_1): Use it to format :local/:remote address if
service/host is not set; before emacs would crash in that case.
(Fmake_network_process): Don't use Ffind_operation_coding_system
to setup coding system if host or service is not set.
(Fprocess_datagram_address, Fset_process_datagram_address)
(Fset_network_process_options, server_accept_connection):
Fix some int/Lisp_Object confusions (thank you union types).
(QCtype, Qdatagram): New variables.
(network_process_featurep): Removed function.
(Fmake_network_process): Removed :feature check.
Use :type 'datagram instead of :datagram t to create a datagram
socket. This allows us to add other connection types (e.g. raw
sockets) later in a consistent manner.
(init_process) [subprocess]: Provide list of supported subfeatures
for feature make-network-process.
(syms_of_process) [subprocess]: Remove QCfeature and QCdatagram.
Intern and staticpro QCtype and Qdatagram.
(syms_of_process) [!subprocess]: Intern and staticpro QCtype.