+(defun read-field2 (socket type)
+ (let* ((length (read-socket-value 'int32 socket)))
+ (case type
+ (:int
+ (read-integer-from-socket socket length))
+ (:double
+ (read-double-from-socket socket length))
+ (t
+ (let ((result (make-string (- length 4))))
+ (read-socket-sequence result socket)
+ result)))))
+
+(defun read-integer-from-socket (socket length)
+ (let ((val 0)
+ (first-char (read-byte socket))
+ (negative nil))
+ (if (eql first-char (char-code #\-))
+ (setq negative t)
+ (setq val (- first-char (char-code #\0))))
+ (dotimes (i (1- length))
+ (setq val (+
+ (* 10 val)
+ (- (read-byte socket) (char-code #\0)))))
+ (if negative
+ (- 0 val)
+ val)))
+
+
+
+(defun read-cursor-row (cursor types)