Subject: 24.3.50; set-file-acl on MS Windows shall check ACL string format

From: Michael Albinus <[email-masked]>
Date: Wed, 19 Dec 2012 13:24:45 +0100

File ACLs have different formats on MS Windows and POSIX systems:

--8<---------------cut here---------------start------------->8---
(file-acl "~/.emacs")

"O:S-1-5-21-3955186872-1115707380-970145838-1000G:S-1-5-21-3955186872-1115707380-970145838-513D:(A;;FA;;;SY)(A;;FA;;;BA)(A;;FA;;;S-1-5-21-3955186872-1115707380-970145838-1000)"

(file-acl "/plink:albinus@ford:~/.emacs")

"user::rwx
group::rwx
other::r-x
"
--8<---------------cut here---------------end--------------->8---

If one copies a file with POSIX ACLs to MS Windows, `set-file-acl'
raises an error. This shall be suppressed:

--8<---------------cut here---------------start------------->8---
(copy-file "/plink:albinus@ford:~/.emacs" temporary-file-directory t t t t)

Debugger entered--Lisp error: (file-error "Converting ACL" "invalid argument" "c:/Users/Michael/AppData/Local/Temp/.emacs")
  set-file-acl("c:/Users/Michael/AppData/Local/Temp/.emacs" "user::rwx\ngroup::rwx\nother::r-x\n")
  set-file-extended-attributes("c:/Users/Michael/AppData/Local/Temp/.emacs" ((acl . "user::rwx\ngroup::rwx\nother::r-x\n") (selinux-context nil nil nil nil)))
  apply(set-file-extended-attributes ("c:/Users/Michael/AppData/Local/Temp/.emacs" ((acl . "user::rwx\ngroup::rwx\nother::r-x\n") (selinux-context nil nil nil nil))))
  (progn (apply (quote set-file-extended-attributes) (list newname attributes)))
  (if attributes (progn (apply (quote set-file-extended-attributes) (list newname attributes))))
  (let ((tramp-message-show-progress-reporter-message (and tramp-message-show-progress-reporter-message (not tm)))) (cond ((and t1 t2) (let* ((v1 (tramp-dissect-file-name filename)) (v1-method (tramp-file-name-method v1)) (v1-user (tramp-file-name-user v1)) (v1-host (tramp-file-name-host v1)) (v1-localname (tramp-file-name-localname v1)) (v1-hop (tramp-file-name-hop v1))) (let* ((v2 (tramp-dissect-file-name newname)) (v2-method (tramp-file-name-method v2)) (v2-user (tramp-file-name-user v2)) (v2-host (tramp-file-name-host v2)) (v2-localname (tramp-file-name-localname v2)) (v2-hop (tramp-file-name-hop v2))) (cond ((tramp-equal-remote filename newname) (tramp-do-copy-or-rename-file-directly op filename newname ok-if-already-exists keep-date preserve-uid-gid)) ((and ... ...) (tramp-do-copy-or-rename-file-out-of-band op filename newname keep-date)) (t (tramp-do-copy-or-rename-file-via-buffer op filename newname keep-date)))))) ((or t1 t2) (cond ((tramp-local-host-p v) (tramp-do-copy-or-rename-file-directly op filename newname ok-if-already-exists keep-date preserve-uid-gid)) ((tramp-method-out-of-band-p v length) (tramp-do-copy-or-rename-file-out-of-band op filename newname keep-date)) (t (tramp-do-copy-or-rename-file-via-buffer op filename newname keep-date)))) (t (error "Tramp implementation says this cannot happen"))) (if attributes (progn (apply (quote set-file-extended-attributes) (list newname attributes)))) (if (and t1 (eq op (quote rename))) (progn (let* ((v1 (tramp-dissect-file-name filename)) (v1-method (tramp-file-name-method v1)) (v1-user (tramp-file-name-user v1)) (v1-host (tramp-file-name-host v1)) (v1-localname (tramp-file-name-localname v1)) (v1-hop (tramp-file-name-hop v1))) (tramp-flush-file-property v1 (file-name-directory localname)) (tramp-flush-file-property v1 localname)))) (if t2 (progn (let* ((v2 (tramp-dissect-file-name newname)) (v2-method (tramp-file-name-method v2)) (v2-user (tramp-file-name-user v2)) (v2-host (tramp-file-name-host v2)) (v2-localname (tramp-file-name-localname v2)) (v2-hop (tramp-file-name-hop v2))) (tramp-flush-file-property v2 (file-name-directory localname)) (tramp-flush-file-property v2 localname)))))
  (unwind-protect (let ((tramp-message-show-progress-reporter-message (and tramp-message-show-progress-reporter-message (not tm)))) (cond ((and t1 t2) (let* ((v1 (tramp-dissect-file-name filename)) (v1-method (tramp-file-name-method v1)) (v1-user (tramp-file-name-user v1)) (v1-host (tramp-file-name-host v1)) (v1-localname (tramp-file-name-localname v1)) (v1-hop (tramp-file-name-hop v1))) (let* ((v2 ...) (v2-method ...) (v2-user ...) (v2-host ...) (v2-localname ...) (v2-hop ...)) (cond (... ...) (... ...) (t ...))))) ((or t1 t2) (cond ((tramp-local-host-p v) (tramp-do-copy-or-rename-file-directly op filename newname ok-if-already-exists keep-date preserve-uid-gid)) ((tramp-method-out-of-band-p v length) (tramp-do-copy-or-rename-file-out-of-band op filename newname keep-date)) (t (tramp-do-copy-or-rename-file-via-buffer op filename newname keep-date)))) (t (error "Tramp implementation says this cannot happen"))) (if attributes (progn (apply (quote set-file-extended-attributes) (list newname attributes)))) (if (and t1 (eq op (quote rename))) (progn (let* ((v1 (tramp-dissect-file-name filename)) (v1-method (tramp-file-name-method v1)) (v1-user (tramp-file-name-user v1)) (v1-host (tramp-file-name-host v1)) (v1-localname (tramp-file-name-localname v1)) (v1-hop (tramp-file-name-hop v1))) (tramp-flush-file-property v1 (file-name-directory localname)) (tramp-flush-file-property v1 localname)))) (if t2 (progn (let* ((v2 (tramp-dissect-file-name newname)) (v2-method (tramp-file-name-method v2)) (v2-user (tramp-file-name-user v2)) (v2-host (tramp-file-name-host v2)) (v2-localname (tramp-file-name-localname v2)) (v2-hop (tramp-file-name-hop v2))) (tramp-flush-file-property v2 (file-name-directory localname)) (tramp-flush-file-property v2 localname))))) (if tm (if (or (subrp (quote cancel-timer)) (functionp (quote cancel-timer))) (progn (with-no-warnings (funcall (quote cancel-timer) tm))))) (tramp-message v 0 "%s...done" (format "%s %s to %s" (if (eq op (quote copy)) "Copying" "Renaming") filename newname)))
  (let (pr tm) (tramp-message v 0 "%s..." (format "%s %s to %s" (if (eq op (quote copy)) "Copying" "Renaming") filename newname)) (if (and tramp-message-show-progress-reporter-message tramp-message-show-message (<= 0 (min tramp-verbose 3))) (progn (condition-case nil (progn (setq pr (if (or ... ...) (progn ...)) tm (if pr (progn ...)))) (error nil)))) (unwind-protect (let ((tramp-message-show-progress-reporter-message (and tramp-message-show-progress-reporter-message (not tm)))) (cond ((and t1 t2) (let* ((v1 ...) (v1-method ...) (v1-user ...) (v1-host ...) (v1-localname ...) (v1-hop ...)) (let* (... ... ... ... ... ...) (cond ... ... ...)))) ((or t1 t2) (cond ((tramp-local-host-p v) (tramp-do-copy-or-rename-file-directly op filename newname ok-if-already-exists keep-date preserve-uid-gid)) ((tramp-method-out-of-band-p v length) (tramp-do-copy-or-rename-file-out-of-band op filename newname keep-date)) (t (tramp-do-copy-or-rename-file-via-buffer op filename newname keep-date)))) (t (error "Tramp implementation says this cannot happen"))) (if attributes (progn (apply (quote set-file-extended-attributes) (list newname attributes)))) (if (and t1 (eq op (quote rename))) (progn (let* ((v1 ...) (v1-method ...) (v1-user ...) (v1-host ...) (v1-localname ...) (v1-hop ...)) (tramp-flush-file-property v1 (file-name-directory localname)) (tramp-flush-file-property v1 localname)))) (if t2 (progn (let* ((v2 ...) (v2-method ...) (v2-user ...) (v2-host ...) (v2-localname ...) (v2-hop ...)) (tramp-flush-file-property v2 (file-name-directory localname)) (tramp-flush-file-property v2 localname))))) (if tm (if (or (subrp (quote cancel-timer)) (functionp (quote cancel-timer))) (progn (with-no-warnings (funcall (quote cancel-timer) tm))))) (tramp-message v 0 "%s...done" (format "%s %s to %s" (if (eq op (quote copy)) "Copying" "Renaming") filename newname))))
  (let* ((v (tramp-dissect-file-name (if t1 filename newname))) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (host (tramp-file-name-host v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (if (and (not ok-if-already-exists) (file-exists-p newname)) (progn (tramp-error v (quote file-already-exists) "File %s already exists" newname))) (let (pr tm) (tramp-message v 0 "%s..." (format "%s %s to %s" (if (eq op (quote copy)) "Copying" "Renaming") filename newname)) (if (and tramp-message-show-progress-reporter-message tramp-message-show-message (<= 0 (min tramp-verbose 3))) (progn (condition-case nil (progn (setq pr (if ... ...) tm (if pr ...))) (error nil)))) (unwind-protect (let ((tramp-message-show-progress-reporter-message (and tramp-message-show-progress-reporter-message (not tm)))) (cond ((and t1 t2) (let* (... ... ... ... ... ...) (let* ... ...))) ((or t1 t2) (cond (... ...) (... ...) (t ...))) (t (error "Tramp implementation says this cannot happen"))) (if attributes (progn (apply (quote set-file-extended-attributes) (list newname attributes)))) (if (and t1 (eq op (quote rename))) (progn (let* (... ... ... ... ... ...) (tramp-flush-file-property v1 ...) (tramp-flush-file-property v1 localname)))) (if t2 (progn (let* (... ... ... ... ... ...) (tramp-flush-file-property v2 ...) (tramp-flush-file-property v2 localname))))) (if tm (if (or (subrp (quote cancel-timer)) (functionp (quote cancel-timer))) (progn (with-no-warnings (funcall ... tm))))) (tramp-message v 0 "%s...done" (format "%s %s to %s" (if (eq op (quote copy)) "Copying" "Renaming") filename newname)))))
  (let ((t1 (tramp-tramp-file-p filename)) (t2 (tramp-tramp-file-p newname)) (length (nth 7 (file-attributes (file-truename filename)))) (attributes (and preserve-extended-attributes (apply (quote file-extended-attributes) (list filename)))) pr tm) (let* ((v (tramp-dissect-file-name (if t1 filename newname))) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (host (tramp-file-name-host v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (if (and (not ok-if-already-exists) (file-exists-p newname)) (progn (tramp-error v (quote file-already-exists) "File %s already exists" newname))) (let (pr tm) (tramp-message v 0 "%s..." (format "%s %s to %s" (if (eq op (quote copy)) "Copying" "Renaming") filename newname)) (if (and tramp-message-show-progress-reporter-message tramp-message-show-message (<= 0 (min tramp-verbose 3))) (progn (condition-case nil (progn (setq pr ... tm ...)) (error nil)))) (unwind-protect (let ((tramp-message-show-progress-reporter-message (and tramp-message-show-progress-reporter-message ...))) (cond ((and t1 t2) (let* ... ...)) ((or t1 t2) (cond ... ... ...)) (t (error "Tramp implementation says this cannot happen"))) (if attributes (progn (apply ... ...))) (if (and t1 (eq op ...)) (progn (let* ... ... ...))) (if t2 (progn (let* ... ... ...)))) (if tm (if (or (subrp ...) (functionp ...)) (progn (with-no-warnings ...)))) (tramp-message v 0 "%s...done" (format "%s %s to %s" (if (eq op ...) "Copying" "Renaming") filename newname))))))
  tramp-do-copy-or-rename-file(copy "/plink:admin@ford:/share/albinus/.emacs" "c:/Users/Michael/AppData/Local/Temp/.emacs" t t t t)
  (cond ((or (tramp-tramp-file-p filename) (tramp-tramp-file-p newname)) (tramp-do-copy-or-rename-file (quote copy) filename newname ok-if-already-exists keep-date preserve-uid-gid preserve-extended-attributes)) (preserve-extended-attributes (tramp-run-real-handler (quote copy-file) (list filename newname ok-if-already-exists keep-date preserve-uid-gid preserve-extended-attributes))) (preserve-uid-gid (tramp-run-real-handler (quote copy-file) (list filename newname ok-if-already-exists keep-date preserve-uid-gid))) (t (tramp-run-real-handler (quote copy-file) (list filename newname ok-if-already-exists keep-date))))
  tramp-sh-handle-copy-file("/plink:admin@ford:/share/albinus/.emacs" "c:/Users/Michael/AppData/Local/Temp/.emacs" t t t t)
  apply(tramp-sh-handle-copy-file ("/plink:admin@ford:/share/albinus/.emacs" "c:/Users/Michael/AppData/Local/Temp/.emacs" t t t t))
  (if fn (apply (cdr fn) args) (tramp-run-real-handler operation args))
  (let ((fn (assoc operation tramp-sh-file-name-handler-alist))) (if fn (apply (cdr fn) args) (tramp-run-real-handler operation args)))
  (progn (let ((fn (assoc operation tramp-sh-file-name-handler-alist))) (if fn (apply (cdr fn) args) (tramp-run-real-handler operation args))))
  (unwind-protect (progn (let ((fn (assoc operation tramp-sh-file-name-handler-alist))) (if fn (apply (cdr fn) args) (tramp-run-real-handler operation args)))) (set-match-data save-match-data-internal (quote evaporate)))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((fn (assoc operation tramp-sh-file-name-handler-alist))) (if fn (apply (cdr fn) args) (tramp-run-real-handler operation args)))) (set-match-data save-match-data-internal (quote evaporate))))
  (let ((tramp-locker t)) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((fn (assoc operation tramp-sh-file-name-handler-alist))) (if fn (apply (cdr fn) args) (tramp-run-real-handler operation args)))) (set-match-data save-match-data-internal (quote evaporate)))))
  (progn (setq tramp-locked t) (let ((tramp-locker t)) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((fn ...)) (if fn (apply ... args) (tramp-run-real-handler operation args)))) (set-match-data save-match-data-internal (quote evaporate))))))
  (unwind-protect (progn (setq tramp-locked t) (let ((tramp-locker t)) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let (...) (if fn ... ...))) (set-match-data save-match-data-internal (quote evaporate)))))) (setq tramp-locked tl))
  (let ((tl tramp-locked)) (unwind-protect (progn (setq tramp-locked t) (let ((tramp-locker t)) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ... ...)) (set-match-data save-match-data-internal (quote evaporate)))))) (setq tramp-locked tl)))
  tramp-sh-file-name-handler(copy-file "/plink:admin@ford:/share/albinus/.emacs" "c:/Users/Michael/AppData/Local/Temp/.emacs" t t t t)
  apply(tramp-sh-file-name-handler copy-file ("/plink:admin@ford:/share/albinus/.emacs" "c:/Users/Michael/AppData/Local/Temp/.emacs" t t t t))
  (catch (quote suppress) (apply foreign operation args))
  (catch (quote non-essential) (catch (quote suppress) (apply foreign operation args)))
  (setq result (catch (quote non-essential) (catch (quote suppress) (apply foreign operation args))))
  (let ((sf (symbol-function foreign)) result) (if (and (listp sf) (eq (car sf) (quote autoload))) (progn (let ((default-directory (tramp-compat-temporary-file-directory))) (load (cadr sf) (quote noerror) (quote nomessage))))) (setq result (catch (quote non-essential) (catch (quote suppress) (apply foreign operation args)))) (cond ((eq result (quote non-essential)) (tramp-message v 5 "Non-essential received in operation %s" (append (list operation) args)) (tramp-run-real-handler operation args)) ((eq result (quote suppress)) (let (tramp-message-show-message) (tramp-message v 1 "Suppress received in operation %s" (append (list operation) args)) (tramp-cleanup v) (tramp-run-real-handler operation args))) (t result)))
  (lambda nil (let ((sf (symbol-function foreign)) result) (if (and (listp sf) (eq (car sf) (quote autoload))) (progn (let ((default-directory (tramp-compat-temporary-file-directory))) (load (cadr sf) (quote noerror) (quote nomessage))))) (setq result (catch (quote non-essential) (catch (quote suppress) (apply foreign operation args)))) (cond ((eq result (quote non-essential)) (tramp-message v 5 "Non-essential received in operation %s" (append (list operation) args)) (tramp-run-real-handler operation args)) ((eq result (quote suppress)) (let (tramp-message-show-message) (tramp-message v 1 "Suppress received in operation %s" (append (list operation) args)) (tramp-cleanup v) (tramp-run-real-handler operation args))) (t result))))()
  funcall((lambda nil (let ((sf (symbol-function foreign)) result) (if (and (listp sf) (eq (car sf) (quote autoload))) (progn (let ((default-directory (tramp-compat-temporary-file-directory))) (load (cadr sf) (quote noerror) (quote nomessage))))) (setq result (catch (quote non-essential) (catch (quote suppress) (apply foreign operation args)))) (cond ((eq result (quote non-essential)) (tramp-message v 5 "Non-essential received in operation %s" (append (list operation) args)) (tramp-run-real-handler operation args)) ((eq result (quote suppress)) (let (tramp-message-show-message) (tramp-message v 1 "Suppress received in operation %s" (append (list operation) args)) (tramp-cleanup v) (tramp-run-real-handler operation args))) (t result)))))
  (if debug-on-error (funcall body) (condition-case err (funcall body) ((debug quit) (let (tramp-message-show-message) (tramp-message v 1 "Interrupt received in operation %s" (append (list operation) args))) (signal (car err) (cdr err))) (error (cond ((and completion (zerop (length localname)) (memq operation (quote ...))) t) ((and completion (zerop (length localname)) (memq operation (quote ...))) filename) (t (signal (car err) (cdr err)))))))
  (let ((body (function (lambda nil (let ((sf ...) result) (if (and ... ...) (progn ...)) (setq result (catch ... ...)) (cond (... ... ...) (... ...) (t result))))))) (if debug-on-error (funcall body) (condition-case err (funcall body) ((debug quit) (let (tramp-message-show-message) (tramp-message v 1 "Interrupt received in operation %s" (append (list operation) args))) (signal (car err) (cdr err))) (error (cond ((and completion (zerop ...) (memq operation ...)) t) ((and completion (zerop ...) (memq operation ...)) filename) (t (signal (car err) (cdr err))))))))
  (if foreign (let ((body (function (lambda nil (let (... result) (if ... ...) (setq result ...) (cond ... ... ...)))))) (if debug-on-error (funcall body) (condition-case err (funcall body) ((debug quit) (let (tramp-message-show-message) (tramp-message v 1 "Interrupt received in operation %s" (append ... args))) (signal (car err) (cdr err))) (error (cond ((and completion ... ...) t) ((and completion ... ...) filename) (t (signal ... ...))))))) (tramp-run-real-handler operation args))
  (let* ((v (tramp-dissect-file-name filename)) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (host (tramp-file-name-host v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (if foreign (let ((body (function (lambda nil (let ... ... ... ...))))) (if debug-on-error (funcall body) (condition-case err (funcall body) ((debug quit) (let (tramp-message-show-message) (tramp-message v 1 "Interrupt received in operation %s" ...)) (signal (car err) (cdr err))) (error (cond (... t) (... filename) (t ...)))))) (tramp-run-real-handler operation args)))
  (let* ((filename (tramp-replace-environment-variables (apply (quote tramp-file-name-for-operation) operation args))) (completion (tramp-completion-mode-p)) (foreign (tramp-find-foreign-file-name-handler filename))) (let* ((v (tramp-dissect-file-name filename)) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (host (tramp-file-name-host v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (if foreign (let ((body (function (lambda nil ...)))) (if debug-on-error (funcall body) (condition-case err (funcall body) ((debug quit) (let ... ...) (signal ... ...)) (error (cond ... ... ...))))) (tramp-run-real-handler operation args))))
  (progn (let* ((filename (tramp-replace-environment-variables (apply (quote tramp-file-name-for-operation) operation args))) (completion (tramp-completion-mode-p)) (foreign (tramp-find-foreign-file-name-handler filename))) (let* ((v (tramp-dissect-file-name filename)) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (host (tramp-file-name-host v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (if foreign (let ((body (function ...))) (if debug-on-error (funcall body) (condition-case err (funcall body) (... ... ...) (error ...)))) (tramp-run-real-handler operation args)))))
  (unwind-protect (progn (let* ((filename (tramp-replace-environment-variables (apply (quote tramp-file-name-for-operation) operation args))) (completion (tramp-completion-mode-p)) (foreign (tramp-find-foreign-file-name-handler filename))) (let* ((v (tramp-dissect-file-name filename)) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (host (tramp-file-name-host v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (if foreign (let ((body ...)) (if debug-on-error (funcall body) (condition-case err ... ... ...))) (tramp-run-real-handler operation args))))) (set-match-data save-match-data-internal (quote evaporate)))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let* ((filename (tramp-replace-environment-variables (apply ... operation args))) (completion (tramp-completion-mode-p)) (foreign (tramp-find-foreign-file-name-handler filename))) (let* ((v (tramp-dissect-file-name filename)) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (host (tramp-file-name-host v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (if foreign (let (...) (if debug-on-error ... ...)) (tramp-run-real-handler operation args))))) (set-match-data save-match-data-internal (quote evaporate))))
  (if tramp-mode (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let* ((filename (tramp-replace-environment-variables ...)) (completion (tramp-completion-mode-p)) (foreign (tramp-find-foreign-file-name-handler filename))) (let* ((v ...) (method ...) (user ...) (host ...) (localname ...) (hop ...)) (if foreign (let ... ...) (tramp-run-real-handler operation args))))) (set-match-data save-match-data-internal (quote evaporate)))) (tramp-run-real-handler operation args))
  tramp-file-name-handler(copy-file "/plink:admin@ford:/share/albinus/.emacs" "c:/Users/Michael/AppData/Local/Temp/.emacs" t t t t)
  copy-file("/plink:admin@ford:/share/albinus/.emacs" "c:/Users/Michael/AppData/Local/Temp/" t t t t)
  eval((copy-file "/plink:admin@ford:/share/albinus/.emacs" temporary-file-directory t t t t) nil)
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp nil nil)
--8<---------------cut here---------------end--------------->8---

In GNU Emacs 24.3.50.1 (i386-mingw-nt6.1.7600)
 of 2012-12-18 on MS-W7-DANI
Bzr revision: 111265 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7600
Configured using:
 `configure --with-gcc (4.7) --no-opt --enable-checking --cflags
 -Ic:/emacs/libs/libXpm-3.5.10/include -Ic:/emacs/libs/libXpm-3.5.10/src
 -Ic:/emacs/libs/libpng-dev_1.4.3-1_win32/include
 -Ic:/emacs/libs/zlib-dev_1.2.5-2_win32/include
 -Ic:/emacs/libs/giflib-4.1.4-1-lib/include
 -Ic:/emacs/libs/jpeg-6b-4-lib/include
 -Ic:/emacs/libs/tiff-3.8.2-1-lib/include
 -Ic:/emacs/libs/libxml2-2.7.8-w32-bin/include/libxml2
 -Ic:/emacs/libs/gnutls-3.0.9-w32-bin/include
 -Ic:/emacs/libs/libiconv-1.9.2-1-lib/include'

Important settings:
  value of $LANG: DEU
  locale-coding-system: cp1252
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<escape> x r e p o <tab> r <tab> <delete> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Making completion list...
delete-forward-char: End of buffer

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils help-mode easymenu time-date tooltip ediff-hook
vc-hooks lisp-float-type mwheel dos-w32 ls-lisp w32-common-fns
disp-table w32-win w32-vars tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment lisp-mode register page menu-bar rfn-eshadow
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer button faces cus-face
macroexp files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
make-network-process w32notify w32 multi-tty emacs)