Avoid calls to strlen in miscellaneous functions.
[bpt/emacs.git] / src / process.h
index 6bf1084..649056a 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for asynchronous process control in GNU Emacs.
-   Copyright (C) 1985, 1994, 2001-2011  Free Software Foundation, Inc.
+   Copyright (C) 1985, 1994, 2001-2012  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -29,13 +29,13 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* This structure records information about a subprocess
    or network connection.
 
-   Every field in this structure except for the first two
+   Every field in this structure except for the header
    must be a Lisp_Object, for GC's sake.  */
 
 struct Lisp_Process
   {
-    EMACS_UINT size;
-    struct Lisp_Vector *v_next;
+    struct vectorlike_header header;
+
     /* Name of subprocess terminal.  */
     Lisp_Object tty_name;
     /* Name of this process */
@@ -77,6 +77,8 @@ struct Lisp_Process
     Lisp_Object encode_coding_system;
     /* Working buffer for encoding.  */
     Lisp_Object encoding_buf;
+    /* Queue for storing waiting writes */
+    Lisp_Object write_queue;
 
 #ifdef HAVE_GNUTLS
     Lisp_Object gnutls_cred_type;
@@ -95,17 +97,17 @@ struct Lisp_Process
     /* Descriptor by which we write to this process */
     int outfd;
     /* Event-count of last event in which this process changed status.  */
-    int tick;
+    EMACS_INT tick;
     /* Event-count of last such event reported.  */
-    int update_tick;
+    EMACS_INT update_tick;
     /* Size of carryover in decoding.  */
     int decoding_carryover;
     /* Hysteresis to try to read process output in larger blocks.
        On some systems, e.g. GNU/Linux, Emacs is seen as
        an interactive app also when reading process output, meaning
        that process output can be read in as little as 1 byte at a
-       time.  Value is micro-seconds to delay reading output from
-       this process.  Range is 0 .. 50000.  */
+       time.  Value is nanoseconds to delay reading output from
+       this process.  Range is 0 .. 50 * 1000 * 1000.  */
     int read_output_delay;
     /* Should we delay reading output from this process.
        Initialized from `Vprocess_adaptive_read_buffering'.
@@ -134,6 +136,7 @@ struct Lisp_Process
     gnutls_certificate_client_credentials gnutls_x509_cred;
     gnutls_anon_client_credentials_t gnutls_anon_cred;
     int gnutls_log_level;
+    int gnutls_handshakes_tried;
     int gnutls_p;
 #endif
 };
@@ -141,13 +144,7 @@ struct Lisp_Process
 /* Every field in the preceding structure except for the first two
    must be a Lisp_Object, for GC's sake.  */
 
-#define ChannelMask(n) (1<<(n))
-
-/* Indexed by descriptor, gives the process (if any) for that descriptor.  */
-extern Lisp_Object chan_process[];
-
-/* Alist of elements (NAME . PROCESS).  */
-extern Lisp_Object Vprocess_alist;
+#define ChannelMask(n) (1 << (n))
 
 /* True if we are about to fork off a synchronous process or if we
    are waiting for it.  */
@@ -181,7 +178,7 @@ extern Lisp_Object Qminflt, Qmajflt, Qcminflt, Qcmajflt, Qutime, Qstime;
 extern Lisp_Object Qcutime, Qpri, Qnice, Qthcount, Qstart, Qvsize, Qrss, Qargs;
 extern Lisp_Object Quser, Qgroup, Qetime, Qpcpu, Qpmem, Qtpgid, Qcstime;
 extern Lisp_Object Qtime, Qctime;
-extern Lisp_Object QCport, QCspeed, QCprocess;
+extern Lisp_Object QCspeed;
 extern Lisp_Object QCbytesize, QCstopbits, QCparity, Qodd, Qeven;
 extern Lisp_Object QCflowcontrol, Qhw, Qsw, QCsummary;
 
@@ -198,4 +195,3 @@ extern void add_read_fd (int fd, fd_callback func, void *data);
 extern void delete_read_fd (int fd);
 extern void add_write_fd (int fd, fd_callback func, void *data);
 extern void delete_write_fd (int fd);
-