emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Emacs puts binary junk into the clipboard, marking it as text


From: Jan Djärv
Subject: Re: Emacs puts binary junk into the clipboard, marking it as text
Date: Thu, 19 Oct 2006 09:19:25 +0200
User-agent: Thunderbird 1.5.0.7 (X11/20060913)



Kenichi Handa wrote:

This will be useful for checking UTF-8 validity.

(define-ccl-program ccl-check-utf-8
  '(0
    ((r0 = 1)
     (loop
      (read-if (r1 < #x80) (repeat)
        ((r0 = 0)
         (if (r1 < #xC2) (end))
         (read r2)
         (if ((r2 & #xC0) != #x80) (end))
         (if (r1 < #xE0) ((r0 = 1) (repeat)))
         (read r2)
         (if ((r2 & #xC0) != #x80) (end))
         (if (r1 < #xF0) ((r0 = 1) (repeat)))
         (read r2)
         (if ((r2 & #xC0) != #x80) (end))
         (if (r1 < #xF8) ((r0 = 1) (repeat)))
         (read r2)
         (if ((r2 & #xC0) != #x80) (end))
         (if (r1 == #xF8) ((r0 = 1) (repeat)))
         (end))))))
  "Check if the input unibyte string is a valid UTF-8 sequence or not.
If it is valid, set the register `r0' to 1, else set it to 0.")

(defun string-utf-8-p (string)
  "Return non-nil iff STRING is a unibyte string of valid UTF-8 sequence."
  (if (or (not (stringp string))
          (multibyte-string-p string))
      (error "Not a unibyte string: %s" string))
  (let ((status (make-vector 9 0)))
    (ccl-execute-on-string ccl-check-utf-8 status string)
    (= (aref status 0) 1)))




Thanks. I used them to check for UTF-8. We now decline selection requests for UTF8_STRING if the data is not in UTF-8.

        Jan D.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]