From unknown Fri Jun 20 07:27:50 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#26126 <26126@debbugs.gnu.org> To: bug#26126 <26126@debbugs.gnu.org> Subject: Status: 26.0.50; file-notify-rm-watch removes arbitrary watches Reply-To: bug#26126 <26126@debbugs.gnu.org> Date: Fri, 20 Jun 2025 14:27:50 +0000 retitle 26126 26.0.50; file-notify-rm-watch removes arbitrary watches reassign 26126 emacs submitter 26126 Andreas Politz severity 26126 normal tag 26126 fixed thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 16 10:15:13 2017 Received: (at submit) by debbugs.gnu.org; 16 Mar 2017 14:15:13 +0000 Received: from localhost ([127.0.0.1]:58993 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coWBM-0006nT-Qn for submit@debbugs.gnu.org; Thu, 16 Mar 2017 10:15:13 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34915) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coWBJ-0006nF-QE for submit@debbugs.gnu.org; Thu, 16 Mar 2017 10:15:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1coWBB-0006np-Pz for submit@debbugs.gnu.org; Thu, 16 Mar 2017 10:15:04 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:38982) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1coWBB-0006nf-Mq for submit@debbugs.gnu.org; Thu, 16 Mar 2017 10:15:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54079) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1coWB8-0001Sr-R5 for bug-gnu-emacs@gnu.org; Thu, 16 Mar 2017 10:15:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1coWB4-0006lw-PL for bug-gnu-emacs@gnu.org; Thu, 16 Mar 2017 10:14:58 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:38635) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1coWB4-0006lK-2B for bug-gnu-emacs@gnu.org; Thu, 16 Mar 2017 10:14:54 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 62A53179AC1C for ; Thu, 16 Mar 2017 15:14:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489673676; bh=4ofxuCnuVJv8rb6V1SeJwF5Hm1k=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=NHjFIWTP0mue8/poV6s7mYYOrLVFvQTE2ygYt0cq4eReIlH5YqM3AXlOUUJHAca4f dlrduZm33zkCx7C6whr2PG8bqCUGbtaDraiZBL8zo2z11XhQWkadrDjQDAuLhiyyYj lCKIFWLkXwYY1EzZ0X49hkwmOOKo5Ay4z2psWD6A= From: Andreas Politz To: bug-gnu-emacs@gnu.org Subject: 26.0.50; file-notify-rm-watch removes arbitrary watches Date: Thu, 16 Mar 2017 15:14:35 +0100 Message-ID: <87r31x9ulw.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --=-=-= Content-Type: text/plain The descriptor returned by file-notify-add-watch is of the form (ID . DIR) (at least when using inotify) and these descriptors are stored in a hash-table using equal as comparator. If multiple clients watch the same file and one of them removes its watch via file-notify-rm-watch, the result is unpredictable. I.e. the function removes some watch (I believe it is the last one added), but not necessarily the one associated with the client calling file-notify-rm-watch on the descriptor it got from calling file-notify-add-watch. I've attached a test case for this. Am I missing something here ? -ap --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=file-notify-bug-1.el Content-Transfer-Encoding: quoted-printable Content-Description: test case ;; -*- lexical-binding: t -*- (require 'filenotify) (require 'ert) (defmacro test-with-tempfiles (files &rest body) (declare (debug (sexp &rest form)) (indent 1)) (let ((tempdir (make-symbol "tempdir"))) `(let* ((,tempdir (make-temp-file "test" t)) ,@(mapcar (lambda (f) `(,f (let ((temporary-file-directory ,tempdir) (file-name-handler-alist nil)) (make-temp-file "test")))) files)) (unwind-protect (progn ,@body) (when (file-exists-p ,tempdir) (delete-directory ,tempdir t)))))) (ert-deftest file-notify-rm-out-of-order () "Add two watches, remove the first." (test-with-tempfiles (tempfile) (let* ((results nil) (desc1 (file-notify-add-watch tempfile '(change attribute-change) (lambda (ev) (when (eq (nth 1 ev) 'deleted) (push 1 results))))) (desc2 (file-notify-add-watch tempfile '(change attribute-change) (lambda (ev) (when (eq (nth 1 ev) 'deleted) (push 2 results)))))) (file-notify-rm-watch desc1) (delete-file tempfile) (while (null results) (sit-for 0.1)) (should (equal results (list 2)))))) --=-=-= Content-Type: text/plain In GNU Emacs 26.0.50 (build 1, x86_64-unknown-linux-gnu, GTK+ Version 3.22.9) of 2017-03-15 built on luca Repository revision: 2f972349bdc99d5d9ebf63169c00e24b119aa38d Windowing system distributor 'The X.Org Foundation', version 11.0.11902000 System Description: Arch Linux Recent messages: Delete all tests? (y or n) y file-notify-rm-out-of-order Ran 1 tests, 0 results were as expected Quit Undo! [2 times] Mark set C-c C-t is undefined Test result: FAILED () Quit Mark set [2 times] Configured using: 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-xwidgets 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong' LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro CPPFLAGS=-D_FORTIFY_SOURCE=2' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XWIDGETS LIBSYSTEMD Important settings: value of $LC_MESSAGES: en_US.UTF-8 value of $LANG: de_DE.UTF-8 locale-coding-system: utf-8-unix Major mode: Ert Minor modes in effect: TeX-PDF-mode: t diff-auto-refine-mode: t yas-minor-mode: t sow-scroll-other-window-mode: t synclient-fix-tapping-mode: t show-paren-mode: t check-parens-mode: t pdf-occur-global-minor-mode: t override-global-mode: t recentf-mode: t shell-dirtrack-mode: t save-place-mode: t ewm-desktop-mode: t ewm-mode: t ewm-bindings-mode: t ewm-compat-mode: t savehist-mode: t ekey-mode: t desktop-save-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-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 Load-path shadows: /home/politza/src/ewm/ewm-ruleset hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm-ruleset /home/politza/src/ewm/dev hides /home/politza/.emacs.d/elpa/ewm-1.0/dev /home/politza/src/ewm/ewm-layout hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm-layout /home/politza/src/ewm/ewm-frame hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm-frame /home/politza/src/ewm/ewm hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm /home/politza/src/ewm/ewm-buffer hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm-buffer /home/politza/src/ewm/ewm-configuration hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm-configuration /home/politza/src/ewm/ewm-util hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm-util /home/politza/src/ewm/ewm-compat hides /home/politza/.emacs.d/elpa/ewm-1.0/ewm-compat ~/fh_notebook/politza/.emacs.d/plugins/s hides /home/politza/.emacs.d/elpa/s-20160928.636/s ~/fh_notebook/politza/.emacs.d/plugins/term hides /usr/share/emacs/26.0.50/lisp/term ~/fh_notebook/politza/.emacs.d/plugins/imenu hides /usr/share/emacs/26.0.50/lisp/imenu ~/fh_notebook/politza/.emacs.d/plugins/saveplace hides /usr/share/emacs/26.0.50/lisp/saveplace /home/politza/.emacs.d/elpa/org-20170210/ox-md hides /usr/share/emacs/26.0.50/lisp/org/ox-md /home/politza/.emacs.d/elpa/org-20170210/org-rmail hides /usr/share/emacs/26.0.50/lisp/org/org-rmail /home/politza/.emacs.d/elpa/org-20170210/org-capture hides /usr/share/emacs/26.0.50/lisp/org/org-capture /home/politza/.emacs.d/elpa/org-20170210/ob-fortran hides /usr/share/emacs/26.0.50/lisp/org/ob-fortran /home/politza/.emacs.d/elpa/org-20170210/org-list hides /usr/share/emacs/26.0.50/lisp/org/org-list /home/politza/.emacs.d/elpa/org-20170210/org-table hides /usr/share/emacs/26.0.50/lisp/org/org-table /home/politza/.emacs.d/elpa/org-20170210/ob-screen hides /usr/share/emacs/26.0.50/lisp/org/ob-screen /home/politza/.emacs.d/elpa/org-20170210/org-pcomplete hides /usr/share/emacs/26.0.50/lisp/org/org-pcomplete /home/politza/.emacs.d/elpa/org-20170210/ob-ditaa hides /usr/share/emacs/26.0.50/lisp/org/ob-ditaa /home/politza/.emacs.d/elpa/org-20170210/ox-texinfo hides /usr/share/emacs/26.0.50/lisp/org/ox-texinfo /home/politza/.emacs.d/elpa/org-20170210/ob-plantuml hides /usr/share/emacs/26.0.50/lisp/org/ob-plantuml /home/politza/.emacs.d/elpa/org-20170210/org-w3m hides /usr/share/emacs/26.0.50/lisp/org/org-w3m /home/politza/.emacs.d/elpa/org-20170210/ob-ref hides /usr/share/emacs/26.0.50/lisp/org/ob-ref /home/politza/.emacs.d/elpa/org-20170210/ob-lilypond hides /usr/share/emacs/26.0.50/lisp/org/ob-lilypond /home/politza/.emacs.d/elpa/org-20170210/ox-odt hides /usr/share/emacs/26.0.50/lisp/org/ox-odt /home/politza/.emacs.d/elpa/org-20170210/ob-latex hides /usr/share/emacs/26.0.50/lisp/org/ob-latex /home/politza/.emacs.d/elpa/org-20170210/ox-ascii hides /usr/share/emacs/26.0.50/lisp/org/ox-ascii /home/politza/.emacs.d/elpa/org-20170210/ob-sqlite hides /usr/share/emacs/26.0.50/lisp/org/ob-sqlite /home/politza/.emacs.d/elpa/org-20170210/ob-lisp hides /usr/share/emacs/26.0.50/lisp/org/ob-lisp /home/politza/.emacs.d/elpa/org-20170210/org-archive hides /usr/share/emacs/26.0.50/lisp/org/org-archive /home/politza/.emacs.d/elpa/org-20170210/ox-latex hides /usr/share/emacs/26.0.50/lisp/org/ox-latex /home/politza/.emacs.d/elpa/org-20170210/org-macro hides /usr/share/emacs/26.0.50/lisp/org/org-macro /home/politza/.emacs.d/elpa/org-20170210/org-macs hides /usr/share/emacs/26.0.50/lisp/org/org-macs /home/politza/.emacs.d/elpa/org-20170210/ob-makefile hides /usr/share/emacs/26.0.50/lisp/org/ob-makefile /home/politza/.emacs.d/elpa/org-20170210/ob-core hides /usr/share/emacs/26.0.50/lisp/org/ob-core /home/politza/.emacs.d/elpa/org-20170210/ox hides /usr/share/emacs/26.0.50/lisp/org/ox /home/politza/.emacs.d/elpa/org-20170210/ob-awk hides /usr/share/emacs/26.0.50/lisp/org/ob-awk /home/politza/.emacs.d/elpa/org-20170210/ob-js hides /usr/share/emacs/26.0.50/lisp/org/ob-js /home/politza/.emacs.d/elpa/org-20170210/ob-table hides /usr/share/emacs/26.0.50/lisp/org/ob-table /home/politza/.emacs.d/elpa/org-20170210/ox-man hides /usr/share/emacs/26.0.50/lisp/org/ox-man /home/politza/.emacs.d/elpa/org-20170210/ob-dot hides /usr/share/emacs/26.0.50/lisp/org/ob-dot /home/politza/.emacs.d/elpa/org-20170210/org-attach hides /usr/share/emacs/26.0.50/lisp/org/org-attach /home/politza/.emacs.d/elpa/org-20170210/ox-publish hides /usr/share/emacs/26.0.50/lisp/org/ox-publish /home/politza/.emacs.d/elpa/org-20170210/org-clock hides /usr/share/emacs/26.0.50/lisp/org/org-clock /home/politza/.emacs.d/elpa/org-20170210/ob-matlab hides /usr/share/emacs/26.0.50/lisp/org/ob-matlab /home/politza/.emacs.d/elpa/org-20170210/org-habit hides /usr/share/emacs/26.0.50/lisp/org/org-habit /home/politza/.emacs.d/elpa/org-20170210/ob-picolisp hides /usr/share/emacs/26.0.50/lisp/org/ob-picolisp /home/politza/.emacs.d/elpa/org-20170210/org-faces hides /usr/share/emacs/26.0.50/lisp/org/org-faces /home/politza/.emacs.d/elpa/org-20170210/ob-css hides /usr/share/emacs/26.0.50/lisp/org/ob-css /home/politza/.emacs.d/elpa/org-20170210/org-irc hides /usr/share/emacs/26.0.50/lisp/org/org-irc /home/politza/.emacs.d/elpa/org-20170210/ob-C hides /usr/share/emacs/26.0.50/lisp/org/ob-C /home/politza/.emacs.d/elpa/org-20170210/ob-eval hides /usr/share/emacs/26.0.50/lisp/org/ob-eval /home/politza/.emacs.d/elpa/org-20170210/org-bbdb hides /usr/share/emacs/26.0.50/lisp/org/org-bbdb /home/politza/.emacs.d/elpa/org-20170210/org-ctags hides /usr/share/emacs/26.0.50/lisp/org/org-ctags /home/politza/.emacs.d/elpa/org-20170210/ob-sass hides /usr/share/emacs/26.0.50/lisp/org/ob-sass /home/politza/.emacs.d/elpa/org-20170210/ob-perl hides /usr/share/emacs/26.0.50/lisp/org/ob-perl /home/politza/.emacs.d/elpa/org-20170210/ox-org hides /usr/share/emacs/26.0.50/lisp/org/ox-org /home/politza/.emacs.d/elpa/org-20170210/org-docview hides /usr/share/emacs/26.0.50/lisp/org/org-docview /home/politza/.emacs.d/elpa/org-20170210/ob-maxima hides /usr/share/emacs/26.0.50/lisp/org/ob-maxima /home/politza/.emacs.d/elpa/org-20170210/org-datetree hides /usr/share/emacs/26.0.50/lisp/org/org-datetree /home/politza/.emacs.d/elpa/org-20170210/org-mobile hides /usr/share/emacs/26.0.50/lisp/org/org-mobile /home/politza/.emacs.d/elpa/org-20170210/ox-icalendar hides /usr/share/emacs/26.0.50/lisp/org/ox-icalendar /home/politza/.emacs.d/elpa/org-20170210/ob-octave hides /usr/share/emacs/26.0.50/lisp/org/ob-octave /home/politza/.emacs.d/elpa/org-20170210/org-footnote hides /usr/share/emacs/26.0.50/lisp/org/org-footnote /home/politza/.emacs.d/elpa/org-20170210/ob-scala hides /usr/share/emacs/26.0.50/lisp/org/ob-scala /home/politza/.emacs.d/elpa/org-20170210/ob hides /usr/share/emacs/26.0.50/lisp/org/ob /home/politza/.emacs.d/elpa/org-20170210/ob-ocaml hides /usr/share/emacs/26.0.50/lisp/org/ob-ocaml /home/politza/.emacs.d/elpa/org-20170210/org-eshell hides /usr/share/emacs/26.0.50/lisp/org/org-eshell /home/politza/.emacs.d/elpa/org-20170210/org-bibtex hides /usr/share/emacs/26.0.50/lisp/org/org-bibtex /home/politza/.emacs.d/elpa/org-20170210/ob-mscgen hides /usr/share/emacs/26.0.50/lisp/org/ob-mscgen /home/politza/.emacs.d/elpa/org-20170210/ob-haskell hides /usr/share/emacs/26.0.50/lisp/org/ob-haskell /home/politza/.emacs.d/elpa/org-20170210/org-timer hides /usr/share/emacs/26.0.50/lisp/org/org-timer /home/politza/.emacs.d/elpa/org-20170210/org-entities hides /usr/share/emacs/26.0.50/lisp/org/org-entities /home/politza/.emacs.d/elpa/org-20170210/ob-clojure hides /usr/share/emacs/26.0.50/lisp/org/ob-clojure /home/politza/.emacs.d/elpa/org-20170210/org-plot hides /usr/share/emacs/26.0.50/lisp/org/org-plot /home/politza/.emacs.d/elpa/org-20170210/ob-io hides /usr/share/emacs/26.0.50/lisp/org/ob-io /home/politza/.emacs.d/elpa/org-20170210/ob-java hides /usr/share/emacs/26.0.50/lisp/org/ob-java /home/politza/.emacs.d/elpa/org-20170210/ob-calc hides /usr/share/emacs/26.0.50/lisp/org/ob-calc /home/politza/.emacs.d/elpa/org-20170210/ob-emacs-lisp hides /usr/share/emacs/26.0.50/lisp/org/ob-emacs-lisp /home/politza/.emacs.d/elpa/org-20170210/org-indent hides /usr/share/emacs/26.0.50/lisp/org/org-indent /home/politza/.emacs.d/elpa/org-20170210/org-src hides /usr/share/emacs/26.0.50/lisp/org/org-src /home/politza/.emacs.d/elpa/org-20170210/org hides /usr/share/emacs/26.0.50/lisp/org/org /home/politza/.emacs.d/elpa/org-20170210/ob-lob hides /usr/share/emacs/26.0.50/lisp/org/ob-lob /home/politza/.emacs.d/elpa/org-20170210/ob-shen hides /usr/share/emacs/26.0.50/lisp/org/ob-shen /home/politza/.emacs.d/elpa/org-20170210/org-inlinetask hides /usr/share/emacs/26.0.50/lisp/org/org-inlinetask /home/politza/.emacs.d/elpa/org-20170210/ox-beamer hides /usr/share/emacs/26.0.50/lisp/org/ox-beamer /home/politza/.emacs.d/elpa/org-20170210/ob-asymptote hides /usr/share/emacs/26.0.50/lisp/org/ob-asymptote /home/politza/.emacs.d/elpa/org-20170210/org-colview hides /usr/share/emacs/26.0.50/lisp/org/org-colview /home/politza/.emacs.d/elpa/org-20170210/ob-sql hides /usr/share/emacs/26.0.50/lisp/org/ob-sql /home/politza/.emacs.d/elpa/org-20170210/org-mhe hides /usr/share/emacs/26.0.50/lisp/org/org-mhe /home/politza/.emacs.d/elpa/org-20170210/org-agenda hides /usr/share/emacs/26.0.50/lisp/org/org-agenda /home/politza/.emacs.d/elpa/org-20170210/ob-python hides /usr/share/emacs/26.0.50/lisp/org/ob-python /home/politza/.emacs.d/elpa/org-20170210/org-crypt hides /usr/share/emacs/26.0.50/lisp/org/org-crypt /home/politza/.emacs.d/elpa/org-20170210/ob-gnuplot hides /usr/share/emacs/26.0.50/lisp/org/ob-gnuplot /home/politza/.emacs.d/elpa/org-20170210/ob-org hides /usr/share/emacs/26.0.50/lisp/org/ob-org /home/politza/.emacs.d/elpa/org-20170210/org-id hides /usr/share/emacs/26.0.50/lisp/org/org-id /home/politza/.emacs.d/elpa/org-20170210/ob-ledger hides /usr/share/emacs/26.0.50/lisp/org/ob-ledger /home/politza/.emacs.d/elpa/org-20170210/org-protocol hides /usr/share/emacs/26.0.50/lisp/org/org-protocol /home/politza/.emacs.d/elpa/org-20170210/ox-html hides /usr/share/emacs/26.0.50/lisp/org/ox-html /home/politza/.emacs.d/elpa/org-20170210/ob-comint hides /usr/share/emacs/26.0.50/lisp/org/ob-comint /home/politza/.emacs.d/elpa/org-20170210/org-compat hides /usr/share/emacs/26.0.50/lisp/org/org-compat /home/politza/.emacs.d/elpa/org-20170210/ob-R hides /usr/share/emacs/26.0.50/lisp/org/ob-R /home/politza/.emacs.d/elpa/org-20170210/org-feed hides /usr/share/emacs/26.0.50/lisp/org/org-feed /home/politza/.emacs.d/elpa/org-20170210/org-mouse hides /usr/share/emacs/26.0.50/lisp/org/org-mouse /home/politza/.emacs.d/elpa/org-20170210/org-info hides /usr/share/emacs/26.0.50/lisp/org/org-info /home/politza/.emacs.d/elpa/org-20170210/ob-keys hides /usr/share/emacs/26.0.50/lisp/org/ob-keys /home/politza/.emacs.d/elpa/org-20170210/ob-ruby hides /usr/share/emacs/26.0.50/lisp/org/ob-ruby /home/politza/.emacs.d/elpa/org-20170210/org-install hides /usr/share/emacs/26.0.50/lisp/org/org-install /home/politza/.emacs.d/elpa/org-20170210/org-version hides /usr/share/emacs/26.0.50/lisp/org/org-version /home/politza/.emacs.d/elpa/org-20170210/ob-exp hides /usr/share/emacs/26.0.50/lisp/org/ob-exp /home/politza/.emacs.d/elpa/org-20170210/ob-scheme hides /usr/share/emacs/26.0.50/lisp/org/ob-scheme /home/politza/.emacs.d/elpa/org-20170210/org-loaddefs hides /usr/share/emacs/26.0.50/lisp/org/org-loaddefs /home/politza/.emacs.d/elpa/org-20170210/org-gnus hides /usr/share/emacs/26.0.50/lisp/org/org-gnus /home/politza/.emacs.d/elpa/org-20170210/ob-tangle hides /usr/share/emacs/26.0.50/lisp/org/ob-tangle /home/politza/.emacs.d/elpa/org-20170210/org-element hides /usr/share/emacs/26.0.50/lisp/org/org-element Features: (shadow sort gnus-cite mail-extr nnir nndraft nnmh utf-7 nnfolder nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-cloud gnus-spec emacsbug sendmail gxref apropos timezone eieio-opt speedbar sb-image ezimage dframe reposition cl-print edebug help-fns radix-tree xref project ert debug hippie-exp misearch multi-isearch browse-kill-ring bash colir color ivy delsel ivy-overlay ffap mm-archive conf-mode image-file org-rmail org-mhe org-irc org-info org-gnus org-docview doc-view org-bibtex bibtex org-bbdb org-w3m undo-tree diff vc-dir ewoc vc autorevert filenotify sh-script smie executable autoconf autoconf-mode vc-dispatcher vc-svn preview prv-emacs tex-buf font-latex latex tex-ispell tex-style tex dbus xml crm tex-mode dired-aux vc-git diff-mode map view haskell-snippets yasnippet network-stream starttls url-http url-gw nsm url-auth sow which-key url-cache url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap paren rtags popup repeat thingatpt cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs pdf-dev pdf-occur tablist tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch let-alist pdf-misc pdf-tools compile cus-edit cus-start cus-load pdf-view bookmark pp jka-compr pdf-cache pdf-info tq pdf-util ob-shell ob-plantuml org-www-bookmark org-protocol org-element avl-tree org org-macro org-footnote org-pcomplete org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs org-loaddefs disp-table image-mode lib-kbd gnus-nnimap-format nnimap nnmail gnus-int gnus-range mail-source message puny rfc822 mml mml-sec epa epg mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader tls gnutls utf7 netrc nnoo parse-time-rfc2822 info-look gnus-win iedit iedit-lib multiple-cursors-core rect bind-key graphviz-dot-mode recentf tree-widget tramp tramp-compat tramp-loaddefs trampver ucs-normalize shell pcomplete comint ring parse-time format-spec advice derived saveplace ewm edmacro kmacro ewm-configuration ewm-frame ewm-buffer ibuf-macs ibuf-ext ibuffer ibuffer-loaddefs ewm-ruleset ewm-layout find-func ewm-compat gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr wid-edit cal-menu calendar cal-loaddefs calc calc-loaddefs calc-macs ewm-util savehist server tsdh-dark-theme ekey dash dired-imenu imenu dired-x dired dired-loaddefs desktop frameset easy-mmode ansi-color finder-inf tex-site cl info package epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt subr-x gv bytecomp byte-compile cl-extra help-mode easymenu cconv cl-loaddefs pcase cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting xwidget-internal move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 1130920 1240746) (symbols 48 72148 48) (miscs 40 1245 8418) (strings 32 198145 372410) (string-bytes 1 7746812) (vectors 16 94275) (vector-slots 8 2251986 397758) (floats 8 590 1337) (intervals 56 63082 4479) (buffers 968 342)) --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 17 10:41:33 2017 Received: (at 26126) by debbugs.gnu.org; 17 Mar 2017 14:41:33 +0000 Received: from localhost ([127.0.0.1]:60969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cot4P-0000Jf-9R for submit@debbugs.gnu.org; Fri, 17 Mar 2017 10:41:33 -0400 Received: from mout.gmx.net ([212.227.17.22]:50676) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cot4N-0000JQ-AO for 26126@debbugs.gnu.org; Fri, 17 Mar 2017 10:41:32 -0400 Received: from detlef.gmx.de ([93.209.75.8]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MPUFR-1cszfF3OeP-004gve; Fri, 17 Mar 2017 15:41:20 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> Date: Fri, 17 Mar 2017 15:41:19 +0100 In-Reply-To: <87r31x9ulw.fsf@luca> (Andreas Politz's message of "Thu, 16 Mar 2017 15:14:35 +0100") Message-ID: <87shmcney8.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:vvjifoQbGOc6qf4SqKUfy/dxbi6vqyB6eFMomUL9PNzVHmeXb9f 6Zw5kikH8kwrBBfZNOxp+UtRPnOH81EsKIFlwsQPy+i74w4I80ZHMOubweIqjYaRyCng9kT XLVxhjtbFyQ6Fob+GkZoM7czYbZmAsLIfE4OmNywQ01qSnGcSRiayM0ink+jDiWBYkCQYTy Iqvv7yUfSpZkvsIMyBb2Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:13xjj3ungbM=:Gfxs9QFfnZhJNhsT9a/CFm EyRCB+qfJ+FaJvnJEfEjB+QGM6fMwXWf/HI9fWMT6MTT1maqHWkAdgYBJQpde/+XdZaObjVr3 BjgwjaTOboR2sIlwL5fvqweXFoY5xnw3dIy9H1hYJGiq82Nejy/4Rml0+IjynQiIAHQsjqErx IoX8mCsXvPn6WnPchBUUYsH3Yej9vpLhrOx1lqXTW82q/2/r6dcDEr1LNrKiNHQncQ9WzOGGF qYkLqq/dJQc8nAW+PIfG8uTjUwDuQb/iKv9dfZDeeba9MDMIT05Og4ZkU4Niza+ercqbTwm2n iq9E+Zg7foskPWI9NiZXP9p9VImhgI5CJ4mSfOY0ylkTxGC5bTk2X9V0XfPqE6+mFIZWsS/oR 574asvtYTWMvVk8n1uj0MUdya+z9jsOgXRk1LkZVyAqCiBF6zq8+XcYskHrqHeWBZ4DtPG4ML TnDvaTNSKZ8r98HiS9IldaGC4M7RadVAqORGLWSy3l+4uB69GQgFoZ1SW+1757ILcZGsO1qoJ 9SnsLz06BA/5YeW1M1o23DShKHQNKTveGoxbf1KurrbZnTKNzV8rZrGL9uRjNFCwaK5zaloXg S1XxFPqrJijhWWddl1opCDhxoG2kP5Y3+pZ5lfsKbw1w90HFZRLayksgT5BvMxTleXBk1Nr+r vYWsC2MlMi4BgKD5F2I8eRXZ1LcwDLyBDA0qCRGJLNZTBIllM4V/JEnyMn2Exs8/9kDApmT9R G+WNtu/Re9rCTpa1wfD0lOl3VBwy4sCpmablxbF+YGNc/w6wec/CSqiOOzdw2Dfm6G+CvfU5Y EjgpMBd X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: Hi Andreas, Thanks for the bug report. > The descriptor returned by file-notify-add-watch is of the form (ID . DIR) > (at least when using inotify) and these descriptors are stored in a > hash-table using equal as comparator. Yes. > If multiple clients watch the same file and one of them removes its watch > via file-notify-rm-watch, the result is unpredictable. I.e. the function > removes some watch (I believe it is the last one added), but not necessarily > the one associated with the client calling file-notify-rm-watch on the > descriptor it got from calling file-notify-add-watch. With the returned descriptors, it cannot be decided which watch has to be removed, because both descriptors are equal. So we could decide either to remove all watches for a given file if such a descriptor is passed to `file-notify-rm-watch', or we must adapt `file-notify-add-watch' to return different descriptors. I'm undecided yet. Note, that this problem seems to be specific to inotify. Other libraries do not suffer from this problem, I believe. > I've attached a test case for this. Thanks. I've added this, modified, to `file-notify-test02-rm-watch' for my internal tests. Will be pushed to master once I have a solution for the problem. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 17 10:59:41 2017 Received: (at 26126) by debbugs.gnu.org; 17 Mar 2017 14:59:41 +0000 Received: from localhost ([127.0.0.1]:60977 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cotLw-0000mR-Qh for submit@debbugs.gnu.org; Fri, 17 Mar 2017 10:59:40 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:52211) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cotLu-0000m8-HL for 26126@debbugs.gnu.org; Fri, 17 Mar 2017 10:59:39 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id D134C179B38A; Fri, 17 Mar 2017 15:59:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489762759; bh=tezOE63KtvB+bODe0ruhnBPXuwc=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=i+eu/bhzmeRMWPlj+dnMz9sqZSLVkvCH7KvynXrQItoDqo9zs7VIxhZZ4oEhXL1Rc MKkPTytW+UnJFtxs5qs9XAHAyOTZsE6zA4HGt2LdlV9gQmsGNcdssniKn6IK7SCl4p F0zWap2QRXrU7oSwcl5eLlmKGuHaP3JoKy1TEuK8= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> Date: Fri, 17 Mar 2017 15:59:19 +0100 In-Reply-To: <87shmcney8.fsf@detlef> (Michael Albinus's message of "Fri, 17 Mar 2017 15:41:19 +0100") Message-ID: <87efxw7xvc.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > With the returned descriptors, it cannot be decided which watch has to > be removed, because both descriptors are equal. So we could decide > either to remove all watches for a given file if such a descriptor is > passed to `file-notify-rm-watch', or we must adapt > `file-notify-add-watch' to return different descriptors. I'm undecided > yet. Surely, we want the ability of two or more different packages being able to watch the same file, without interfering with each other. Why are you undecided ? I could try and find a solution, if you don't have time or anything. -ap From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 17 12:08:21 2017 Received: (at 26126) by debbugs.gnu.org; 17 Mar 2017 16:08:21 +0000 Received: from localhost ([127.0.0.1]:32814 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1couQO-0002eu-Tm for submit@debbugs.gnu.org; Fri, 17 Mar 2017 12:08:21 -0400 Received: from mout.gmx.net ([212.227.17.21]:62971) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1couQN-0002eg-91 for 26126@debbugs.gnu.org; Fri, 17 Mar 2017 12:08:19 -0400 Received: from detlef.gmx.de ([93.209.75.8]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LuJDv-1c6sk03GiN-011meL; Fri, 17 Mar 2017 17:08:11 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> Date: Fri, 17 Mar 2017 17:08:10 +0100 In-Reply-To: <87efxw7xvc.fsf@luca> (Andreas Politz's message of "Fri, 17 Mar 2017 15:59:19 +0100") Message-ID: <87mvcjophx.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:Nu9e19Xnqh4DpdPHxGgjsXLjxAsW6zlIWbkEP25XeACtxm/UrLP xR0Gw/EjIvgw7jQze3MPdUMiIquHjHCnTIrALAL5kpMoTs/iyLZB9TCh9rys2j9wniUInaA l7L2sJZF6mAUIDSs+vC3L2SVrJU1X1z4ZTYxxipC7lKJH+F/fdTHlk/SCHeCZOWQ+tF3I4e 2jpD7jZujxTvlJThY724g== X-UI-Out-Filterresults: notjunk:1;V01:K0:hpDwCde6o5A=:7cLWxd2VmZjaS3l3w/DYOB ywFV9dq6/yBvpIe04fAvLYRNnlaKE17OP+U6lwtnk+mo4ua/PLlO85uMbf52JRJpja7L/TDUx TIKvp9WjPj5bQ/pWOXB1rDlwKSNUL3uZcWsIulCRCXxLTVL3XErCKRpsEYRjOQz7aj/Eo/LhI /DWHKxkYFKZ0h3RL/3xlzL2vQg9EYvPf8dDGQKGv0gF1/kuGIh6KZDbOQgUkb9pFTR0opB7An aYLuaX6N493txaUDAe9Fo8XEKFmD/SBbmDqL3OrwxGkKlMZZS8Ly4PgI9wvVQ9lPc99WejI1Z 1wSm1VEq2XfPaZVPiDxvPq41toAy9U/RvoF6yjKgF+Civv3sx9/h2t4L2ccUnfnQsOTECKPBc NifypVWxibVjdJcS9Lycgv0UDJlq5yoAGYxFFOqM0iUwX+ncDoxdYhACIrmYLr9ek766RCsPl d8jNjJO59UfFhmV5rpz0/ZYbOKXTlb3y//e1SFdGWaW1KRMKQIRsRpbgcTD6jks9WjJw0ZeWZ L/+HHIYgVnBwlmCOEfkVyhTHEdLNaSzc8fXEw3Lj+33LFoEk5xI/+keq6yUDbQ3NIqYqssBnE S8CSUOCF+IkaantYQyN/f8PJ3Lls2Cb/y7JefwIwAswHVFFMHEmA3q0mS9AKhdE4pKcbsqtUO yJpiuYYiSdr5SEUck14yUZxBCQBOdrN7cZyvEi8Pt3hwZ1x90rmNGnPZoO1wNl3StbCjjwk4P QsWMf8E0tkQWTIU6mBOlRhyCOfQ6jn0EPFJBgTPbUw0VamndJxnAmqvcPfjEqv4duFqfBxLL6 uP81L5x X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) Andreas Politz writes: Hi Andreas, > Michael Albinus writes: > >> With the returned descriptors, it cannot be decided which watch has to >> be removed, because both descriptors are equal. So we could decide >> either to remove all watches for a given file if such a descriptor is >> passed to `file-notify-rm-watch', or we must adapt >> `file-notify-add-watch' to return different descriptors. I'm undecided >> yet. > > Surely, we want the ability of two or more different packages being able > to watch the same file, without interfering with each other. Why are > you undecided ? I need to dig into inotify.c. IIRC, it wasn't simple to achieve this; that's why we have this crude solution. Maybe it could be solved only on filenotify.el level, don't remember the details. > I could try and find a solution, if you don't have time or anything. I don't have time, indeed. If you want to work on this, I would appreciate. You could always ping me if you have questions. Pls don't forget, whatever you propose must work for at least 6 different backends: inotify, kqueue, gfilenotify, w32notify and the remote gvfs-monitor-dir and inotifywait. Heavy tests, always. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 17 13:46:11 2017 Received: (at 26126) by debbugs.gnu.org; 17 Mar 2017 17:46:11 +0000 Received: from localhost ([127.0.0.1]:32844 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1covx5-00058o-D0 for submit@debbugs.gnu.org; Fri, 17 Mar 2017 13:46:11 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:58973) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1covx3-00058W-JK for 26126@debbugs.gnu.org; Fri, 17 Mar 2017 13:46:10 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id A2782179AA60; Fri, 17 Mar 2017 18:45:49 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489772749; bh=HXgZGZnvIy0p4bUvCtRMfiMVLbs=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=Ova3IEK+ZQEPLXOZWV3BmVAi7AOyoLx3xMtwARz4DWv56ZsQBY1Pd/JDzbjjGX0eK FEUj8/cr4FXorQQ1MKn1KCpXGFBxxjqbK2k+fu4X74GNXH9hDbGH6SJrOAkah4CH2W M4XDnwahL/fnfOtXxVVhz0PaOJ3W6sVuKsgPJFn4= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> Date: Fri, 17 Mar 2017 18:45:49 +0100 In-Reply-To: <87mvcjophx.fsf@detlef> (Michael Albinus's message of "Fri, 17 Mar 2017 17:08:10 +0100") Message-ID: <87tw6rssoi.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > I need to dig into inotify.c. IIRC, it wasn't simple to achieve this; > that's why we have this crude solution. Maybe it could be solved only on > filenotify.el level, don't remember the details. What I would do, is box the internal descriptor in file-notify-add-watch, to make it unique to the caller and unbox it in file-notify-rm-watch and file-notify-valid-p. A different question is, whether file-notify-add-watch should behave like add-hook with regards to adding a function multiple times. I don't think it does at the moment, so I probably leave it as such (?). -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 18 04:30:53 2017 Received: (at 26126) by debbugs.gnu.org; 18 Mar 2017 08:30:53 +0000 Received: from localhost ([127.0.0.1]:33221 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cp9lE-0001xj-Qe for submit@debbugs.gnu.org; Sat, 18 Mar 2017 04:30:52 -0400 Received: from mout.gmx.net ([212.227.17.22]:53849) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cp9lC-0001xU-Jo for 26126@debbugs.gnu.org; Sat, 18 Mar 2017 04:30:51 -0400 Received: from detlef.gmx.de ([87.146.40.245]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LqW8j-1cKTpq43VZ-00e0e4; Sat, 18 Mar 2017 09:30:44 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> Date: Sat, 18 Mar 2017 09:30:42 +0100 In-Reply-To: <87tw6rssoi.fsf@luca> (Andreas Politz's message of "Fri, 17 Mar 2017 18:45:49 +0100") Message-ID: <87pohfkmvh.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:XzDVh0tgkG96THZ+70Z2H9Lpa3EUrmsQxK5gs8JfKifwSyloWrq 3hT5fo/SiP3/6Uv3WH78PVo+0r86r5fYEBqzPRPe/Gy2uaNzm4MOhSWuMkB0Nx8gd10WoB5 FIVB+k+PNHtQtcM+zISjeKH3RWl6uvAGuCuZ4nycqF4gibKxC6wecJ8l3oe7Mgz1JtQS9DB gkwfGIzx0EOkPdS0v7QFQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:0P9eg2VpL5o=:fTF+eKkBc8PlEEsruyOFyI mtFXviDAzENe3Q0pYKuUg3TmJFqfyA+qOGuVJ6NdB6UvMrLA2TZQl5ngYbuuUZtIyGwalZbEr AhNH4VtcARuP++bHdC7768k2kEW6ZTYJAD7z+yIpm2hugyxdJY/6LXhcpCoK3oGQXBIi08cQX XTNZjkohKafoJJML4R8nNXrInKclhM2TqL+Eq/hW8NFpKtBA8D0UFcTJBIRnZwTN4zfUqXcwH XoNTQIMJUyJO0o4J63QvJ3lF1WlqpRb2gbUM4/TFzkE5VNMvbemolBbkSrjRxGzSMynkEhqei NL2Ubwzv8XdgWuFRCBJDQ9sY/c6TnG7ZqkBRZfpO5/NopIPrvcQynE0jUHFtDuJMaSHRu/dfR 4ErncQpJHF8GMrD8EvU5uD+dKbVhRLNxPtlDsQSxtTOhDBmHNZHs3UFG6LQG3TRWFesOmIRW/ RJIROSmpiQD2q8Ct9G0T+0Uxxc+aOVSMOTWCIt+dSuAilhb5zJJ1KLhiUZoqNg++UfBpZYI3j cQ1Iki8xM3vkyrkgzI6bnjB2zMZUQgJsaMgOQqshJMkACN4JFeSVlcCTHReUCVlbJX6vS8hvb Xze+O/Q0aTXzCIcSeAlPiIYQsNORbBUZNEdziWC2STroIwO7iej0VKZrx85igHVXLZgUzXORi Qxb55E1pKyuynwKfZRHNNHyOZT/naIHjVdSjPBNNWlKg2ax6qeDvWWlaxZv4j1UEKoE4q5xYj fDiT983vlHzTEkcmEd7cpbKpwLEYHY+RJRSn4xkv+BjqVu9RxmOjpemYA/FVrkGtTNt8iHWOZ xqOrX1V X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: > What I would do, is box the internal descriptor in file-notify-add-watch, > to make it unique to the caller and unbox it in file-notify-rm-watch and > file-notify-valid-p. Sounds OK to me. Do you want to do this only for inotify, or also for the other backends? > A different question is, whether file-notify-add-watch should behave > like add-hook with regards to adding a function multiple times. I don't > think it does at the moment, so I probably leave it as such (?). I believe adding the *same* function twice for the same file/directory doesn't make sense. Maybe we should document this in the Elisp manual, and test it also in `file-notify-test01-add-watch'. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 18 09:32:30 2017 Received: (at 26126) by debbugs.gnu.org; 18 Mar 2017 13:32:30 +0000 Received: from localhost ([127.0.0.1]:33353 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpET7-0004gb-Va for submit@debbugs.gnu.org; Sat, 18 Mar 2017 09:32:30 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:58917) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpET6-0004gO-Iq for 26126@debbugs.gnu.org; Sat, 18 Mar 2017 09:32:29 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (unknown [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id C7809179B3AD; Sat, 18 Mar 2017 14:32:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489843928; bh=h50xmUXB5pZpPhlPD0d2UMXzT9g=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=OMn7r3hZw3OGHE8Od9Z2/ZdF7+amj6eR6cgUIxb7hq98ZMAzeX5FJzCyyy52yn31I MJAz88jwsQqfxiVVx5XwGfknBiNT/N3vN6Of8GeYgvjU8q6u1XJ6IRTXf6t0vQmGB8 zjwe/AbiO1FL2ksQ8yM1N+rDtSPSuPzYJT2je8xs= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> Date: Sat, 18 Mar 2017 14:32:08 +0100 In-Reply-To: <87pohfkmvh.fsf@detlef> (Michael Albinus's message of "Sat, 18 Mar 2017 09:30:42 +0100") Message-ID: <87lgs2sobr.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: >> A different question is, whether file-notify-add-watch should behave >> like add-hook [...] > > I believe adding the *same* function twice for the same file/directory > doesn't make sense. Maybe we should document this in the Elisp manual, > and test it also in `file-notify-test01-add-watch'. There is a check for this in file-notify-add-watch: (unless (member entry (cdr registered)) (puthash desc ... file-notify-descriptors)) So, I should probably stay this way. (Even so, one might favor it being differently, because file-notify-add-watch returns a cookie and thus has more like a transactional semantics, for lack of a better word). I took a deeper look filenotify.el and found some problems/have some further questions. Note that I use inotify. + A watched hard-link for some other file may not receive its events, due to string-equal being used for file-comparisons. Shouldn't file-equal be used instead ? + Watching a /dir/file may receive events (e.g. touch /dir) for dir. + Why the seemingly arbitrary exclusion of backup-files in file-notify-callback ? What if someone wants to track the creation of said files ? + Why is the existence of kqueue checked for the handler in file-notify-add-watch ? After all we don't know how this handler will operate. -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 18 15:28:36 2017 Received: (at 26126) by debbugs.gnu.org; 18 Mar 2017 19:28:36 +0000 Received: from localhost ([127.0.0.1]:34317 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpK1k-0007bW-0Y for submit@debbugs.gnu.org; Sat, 18 Mar 2017 15:28:36 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:39390) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpK1i-0007bH-Hk for 26126@debbugs.gnu.org; Sat, 18 Mar 2017 15:28:35 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id A4153179B31D; Sat, 18 Mar 2017 20:28:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489865294; bh=Nuq87m2Lh+kovlVhBMMwxJau4Cg=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=cg9ACEkYvLFWw2GR71ZdB6aJK2PlqQHUzTUzpouyD0zW3vl5hs2fKAr8fa+z9N2aO XmLBbS9SLne1zYecx92fAluxvReuu3t1ZFkQj2waaeciE/0Tlg23jzQOEx2FboHtGP A2ectdJgv+tzttVjQV4gqyCNiD2D8nPfgcQm4/GA= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> Date: Sat, 18 Mar 2017 20:28:14 +0100 In-Reply-To: <87pohfkmvh.fsf@detlef> (Michael Albinus's message of "Sat, 18 Mar 2017 09:30:42 +0100") Message-ID: <87d1de1j1t.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) I have another question: Do you remember what this comment from file-notify-callback is talking about ? #+BEGIN_SRC emacs-lisp ((memq action '(moved rename)) ;; The kqueue rename event does not return file1 in ;; case a file monitor is established. (if (setq file1 (file-notify--event-file1-name event)) 'renamed 'deleted)) #+END_SRC And file-notify--event-file1-name basically returns nil, if the file1 argument of event is not a string. But this seems to contradict the comment, which states that file1 *is* nil, implying that the stored filename should be used, or not ? -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 18 15:37:01 2017 Received: (at 26126) by debbugs.gnu.org; 18 Mar 2017 19:37:01 +0000 Received: from localhost ([127.0.0.1]:34330 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpK9t-0007rZ-93 for submit@debbugs.gnu.org; Sat, 18 Mar 2017 15:37:01 -0400 Received: from mout.gmx.net ([212.227.17.20]:60039) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpK9q-0007rI-Tq for 26126@debbugs.gnu.org; Sat, 18 Mar 2017 15:36:59 -0400 Received: from detlef.gmx.de ([87.146.40.245]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MDFB2-1czGJs0jdM-00GY0i; Sat, 18 Mar 2017 20:36:52 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> Date: Sat, 18 Mar 2017 20:36:51 +0100 In-Reply-To: <87lgs2sobr.fsf@luca> (Andreas Politz's message of "Sat, 18 Mar 2017 14:32:08 +0100") Message-ID: <87y3w2gywc.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:4xCEiI1Q/p5V1yD2wH/uur8DHv3nh+IYnpUG+GxYcqMWZP3+/tf ajKRqjiR/w+wPPRmfRwuAao/QwecUO2JnDeY+acSqWtWXUF+3PjTRu/ZM5l+ncqpYGympjH GR0q5N+aVdHnC4ueUmJVM86bZG1w8Hc/cLhAWEgDOI8fGecY6AP2woDrDQihRv1gDKWE0jI hZn+odSTnphMegWcwCauQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:mgqK2vN+BUM=:0UVy6nYmHGqv0K97iltyR0 mhsBvVZne4ys8gBD8nPP+WM7HEOdVs0jHk6HsLCxH7wRwI3n4M2whgyj21jDJIuyO9yBPAtq8 WkCIjb9dIw354LvCaOOPuoSnMY5PBhV9REcuI+vGRWiEsvFrTU1tXMgiS+gW9UBae4cXETfDV tUyERdEgV1Tw2CE4KsjCM4w0uUCK0C4x9HgE7BQaisDl0NtKLJaLXJYNObjRnXFtgoym9VWZm WGEAUUWHVnDEAimarI93XoV9uhwVsHHOtS3mT0uxMBKyJzkGkECIAmrTha/1UlwpAhSQnsAiM Uu/GuY99Vm1toTudE2ppkMTIgnnX44sDMrQbvoS0Zw6biePrYGKgrcztOvCukhFfngBAHkBMV Jz76lSnwai+21FoRZh3yN0QgrLC6fo2EkYveVC+BztekO+a4mPISlONDg6d9ZMJrh4psZf0nF RwPYhUxF9Ko5mEed+Ip0pZ1cH+4Zo7J+NK5JxaIkf3yiBfHfEvkIarsdORif+iu4VjlP8GRnH /UUbxxn+wX7aRsyRZc+XPtL6EwtgDWkLIJL3eH8NjNgDLDKfCicqCi97AuZdslYMrQ5HZJr5n GdtvJqRejB1SekXAXkf6LUXGutEiS2XCQKt93jioT9QTiDQOnCHwSEVJFQIgsAjc4EdJ3j8mw jqDoVUwMbnP8RgqiDC+uEt0tdZv/6XWtY9xPH9NU+gSwoD8TsbZ7EUHpO5RzDkU1QStZ432/s SMLUvslfpIEI7SRV229o31FbEUjWRmu0SktT+XvcJI2ZOvpMRBfypGaRMyKtFc7Uc9RsoOubq pKIqB3g X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) Andreas Politz writes: Hi Andreas, > I took a deeper look filenotify.el and found some problems/have some > further questions. Note that I use inotify. > > + A watched hard-link for some other file may not receive its events, > due to string-equal being used for file-comparisons. Shouldn't > file-equal be used instead ? How does inotify (and the other libraries) work in this case? Does it support hard links? We should not add more logic than the native libraries offer. > + Watching a /dir/file may receive events (e.g. touch /dir) for dir. Could you pls give an example? > + Why the seemingly arbitrary exclusion of backup-files in > file-notify-callback ? What if someone wants to track the creation of > said files ? When a file under supervision is renamed during backup, the supervision might be stopped. This case must be handled. > + Why is the existence of kqueue checked for the handler in > file-notify-add-watch ? After all we don't know how this handler will > operate. Why don't we know what kqueue does? > -ap Best rewgards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 18 15:49:34 2017 Received: (at 26126) by debbugs.gnu.org; 18 Mar 2017 19:49:34 +0000 Received: from localhost ([127.0.0.1]:34336 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpKM2-0008BG-IH for submit@debbugs.gnu.org; Sat, 18 Mar 2017 15:49:34 -0400 Received: from mout.gmx.net ([212.227.15.15]:57824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpKM0-0008B3-H7 for 26126@debbugs.gnu.org; Sat, 18 Mar 2017 15:49:33 -0400 Received: from detlef.gmx.de ([87.146.40.245]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MBnvD-1cxKRX0ngt-00Amgy; Sat, 18 Mar 2017 20:49:24 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87d1de1j1t.fsf@luca> Date: Sat, 18 Mar 2017 20:49:22 +0100 In-Reply-To: <87d1de1j1t.fsf@luca> (Andreas Politz's message of "Sat, 18 Mar 2017 20:28:14 +0100") Message-ID: <87shmagybh.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:XhjBZgtR6ckQlsCS6T8hX1HuOInP12NUfqcC2hMETU5yTHnvLsE b0vg74psVcBiFvTRbNMxc54K1+Sp8ayXsjTaFeZNowBrkb3NYnfz/89v7bEtLpyfIr7fjAp ZCvi3rdxlLof/UCE4eNFlzQLruFc9GUZ3sp3S1u5LnVJX1hQK6DsW0kKAEetLnhElxBUp2A x56jojYbTa/Avdqw+DZXQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:KHMIWMEVfhA=:gSqd1e7WoL7NMhGS2U4qya jB2mR0IWQGFA2QdcIP6e0Q1YlYVteykDFibYBYquEP3f+ThXDvX8qC4a0O0045Vhbzs5XXif0 +XjyiEzwBLoC8kvRXrimHd/J0qEwmRmeolB9SE0hYV5NyW9AckFrUxSNSCQDTix6X9tARXsEv kYS/sNQXouMMxl3uzBeAGKSpLmADeRQk6SzwFzAFXEVTRHrdaQFqz+aqykKjUHSMmKuhRHYkg S+ECfZ6F3lYY3jKlrmzDIQ3LuHtkrbIadUXYxLsF8MpmIi9U/PKUWOqU2Y89nIV+dynYD4XLG mBfX0GnOYX6c3I7/u+zvuITJ5KmEKbhaJmQEcUa3t3Ytegt9Uike3BiN6J5lhnl6dYYcU4kl3 jmK44HOjzjdLZ0i6jjXs8++XzAEp2frBL6DeQb8CO9SLTNoFOTDbbxOwLAzIjmIoI99ORhRlF 9PVnCG0m9d3lZu+XQZhujncuFZAoZAUdqooyw/eNPYNuaVbwe8jQfmNgNgFt4fOvkn/9tSpYm 4WLZfvcD35H2SbDp3r44JNqSU1zLIn0KrFDbPth+m27iRGlUbSLcAGHy/S2DHvAQa4D6XlEvk M0UGRO4UoHzb3vIuMnEQ1eqfnc5/Xd66/lGGF4TQhvibE1Rjl+teduL5PcDXJFYrIuj9NF4S5 WADj2HIEEWu7Z2X6EDDn6iOADjaQIdIEGlaMfXeNHZ4NBpKXzB/vdVmljOKI5lLS+doSspn2y jaiC3+ZS9QZ6r9U83PFVGjFrauXbr1COuaCJSJAJqkpfF/MCoI+N8zNHfBT3ybi85j1FViXPG bVKFZ8m X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: Hi Andreas, > Do you remember what this comment from file-notify-callback is talking > about ? > > #+BEGIN_SRC emacs-lisp > ((memq action '(moved rename)) > ;; The kqueue rename event does not return file1 in > ;; case a file monitor is established. > (if (setq file1 (file-notify--event-file1-name event)) > 'renamed 'deleted)) > #+END_SRC kqueue is the oldest of he supported native libraries. It is the only one (IIRC), which does not return source and target file name in case of a rename. That's why that the kqueue `rename' event is transformed into a `deleted' event. This is what the comment is speaking about. I admit it would be more understandable if there would be an overview of the events and their arguments, the different libraries are sending. > And file-notify--event-file1-name basically returns nil, if the file1 > argument of event is not a string. But this seems to contradict the > comment, which states that file1 *is* nil, implying that the stored > filename should be used, or not ? The fourth slot of an event structure could be either a string (file1) or a cookie, or nil. This is tried to check. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 18 16:38:08 2017 Received: (at 26126) by debbugs.gnu.org; 18 Mar 2017 20:38:08 +0000 Received: from localhost ([127.0.0.1]:34365 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpL72-0000yQ-E7 for submit@debbugs.gnu.org; Sat, 18 Mar 2017 16:38:08 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:40971) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpL70-0000xt-5f for 26126@debbugs.gnu.org; Sat, 18 Mar 2017 16:38:06 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 658B6179B32F; Sat, 18 Mar 2017 21:37:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489869466; bh=cQEWIbjJt6y8PB4dTsR59YLfiAQ=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=jfN1AYiJL9Ex7/ZRCHTn6uSMwShkO3fPtO4XqcpZaKQ5jZZqV1oq/Jr64Q5aSlSd1 xZdboVyHxQFFb+vC2DzngO2x8X3wSTwz1e0QjnITCx+f4faa9fGFHu1Ly3O8tLLoQV ICMo7ntDUzWUzHhvqKmutagy2ycn/fuWx9w2O28c= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> Date: Sat, 18 Mar 2017 21:37:45 +0100 In-Reply-To: <87y3w2gywc.fsf@detlef> (Michael Albinus's message of "Sat, 18 Mar 2017 20:36:51 +0100") Message-ID: <878to21fty.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: >> + A watched hard-link for some other file may not receive its events, >> due to string-equal being used for file-comparisons. Shouldn't >> file-equal be used instead ? > > How does inotify (and the other libraries) work in this case? Does it > support hard links? We should not add more logic than the native > libraries offer. inotify seems to be inode-based, so it emits notifications independent of the filename used. I think that hard-links are not commonly used under win32, but I don't know. I we stay with string-equal, we are watching filenames, not files. Which is probably sufficient/OK. Maybe this should be mentioned in the manual, I made a note of it. > >> + Watching a /dir/file may receive events (e.g. touch /dir) for dir. > > Could you pls give an example? With inotify: (let ((desc (file-notify-add-watch "/tmp/file" '(attribute-change) (lambda (_) (cl-assert nil))))) (unwind-protect (progn (shell-command "touch /tmp") (sit-for 3)) (file-notify-rm-watch desc))) >> + Why the seemingly arbitrary exclusion of backup-files in >> file-notify-callback ? What if someone wants to track the creation of >> said files ? > > When a file under supervision is renamed during backup, the supervision > might be stopped. This case must be handled. Yes, I see. >> + Why is the existence of kqueue checked for the handler in >> file-notify-add-watch ? After all we don't know how this handler will >> operate. > > Why don't we know what kqueue does? This: (if handler ;; A file name handler could exist even if there is no local ;; file notification support. (setq desc (funcall handler 'file-notify-add-watch ;; kqueue does not report file changes in ;; directory monitor. So we must watch the file ;; itself. (if (eq file-notify--library 'kqueue) file dir) flags callback)) Why should we assume that handler is somehow related to kqueue ? I think its just a copy and paste error. The comment should be moved to the actual library call below this. I also wonder, if the passed argument should not always be the filename for which the watch was requested, as opposed to its directory. After all we should not make assumptions about the abilities of the underlying mechanism. For example it could work similar to kqueue, i.e. with an inability to watch directories. Thanks for you response, -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 18 16:49:12 2017 Received: (at 26126) by debbugs.gnu.org; 18 Mar 2017 20:49:12 +0000 Received: from localhost ([127.0.0.1]:34369 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpLHk-0001F4-Gk for submit@debbugs.gnu.org; Sat, 18 Mar 2017 16:49:12 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:41191) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpLHh-0001Em-U5 for 26126@debbugs.gnu.org; Sat, 18 Mar 2017 16:49:11 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id CA844179B373; Sat, 18 Mar 2017 21:48:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489870131; bh=ylW1EbrW3pUzPtK5nEKyGGestb8=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=Y8f/bhR0NXrtJUyS5AYxYtWYUXlHqX/NITCGhyPOu0hwBLbmdZUVUGTNL/O1EKAyB f7pXxMR+WzqFYk6JUavnK9WPIRjrhjkXzFiMoWkeVleDjIu61FlFz5VepSBol30tOM HsPUdNX68Ij3kn3THZDUpU+icsRRZr9LNV7q2BfE= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87d1de1j1t.fsf@luca> <87shmagybh.fsf@detlef> Date: Sat, 18 Mar 2017 21:48:51 +0100 In-Reply-To: <87shmagybh.fsf@detlef> (Michael Albinus's message of "Sat, 18 Mar 2017 20:49:22 +0100") Message-ID: <874lyq1fbg.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > [...] the kqueue `rename' event is transformed into a `deleted' event OK, I misunderstood the comment then. > The fourth slot of an event structure could be either a string (file1) > or a cookie, or nil. This is tried to check. Yes, I see. -ap From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 19 05:39:22 2017 Received: (at 26126) by debbugs.gnu.org; 19 Mar 2017 09:39:22 +0000 Received: from localhost ([127.0.0.1]:34549 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpXJ4-0003QS-5S for submit@debbugs.gnu.org; Sun, 19 Mar 2017 05:39:22 -0400 Received: from mout.gmx.net ([212.227.17.20]:57808) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpXJ2-0003QC-4w for 26126@debbugs.gnu.org; Sun, 19 Mar 2017 05:39:20 -0400 Received: from detlef.gmx.de ([93.209.91.26]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Ldcv0-1cOlH82qSQ-00ij6N; Sun, 19 Mar 2017 10:39:12 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> Date: Sun, 19 Mar 2017 10:39:11 +0100 In-Reply-To: <878to21fty.fsf@luca> (Andreas Politz's message of "Sat, 18 Mar 2017 21:37:45 +0100") Message-ID: <87wpbl1u80.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:Bfr2ygRbtUVaIOpljYwf4vk/4tQO4A1/FV9OQl4ugDZsyVlHtkx K9LlbK9tUIhAKVYkKxIo9WGE1Y5y8llyqTaNCiufvK91ymfPUbpnNfpc82sMkuLdn++o9JP kWlVfE2/VYGBjAScPdEcbF+Fo0UEISEiHoJ5OndPReKYAc3SomHsCLkmCyec77pYYP6FlKq aitGnwotv0WalA9XRN4NA== X-UI-Out-Filterresults: notjunk:1;V01:K0:trsVtwx8AOk=:5fi9v0pZMe3kapR9m/qYqC LVa+ZBs9FjdYaM1wexl7xYKy2GjafDWaQRqYYgDbli4u9F8PnaVdBG+Cm12HACz1q6eICRXLr hzlkqsAfImydtc3lMl4a0FKPlmcnCrxRh+57P/DXcHHMqDigTL6C6Dy5PFcQ307SZvvhbCNO9 ZO5K9+n8NA0MJbAm3gvknDCtypOk3gQNpfoECS4BPv8VUnbJmRXdvP2qRX8+iWH1SbJRr1AJL vD9kjqgEEXaWxLohrV1ErLI8D3hAGQ6vAx3igOw8r70dWrIj3gDqcCSPDn84UAUYpCUiQ1I4S urHn8pocARQRh+VTSN/TK9ETqvnze09FbNK8OleJoWz10a9aD4dzbKK1Vy6XDuqBpEu0i3RAi B9BTQLuqONYZJzaiTvBm7o7wtpQrsRp1m/mavESYjKau5lnadCAztx3q4B7LhePdLHL4z0Reu 8UQPNN+5cQQKBxsidzZU+V5ZGbkaUGxf93pWV0MQpkdrx1fPXfuWIhJAJPsk4e/NceWxh2eUh wu0ylwEBZCmIIz0yRRmJdCDgJSMkuXUEpcr4GvHa9ieA59MgxTf+MSzw3itHlrplxvWizUWk8 BQqlLpbMSnxWoRp1RGh56dJJyVU8BgU1UOb3pye1q7NfFoylBTvBsrheDEKWXJ9vix/+sht3Y 0xE8B3EYGoRCfBdcJD0krBDzDQzf1szhwhmNj7SqP+3yi9R+4Cfa7piillHjyky1faFL1qTcC RyKnO4tO40L1789Kdwi0GlaZVDzWHxTmL+ufPqKpuaK3+g8YraDl1tINGcHDrcp7E8zHMRKiN 8CZ1psG X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) Andreas Politz writes: Hi Andreas, > inotify seems to be inode-based, so it emits notifications independent > of the filename used. I think that hard-links are not commonly used > under win32, but I don't know. Yes, inotify watches inodes. > I we stay with string-equal, we are watching filenames, not files. > Which is probably sufficient/OK. Maybe this should be mentioned in the > manual, I made a note of it. The docstring speaks about filesystems. This is a hint, that the behaviour of the libraries might differ. >>> + Watching a /dir/file may receive events (e.g. touch /dir) for dir. >> >> Could you pls give an example? > > With inotify: > > (let ((desc (file-notify-add-watch > "/tmp/file" '(attribute-change) > (lambda (_) (cl-assert nil))))) > (unwind-protect > (progn > (shell-command "touch /tmp") > (sit-for 3)) > (file-notify-rm-watch desc))) Yes, I remember. For all backends except kqueue, we watch the directory. This is intended. >>> + Why is the existence of kqueue checked for the handler in >>> file-notify-add-watch ? After all we don't know how this handler will >>> operate. >> >> Why don't we know what kqueue does? > > This: > > (if handler > ;; A file name handler could exist even if there is no local > ;; file notification support. > (setq desc (funcall > handler 'file-notify-add-watch > ;; kqueue does not report file changes in > ;; directory monitor. So we must watch the file > ;; itself. > (if (eq file-notify--library 'kqueue) file dir) > flags callback)) > > Why should we assume that handler is somehow related to kqueue ? I think > its just a copy and paste error. The comment should be moved to the > actual library call below this. This looks like an error, indeed. I will check. > I also wonder, if the passed argument should not always be the filename > for which the watch was requested, as opposed to its directory. After > all we should not make assumptions about the abilities of the underlying > mechanism. For example it could work similar to kqueue, i.e. with an > inability to watch directories. We've discussed this years ago, maybe you find it in the archives. There are problems when you watch only the file. This doesn't work for example when you want to watch a file which does not exist yet. Or which disappears, and reappears. The agreement was to watch the upper directory. This works for all backends except kqueue. > Thanks for you response, > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 19 07:14:56 2017 Received: (at 26126) by debbugs.gnu.org; 19 Mar 2017 11:14:56 +0000 Received: from localhost ([127.0.0.1]:34583 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpYnY-0005mi-6U for submit@debbugs.gnu.org; Sun, 19 Mar 2017 07:14:56 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:40690) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpYnV-0005mJ-Oh for 26126@debbugs.gnu.org; Sun, 19 Mar 2017 07:14:54 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id CB091179B38F; Sun, 19 Mar 2017 12:14:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489922073; bh=NCLAbmPjhG0Oqrktxi3iUpuDmqE=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=WD0zpMnIshBWVb3LiGvYca431nuQmi2jpqK5+aK7CgUjRSqA3sgzlBxt5CBVr5DcJ BoAwHiNE2hSFNzikip5rnXBw+7/eJSfr/hwA1OuKFHchoEfuHST79lsRjrwhtqhRb7 005kg/G9pdbjdrzOUWrizY5bkFq+KVi6EeR5JjlM= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> Date: Sun, 19 Mar 2017 12:14:33 +0100 In-Reply-To: <87wpbl1u80.fsf@detlef> (Michael Albinus's message of "Sun, 19 Mar 2017 10:39:11 +0100") Message-ID: <87d1ddecx2.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: >>>> + Watching a /dir/file may receive events (e.g. touch /dir) for dir. > Yes, I remember. For all backends except kqueue, we watch the > directory. This is intended. > Sure, the back-ends mostly watch directories, except for kqueue. But is this behavior also intended to be propagated to the clients of filenotify.el ? >>>> + Why is the existence of kqueue checked for the handler in >>>> file-notify-add-watch ? After all we don't know how this handler will >>>> operate. >> I also wonder, if the passed argument should not always be the filename >> for which the watch was requested, as opposed to its directory. After >> all we should not make assumptions about the abilities of the underlying >> mechanism. For example it could work similar to kqueue, i.e. with an >> inability to watch directories. > > We've discussed this years ago, maybe you find it in the archives. There > are problems when you watch only the file. This doesn't work for example > when you want to watch a file which does not exist yet. Or which > disappears, and reappears. > > The agreement was to watch the upper directory. This works for all > backends except kqueue. Sorry, for not being clear: I was exclusively talking about file-name-handler here. Passing the intended filename is more general then passing the directory only. Think of some program foonotify, which is similarly limited like kqueue. Granted, this scenario probably won't come up very soon. -ap From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 19 15:24:04 2017 Received: (at 26126) by debbugs.gnu.org; 19 Mar 2017 19:24:04 +0000 Received: from localhost ([127.0.0.1]:35459 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpgQu-0002rZ-IO for submit@debbugs.gnu.org; Sun, 19 Mar 2017 15:24:04 -0400 Received: from mout.gmx.net ([212.227.15.19]:61299) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpgQs-0002r3-RV for 26126@debbugs.gnu.org; Sun, 19 Mar 2017 15:24:03 -0400 Received: from detlef.gmx.de ([93.209.91.26]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LzKmP-1cCAkF1bpB-014UNB; Sun, 19 Mar 2017 20:23:54 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> Date: Sun, 19 Mar 2017 20:23:53 +0100 In-Reply-To: <87d1ddecx2.fsf@luca> (Andreas Politz's message of "Sun, 19 Mar 2017 12:14:33 +0100") Message-ID: <87efxtnk8m.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:bjWQYWIEe4GswqPLLTQoi6ws4m+RU7CF+wzKhXLQiITCdCT5u11 O2SP696R8BwgTcyFRVgSNp35ZxXb5ZtUYy1bqRtIPL6NaagBkEpYRIJuR/Y6OYzkzLWFPUK 8ihKkzq+QhA+4bkBsju1vONTzmVPBHOof7oQrYQNKafRjVPSK401G3urqOfiTA6CTogSjcq x07H2JzBagrbXqMW7W20g== X-UI-Out-Filterresults: notjunk:1;V01:K0:sGzpVuCxkKw=:lRd9lXr/YYrh2TaJC1Wq79 3CutA29L1FCT4HHeRO0Z3M3xV6shCatS7rUdIsY3FtjtZGJ6lRJ2S/nGzEJ4Yn/XNBTbsT4Ex 65zKkFpFwVjEDIB7R6kGWtEXECxbvjQRTwSyT16GtDFqeGadu8ePsd4Pjy9AYHQPo5hN7Iqh6 8lWItHHORus770XzqqGsNclV/VX0CDeoPOvn09iQMivyVMoMbr7b7ondcGLEUas5lnXk5S+z0 kPYKsFcbUcalEIustsXhn1lzPV8zrkjCYrNpSDSMB9OA7RoQ1Kp5DlEaabjRFzTAsaQ+BhN61 fDsUJ/uOA721o9o2DjAPF2B5ZYdrL7tjdz6UVqazo2qJpzlGyZ1ulXGB9oNiFF4E8cc5uU4Sh VWrmOavH6gpI1O0ObfQZIq6krg6E15kEitsHeTgrSCsqG1kOuJfVpwOoa9Oapk1QxCgkO+Szq +aoDnDLH4PjdkYRt2o89N979Ui61JyAfco1hY8fubnbFRjeei/u++R9HaDJc7bBlzRrVm8a5A 1FD485m6kZTxBCzuBcut/nKgsBxvKzqXdK/OeTfn5V5QPGWaMkSZKB58amqC684iAqKZ3AdZL Feq7Kg6P+hwO+miMJjHQVfcsNNu1TDf7jmujHFNoYc+RG3XKVxX7q1YQUEb90Q5mt+nczSgfS Qd4b1VWHsgGgq/5rb85Va1uJH+6t6zl9PPZUfdqenPcrzQ055l9ArVWJ2d/jQ9e/bXd+ris8L 6BV98rp8JyelvpTqKeqyzqVEKS1dg0re5F+xwny8Y0mriY9IVK2LhfjHjuVCBnV9WpUjSmI1U 0mbFNvb X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: > Sure, the back-ends mostly watch directories, except for kqueue. But is > this behavior also intended to be propagated to the clients of > filenotify.el ? Yes. >> We've discussed this years ago, maybe you find it in the archives. There >> are problems when you watch only the file. This doesn't work for example >> when you want to watch a file which does not exist yet. Or which >> disappears, and reappears. >> >> The agreement was to watch the upper directory. This works for all >> backends except kqueue. > > Sorry, for not being clear: I was exclusively talking about > file-name-handler here. Passing the intended filename is more general > then passing the directory only. Think of some program foonotify, which > is similarly limited like kqueue. Granted, this scenario probably won't > come up very soon. We have only two different programs for the remote case, gvfs-monitor-dir and inotifywait. Coincidentally, I'm also the Tramp maintainer, so I know what I am saying :-) > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 19 18:05:49 2017 Received: (at 26126) by debbugs.gnu.org; 19 Mar 2017 22:05:49 +0000 Received: from localhost ([127.0.0.1]:35566 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpixP-00072x-Mt for submit@debbugs.gnu.org; Sun, 19 Mar 2017 18:05:49 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:59878) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpixN-00072j-4R for 26126@debbugs.gnu.org; Sun, 19 Mar 2017 18:05:46 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 8CAEC179AB34; Sun, 19 Mar 2017 23:05:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1489961125; bh=uQZMMk2ZVeZjsLbsRT5/Aq8EAvA=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=RF/YoD1kXHOWUJySkL1MHPNUVS/r8XDBTJgGpqkYHUA/T7zmwhvCiXJG15VatHCBP rpTU+eQhfqMyXpkbeaCJ/POQMJr6oimoSPWv+96SkjOqpuhWqmaSMPDWDcqj7GvyXm uzJQ1IXVDBjxtF6YQW+OebVfCLEVTVtJPk8tCKXM= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches In-Reply-To: <87y3w2gywc.fsf@detlef> (Michael Albinus's message of "Sat, 18 Mar 2017 20:36:51 +0100") References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Date: Sun, 19 Mar 2017 23:05:25 +0100 Message-ID: <8737e8excq.fsf@luca> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=-=-= Content-Type: text/plain I think there are two ways to fix the main problem discussed here. 1. Change inotify.c and make it return/receive a unique descriptor per client. 2. Wrap inotify's descriptor inside file-notify-add-watch, similar to how it's currently done. This is what I was refering to as boxing/unboxing earlier. The 2nd approach is problematic in the context of file-name-handler, so I attempted to solve it the other way: Instead of a single number, use a cons of (INOTIFY-DESCRIPTOR . ID) , which is unique across all active watches. I.e. this makes inotify work like all the other back-ends/handler. Here is a first draft of a corresponding patch, let me know what you think. --=-=-= Content-Type: text/x-diff Content-Disposition: inline Content-Description: inotify.diff diff --git a/lisp/filenotify.el b/lisp/filenotify.el index 7eb6229976..beae94c2c2 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -55,9 +55,8 @@ file-notify--rm-descriptor "Remove DESCRIPTOR from `file-notify-descriptors'. DESCRIPTOR should be an object returned by `file-notify-add-watch'. If it is registered in `file-notify-descriptors', a stopped event is sent." - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) - (registered (gethash desc file-notify-descriptors)) - (file (if (consp descriptor) (cdr descriptor) (cl-caadr registered))) + (let* ((registered (gethash descriptor file-notify-descriptors)) + (file (cl-caadr registered)) (dir (car registered))) (when (consp registered) @@ -69,12 +68,12 @@ file-notify--rm-descriptor ;; Modify `file-notify-descriptors'. (if (not file) - (remhash desc file-notify-descriptors) + (remhash descriptor file-notify-descriptors) (setcdr registered (delete (assoc file (cdr registered)) (cdr registered))) (if (null (cdr registered)) - (remhash desc file-notify-descriptors) - (puthash desc registered file-notify-descriptors)))))) + (remhash descriptor file-notify-descriptors) + (puthash descriptor registered file-notify-descriptors)))))) ;; This function is used by `inotify', `kqueue', `gfilenotify' and ;; `w32notify' events. @@ -102,9 +101,9 @@ file-notify--pending-event (defun file-notify--event-watched-file (event) "Return file or directory being watched. Could be different from the directory watched by the backend library." - (let* ((desc (if (consp (car event)) (caar event) (car event))) - (registered (gethash desc file-notify-descriptors)) - (file (if (consp (car event)) (cdar event) (cl-caadr registered))) + (let* ((descriptor (car event)) + (registered (gethash descriptor file-notify-descriptors)) + (file (cl-caadr registered)) (dir (car registered))) (if file (expand-file-name file dir) dir))) @@ -133,17 +132,11 @@ file-notify--event-cookie ;; `inotify' returns the same descriptor when the file (directory) ;; uses the same inode. We want to distinguish, and apply a virtual ;; descriptor which make the difference. -(defun file-notify--descriptor (desc file) +(defun file-notify--descriptor (desc _file) "Return the descriptor to be used in `file-notify-*-watch'. For `gfilenotify' and `w32notify' it is the same descriptor as used in the low-level file notification package." - (if (and (natnump desc) (eq file-notify--library 'inotify)) - (cons desc - (and (stringp file) - (car (assoc - (file-name-nondirectory file) - (gethash desc file-notify-descriptors))))) - desc)) + desc) ;; The callback function used to map between specific flags of the ;; respective file notifications, and the ones we return. @@ -396,7 +389,6 @@ file-notify-add-watch ;; Modify `file-notify-descriptors'. (setq file (unless (file-directory-p file) (file-name-nondirectory file)) - desc (if (consp desc) (car desc) desc) registered (gethash desc file-notify-descriptors) entry `(,file . ,callback)) (unless (member entry (cdr registered)) @@ -408,9 +400,8 @@ file-notify-add-watch (defun file-notify-rm-watch (descriptor) "Remove an existing watch specified by its DESCRIPTOR. DESCRIPTOR should be an object returned by `file-notify-add-watch'." - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) - (file (if (consp descriptor) (cdr descriptor))) - (registered (gethash desc file-notify-descriptors)) + (let* ((file nil) + (registered (gethash descriptor file-notify-descriptors)) (dir (car registered)) (handler (and (stringp dir) (find-file-name-handler dir 'file-notify-rm-watch)))) @@ -432,7 +423,7 @@ file-notify-rm-watch ((eq file-notify--library 'kqueue) 'kqueue-rm-watch) ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch) ((eq file-notify--library 'w32notify) 'w32notify-rm-watch)) - desc)) + descriptor)) (file-notify-error nil))) ;; Modify `file-notify-descriptors'. @@ -441,9 +432,8 @@ file-notify-rm-watch (defun file-notify-valid-p (descriptor) "Check a watch specified by its DESCRIPTOR. DESCRIPTOR should be an object returned by `file-notify-add-watch'." - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) - (file (if (consp descriptor) (cdr descriptor))) - (registered (gethash desc file-notify-descriptors)) + (let* ((file nil) + (registered (gethash descriptor file-notify-descriptors)) (dir (car registered)) handler) @@ -464,7 +454,7 @@ file-notify-valid-p ((eq file-notify--library 'kqueue) 'kqueue-valid-p) ((eq file-notify--library 'gfilenotify) 'gfile-valid-p) ((eq file-notify--library 'w32notify) 'w32notify-valid-p)) - desc)) + descriptor)) t)))) ;; The end: diff --git a/src/inotify.c b/src/inotify.c index 61ef615328..302f52225e 100644 --- a/src/inotify.c +++ b/src/inotify.c @@ -51,10 +51,47 @@ static int inotifyfd = -1; static Lisp_Object watch_list; static Lisp_Object -make_watch_descriptor (int wd) +add_watch_descriptor (int wd, Lisp_Object filename, Lisp_Object callback) { - /* TODO replace this with a Misc Object! */ - return make_number (wd); + Lisp_Object descriptor = make_number (wd); + Lisp_Object elt = Fassoc (descriptor, watch_list); + Lisp_Object list = Fcdr (elt); + Lisp_Object watch, watch_id; + int id = 0; + + while (! NILP (list)) + { + id = max (id, 1 + XINT (XCAR (XCAR (list)))); + list = XCDR (list); + } + + watch_id = make_number (id); + watch = list3 (watch_id, filename, callback); + + if (NILP (elt)) + watch_list = Fcons (Fcons (descriptor, Fcons (watch, Qnil)), + watch_list); + else + XSETCDR (elt, Fcons (watch, XCDR (elt))); + + return Fcons (descriptor, watch_id); +} + +static void +remove_watch_descriptor (Lisp_Object descriptor, Lisp_Object id) +{ + Lisp_Object watches = Fassoc (descriptor, watch_list); + + if (CONSP (watches)) + { + Lisp_Object watch = Fassoc (id, XCDR (watches)); + + if (CONSP (watch)) + XSETCDR (watches, Fdelete (watch, XCDR (watches))); + + if (NILP (XCDR (watches))) + watch_list = Fdelete (watches, watch_list); + } } static Lisp_Object @@ -96,7 +133,7 @@ mask_to_aspects (uint32_t mask) { } static Lisp_Object -inotifyevent_to_event (Lisp_Object watch_object, struct inotify_event const *ev) +inotifyevent_to_event (Lisp_Object watch, struct inotify_event const *ev) { Lisp_Object name = Qnil; if (ev->len > 0) @@ -106,13 +143,13 @@ inotifyevent_to_event (Lisp_Object watch_object, struct inotify_event const *ev) name = DECODE_FILE (name); } else - name = XCAR (XCDR (watch_object)); + name = XCAR (XCDR (watch)); - return list2 (list4 (make_watch_descriptor (ev->wd), + return list2 (list4 (Fcons (make_number (ev->wd), XCAR (watch)), mask_to_aspects (ev->mask), name, make_number (ev->cookie)), - Fnth (make_number (2), watch_object)); + Fnth (make_number (2), watch)); } /* This callback is called when the FD is available for read. The inotify @@ -121,7 +158,6 @@ static void inotify_callback (int fd, void *_) { struct input_event event; - Lisp_Object watch_object; int to_read; char *buffer; ssize_t n; @@ -146,20 +182,23 @@ inotify_callback (int fd, void *_) while (i < (size_t)n) { struct inotify_event *ev = (struct inotify_event *) &buffer[i]; + Lisp_Object descriptor = make_number (ev->wd); + Lisp_Object watches = Fassoc (descriptor, watch_list); - watch_object = Fassoc (make_watch_descriptor (ev->wd), watch_list); - if (!NILP (watch_object)) + if (CONSP (watches)) { - event.arg = inotifyevent_to_event (watch_object, ev); + for (Lisp_Object elt = XCDR (watches); CONSP (elt); elt = XCDR (elt)) + { + event.arg = inotifyevent_to_event (XCAR (elt), ev); + if (!NILP (event.arg)) + kbd_buffer_store_event (&event); + } /* If event was removed automatically: Drop it from watch list. */ if (ev->mask & IN_IGNORED) - watch_list = Fdelete (watch_object, watch_list); - - if (!NILP (event.arg)) - kbd_buffer_store_event (&event); + for (Lisp_Object elt = XCDR (watches); CONSP (elt); elt = XCDR (elt)) + remove_watch_descriptor (descriptor, XCAR (elt)); } - i += sizeof (*ev) + ev->len; } @@ -292,14 +331,12 @@ renames (moved-from and moved-to). See inotify(7) and inotify_add_watch(2) for further information. The inotify fd is managed internally and there is no corresponding inotify_init. Use `inotify-rm-watch' to remove a watch. - */) + */) (Lisp_Object file_name, Lisp_Object aspect, Lisp_Object callback) { uint32_t mask; - Lisp_Object watch_object; Lisp_Object encoded_file_name; - Lisp_Object watch_descriptor; - int watchdesc = -1; + int wd = -1; CHECK_STRING (file_name); @@ -314,22 +351,11 @@ is managed internally and there is no corresponding inotify_init. Use mask = aspect_to_inotifymask (aspect); encoded_file_name = ENCODE_FILE (file_name); - watchdesc = inotify_add_watch (inotifyfd, SSDATA (encoded_file_name), mask); - if (watchdesc == -1) + wd = inotify_add_watch (inotifyfd, SSDATA (encoded_file_name), mask); + if (wd == -1) report_file_notify_error ("Could not add watch for file", file_name); - watch_descriptor = make_watch_descriptor (watchdesc); - - /* Delete existing watch object. */ - watch_object = Fassoc (watch_descriptor, watch_list); - if (!NILP (watch_object)) - watch_list = Fdelete (watch_object, watch_list); - - /* Store watch object in watch list. */ - watch_object = list3 (watch_descriptor, encoded_file_name, callback); - watch_list = Fcons (watch_object, watch_list); - - return watch_descriptor; + return add_watch_descriptor (wd, file_name, callback); } DEFUN ("inotify-rm-watch", Finotify_rm_watch, Sinotify_rm_watch, 1, 1, 0, @@ -341,16 +367,24 @@ See inotify_rm_watch(2) for more information. */) (Lisp_Object watch_descriptor) { - Lisp_Object watch_object; - int wd = XINT (watch_descriptor); - if (inotify_rm_watch (inotifyfd, wd) == -1) - report_file_notify_error ("Could not rm watch", watch_descriptor); + Lisp_Object descriptor, id; - /* Remove watch descriptor from watch list. */ - watch_object = Fassoc (watch_descriptor, watch_list); - if (!NILP (watch_object)) - watch_list = Fdelete (watch_object, watch_list); + if (! (CONSP (watch_descriptor) + && INTEGERP (XCAR (watch_descriptor)) + && INTEGERP (XCDR (watch_descriptor)))) + report_file_notify_error ("Invalid descriptor ", watch_descriptor); + + descriptor = XCAR (watch_descriptor); + id = XCDR (watch_descriptor); + remove_watch_descriptor (descriptor, id); + + if (NILP (Fassoc (descriptor, watch_list))) + { + int wd = XINT (descriptor); + if (inotify_rm_watch (inotifyfd, wd) == -1) + report_file_notify_error ("Could not rm watch", watch_descriptor); + } /* Cleanup if no more files are watched. */ if (NILP (watch_list)) @@ -374,10 +408,34 @@ reason. Removing the watch by calling `inotify-rm-watch' also makes it invalid. */) (Lisp_Object watch_descriptor) { - Lisp_Object watch_object = Fassoc (watch_descriptor, watch_list); - return NILP (watch_object) ? Qnil : Qt; + Lisp_Object watches; + + if (! (CONSP (watch_descriptor) + && INTEGERP (XCAR (watch_descriptor)) + && INTEGERP (XCDR (watch_descriptor)))) + return Qnil; + + watches = Fassoc (XCAR (watch_descriptor), watch_list); + + if (! CONSP (watches)) + return Qnil; + return CONSP (Fassoc (XCDR (watch_descriptor), XCDR (watches))); +} + +#ifdef DEBUG +DEFUN ("inotify-watch-list", Finotify_watch_list, Sinotify_watch_list, 0, 0, 0, + doc: /* Return a copy of the internal watch_list. */) +{ + return Fcopy_sequence (watch_list); } +DEFUN ("inotify-allocated-p", Finotify_allocated_p, Sinotify_allocated_p, 0, 0, 0, + doc: /* Return non-nil, if a inotify instance is allocated. */) +{ + return inotifyfd < 0 ? Qnil : Qt; +} +#endif + void syms_of_inotify (void) { @@ -414,6 +472,10 @@ syms_of_inotify (void) defsubr (&Sinotify_rm_watch); defsubr (&Sinotify_valid_p); +#ifdef DEBUG + defsubr (&Sinotify_watch_list); + defsubr (&Sinotify_allocated_p); +#endif staticpro (&watch_list); Fprovide (intern_c_string ("inotify"), Qnil); --=-=-= Content-Type: text/plain Apart from that, the following is a list containing all the problems I've found that I still think are relevant. Some of which we already discussed earlier. * Don't discriminate remote handler based on the local library used. Already discussed. --=-=-= Content-Type: text/x-diff Content-Disposition: inline Content-Description: remote-handler.diff diff -u --label /home/politza/src/emacs/lisp/filenotify.el --label \#\ /home/politza/src/emacs/lisp/filenotify.el /tmp/buffer-content-142424Gt --- /home/politza/src/emacs/lisp/filenotify.el +++ # @@ -342,10 +342,7 @@ ;; file notification support. (setq desc (funcall handler 'file-notify-add-watch - ;; kqueue does not report file changes in - ;; directory monitor. So we must watch the file - ;; itself. - (if (eq file-notify--library 'kqueue) file dir) + dir flags callback)) ;; Check, whether Emacs has been compiled with file notification Diff finished. Sun Mar 19 23:05:00 2017 --=-=-= Content-Type: text/plain * The value of file-notify--pending-event is reset after the first client was processed in the outer loop in file-notify-callback, resulting in clients watching for the same file being treated differently. Note that this problem would be solved by not having multiple clients per descriptor. --=-=-= Content-Type: application/emacs-lisp Content-Disposition: inline; filename=pending-event-test.el Content-Transfer-Encoding: quoted-printable Content-Description: ERT Test for pending events with 2 clients (ert-deftest file-notify-test03c-events () "Check that rename events are propagated to all watches." (skip-unless (file-notify--test-local-enabled)) (unwind-protect (progn (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) file-notify--test-tmpfile1 (file-notify--test-make-temp-name)) (with-temp-file file-notify--test-tmpfile1) (setq file-notify--test-desc (file-notify-add-watch file-notify--test-tmpfile '(change attribute-change) #'file-notify--test-event-handler) file-notify--test-desc1 (file-notify-add-watch file-notify--test-tmpfile '(change attribute-change) (lambda (event) (file-notify--test-event-handler e= vent)))) (file-notify--test-with-events '(renamed renamed) (rename-file file-notify--test-tmpfile1 file-notify--test-tmpfile)) (file-notify-rm-watch file-notify--test-desc) (file-notify-rm-watch file-notify--test-desc1) (file-notify--test-cleanup-p)) (file-notify--test-cleanup))) --=-=-= Content-Type: text/plain * inotify_add_watch internally uses a single watch per directory, which may be shared by multiple clients (using filenotify.el). The problem here seems to be that these clients may use different FLAGS as argument to file-notify-add-watch. Currently, the last added client's FLAGS become the effective mask for the underlying C-descriptor, meaning that clients added before may not receive change or attribute-change events if the mask was modified accordingly. * It seems to me that the right word here is "unified". --=-=-= Content-Type: text/x-diff Content-Disposition: inline Content-Description: os.texi diff diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 9b6752c5e1..4f7d47305f 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -2707,7 +2707,7 @@ File Notifications Since all these libraries emit different events on notified file changes, there is the Emacs library @code{filenotify} which provides a -unique interface. +unified interface. @defun file-notify-add-watch file flags callback Add a watch for filesystem events pertaining to @var{file}. This --=-=-= Content-Type: text/plain -ap --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 20 16:40:09 2017 Received: (at 26126) by debbugs.gnu.org; 20 Mar 2017 20:40:09 +0000 Received: from localhost ([127.0.0.1]:36771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cq465-0001WO-2f for submit@debbugs.gnu.org; Mon, 20 Mar 2017 16:40:09 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:43443) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cq463-0001Vz-HT for 26126@debbugs.gnu.org; Mon, 20 Mar 2017 16:40:07 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id C76E5179B3A9; Mon, 20 Mar 2017 21:39:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490042388; bh=5q7V2bnZF9nxwejn0LyzeZeMSnw=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=n8Md+VMbou+iPQpMT8LxASJkpbpE7i19VvvOYVzWY/If0WiVXat6hRPdt8gfgpQmb h1d4ueJzU4kXsVG1YPsusM9bJeqLf1oSNB9pk3UZsrY0URik/b6PGh1hQcd3qjJ9k2 i9gAYiY7qafNT8yZHnLV/tJkMDti0c5Uxs8luZUI= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> Date: Mon, 20 Mar 2017 21:39:48 +0100 In-Reply-To: <87efxtnk8m.fsf@detlef> (Michael Albinus's message of "Sun, 19 Mar 2017 20:23:53 +0100") Message-ID: <87tw6nd6nf.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: > >> Sure, the back-ends mostly watch directories, except for kqueue. But is >> this behavior also intended to be propagated to the clients of >> filenotify.el ? > > Yes. Why is that ? -ap From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 21 04:45:06 2017 Received: (at 26126) by debbugs.gnu.org; 21 Mar 2017 08:45:06 +0000 Received: from localhost ([127.0.0.1]:37171 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqFPe-0003cE-7w for submit@debbugs.gnu.org; Tue, 21 Mar 2017 04:45:06 -0400 Received: from mout.gmx.net ([212.227.15.15]:61650) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqFPd-0003bT-AE for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 04:45:05 -0400 Received: from detlef.gmx.de ([93.209.71.173]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M9aX9-1d38WH2cRT-00CxA0; Tue, 21 Mar 2017 09:44:54 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> Date: Tue, 21 Mar 2017 09:44:52 +0100 In-Reply-To: <87tw6nd6nf.fsf@luca> (Andreas Politz's message of "Mon, 20 Mar 2017 21:39:48 +0100") Message-ID: <871strm323.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:V6xLbY64ZoF7YOBM6pdJVKvSFE2EEA3Xxw8/MyXzAlNh/j/FT4s VCLgjOFK/gezkVmC89PcGlSK6OWEoQzAJQS12N24a6YRmPjnfhgK5jna35j6jxGdcIsg8kF GEr+NDamOCBqWG7o8WTeoLVoNY1mjg2udAfEptb15QbpJSpHWZzcpBCzUT/UZ87hHdnrOZk j0ppXzavrZOmGAJej6uNA== X-UI-Out-Filterresults: notjunk:1;V01:K0:jQjSYILiBUI=:EuCy/Uzp7itqDAbxMTKeR3 XlXO+h+R5plt2OUPpSBdnxsbVltvs4Dy8Gz0vMwj7AXBKaep3rFKQAK3IzqeTZlWAVVjdnYON d/VW8UiskX8uRojtWbzZ77h6+vKovR8bDdUooQPDYCy0m59W1q2bDNhrfBqZjuDbKML4GCi7r PePladrj+gDReILMzaWBZsbSG77oE6HHwN0n30pvSy/XPX8GsB9ho2H5tjeiIeBeRZG1mHvSJ 7TIms/2W2/1XBRaVb9L/vivP3kUsX1wQ5z3GqOtt+doJpcft8oSWS2iSWF3CgoUAl2ASRDxQ8 8V3I98EJZLLsW21dFufoOR84EfqGCUb85/FanWsailhue/82t0tOSAA0w05Xqz/90IpceKF1p +yyvIpsAj0w12624xpjzrjZfy1ewnumSnJhlOgV/ZxXGBM0fCFpUZCkGuUxBomd7U44gSG2g4 srkPXAicMAwWhOuP0c+khG23kwCgYZBktF3hENT7T0XWEaDWD0l9d/rY/ES172uA05rHZKxwl NQKG3jv5UuNV0WXZWCgidHJjY5hiF7zVtETbpjSsNELRHzxYHR519EWryCAi7mVRzYZju1lEs UZUUVUD7n0gj2at1HUCstD0IvQYUBlpMC/1lgTMyvFfRqM7ZapBKjysj3qWnshJS3MUWK/GTX hb6OXZ5E9IhOYn48LQzUDoswPB7iPd6YvPFnQV1BMSyj+JB56fPcKToS9yWYxufKbuZSjpzoD eto5SC3dn687hwFSaVglfHNLfLasEziAr20A7eyWP1rHEsgUrNfmudW2/OH/AudQftMpjjOet 1mn6qPW X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) Andreas Politz writes: >>> Sure, the back-ends mostly watch directories, except for kqueue. But is >>> this behavior also intended to be propagated to the clients of >>> filenotify.el ? >> >> Yes. > > Why is that ? We've discussed this a while ago, main reason (IIRC) was to achieve same behaviour for the different libraries. I cannot find the discussion just now, likely it was in one of the bugs. The main reason was the w32notify library, which works only watching directories. Later on we've added the kqueue library, which works reliably only watching files. This breaks the unification attempt, but I don't believe we shall change the behaviour again. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 21 09:05:52 2017 Received: (at 26126) by debbugs.gnu.org; 21 Mar 2017 13:05:52 +0000 Received: from localhost ([127.0.0.1]:37325 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqJTz-0003TY-Nz for submit@debbugs.gnu.org; Tue, 21 Mar 2017 09:05:52 -0400 Received: from mout.gmx.net ([212.227.17.22]:50181) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqJTx-0003TK-PU for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 09:05:50 -0400 Received: from detlef.gmx.de ([93.209.71.173]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M0Kp7-1c2kfL3H6j-00ubuP; Tue, 21 Mar 2017 14:05:43 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> Date: Tue, 21 Mar 2017 14:05:40 +0100 Message-ID: <87bmsuixuj.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:+YS2ylWhfG1nogtH2rSgbrHVKC5/f4f4K0JsMDzDQRxlwlZSwGO QXO6rK69m1S+paYzQhZFDc1p+o+ROOaws4T+LePyj1WmUo48lly7Ty75i9yCt0y2YBFb/uh 49l+FRe9OZXYNlK+lO23G84qt/0Nrwm9+g0QzWLgZ7MLKGtwAZOpIGRGlhYgRMCpwO7XhUB LBw3QmaZVnALjqjumUFaQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:ctbkbFEEHko=:8YDu+cpVIRxynb28XJTXiw egEL/dSqvFVtdiUm9YBnc9fHZHRirArfD5vyZvVdinZCZEZCnOBoINX9h33KSsCfz+S5r1gLx LukALb1+4q7ulRdh2btrvibhF0iyW480WIWyUPKsWdjpDPkCv/lLYVtgcy83wo+YX79EK9P03 p+Kw/wGcEJs/obD1aoun4CEwlkdMKpMmvg6NC/uakbwnHGZzzb8jOxYm4HpLGm4s0kumKIoxn Mjfr03tJbUL+UN6MmUA4o1Js//1BYhC/BiuuCDfXVeze4sY1UlORHf6W9fSfg2yqnoT03Nijt TaodKNVjl2M5nXhklHWIy6x8A6G3xwgm7+gUo3VIdZO/b0qFO0vA0f2XJeg9L/3XxMYq7xCVl hd/ICdmdUTvQGW+JNqAhhzVkG6PICIqoBg9GmbX+hY95fwAlWW9rggmY5h+p9ltRG6IpISSdU GGasZWFQ6dfUo8DDZ2NlIbQc4cgbPjAY3IU3mumuZx1zAsPVLRik7oRC/nNQE+EkR/DS+8zwn U+eGtSH8XJz9n8BOgPUeALMaTNi2pkyMLML7vwHKf40tkfcurG4TZ1+Qmgg7Aes9NRmubDrJ5 DqbY0peU6zvmLtkgWNNlkGK0btddsV0Kv51wEbJtkZjer2jo6r4MFxNBJi6jclXnBOYI8UUjc 8XE3KGFY7ry0Yy6HS7fZd1xlWUeLca5vV0ASGwianpwf7xH1ycsIA2eQW2hP/xxp+naAolPYa 3b7sTmM1TdvjyhflZKSNqAsNP3FiWW5ZsdrZPfh3KcPO9ZEpxXKg6heDPhrbE6GZqlt72I+xV n62vdoi X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Andreas Politz writes: Hi Andreas, Thanks for your hard work! > I think there are two ways to fix the main problem discussed here. > > 1. Change inotify.c and make it return/receive a unique descriptor per client. > > 2. Wrap inotify's descriptor inside file-notify-add-watch, similar to > how it's currently done. This is what I was refering to as > boxing/unboxing earlier. > > The 2nd approach is problematic in the context of file-name-handler, so > I attempted to solve it the other way: Instead of a single number, use a > cons of > > (INOTIFY-DESCRIPTOR . ID) > > , which is unique across all active watches. I.e. this makes inotify > work like all the other back-ends/handler. I agree with you, that's the best choice. > Here is a first draft of a > corresponding patch, let me know what you think. I've applied the patch, and filenotify-tests.el passes all tests (except `file-notify-test04-autorevert-remote', but that's another story). So I believe it is OK to apply it to master, and see how it goes (waiting for feedback). Some comments: > diff --git a/lisp/filenotify.el b/lisp/filenotify.el > index 7eb6229976..beae94c2c2 100644 > --- a/lisp/filenotify.el > +++ b/lisp/filenotify.el > @@ -133,17 +132,11 @@ file-notify--event-cookie > ;; `inotify' returns the same descriptor when the file (directory) > ;; uses the same inode. We want to distinguish, and apply a virtual > ;; descriptor which make the difference. > -(defun file-notify--descriptor (desc file) > +(defun file-notify--descriptor (desc _file) > "Return the descriptor to be used in `file-notify-*-watch'. > For `gfilenotify' and `w32notify' it is the same descriptor as > used in the low-level file notification package." > - (if (and (natnump desc) (eq file-notify--library 'inotify)) > - (cons desc > - (and (stringp file) > - (car (assoc > - (file-name-nondirectory file) > - (gethash desc file-notify-descriptors))))) > - desc)) > + desc) In this case, we shall remove `file-notify--descriptor', and replace all calls by the `desc' argument. > @@ -408,9 +400,8 @@ file-notify-add-watch > (defun file-notify-rm-watch (descriptor) > "Remove an existing watch specified by its DESCRIPTOR. > DESCRIPTOR should be an object returned by `file-notify-add-watch'." > - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) > - (file (if (consp descriptor) (cdr descriptor))) > - (registered (gethash desc file-notify-descriptors)) > + (let* ((file nil) > + (registered (gethash descriptor file-notify-descriptors)) I'm not sure we can eliminate the `file' binding. I believe, it is needed for the kqueue library. Maybe you add a TODO comment for retesting instead. (My virtual machine running BSD is in a bad shape. I should reanimate it.) > @@ -441,9 +432,8 @@ file-notify-rm-watch > (defun file-notify-valid-p (descriptor) > "Check a watch specified by its DESCRIPTOR. > DESCRIPTOR should be an object returned by `file-notify-add-watch'." > - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) > - (file (if (consp descriptor) (cdr descriptor))) > - (registered (gethash desc file-notify-descriptors)) > + (let* ((file nil) > + (registered (gethash descriptor file-notify-descriptors)) dito. > diff --git a/src/inotify.c b/src/inotify.c > index 61ef615328..302f52225e 100644 > --- a/src/inotify.c > +++ b/src/inotify.c > +#ifdef DEBUG Please use a more specific flag, like INOTIFY_DEBUG. > Apart from that, the following is a list containing all the problems > I've found that I still think are relevant. Some of which we already > discussed earlier. > > * Don't discriminate remote handler based on the local library used. > Already discussed. In general I agree it looks like a bug. But prior removing, I would like to retest with the kqueue library. > * The value of file-notify--pending-event is reset after the first > client was processed in the outer loop in file-notify-callback, > resulting in clients watching for the same file being treated > differently. Note that this problem would be solved by not having > multiple clients per descriptor. Makes sense. > (ert-deftest file-notify-test03c-events () > "Check that rename events are propagated to all watches." > (skip-unless (file-notify--test-local-enabled)) > (unwind-protect > (progn > (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) > file-notify--test-tmpfile1 (file-notify--test-make-temp-name)) > (with-temp-file file-notify--test-tmpfile1) > (setq file-notify--test-desc (file-notify-add-watch > file-notify--test-tmpfile > '(change attribute-change) > #'file-notify--test-event-handler) > file-notify--test-desc1 (file-notify-add-watch > file-notify--test-tmpfile > '(change attribute-change) > (lambda (event) > (file-notify--test-event-handler event)))) > (file-notify--test-with-events '(renamed renamed) > (rename-file file-notify--test-tmpfile1 > file-notify--test-tmpfile)) > (file-notify-rm-watch file-notify--test-desc) > (file-notify-rm-watch file-notify--test-desc1) > (file-notify--test-cleanup-p)) > (file-notify--test-cleanup))) I'm a little bit undecided, whether we shall add this as extra test case, or whether we shall integrate it into `file-notify-test03-events'. The former might be better, but it would also mean that we shall break down `file-notify-test03-events' into smaller tests. > * inotify_add_watch internally uses a single watch per directory, which > may be shared by multiple clients (using filenotify.el). The problem > here seems to be that these clients may use different FLAGS as > argument to file-notify-add-watch. Currently, the last added client's > FLAGS become the effective mask for the underlying C-descriptor, > meaning that clients added before may not receive change or > attribute-change events if the mask was modified accordingly. I'm aware of this problem (it happens also for other libraries, I believe). No idea yet whether it is important to fix it. But maybe you add a TODO entry at the end of filenotify.el. > * It seems to me that the right word here is "unified". > > diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi > index 9b6752c5e1..4f7d47305f 100644 > --- a/doc/lispref/os.texi > +++ b/doc/lispref/os.texi > @@ -2707,7 +2707,7 @@ File Notifications > > Since all these libraries emit different events on notified file > changes, there is the Emacs library @code{filenotify} which provides a > -unique interface. > +unified interface. > > @defun file-notify-add-watch file flags callback > Add a watch for filesystem events pertaining to @var{file}. This My English is not good enough to decide what's better. But I don't object if you want to change. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 21 11:06:45 2017 Received: (at 26126) by debbugs.gnu.org; 21 Mar 2017 15:06:45 +0000 Received: from localhost ([127.0.0.1]:38092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqLMy-0006RT-Qs for submit@debbugs.gnu.org; Tue, 21 Mar 2017 11:06:45 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:45029) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqLMw-0006RE-B4 for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 11:06:43 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (unknown [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 30BC3179B384; Tue, 21 Mar 2017 16:06:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490108783; bh=u/QkFz5/glB0lwYaSKvLifvGYXM=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=hsAUYYvjosYOvqQePntmTWLXqpJlpRctVRVvDI6DiWNeD5nwfZ/buSp6+AWK3yfYJ s7qzpmGuXIaLvvJk/kcuMphu8kazqzwUJH2EUVDeB7rtYeFEJJeGVnectbOA3mhBiO niE2ox43uFmmm9vdOTeZZvXff5Eyfk2TpXlqMWSU= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> Date: Tue, 21 Mar 2017 16:06:22 +0100 In-Reply-To: <87bmsuixuj.fsf@detlef> (Michael Albinus's message of "Tue, 21 Mar 2017 14:05:40 +0100") Message-ID: <87efxqmzyp.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: >> 1. Change inotify.c and make it return/receive a unique descriptor per client. > > I agree with you, that's the best choice. > Ok. >> Here is a first draft of a >> corresponding patch, let me know what you think. > > I've applied the patch, and filenotify-tests.el passes all tests > (except `file-notify-test04-autorevert-remote', but that's another > story). So I believe it is OK to apply it to master, and see how it goes > (waiting for feedback). Let me work on this a little more. I think, I'm not removing the descriptors in inotify.c correctly. > > Some comments: > >> diff --git a/lisp/filenotify.el b/lisp/filenotify.el >> -(defun file-notify--descriptor (desc file) >> +(defun file-notify--descriptor (desc _file) > In this case, we shall remove `file-notify--descriptor', and replace all > calls by the `desc' argument. Yes, and since (with the patch added) we now have a one-to-one relation between clients and descriptors across all implementations, we could also simplify the hash values. >> @@ -408,9 +400,8 @@ file-notify-add-watch >> (defun file-notify-rm-watch (descriptor) >> "Remove an existing watch specified by its DESCRIPTOR. >> DESCRIPTOR should be an object returned by `file-notify-add-watch'." >> - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) >> - (file (if (consp descriptor) (cdr descriptor))) >> - (registered (gethash desc file-notify-descriptors)) >> + (let* ((file nil) >> + (registered (gethash descriptor file-notify-descriptors)) > > I'm not sure we can eliminate the `file' binding. I believe, it is > needed for the kqueue library. Maybe you add a TODO comment for > retesting instead. Shouldn't be, since kqueue, w32notify and gfilenotify all return a pointer wrapped in a Lisp-Integer, i.e. for these back-ends the file value was already nil all the time. > (My virtual machine running BSD is in a bad shape. I should reanimate > it.) We should have a server, doing this sort of thing. >> diff --git a/src/inotify.c b/src/inotify.c >> index 61ef615328..302f52225e 100644 >> --- a/src/inotify.c >> +++ b/src/inotify.c >> +#ifdef DEBUG > > Please use a more specific flag, like INOTIFY_DEBUG. Will do. >> (ert-deftest file-notify-test03c-events () [...] > I'm a little bit undecided, whether we shall add this as extra test > case, or whether we shall integrate it into > `file-notify-test03-events'. The former might be better, but it would > also mean that we shall break down `file-notify-test03-events' into > smaller tests. I think it would be better to split those tests into smaller units. For once it makes it easier to determine which should-form actually failed. And secondly, it makes it easier to add a new test (especially for people not to familiar with the code), without being anxious about interfering with existing ones. >> * inotify_add_watch internally uses a single watch per directory, which >> may be shared by multiple clients (using filenotify.el). The problem >> here seems to be that these clients may use different FLAGS as >> argument to file-notify-add-watch. Currently, the last added client's >> FLAGS become the effective mask for the underlying C-descriptor, >> meaning that clients added before may not receive change or >> attribute-change events if the mask was modified accordingly. > > I'm aware of this problem (it happens also for other libraries, I > believe). No idea yet whether it is important to fix it. But maybe you > add a TODO entry at the end of filenotify.el. I think, it is important. For example, auto-revert's file-notify mechanism (using '(change attribute-change) as flags) would break, if some other package decides to watch the same file, but for attribute-changes only. It seems to me that this only affects inotify, since all other back-ends return a newly created descriptor, but I haven't explicitly checked this. > >> * It seems to me that the right word here is "unified". >> Since all these libraries emit different events on notified file >> changes, there is the Emacs library @code{filenotify} which provides a >> -unique interface. >> +unified interface. > My English is not good enough to decide what's better. But I don't > object if you want to change. I would translate it in this context as "einzigartig" vs. "vereinheitlicht". Native speakers to the rescue ! -ap From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 21 11:38:08 2017 Received: (at 26126) by debbugs.gnu.org; 21 Mar 2017 15:38:08 +0000 Received: from localhost ([127.0.0.1]:38131 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqLrL-0007Dq-W4 for submit@debbugs.gnu.org; Tue, 21 Mar 2017 11:38:08 -0400 Received: from eggs.gnu.org ([208.118.235.92]:41577) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqLrK-0007DJ-Uy for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 11:38:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cqLrC-0003zF-UG for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 11:38:01 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55899) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cqLrC-0003zB-Qo; Tue, 21 Mar 2017 11:37:58 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2371 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cqLrC-0002Fl-41; Tue, 21 Mar 2017 11:37:58 -0400 Date: Tue, 21 Mar 2017 17:37:46 +0200 Message-Id: <838tnywshh.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus In-reply-to: <871strm323.fsf@detlef> (message from Michael Albinus on Tue, 21 Mar 2017 09:44:52 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Michael Albinus > Date: Tue, 21 Mar 2017 09:44:52 +0100 > Cc: 26126@debbugs.gnu.org > > Andreas Politz writes: > > >>> Sure, the back-ends mostly watch directories, except for kqueue. But is > >>> this behavior also intended to be propagated to the clients of > >>> filenotify.el ? > >> > >> Yes. > > > > Why is that ? > > We've discussed this a while ago, main reason (IIRC) was to achieve > same behaviour for the different libraries. That discussion was about local notifications, where indeed the situation is like you describe. But Andreas asks about calling remote handlers, about which we by definition know much less. In that context, it might indeed make sense to pass the file, not its parent directory, because the handler can easily reconstruct the parent directory if that's what it needs. By contrast, there's no way for the handler to intuit the file which was stripped. WDYT? From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 21 11:54:54 2017 Received: (at 26126) by debbugs.gnu.org; 21 Mar 2017 15:54:54 +0000 Received: from localhost ([127.0.0.1]:38151 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqM7a-0007cs-Bu for submit@debbugs.gnu.org; Tue, 21 Mar 2017 11:54:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:50818) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqM7Y-0007cf-J4 for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 11:54:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cqM7P-00035s-Fw for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 11:54:47 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:56341) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cqM7P-00035k-C2; Tue, 21 Mar 2017 11:54:43 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2383 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cqM7O-0004A1-Ke; Tue, 21 Mar 2017 11:54:43 -0400 Date: Tue, 21 Mar 2017 17:54:30 +0200 Message-Id: <8360j2wrpl.fsf@gnu.org> From: Eli Zaretskii To: Andreas Politz In-reply-to: <87efxqmzyp.fsf@luca> (message from Andreas Politz on Tue, 21 Mar 2017 16:06:22 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, michael.albinus@gmx.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Andreas Politz > Date: Tue, 21 Mar 2017 16:06:22 +0100 > Cc: 26126@debbugs.gnu.org > > >> * It seems to me that the right word here is "unified". > > >> Since all these libraries emit different events on notified file > >> changes, there is the Emacs library @code{filenotify} which provides a > >> -unique interface. > >> +unified interface. > > > My English is not good enough to decide what's better. But I don't > > object if you want to change. > > I would translate it in this context as "einzigartig" > vs. "vereinheitlicht". Native speakers to the rescue ! I'm not a native speaker of English, but "unified" is the correct word here. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 21 11:57:04 2017 Received: (at 26126) by debbugs.gnu.org; 21 Mar 2017 15:57:04 +0000 Received: from localhost ([127.0.0.1]:38159 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqM9g-0007gY-2b for submit@debbugs.gnu.org; Tue, 21 Mar 2017 11:57:04 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:49420) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqM9d-0007g4-Vb for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 11:57:02 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (unknown [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id DDA5B17999DA; Tue, 21 Mar 2017 16:56:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490111803; bh=JtI5ZuobutaaKOf1IXRQgPa3WZU=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=BpLdKeI+JktQ/fvtOWFbzULe/NPTDbYM4gFOSSVHHyzMqM8K+QSisTdN7DHXFyom/ TaiM5AKtdz+xsSypR3DO6HuhWgeB+fDdZ+97wwdmTSP1NFAd6Z2UwKBXSl7EDV+4th Cnv6yyT5hphXmgEAGWpL9VMSeuOLptQNCoa4R2HM= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> Date: Tue, 21 Mar 2017 16:56:42 +0100 In-Reply-To: <871strm323.fsf@detlef> (Michael Albinus's message of "Tue, 21 Mar 2017 09:44:52 +0100") Message-ID: <8760j2mxmt.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: > >>>> Sure, the back-ends mostly watch directories, except for kqueue. But is >>>> this behavior also intended to be propagated to the clients of >>>> filenotify.el ? > We've discussed this a while ago, main reason (IIRC) was to achieve > same behaviour for the different libraries. > > I cannot find the discussion just now, likely it was in one of the > bugs. The main reason was the w32notify library, which works only > watching directories. > > Later on we've added the kqueue library, which works reliably only > watching files. This breaks the unification attempt, but I don't believe > we shall change the behaviour again. Ok, I try to find it, but note that this behavior was introduced with the following (kqueue-only) commit commit 7bf54d01159eb09bae3c9cd86f2af0812d9afdf6 Author: Michael Albinus Date: Fri Jan 22 19:56:09 2016 +0100 Backport kqueue integration from master Maybe we can work on unifying the behavior across back-ends at a later time, while taking some pointers from other projects, e.g. https://github.com/emcrisostomo/fswatch . If it stays this way, it should probably be documented. -ap From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 21 15:00:19 2017 Received: (at 26126) by debbugs.gnu.org; 21 Mar 2017 19:00:19 +0000 Received: from localhost ([127.0.0.1]:38271 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqP11-0003lF-HD for submit@debbugs.gnu.org; Tue, 21 Mar 2017 15:00:19 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:33554) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqP10-0003ky-2o for 26126@debbugs.gnu.org; Tue, 21 Mar 2017 15:00:18 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 617FD179AE90; Tue, 21 Mar 2017 19:59:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490122798; bh=Sucyz7wUGt6eprz/k1bkMuDp49w=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=E+OBxSLfQixyaZWbxoklphmzFeZPtQutyclJ62mzi6kH26rJWpdbbv0ZTubvMEvS9 jaSIUlYwaUHGOv4tjOMgLOhH0/fMnxxJBV9PvHtnFgKsErOdg980cgv42PcqdSI3bu 1S2AHWooUe5Ue8MkASl0wmfglnlUd+GPIoGC3JFs= From: Andreas Politz To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> Date: Tue, 21 Mar 2017 19:59:57 +0100 In-Reply-To: <838tnywshh.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 21 Mar 2017 17:37:46 +0200") Message-ID: <871stqmp5e.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, Michael Albinus X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Eli Zaretskii writes: > But Andreas asks about calling remote handlers, about which we by > definition know much less. In that context, it might indeed make > sense to pass the file, not its parent directory, because the handler > can easily reconstruct the parent directory if that's what it needs. > By contrast, there's no way for the handler to intuit the file which > was stripped. > > WDYT? Actually, I was talking about both aspects and incidentally, in this context about the other one. I refer to packages using filenotify.el as clients. But, yes, what you're expressing, is what I was trying to get at before. -ap From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 08:57:02 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 12:57:03 +0000 Received: from localhost ([127.0.0.1]:38771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqfp0-0006df-HP for submit@debbugs.gnu.org; Wed, 22 Mar 2017 08:57:02 -0400 Received: from mout.gmx.net ([212.227.17.21]:57362) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqfox-0006dC-U1 for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 08:57:00 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MGXV6-1cv1PQ1bAu-00DEdg; Wed, 22 Mar 2017 13:56:52 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <8760j2mxmt.fsf@luca> Date: Wed, 22 Mar 2017 13:56:50 +0100 In-Reply-To: <8760j2mxmt.fsf@luca> (Andreas Politz's message of "Tue, 21 Mar 2017 16:56:42 +0100") Message-ID: <87fui54gh9.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:HxAXANQLIFNEmkc+kzGtRrv5XkJk2lo+m+jNS+xXuurgZo0tpNf HaGSWFPRLdp7+b9nVDLmljY3WMHmG/dK2bkMOJGUpawGUsk7Zh/md3LsDmdmNsxvae2EU29 b6tdh2fhFhVzWqAgcEIPJNxpi5Mv2S0Q2q/JKZTCU5y1BcUxX13Ltmmw/AWcKCvhzBbiSF4 NQswyIb6PxqRtr/2rcqhw== X-UI-Out-Filterresults: notjunk:1;V01:K0:c1my89UyvgY=:LJyzoy0XANZz8tkzbnK5TY SJb8t0DpmIW8l8I/ZcvCszxcyxcJKg+IZRpnfYdp2ZPDqoWG10QIga+11Zlu6iBLC7k91axVK ZUoTamXQx3UUDf1dncE2LldixqmTu9uBc4C58RLNM7PTwol/1z0mrp6eTsYv+eI6tk6OherAW 1ZwE+oEOUPxnO2zjvLkUNweCbMIO/G732dbVxwz3rpxC2/pZaja2bO5irp8T84dIxe98OB+r/ hvB59smZjfNN8ySh+10CgjbI6uVkEIb6y06icNN5pEO1yciox4ANI6cVYny1UkVsf5H3deJX7 cqtvIUg/RH2qaDSFrrZYm9LB36kw2/Rk9MQxmdL2cgdfJxGo1x9ulKe9HbsMObeJFSN7CSyfE /UT5Gljl/d1k/HyzbLMBvaPK/8fkK50d73EZAkXl4pglhqPPVkAl949xLGL3obOAeHcwF2hUc xBobAQfLTVBsPQtOXIUjf5eD/Yc2B0gi6GzMUzeGK/xiuk0UcOddhD9ZXu9Hw0dp55FbIFilX BAWAI8gSdwLL4M544VkRQIlfmZC62t04OSCvPew5B95l3x949Xg1POVLBwR211/f5sCNtKNhD CR0OMkGhKWJ2gKZT89iYel0IHLq31yJcsoX7RwNzZsL3lGYo9YcOQrVan7eBlRZyGkTV+CMKS o9hky52mHB1VI/03ZLtZ/LYRYivF1hkKnwFi7vVGPoxSBbbsWhaFFATPDEl1YgdGPZxn5rPEu /gS050moR+PV3m64gI/SOkRhha9iObV6ZincnG2TUBw49j+NVGZt1Tg2JFYR/vHAMLs45I6U4 XEBuB3B X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: Hi Andreas, >> Later on we've added the kqueue library, which works reliably only >> watching files. This breaks the unification attempt, but I don't believe >> we shall change the behaviour again. > > Ok, I try to find it, but note that this behavior was introduced with > the following (kqueue-only) commit > > commit 7bf54d01159eb09bae3c9cd86f2af0812d9afdf6 > Author: Michael Albinus > Date: Fri Jan 22 19:56:09 2016 +0100 > > Backport kqueue integration from master My FreeBSD 10 VM has been reanimated. Last time I've used it was June 2016, so everything is dusty there. As time permits, I'll check the kqueue vs remote handlers status. > Maybe we can work on unifying the behavior across back-ends at a later > time, while taking some pointers from other projects, e.g. > https://github.com/emcrisostomo/fswatch . Looks interesting, but I have no idea about its state. Last commit is from 23 Jul 2016; is it still maintained actively? A similar approach like fswatch is the already integrated gfilenotify library. Honestly, this is the most problematic backend. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 09:17:21 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 13:17:21 +0000 Received: from localhost ([127.0.0.1]:38782 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqg8f-00079I-It for submit@debbugs.gnu.org; Wed, 22 Mar 2017 09:17:21 -0400 Received: from mout.gmx.net ([212.227.17.21]:62750) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqg8d-000795-Ob for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 09:17:20 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M34eJ-1c0mVT1BF1-00swvB; Wed, 22 Mar 2017 14:17:12 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> Date: Wed, 22 Mar 2017 14:17:10 +0100 In-Reply-To: <87efxqmzyp.fsf@luca> (Andreas Politz's message of "Tue, 21 Mar 2017 16:06:22 +0100") Message-ID: <877f3h4fjd.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:Q6uRgj7gPvHaT8qusRxWYiassgsf2Y6uM4jHaoaH4TUT8/OBegn NDL8Q6MSPhEOxBIJX03RLCdrOWGFdmyp+67qpPhF6r8aR+APUO/X0+qUiKt6W1DKBH2FWnH 74rIwHPgPyLxnho5xzXqqiM7YPQXdDwrPz9doGjBEMDop60Yh2l5AeF5L6EAYQIa2ukm/fe ZUURp8dAxHKDKhvAHDUVA== X-UI-Out-Filterresults: notjunk:1;V01:K0:/aOgZmbN7bI=:n/aeQ+qPa+DndzQKkFdCrY 05XKAEkBac1SwXywGiqJQrc0A6uiKLhLp9L7BwZ1o+sIcQ2ylnf8mkaGxYWsLRV8CfkRPmfvg 4yVzcz3GBKtqnFO9WHuHB/TkL0lNZdViicMbNNkoVgp5Smoy92NruQWXQCSZM03T99o3apsVs RCVwgjDth17VvA5CrxinUyuFCafuJNpcY8RHyLsBrs8Vfs2SZ9AI2Ygw2PtlpguSN7NjN+mQO naN+pg70Asa2ocsovCmfYSz/fCq7s/I6wepjYrgfhNoiQUqM2NoZEpSxxWMeKiaFoXZrGyn1a 2ID1CNYUUNOE8rnn5ZiLRPsxt6X476QK724jwGBuyMBttMjh6ZECRT70oIpVHrPZKM8B6JBmE tYXbGbOxBK2wQhoRZ/QOUmc0qHsoe+ewlLtxfO8vIhS0/xXcHogIU/7vzIQgIF2tFCr7Eq68G NQXzDten6DoFy2AP80LLdHqZFb4H/MPYvzwR7ybHSiK9XmkqDNX9Ck1okbpDyQuBnaAMc6QJp S4tuqSgwF8iIA0LU7tXTJbmhcZMrDDyDmrbNjMRo3Z/nG+lUG1+x7VRQcIt6Y4m5sWuTZ0aZV JNgnuIGCp7VMPdU6h17nqFOyiQ5wJlfye0tCGAVQHnFa6zSUb7irXp7UQ+qmbTtv7jiqB2DTG Buz82Hlv0ov8zGV+QMlWHYR3uFdTiK/RVRgZL4Ig4vzeUHSlsE+Cz2PXCEB3CmSYI4KisGE20 QbUe13zjS2UWfmuYg/F+0ylRQnO9I3OKkxGNasYoW8bJFI2wehnY6Py2VoeJhrEMjcLl54G3C uuW2dws X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: Hi Andreas, >> I've applied the patch, and filenotify-tests.el passes all tests >> (except `file-notify-test04-autorevert-remote', but that's another >> story). So I believe it is OK to apply it to master, and see how it goes >> (waiting for feedback). > > Let me work on this a little more. I think, I'm not removing the > descriptors in inotify.c correctly. OK. Take your time. >> I'm not sure we can eliminate the `file' binding. I believe, it is >> needed for the kqueue library. Maybe you add a TODO comment for >> retesting instead. > > Shouldn't be, since kqueue, w32notify and gfilenotify all return a > pointer wrapped in a Lisp-Integer, i.e. for these back-ends the file > value was already nil all the time. We shall recheck, once your changed inotify implementation has hit the repo. >> I'm a little bit undecided, whether we shall add this as extra test >> case, or whether we shall integrate it into >> `file-notify-test03-events'. The former might be better, but it would >> also mean that we shall break down `file-notify-test03-events' into >> smaller tests. > > I think it would be better to split those tests into smaller units. For > once it makes it easier to determine which should-form actually failed. > And secondly, it makes it easier to add a new test (especially for > people not to familiar with the code), without being anxious about > interfering with existing ones. Likely yes. I have the same feeling, but haven't done due to lack of energy and time. For the time being, I have added a modified version of your test removing watch descriptors out of order to `file-notify-test02-rm-watch'. Since this fails for inotify, I've added an :expected-result tag to this test. Can be removed, when fixed in inotify.c. >>> * inotify_add_watch internally uses a single watch per directory, which >>> may be shared by multiple clients (using filenotify.el). The problem >>> here seems to be that these clients may use different FLAGS as >>> argument to file-notify-add-watch. Currently, the last added client's >>> FLAGS become the effective mask for the underlying C-descriptor, >>> meaning that clients added before may not receive change or >>> attribute-change events if the mask was modified accordingly. >> >> I'm aware of this problem (it happens also for other libraries, I >> believe). No idea yet whether it is important to fix it. But maybe you >> add a TODO entry at the end of filenotify.el. > > I think, it is important. For example, auto-revert's file-notify > mechanism (using '(change attribute-change) as flags) would break, if > some other package decides to watch the same file, but for > attribute-changes only. > > It seems to me that this only affects inotify, since all other back-ends > return a newly created descriptor, but I haven't explicitly checked > this. So I would let it for you to implement it in inotify.c. When there is also a respective test, we will see whether it is a problem for other backends, too. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 09:23:58 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 13:23:58 +0000 Received: from localhost ([127.0.0.1]:38786 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqgF4-0007J4-CC for submit@debbugs.gnu.org; Wed, 22 Mar 2017 09:23:58 -0400 Received: from mout.gmx.net ([212.227.15.18]:59671) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqgF2-0007Ip-0o for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 09:23:56 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LyEJp-1c5gDh41rx-015aJU; Wed, 22 Mar 2017 14:23:49 +0100 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> Date: Wed, 22 Mar 2017 14:23:47 +0100 In-Reply-To: <838tnywshh.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 21 Mar 2017 17:37:46 +0200") Message-ID: <8737e54f8c.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:2PrCsaw/kwwJ0Pm+PUKXA+TbJqQZsDfT4yum94UC+VikwVBzOwm NBQzm6XC64e+8qNOg2fKZOlq4IzdtjXq0QNhOdxHcGBolsN3XH9z8L3UrGO/qfMmG6N+6JY no0aYKVKJyfiTJiZbqEt0P50GD3Xx2XUqUdBQxRjbHc8pTdZ62WoH2Vy9G4t34OE3hNAhcQ TP+7ZzIpF6yHu+FYqZR1A== X-UI-Out-Filterresults: notjunk:1;V01:K0:/y4R+vT2fYo=:N9uXmBiNrzIAcYP1dFXvRN WCW1FXhD+pp3OKNqHkj6Jwq8BjRhvoFHUTntM5d+RO8asDuErJ+izC9nENrQoKFFB+gMx17hE Ldb0Z+7fi0WCGzZo8y/Lz+pcDVrrIImmJ1PZnF/kQfXYjibklQugJxHUeWUc5qVCqLcAZ420s omuEGuvA9sqW6B/QHEFb45DXamVOfEcx6j4WuG5guKpYXgyyds8ylH7l9kctPSdhqXbfLcmIJ xSsxD7Pw23jttnB0/nQa+ymkAaIXbzLcTGofBej2iPMooVO8g7yFDx/aB2MzoLPlbaVTJkfeS GEvc/iAsN8dh3uWqBJdrSUl4k9oymNrUFqkYwUUwcy9ALtcjflQlaoVco2b1DXAHikoenbGQV 0uOQPTB2A0+p+hscT+acuHavSUV+sFNOfPJHi1fkb7kxsDvj+P2/zOqmOe6C29Z8QNOZZZFRB lQ+3vYBbjPQg2KXnUrjSyVpQ6s79YeCo+QUbxyxH6fA7IBSr+16s8M+yVXwX5pb7X9QK5kH8S 5vkTYC2EKzJKhl9n9VTdEtYrOSPdIWfk8N7cpSnAzIlQVGyEoW2bRtMchvJ8qwQ/tPZ3sqqeW YxFy1r0I0c6I/91zs/rzwabJge6IcuNZynKBWCCJfqAB55SR2gv+1HhqYQmCJrZwrgESqT2nt pr8SK5O68aq4wNZDMeeMleRzsRHzSh9hhObhD3cTGOAcJprVYPswMlaUKRaZE2w8Ai9Nujscj aSq42SacymWuO5yh3M9mb4mPnbR6MYB2jPO86LSjzyzXhRmR8wMRSjrOSuf9Jlyt504JkXTia tvR+7YN X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) Eli Zaretskii writes: >> We've discussed this a while ago, main reason (IIRC) was to achieve >> same behaviour for the different libraries. > > That discussion was about local notifications, where indeed the > situation is like you describe. > > But Andreas asks about calling remote handlers, about which we by > definition know much less. Nope. We know exactly which remote handlers are called, and how they behave. Do you expect other implementations of remote handlers? I don't, because I'm not aware of other candidates but inotifywait and gvfs-monitor-dir. > In that context, it might indeed make sense to pass the file, not its > parent directory, because the handler can easily reconstruct the > parent directory if that's what it needs. By contrast, there's no way > for the handler to intuit the file which was stripped. > > WDYT? I still don't understand what's the difference between local and remote events in your eyes. I've tried to implement remote handlers to behave exactly like the local ones. That's the Tramp philosophy. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 11:45:09 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 15:45:09 +0000 Received: from localhost ([127.0.0.1]:39589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqiRh-0004CM-2U for submit@debbugs.gnu.org; Wed, 22 Mar 2017 11:45:09 -0400 Received: from eggs.gnu.org ([208.118.235.92]:38058) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqiRe-0004Bn-Pk for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 11:45:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cqiRW-0000pK-SH for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 11:45:01 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46237) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cqiRW-0000pG-P4; Wed, 22 Mar 2017 11:44:58 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1173 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cqiRV-0000wU-W5; Wed, 22 Mar 2017 11:44:58 -0400 Date: Wed, 22 Mar 2017 17:44:55 +0200 Message-Id: <838tnx71u0.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus In-reply-to: <8737e54f8c.fsf@detlef> (message from Michael Albinus on Wed, 22 Mar 2017 14:23:47 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Michael Albinus > Cc: politza@hochschule-trier.de, 26126@debbugs.gnu.org > Date: Wed, 22 Mar 2017 14:23:47 +0100 > > > But Andreas asks about calling remote handlers, about which we by > > definition know much less. > > Nope. We know exactly which remote handlers are called, and how they > behave. We know that about our handlers, yes. But that doesn't have to be the end of the story. Emacs is extensible. > Do you expect other implementations of remote handlers? Yes, why not? It's much easier to do that in Lisp than in C, where the local handlers should be implemented. > > In that context, it might indeed make sense to pass the file, not its > > parent directory, because the handler can easily reconstruct the > > parent directory if that's what it needs. By contrast, there's no way > > for the handler to intuit the file which was stripped. > > > > WDYT? > > I still don't understand what's the difference between local and remote > events in your eyes. See above. Admittedly, this is a minor point, so not worth arguing if you disagree with my POV. > I've tried to implement remote handlers to behave exactly like the > local ones. That's the Tramp philosophy. Right, but in this case there are 2 flavors of local handlers, and the question is on which of them to model the remote ones. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 12:01:23 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 16:01:23 +0000 Received: from localhost ([127.0.0.1]:39595 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqihP-0004aH-KJ for submit@debbugs.gnu.org; Wed, 22 Mar 2017 12:01:23 -0400 Received: from mout.gmx.net ([212.227.17.21]:52163) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqihO-0004a3-Kt for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 12:01:23 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LdLw5-1cQUZ92b4b-00iRgm; Wed, 22 Mar 2017 17:01:14 +0100 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> Date: Wed, 22 Mar 2017 17:01:13 +0100 In-Reply-To: <838tnx71u0.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 22 Mar 2017 17:44:55 +0200") Message-ID: <87y3vx2tdi.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:3nIAL28m0vq4PUPOOm+/mPybQBSy+UsDeiTdz1PdnM42BXufR/a Dbo3OjHVRdK4FZUPB+Um79nu0Qa0SGMNAUqp4+3UF9kCXm7rMlqeUvwtcK/QHOfVW1hcmYZ nxMO2CJI1q8cEC6QJGBvz3ITYI+1qma1thiOPqNyiKO1CXNA8ROydHycXo91bzZlXNkJgVl jwqdWJuiEgyHaYkrPJVrA== X-UI-Out-Filterresults: notjunk:1;V01:K0:VGBuKDHJ76k=:s+uIQRMNGeBuLdYAhd6eGF vNO7c9xHwbN09WL/iz0UbXnWNm7q+B8Fyr0d00nU/VRNmKNtO64PUEgRn/ex8Ml4GTLfyWnWs 3PRdoWLabFk8PAeTOBfTnMkEclcv05wxx0f6Q0l8/VUcvbHivsGs6Qwk+Z21zlBQvF+as6hUk FFvkwLNX/vdOTLT4JCSWbFEqX2L3YWJ7nlXXnSAs78k4ecxq/N/G+IRkAdj1npgDx0whDm36E 7wMlrspyFSAHxfC6Fz6u1EDL1qRkZQoU1elEsDXlxKmAoe9mgddXqPnX6EOzhMd+AowOvBgnf oBF8Rw8/TL0qY5F7Ol6f3xVzOOriH1NlgJxAeImrlafY9Mwg4gwDNs4z3OyYiCy+AEIHI5CGZ ad5gh5/z7pVDeobXVElSqJMwr6RYMMpZHdmYYTMwggiigINzDgGDB5uT9SOVwddfzjXT31ofA l1L/yu21ugHu/klolcc8kgb7Sq+oJcvMsdcgQYUAlI++QFW0RuU+3Cn0e4pbvtqUOnW0atte5 ogIOjXHqqDyNoghoPQ0pf0nrn28ON54fWWkYAey/4/kSAsAf1T06rXGo6aK/OtYSoQDmI96HQ MZ1FqPG+qG8sO6/Z4AM5YDVInTKp5NThgRTdGhH/MTwiPZAwTp1XUY2tLVv1NZMSQ00cj6a8P M0DKXSJc7fEec0xbzmtuKIMRd2VVOKORHgXbdJsIV+QMZRdI1vqY4nd3MrKeG4+racEFvBxpf L37NXLA5x8WfEHNmybjnTZmjEvNV+PwJuXFCnAydNRk4kyWwJOn7EE5fC4sHH5ughSxpJ33pU wp1McGI X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Eli Zaretskii writes: >> I've tried to implement remote handlers to behave exactly like the >> local ones. That's the Tramp philosophy. > > Right, but in this case there are 2 flavors of local handlers, and the > question is on which of them to model the remote ones. IIRC, it was driven by you to let all handlers behave like directory monitors. The kqueue case came later, and it is the only exception as of today. II also RC, there was the idea to offer another function, which returns the type of a monitor, being a file monitor or a directory monitor. This idea was given up after all monitors were forced to behave like a directory monitor; prior the existence of kqueue. Maybe we shall rethink about this idea? Is this of practical use? Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 12:13:32 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 16:13:32 +0000 Received: from localhost ([127.0.0.1]:39626 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqitA-0004s6-8j for submit@debbugs.gnu.org; Wed, 22 Mar 2017 12:13:32 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49371) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqit9-0004rv-Ib for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 12:13:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cqit0-0006XO-BI for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 12:13:26 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46803) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cqit0-0006XF-81; Wed, 22 Mar 2017 12:13:22 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1200 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cqisz-0002TF-G9; Wed, 22 Mar 2017 12:13:21 -0400 Date: Wed, 22 Mar 2017 18:13:19 +0200 Message-Id: <83wpbh5ly8.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus In-reply-to: <87y3vx2tdi.fsf@detlef> (message from Michael Albinus on Wed, 22 Mar 2017 17:01:13 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87y3vx2tdi.fsf@detlef> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Michael Albinus > Cc: politza@hochschule-trier.de, 26126@debbugs.gnu.org > Date: Wed, 22 Mar 2017 17:01:13 +0100 > > Eli Zaretskii writes: > > >> I've tried to implement remote handlers to behave exactly like the > >> local ones. That's the Tramp philosophy. > > > > Right, but in this case there are 2 flavors of local handlers, and the > > question is on which of them to model the remote ones. > > IIRC, it was driven by you to let all handlers behave like directory > monitors. Yes, that's right. But I was surely only thinking about local handlers. > II also RC, there was the idea to offer another function, which returns > the type of a monitor, being a file monitor or a directory monitor. This > idea was given up after all monitors were forced to behave like a > directory monitor; prior the existence of kqueue. Maybe we shall rethink > about this idea? Is this of practical use? I wouldn't start working on this before there's a real need. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 12:24:09 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 16:24:09 +0000 Received: from localhost ([127.0.0.1]:39634 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqj3R-00058C-IH for submit@debbugs.gnu.org; Wed, 22 Mar 2017 12:24:09 -0400 Received: from mout.gmx.net ([212.227.17.20]:50686) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqj3Q-00057z-8b for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 12:24:08 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MTfZc-1chxdv42lM-00QVUF; Wed, 22 Mar 2017 17:24:00 +0100 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87y3vx2tdi.fsf@detlef> <83wpbh5ly8.fsf@gnu.org> Date: Wed, 22 Mar 2017 17:23:58 +0100 In-Reply-To: <83wpbh5ly8.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 22 Mar 2017 18:13:19 +0200") Message-ID: <87tw6l2sbl.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:FzanV2fMasnBmvrkWOzkFR5YnFf/G+mkdn6sWSCwnrhfUszQu8Q Oi6Rc310S3vde6K+3Psv9JH6Zb41IcPeFKMKLICFx+BNtWniwBS2ED2nlkWTrzjD33xRizp tX94jAEFRAy0+AHtGQ4+VMwLvoqemQcskj+KiBiXVNgH6FI7EVyR7W9Z3WG4IxSq/IDsHlK 7643eU2k4uNBpVRSEJbVg== X-UI-Out-Filterresults: notjunk:1;V01:K0:3Sf5E0uec2s=:nCi6cS0NPRQ54cj548lLgt Ioqrf5nKAszMRShUKTuUdZgrXjXb1t4eMpdm5wb6tPZ0BmFwUtKeNgnBAGnqt1MkHRsa/cXCA AYn6G/XH+cxmxsOvjaVKSepy/xHGCYAkGwHYtpG9fR52MM+sgSzQW2yxCYzkX488NbhYP/MLj ZbFMoGRJYX9tCBMwIjBn19deWNTguydJZXI1EYyu156IYe2DDbNhYBWPqkuWNLeWx4rSOW+Cg 3nBjfKOmgG6h7FHuE7gRqPXjC1pxKjjikkcP4D/JBYDW2R6/+ApKoJhSfXnLICp1wW7eCRLzs rO+2RjX5/9aVuRIeL7nLY8w32cS5pMw4HSGrGBiPzvIuS/eCf4hMW/TaJAMuJJlt4AyzsUCYB Xz4ujPeQSwyqF/tLvi/1mOuSvlcJBR9NcqyDpt8JlZGJiFg9yAslKYYpqzbhX+gb+BmtKg1PE pTa2IHLhcKI/EJhM3a8GKA7L6npztxQKpvhYeCjqqFmx4LPW3uJg0MipA12fAzM+X6eaDcbVS RGlsnadFwxrPzZeUESyVvu1vDyZ0q8TcGp8Xla2OpdTJGxOWJ2MJvOOJQfWTuBVUJuiBlyy1a DwKNU7qkl66aI+JyrFbVu4o2rPUOydQfXTWQ9uXwCLmyk3rrcaLTTjTFsY/KdxiUk556+5Pi1 Zu+kQLXNYHUYiV3aQhSvR8EdACmNL+RcWY+D6phQmlzYDuese6aWyj4POZnVzJXSrbFGxHTQD RJB2MNj+srhdAcqBOXYbjKU3PO+VTSajuj19SHC3+d2IHLoQ9RF2TWEerI8qDUe2+L2lvjOti deOsNBy X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Eli Zaretskii writes: >> II also RC, there was the idea to offer another function, which returns >> the type of a monitor, being a file monitor or a directory monitor. This >> idea was given up after all monitors were forced to behave like a >> directory monitor; prior the existence of kqueue. Maybe we shall rethink >> about this idea? Is this of practical use? > > I wouldn't start working on this before there's a real need. Agreed, until somebody shows the real need for this distinction. > Thanks. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 13:34:48 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 17:34:48 +0000 Received: from localhost ([127.0.0.1]:39699 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqk9o-0006nm-1z for submit@debbugs.gnu.org; Wed, 22 Mar 2017 13:34:48 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:48548) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqk9m-0006nX-O9 for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 13:34:47 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 747C6179B51F; Wed, 22 Mar 2017 18:34:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490204067; bh=jRncWG7b8zZmTcyC5HvL+oWa6zY=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=LZITBC6QOqSZYDV+nCxkPXjd+yaDMnoePKk6oDpD1awR5D7gWU4e5+69Zxd1T8MfR bu8uOc215VgVm7MpqoiPcBjhRhTIQVb/pLl2p19BiWQzpD7G6sXLmEwWgRxD/rfrn5 vvFnHrJexHk6uJnAlcmLEQ/iHKe7cBsYwbuYGG+0= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <8760j2mxmt.fsf@luca> <87fui54gh9.fsf@detlef> Date: Wed, 22 Mar 2017 18:34:26 +0100 In-Reply-To: <87fui54gh9.fsf@detlef> (Michael Albinus's message of "Wed, 22 Mar 2017 13:56:50 +0100") Message-ID: <87wpbhkyfx.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > A similar approach like fswatch is the already integrated gfilenotify > library. Honestly, this is the most problematic backend. In terms of "unintegratedness", i.e. does behave differently depending on the back-end used ? (I know from the tests that it may use polling every 5 secs.) -ap From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 13:43:55 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 17:43:55 +0000 Received: from localhost ([127.0.0.1]:39703 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqkIb-000701-Up for submit@debbugs.gnu.org; Wed, 22 Mar 2017 13:43:54 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:48890) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqkIZ-0006zo-L6 for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 13:43:52 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 8498A179AC95; Wed, 22 Mar 2017 18:43:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490204613; bh=87x7ob9MIqa2DY7W5JRisPj9A0g=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=g4XXfC5gw8xi4Mf5BHh0Py5QWqTvEpOEB4NhkHg19TJ10E76kR1yfIFBt1XBYFWdb RskJoJVPUjlxl8sOjB9ChkdTM4D1qviA2mP0yWkFziNPHHyolcAralvA+5pvhyPb3Q rsfSe0g6Vu8W7Gyxo59RLdgM9RfMnNRLtq37Y/8s= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> <877f3h4fjd.fsf@detlef> Date: Wed, 22 Mar 2017 18:43:33 +0100 In-Reply-To: <877f3h4fjd.fsf@detlef> (Michael Albinus's message of "Wed, 22 Mar 2017 14:17:10 +0100") Message-ID: <87shm5ky0q.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: >>>> * inotify_add_watch internally uses a single watch per directory, which >>>> may be shared by multiple clients (using filenotify.el). The problem >>>> here seems to be that these clients may use different FLAGS as >>>> argument to file-notify-add-watch. [...] > So I would let it for you to implement it in inotify.c. When there is > also a respective test, we will see whether it is a problem for other > backends, too. This touches the question whether we're operating under the assumption, that other Lisp-code (apart from filenotify.el) may freely call inotify-add-watch or not. Because if it does, this has to be handled in inotify.c. Otherwise we may handle it in filenotify.el . If I do it in inotify.c: Is it possible to store a bit-mask (of type uint32_t) in a Lisp_Object ? Since this would be the easiest make this change. -ap From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 14:49:43 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 18:49:44 +0000 Received: from localhost ([127.0.0.1]:39739 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqlKJ-00005i-No for submit@debbugs.gnu.org; Wed, 22 Mar 2017 14:49:43 -0400 Received: from mout.gmx.net ([212.227.17.21]:50417) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqlKH-00005T-Re for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 14:49:42 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MYfJW-1cczgS2af4-00VTFC; Wed, 22 Mar 2017 19:49:34 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <8760j2mxmt.fsf@luca> <87fui54gh9.fsf@detlef> <87wpbhkyfx.fsf@luca> Date: Wed, 22 Mar 2017 19:49:29 +0100 In-Reply-To: <87wpbhkyfx.fsf@luca> (Andreas Politz's message of "Wed, 22 Mar 2017 18:34:26 +0100") Message-ID: <87poh92ll2.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:sx0Up4WOx2UXHVh4xJt2vkNPHSlQpA6l8WsJPQhRwm1N0fpTfNI IFk7eE7NnHLD71uy5dY5L2u53jlhgF3JP5PwOC1qvUve5zvsSGIxvEoA4MwNwpGdFJ7YqTB 9eDjyN9avxs99a366L30mzCYHysp5PZSooLEhbkJt0Q/E7w02OakoaGJWCpJOB028XJLKpu myb5f+iaeT7HUYTayfabw== X-UI-Out-Filterresults: notjunk:1;V01:K0:aRSvaJaJzZU=:h6CqHst4AJB872zGdnOvkq znknDmEn7Ydzav24b3Eb8FOOK8Td5NkthUhIO3XQzhUt9Nt0Vv9yD9v+CWFso2h8wmRc4xgKL dQmOpM8a23C4VNP+cS9g5VEH6wLJLZL83NnGQps1HRUXvhgjuhaUARar2MquCOI92poKLu9wP r9LEVJvET3YmjbzIu/IOFu73z18C0VLrOvackveNIwFdxj9Fhp0dWr3LXMv+3UxJAtB3LR7dM luxm5TxYjyKcfGktttzDuMccUPFMchVb/Hjq4QS6BafuvGrymezjtSSPNX192UgjtNcn6u+NW ar5djf95f09mb9dQZ+bhleoWP8BvMAuVTje5EJjJMug3FjwxEQnRhcz6oLyeJeeWcD09/hChv TWXkJKTDB/AYSwl6mwFEeJ7yjt6r3ac8ReMqRA8hoDKyDcimMISsHGon24L6atAY0SoQYwX0V +oBgR2CydbnBTc5jiqZOfhoCnD3zQ9W0RHzIKBHR8f/AtDw1KjL77np4+y5jVLLYCK97HrpeA WImOmZG865Mwsvt2tZjgZ21RrSpSj9ismQPL4Qy+YUz4uA15pixsJeCgq/LMaIi/mEQ8Rm3Ad ckJ94Yu/v3wlIwgbGmfSG49ojO6U9gWVTSbdFbuH8q4hkP/dJ/vkTmneocHpyYJXWQxrX1f3/ al37GcCXpj+Sa8AVcANXVI/35q0MGPDkyBuswQa4yGBw5vELy8RjAQbfQ9E1RhDS+txuCB1dN MG1OPz9ZYfUS9JKPGC+i7qXoYm8Rvkq0np5DSWKERtYaq0fNodxOj4RrEXATacHmEMbdoqQAB W/GgrPi X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: Hi Andreas, >> A similar approach like fswatch is the already integrated gfilenotify >> library. Honestly, this is the most problematic backend. > > In terms of "unintegratedness", i.e. does behave differently depending > on the back-end used ? (I know from the tests that it may use polling > every 5 secs.) Yes, this was also a problem. Sometimes, the promised polling on mounted filesystems didn't work reliably. There were also bugs which have restricted use of gfilenotify. And there are also reservations by people, who do not want to use glib / gio infrastructure. Due to the existence of inotify and kqueue monitors in Emacs, the only major use of gfilenotify seems to be in Cygwin. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 14:57:20 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 18:57:20 +0000 Received: from localhost ([127.0.0.1]:39743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqlRg-0000GZ-H3 for submit@debbugs.gnu.org; Wed, 22 Mar 2017 14:57:20 -0400 Received: from mout.gmx.net ([212.227.15.19]:56151) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqlRd-0000GH-Ox for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 14:57:19 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LaGJa-1cT0kj15m2-00m0Be; Wed, 22 Mar 2017 19:57:11 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> <877f3h4fjd.fsf@detlef> <87shm5ky0q.fsf@luca> Date: Wed, 22 Mar 2017 19:57:10 +0100 In-Reply-To: <87shm5ky0q.fsf@luca> (Andreas Politz's message of "Wed, 22 Mar 2017 18:43:33 +0100") Message-ID: <87lgrx2l89.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:rMjYu87Wnf1ljic/ta1MrHT9GadC9XCKCur2akFhQ9RJhqY8k9s uz1QlKyd5DcyqDe3TpwQq/lva9wSuFsF0HU0IOcnE7qWDX1ucANn2HbQP1d6Z5bTZPKTH1i TMRUUZZy425YQ+/35Vhhvp66z1vPmfDmjZiW3yrlRyqEbgUiykC5/RqaxCSK+pN+sqvOxPl FEfow6fggo2IPEmmSq6pg== X-UI-Out-Filterresults: notjunk:1;V01:K0:O/SN2e2J0+A=:ehwuplcS7JXmXvXb/ZEjE/ KMTJdPKaBwmrA/sikUGeG0dLv6PfuFdxdWAlH+B+7WRdoh5sf9v/rvFbxhpOhj7ZAl6vt1PsB 806QuMh440fPC/beqQtva9wXov/UxIJPpS60PD2Fc87jAnr1uK1gM+AVUx2fNGtVQECoq/BDO 3WSJXepTGP5K3YWJ7vfcO+Mlsx4tAiMVkuU37LvJrw9yIKNjhbIas27gI+P5QsVh0CT8J4VuN dsIhdqtWMmi8QgImMej2bxiZgCWSWi1Fb2VExFAvRjeE9CO0Lp2lqq7MnHbpEzFUnu+Rp2kz+ Qf5OAJjQ6SfkasxEJZe3hbNCfYJKKglPTLhJ4/4XWiCEaNZptbNW/BHSGLyrFulYmMP6rQvHZ L1sZTGQCzt6jz9rPJsDOghSDekwi94PdmEhq53V+97Ylu/vRkHGhLjMdXt2GxKYNXWxUs2azX rfWH3Q3MAT7STTusaA7Ut7kA3nndqwtm+74rBkoWHtI7Dpdxymc5dIUqmROD9AMY0GuYLUEhO BzrlDECGiBsIPjiY+Npmib94taWHO3k8zCQfs42IcDZXPgOh6BaSrwRoeE6iXQTxH8lTPD7vI nWiTqs7fom8wA901AXhyfWooYyMMMvW5jvrbwNiupBTKnDUaNEad8N6yr2FidvUXVNsm+F+EH CcTm99nXQhVr4SqglDjnf1juj7dsAY276M58ttPOCe0+nFrExSaSc2NQH1zlp5XYYx/wJPNai t/s8tGgZlpINiePrGPB85mmLqlqNWN3r95SrWi638MTLfqbOx2vpyV1XsYt5nY2YjSDH5HCCK yAa7Uiy X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) Andreas Politz writes: Hi Andreas, > This touches the question whether we're operating under the assumption, > that other Lisp-code (apart from filenotify.el) may freely call > inotify-add-watch or not. Because if it does, this has to be handled in > inotify.c. Otherwise we may handle it in filenotify.el . It is still possible to call inotify-add-watch and companions. However, we don't force this use; the Elisp manual decribes only filenoty.el functionality. And I don't know any example people are using initofy-add-watch directly. > If I do it in inotify.c: Is it possible to store a bit-mask (of type > uint32_t) in a Lisp_Object ? Since this would be the easiest make this > change. Sure, but Emacs integers guarantee you only 30 bits. But why do you want to do this? You could map your bit mask into a complex Lisp object, a vector with 32 slots, or whatever. This makes access/manipulation in Lisp much more simple. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 15:40:42 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 19:40:42 +0000 Received: from localhost ([127.0.0.1]:39765 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqm7e-0001Il-5v for submit@debbugs.gnu.org; Wed, 22 Mar 2017 15:40:42 -0400 Received: from mout.gmx.net ([212.227.15.18]:55175) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqm7b-0001IX-U6 for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 15:40:40 -0400 Received: from detlef.gmx.de ([93.209.67.208]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M6ilI-1bwSbU48Bg-00wY1k; Wed, 22 Mar 2017 20:40:33 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> Date: Wed, 22 Mar 2017 20:40:31 +0100 In-Reply-To: <87bmsuixuj.fsf@detlef> (Michael Albinus's message of "Tue, 21 Mar 2017 14:05:40 +0100") Message-ID: <87wpbht80g.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:UM0PSj83fTQFuIkZhzh0T44O+3GzCaPmcjCD9Do0WdIqni/STTX O6eDbNyLl6jYiTAFT8UBtXHfjbqQRZMFEB2Odjx8xv06eN8gUJK381PT2KUsIs2IRn0oayd Z93LPTwwnoaHVYOqSnNZ/tnJO1JeUR4jVJLlv2CXqa+eDGmRQj+XN4ZVhhdBEDTeGJgh/h4 a/wr4RbrKvCY9ge4Qye4Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:qrI6fFUZimg=:Ltn81caN1KKss8yx59vuRY wfTYyNzZRMeVp1UTNLlCfqxuLuMlLxB+aWVDo/eLhPdn/WnKBjhL3td/5oTTtkkI/996JKWP4 RF9UM35mlXLA83/wOu+Qx43mmqn0kcYgcWaXFOy+ajOpw7wW31CY3Ipmh96YVUhzE5AixLNnN yc3ZAFvZGZIR7OzQ5+WgxW8KDDUOWYC5aVvR48LEjLv2VE5L/6qdc/wou5OLl/ej1umCLaXiT ikJZrOg57/zQDneIK1RGJrCSZbPtArd1OA2CPUBxa6T0o1+xLDf6Nl8gj04Qno4F9tvfw4OQQ 1Xl/awlOQ16hlNwlrEeU6i/2OTmg9qiYQTADlGMymdcgW2jM7A+zOi03OGaVzZio5qP7pDSAY i+c9LU9B56F3YHjEgNbZgMPK/9Fpfvs0k6wAVFFv1bScNQiIaaA3R9DT975dJBkmSmRVRmnMw 6EaKn/OP9sZHaoj8LS16r6xm2CSbSQFkEzk+syoqi1/3e8N8T+XgYRK+scRQ6rWXZcIJMUNim mreBdLcOat39rJmgwW31FdQ1Fqr5FPlgHpx1iGfhdYKFqwPKLsESvcch1rDaV6l5wpxWJUq+3 mzijfWsqiPszIPnYDuuzkUs3mYj1HZ50PxlGSGYmxxmKse+xzNyinESdLQlV1v4GNsYvtICRk 33ZSVvMxmp+71ZMILbc9BlUkwBPEVcnSHQBoOzYG11I1TjgXV4Xu4SV/26wcRQ4EYKMy0+J6P eBZjSPU72nqrFBtHnQ3F8s0sgn9KkR996+2a3rBKkM3F28fBAFkcdG3GudKZ2Nt2yZXwlZ9CP ydSj7X/ X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) Michael Albinus writes: Hi Andreas, >> * Don't discriminate remote handler based on the local library used. >> Already discussed. > > In general I agree it looks like a bug. But prior removing, I would like > to retest with the kqueue library. I've tested now with kqueue. There was an error indeed; I've fixed this in master. There are still some other issues running filenotify-tests.el; looks like I should spend more time for kqueue related tests. >> -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 22 16:03:24 2017 Received: (at 26126) by debbugs.gnu.org; 22 Mar 2017 20:03:24 +0000 Received: from localhost ([127.0.0.1]:39773 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqmTc-0001qP-B6 for submit@debbugs.gnu.org; Wed, 22 Mar 2017 16:03:24 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47222) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqmTb-0001qF-NQ for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 16:03:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cqmTT-0003Ut-3H for 26126@debbugs.gnu.org; Wed, 22 Mar 2017 16:03:18 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50494) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cqmTT-0003Up-0y; Wed, 22 Mar 2017 16:03:15 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1547 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cqmTQ-0005bi-8G; Wed, 22 Mar 2017 16:03:14 -0400 Date: Wed, 22 Mar 2017 22:02:56 +0200 Message-Id: <83shm55bbj.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus In-reply-to: <87lgrx2l89.fsf@detlef> (message from Michael Albinus on Wed, 22 Mar 2017 19:57:10 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> <877f3h4fjd.fsf@detlef> <87shm5ky0q.fsf@luca> <87lgrx2l89.fsf@detlef> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Michael Albinus > Date: Wed, 22 Mar 2017 19:57:10 +0100 > Cc: 26126@debbugs.gnu.org > > > This touches the question whether we're operating under the assumption, > > that other Lisp-code (apart from filenotify.el) may freely call > > inotify-add-watch or not. Because if it does, this has to be handled in > > inotify.c. Otherwise we may handle it in filenotify.el . > > It is still possible to call inotify-add-watch and companions. However, > we don't force this use; the Elisp manual decribes only filenoty.el > functionality. IMO, Lisp programs should always go through filenotify.el, never via backend-specific APIs. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 23 03:36:50 2017 Received: (at 26126) by debbugs.gnu.org; 23 Mar 2017 07:36:51 +0000 Received: from localhost ([127.0.0.1]:40081 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqxIg-0002D5-M0 for submit@debbugs.gnu.org; Thu, 23 Mar 2017 03:36:50 -0400 Received: from mout.gmx.net ([212.227.17.22]:54638) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqxIe-0002Cp-Rx for 26126@debbugs.gnu.org; Thu, 23 Mar 2017 03:36:49 -0400 Received: from detlef.gmx.de ([93.209.64.198]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MZwYd-1cbktb1F8h-00Lp6a; Thu, 23 Mar 2017 08:36:40 +0100 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> <877f3h4fjd.fsf@detlef> <87shm5ky0q.fsf@luca> <87lgrx2l89.fsf@detlef> <83shm55bbj.fsf@gnu.org> Date: Thu, 23 Mar 2017 08:36:39 +0100 In-Reply-To: <83shm55bbj.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 22 Mar 2017 22:02:56 +0200") Message-ID: <87lgrwsauw.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:3HytrmRjOIoVGforS39baPmHstFbTO2xRiHg8X3IXydQ8v+2ahl O43wwxTOgD35rG7k+WAV/QETNQLD+8NUYIGOGcmOBdNY45vp4iEIi9Ax3AjV+B+9mbVCGaO Nm1r1Ye4w4M9VCsRls4XxjfXanWm4fhG6fPjEW8p2XPsDnGxYsDfufPC0G5XLWTsmP3+FXi MU9Y/LMAG0y2jOr7Hx4/Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:DCOvfSMtvqk=:jxG5xhNiglbKt/ktLmAp3T 71PFErrFRQgO/rBeJJdNneWILkeV09+OLRSUYGAW/70wf/PtE7tD3tuMNBeN+Zo5oWvRGS4AU J7ITNbJ1LXCLP4ouewRn9Z5Z51XXrwvgr+a445BOdt4RZ9H3rs5KcNGDCFTL9KKwRHOkcti+x U8lRyiC+RCPERUHITGXhGwX2QXrzoOnoc8UCVUZGnWmf0yEtSD61vaHZUyIEiMpT9OI79LvWl 5pPjsTtqtJWADae75QUKHdBbFopV8pjzXdhBUPPb88fq741z0fhjH/KcVO+PBHNOJAF9R7pNe X3ozFoFB0CGp3hRnY6K+2TY9DdUNKnkdK/MKojt7gsD+niZGjqAPfLNHAQlCvzf4WdBoBNs/F /Lr/YI6yniaHR0GIvcn+Ui9AB4IoDZ34oOQvgKgou0wRZyKaByThRtl/CfNlpFPzy+sIAUe5o IfhhjLrIPpiBvjJtXWLdMyjcnBxA44g6NpKMVW3y6xHD3y4jITRwyLetvMz5rCMg5IlAAmX9J w524PBRWEjZbQzu0fUtDcXu5bi3szJjQo9FVjPZ38eQU+ihHCFdGrX+cVTBnSW2EINRzOC90A 7v/2p+usCvIFZnOR5T6iuFBli5g1qQ7pIbPB741aWLVJkCFMdIdKj/a0cdLsjTjGR+n0FRedZ imT221k2VrAtAU6zK1efbt/cG6NAS15D1cyd9wv1vpPTzxz32mJjl4F7/yT7FtI67Trx3VxKA yuLn2flg/aLot3wHHdgoN+XCsqsjehzFrwQS2D+BrfZlOVVNQT9vvhNd+dBN473TIFp+e2u9D hlmghwQ X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) Eli Zaretskii writes: >> From: Michael Albinus >> Date: Wed, 22 Mar 2017 19:57:10 +0100 >> Cc: 26126@debbugs.gnu.org >> >> > This touches the question whether we're operating under the assumption, >> > that other Lisp-code (apart from filenotify.el) may freely call >> > inotify-add-watch or not. Because if it does, this has to be handled in >> > inotify.c. Otherwise we may handle it in filenotify.el . >> >> It is still possible to call inotify-add-watch and companions. However, >> we don't force this use; the Elisp manual decribes only filenoty.el >> functionality. > > IMO, Lisp programs should always go through filenotify.el, never via > backend-specific APIs. Then we shall emphasize this in the manual. Like this? --8<---------------cut here---------------start------------->8--- diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 9b6752c..09f7c18 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -2707,7 +2707,8 @@ File Notifications Since all these libraries emit different events on notified file changes, there is the Emacs library @code{filenotify} which provides a -unique interface. +unified interface. It is highly recommended to use this library +instead of the native ones. @defun file-notify-add-watch file flags callback Add a watch for filesystem events pertaining to @var{file}. This --8<---------------cut here---------------end--------------->8--- Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 23 11:22:34 2017 Received: (at 26126) by debbugs.gnu.org; 23 Mar 2017 15:22:34 +0000 Received: from localhost ([127.0.0.1]:41160 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cr4ZN-0000FH-PR for submit@debbugs.gnu.org; Thu, 23 Mar 2017 11:22:33 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49530) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cr4ZM-0000F4-OZ for 26126@debbugs.gnu.org; Thu, 23 Mar 2017 11:22:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cr4ZD-0007cR-GQ for 26126@debbugs.gnu.org; Thu, 23 Mar 2017 11:22:27 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:37803) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cr4ZD-0007cM-DX; Thu, 23 Mar 2017 11:22:23 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2286 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cr4ZC-00053a-ET; Thu, 23 Mar 2017 11:22:22 -0400 Date: Thu, 23 Mar 2017 17:22:22 +0200 Message-Id: <83k27g587l.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus In-reply-to: <87lgrwsauw.fsf@detlef> (message from Michael Albinus on Thu, 23 Mar 2017 08:36:39 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> <877f3h4fjd.fsf@detlef> <87shm5ky0q.fsf@luca> <87lgrx2l89.fsf@detlef> <83shm55bbj.fsf@gnu.org> <87lgrwsauw.fsf@detlef> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Michael Albinus > Cc: politza@hochschule-trier.de, 26126@debbugs.gnu.org > Date: Thu, 23 Mar 2017 08:36:39 +0100 > > > IMO, Lisp programs should always go through filenotify.el, never via > > backend-specific APIs. > > Then we shall emphasize this in the manual. Like this? > > --8<---------------cut here---------------start------------->8--- > diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi > index 9b6752c..09f7c18 100644 > --- a/doc/lispref/os.texi > +++ b/doc/lispref/os.texi > @@ -2707,7 +2707,8 @@ File Notifications > > Since all these libraries emit different events on notified file > changes, there is the Emacs library @code{filenotify} which provides a > -unique interface. > +unified interface. It is highly recommended to use this library > +instead of the native ones. I'd say that even more definitively: Lisp programs that want to receive file notifications should always use this library in preference to the native ones. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 23 12:10:43 2017 Received: (at 26126) by debbugs.gnu.org; 23 Mar 2017 16:10:44 +0000 Received: from localhost ([127.0.0.1]:41186 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cr5Jz-0001MM-LI for submit@debbugs.gnu.org; Thu, 23 Mar 2017 12:10:43 -0400 Received: from mout.gmx.net ([212.227.17.22]:50592) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cr5Jx-0001M7-GR for 26126@debbugs.gnu.org; Thu, 23 Mar 2017 12:10:42 -0400 Received: from detlef.gmx.de ([87.146.32.205]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Mecqq-1cXCyo1GCu-00OIef; Thu, 23 Mar 2017 17:10:34 +0100 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <87bmsuixuj.fsf@detlef> <87efxqmzyp.fsf@luca> <877f3h4fjd.fsf@detlef> <87shm5ky0q.fsf@luca> <87lgrx2l89.fsf@detlef> <83shm55bbj.fsf@gnu.org> <87lgrwsauw.fsf@detlef> <83k27g587l.fsf@gnu.org> Date: Thu, 23 Mar 2017 17:10:33 +0100 In-Reply-To: <83k27g587l.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 23 Mar 2017 17:22:22 +0200") Message-ID: <87zigc3reu.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:Evo338JrHMpkW8nEGTXlZUxuIW3vbDeHXOfim1Lv6QSm4A/jQwU ueHdW2oq9IJw8o1sobxyXM5cx0ggNtXqcFNjibgbb1sqnn0hEynOBYxzv1Mv2WUhBEzvjBB McKBei6ebmEmt51qUiMzaDGLV63LdID2+8HLhMTiVPVxl+bH6+gzV1P7tqzJMqsmC18mgD8 p38lEiFQeCZ6kjYANrnWw== X-UI-Out-Filterresults: notjunk:1;V01:K0:fYK72MqnZ+g=:sNRgPr+0raOEUIFJaw4g7x bANl+SJkeaOtfUYeF91LfPmV1tqaAsBheKnuhSdq9BUuVT9Q7jSBHQIauwqwtN6nnt1f1dMtP 6QNgGF1LO3UUG1J8R/RYSmIY0fnA4W6CyhwJPpM0GRx1TPkNiNaPjOu2vHC7v0EuoyQnVNHT1 /2PC4BIChfnPZyv0KJsk0ufXN8R4BbSM+ZwFt9j6BMh14Db4rRmH98Fipa4O9G80gv/FiGWBr O7AEfWYL9oJOBpyjzOEyM9RaGhId5Stz5vx4bv5j+ItgX+gHTiTGeKAmITISg4aMVr6ZAHRDX UYeCwvQCHkg7FP6wMmTkQog7sKHj4jAB37Yk3nSQIsOGiQFfPeI/R1PQAGVMdlZB9AwzPCoeC LdS3X1M9FicYZCgSp7vECe0lKQTbrJgb+7JzzWFT7FKA3Wpaw/xjuUy/AkEHwQDP3LQWi1Cu9 tQGrwiye+Itwr2jVktgEG6TpLFzJnAgk1Kz2TTxb51LGW70xbxH3ZCngAWDMb+YToQCHu8h4A MTXncH4z3CnNwd3fKihgmHiHanV6j8ocwtAEoibg+sLRBwxJ2xoBsG8SCWFKexLxrpHLN9sMN OdK2eEH/oTrYze+6Hffz/g9C1bboDbasAnT8H6yErsiQ29hBKfB1IdClQEO/9FqG9DDabiyAM Bfm5CasJRSmNNRyJtOEWMXwBkhLfwCbX8TWkozWB1VIBkfuoHE3BKCPlp0hXR6O2ZBuDvsx9g nDTlUUugKgHxmoYbSs9wCjeYEU/NsGIrBNFJnJEnElrplKMAYiI8UwMVzc8a1KrJEd5U61wW7 xmPiCXz X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, politza@hochschule-trier.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) Eli Zaretskii writes: > I'd say that even more definitively: > > Lisp programs that want to receive file notifications should always > use this library in preference to the native ones. Committed to master. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 24 15:54:54 2017 Received: (at 26126) by debbugs.gnu.org; 24 Mar 2017 19:54:54 +0000 Received: from localhost ([127.0.0.1]:42822 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crVIU-0007iX-7Q for submit@debbugs.gnu.org; Fri, 24 Mar 2017 15:54:54 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:35716) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crVIS-0007iF-J4 for 26126@debbugs.gnu.org; Fri, 24 Mar 2017 15:54:53 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 5E698179B3FB; Fri, 24 Mar 2017 20:54:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490385273; bh=dMjtBZPpiUmYKdAEqM6YV0dLIvI=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=oa750AJdFcnq2h/iIG9YDgvD2mYlWMWZ5iVbtL8FJIG0G0mY2VtSY0sx2Zw/K9/3j 9Z6OQ3i3bMbdcGaxxU9CA/jYLnGF0D4qOFSEgVRT9zSNJGymw4kKAhRLjlk0fZTcyr wZD9V6UaF19Spi7JSfriS79OPJNSIgfid0OBRsZQ= From: Andreas Politz To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> Date: Fri, 24 Mar 2017 20:54:32 +0100 In-Reply-To: <838tnx71u0.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 22 Mar 2017 17:44:55 +0200") Message-ID: <87lgrulabr.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, Michael Albinus X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Eli Zaretskii writes: >> From: Michael Albinus >> Do you expect other implementations of remote handlers? > > Yes, why not? It's much easier to do that in Lisp than in C, where > the local handlers should be implemented. I just wanted to add, that file-handler do not necessarily have to refer to files, e.g. think of a /proc kind of handler making internal Emacs state available via filenames. -ap From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 24 16:44:52 2017 Received: (at 26126) by debbugs.gnu.org; 24 Mar 2017 20:44:52 +0000 Received: from localhost ([127.0.0.1]:42849 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crW4p-0000bz-JY for submit@debbugs.gnu.org; Fri, 24 Mar 2017 16:44:51 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:37147) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crW4m-0000bl-Tv for 26126@debbugs.gnu.org; Fri, 24 Mar 2017 16:44:50 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 6CE8B179B342; Fri, 24 Mar 2017 21:44:29 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490388270; bh=5pbOZz8pIVgK4r8c8IAU+LAsdyg=; h=From:To:Cc:Subject:References:Date:Message-ID:MIME-Version: Content-Type; b=VxrLMcGr/KcLlkF4dcbJZaYVBT5pCGGRMfHzbxuscLue5eBuAn5C9r8TIVoztvcE8 QwdZWaBKhGb5etCiPEkPXRy8f1N6VGVSImTIokIDq5JfcdyzvvQQceGUCiuXlJ0Fnc PujontbwvwZHZTV4vgqMaCEYcTQbf9YcNbZzP+8c= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> Date: Fri, 24 Mar 2017 21:44:28 +0100 Message-ID: <877f3el80j.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=-=-= Content-Type: text/plain Hey ! Below is a second version of the previous patch. It is somewhat conservative, since neither did I attempt to + further simplify filenotify.el nor + handle differing masks in inotify.c . -- I also thought about the test-cases and more generally about how to develop a specification for this library, i.e. how do we want this to behave. Do we have the desire that it works uniformly across all participating back-ends ? And is that even possible ? I think it is to easy to adapt the tests for each back-end, until they succeed and thereby potentially masking actual bugs. One way to go about this would be to write a series of definitive unit-tests which specify the intended behavior. Then, allow them to fail for a specific back-end, until someone has fixed potential bugs for it and confirmed that the test succeeds. This would allow for an incremental improvement on fairly solid grounds. I'm assuming that people of the future are interested in improving their used back-end (e.g. make kqueue watch directories properly, if that is possible). Anyway, I was bored today, so I took a look at what events these libraries actually produce, the result of which you may also find below. Finally, I'm tempted to suggest to get rid of the flags argument of file-notify-add-watch. As it is, things are already complicated enough and we don't seem to have many people working on this. I think we could make it backward-compatible to a certain degree. Note also, that many file operations trigger both kinds of events anyway. -- --=-=-= Content-Type: test/x-patch Content-Disposition: inline Content-Transfer-Encoding: base64 Content-Description: A patch ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL29zLnRleGkgYi9kb2MvbGlzcHJlZi9vcy50ZXhpCmlu ZGV4IDliNjc1MmM1ZTEuLjRmN2Q0NzMwNWYgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL29zLnRl eGkKKysrIGIvZG9jL2xpc3ByZWYvb3MudGV4aQpAQCAtMjcwNyw3ICsyNzA3LDcgQEAgRmlsZSBO b3RpZmljYXRpb25zCiAKIFNpbmNlIGFsbCB0aGVzZSBsaWJyYXJpZXMgZW1pdCBkaWZmZXJlbnQg ZXZlbnRzIG9uIG5vdGlmaWVkIGZpbGUKIGNoYW5nZXMsIHRoZXJlIGlzIHRoZSBFbWFjcyBsaWJy YXJ5IEBjb2Rle2ZpbGVub3RpZnl9IHdoaWNoIHByb3ZpZGVzIGEKLXVuaXF1ZSBpbnRlcmZhY2Uu Cit1bmlmaWVkIGludGVyZmFjZS4KIAogQGRlZnVuIGZpbGUtbm90aWZ5LWFkZC13YXRjaCBmaWxl IGZsYWdzIGNhbGxiYWNrCiBBZGQgYSB3YXRjaCBmb3IgZmlsZXN5c3RlbSBldmVudHMgcGVydGFp bmluZyB0byBAdmFye2ZpbGV9LiAgVGhpcwpkaWZmIC0tZ2l0IGEvbGlzcC9maWxlbm90aWZ5LmVs IGIvbGlzcC9maWxlbm90aWZ5LmVsCmluZGV4IDdlYjYyMjk5NzYuLjVkZWE2N2I1ODAgMTAwNjQ0 Ci0tLSBhL2xpc3AvZmlsZW5vdGlmeS5lbAorKysgYi9saXNwL2ZpbGVub3RpZnkuZWwKQEAgLTI1 LDYgKzI1LDIwIEBACiA7OyBmaWxlIG5vdGlmaWNhdGlvbiBwYWNrYWdlcyBgaW5vdGlmeScsIGBr cXVldWUnLCBgZ2ZpbGVub3RpZnknIGFuZAogOzsgYHczMm5vdGlmeScuCiAKKzs7IFRPRE86Cis7 OyAqIFdhdGNoaW5nIGEgL2Rpci9maWxlIG1heSByZWNlaXZlIGV2ZW50cyBmb3IgZGlyLgorOzsg ICAoVGhpcyBtYXkgYmUgdGhlIGRlc2lyZWQgYmVoYXZpb3VyLikKKzs7ICogImlub3RpZnlfYWRk X3dhdGNoIGFkZHMgYSBuZXcgd2F0Y2gsIG9yIG1vZGlmaWVzIGFuIGV4aXN0aW5nIHdhdGNoIgor OzsgICBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGRpZmZlcmVudCB3YXRjaGVzIGZvciB0aGUg c2FtZSBkaXJlY3RvcnkKKzs7ICAgZG9uJ3Qgc2V0IHRoZSBtYXNrIGluIGEgY29uZmxpY3Rpbmcg d2F5IHJlZ2FyZGluZyBjaGFuZ2VkL2F0dHJpYnV0ZS1jaGFuZ2VkCis7OyAqIEFsc28gY2hlY2sg d2hpY2ggb3RoZXIgaW5vdGlmeSBmbGFncyBhcmUgcHJvYmxlbWF0aWMKKzs7ICAgZm9yIGNvbmN1 cnJlbnQgdXNlIG9mIHRoZSB1bmRlcmx5aW5nIGRlc2NyaXB0b3IKKzs7ICogV2F0Y2hpbmcgYSBm aWxlIGluIGEgYWxyZWFkeSB3YXRjaGVkIGRpcmVjdG9yeQorOzsgICBJZiB0aGUgZmlsZSBpcyBj cmVhdGVkIGFuZCAqdGhlbiogYSB3YXRjaCBpcyBhZGRlZCB0byB0aGF0IGZpbGUsIHRoZQorOzsg ICB3YXRjaCBtaWdodCByZWNlaXZlIGV2ZW50cyB3aGljaCBvY2N1cmVkIHByaW9yIHRvIGl0IGJl aW5nIGNyZWF0ZWQsCis7OyAgIGR1ZSB0byB0aGUgd2F5IGV2ZW50cyBhcmUgcHJvcGFnYXRlZCBk dXJpbmcgaWRsZSB0aW1lLiAgTm90ZTogVGhpcworOzsgICBtYXkgYmUgcGVyZmVjdGx5IGFjY2Vw dGFibGUuCisKIDs7OyBDb2RlOgogCiAocmVxdWlyZSAnY2wtbGliKQpAQCAtNDgsMTYgKzYyLDE0 IEBAIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzCiAKICAgKERJUiAoRklMRSAuIENBTExCQUNLKSAo RklMRSAuIENBTExCQUNLKSAuLi4pCiAKLVNldmVyYWwgdmFsdWVzIGZvciBhIGdpdmVuIERJUiBo YXBwZW4gb25seSBmb3IgYGlub3RpZnknLCB3aGVuCi1kaWZmZXJlbnQgZmlsZXMgZnJvbSB0aGUg c2FtZSBkaXJlY3RvcnkgYXJlIHdhdGNoZWQuIikKK1NldmVyYWwgdmFsdWVzIGZvciBhIGdpdmVu IERJUiBzaG91bGQgY3VycmVudGx5IG5vdCBvY2N1ci4iKQogCiAoZGVmdW4gZmlsZS1ub3RpZnkt LXJtLWRlc2NyaXB0b3IgKGRlc2NyaXB0b3IpCiAgICJSZW1vdmUgREVTQ1JJUFRPUiBmcm9tIGBm aWxlLW5vdGlmeS1kZXNjcmlwdG9ycycuCiBERVNDUklQVE9SIHNob3VsZCBiZSBhbiBvYmplY3Qg cmV0dXJuZWQgYnkgYGZpbGUtbm90aWZ5LWFkZC13YXRjaCcuCiBJZiBpdCBpcyByZWdpc3RlcmVk IGluIGBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycycsIGEgc3RvcHBlZCBldmVudCBpcyBzZW50LiIK LSAgKGxldCogKChkZXNjIChpZiAoY29uc3AgZGVzY3JpcHRvcikgKGNhciBkZXNjcmlwdG9yKSBk ZXNjcmlwdG9yKSkKLSAgICAgICAgIChyZWdpc3RlcmVkIChnZXRoYXNoIGRlc2MgZmlsZS1ub3Rp ZnktZGVzY3JpcHRvcnMpKQotCSAoZmlsZSAoaWYgKGNvbnNwIGRlc2NyaXB0b3IpIChjZHIgZGVz Y3JpcHRvcikgKGNsLWNhYWRyIHJlZ2lzdGVyZWQpKSkKKyAgKGxldCogKChyZWdpc3RlcmVkIChn ZXRoYXNoIGRlc2NyaXB0b3IgZmlsZS1ub3RpZnktZGVzY3JpcHRvcnMpKQorCSAoZmlsZSAoY2wt Y2FhZHIgcmVnaXN0ZXJlZCkpCiAJIChkaXIgKGNhciByZWdpc3RlcmVkKSkpCiAKICAgICAod2hl biAoY29uc3AgcmVnaXN0ZXJlZCkKQEAgLTY5LDEyICs4MSwxMiBAQCBmaWxlLW5vdGlmeS0tcm0t ZGVzY3JpcHRvcgogCiAgICAgICA7OyBNb2RpZnkgYGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzJy4K ICAgICAgIChpZiAobm90IGZpbGUpCi0JICAocmVtaGFzaCBkZXNjIGZpbGUtbm90aWZ5LWRlc2Ny aXB0b3JzKQorCSAgKHJlbWhhc2ggZGVzY3JpcHRvciBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykK IAkoc2V0Y2RyIHJlZ2lzdGVyZWQKIAkJKGRlbGV0ZSAoYXNzb2MgZmlsZSAoY2RyIHJlZ2lzdGVy ZWQpKSAoY2RyIHJlZ2lzdGVyZWQpKSkKIAkoaWYgKG51bGwgKGNkciByZWdpc3RlcmVkKSkKLQkg ICAgKHJlbWhhc2ggZGVzYyBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykKLQkgIChwdXRoYXNoIGRl c2MgcmVnaXN0ZXJlZCBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykpKSkpKQorCSAgICAocmVtaGFz aCBkZXNjcmlwdG9yIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKQorCSAgKHB1dGhhc2ggZGVzY3Jp cHRvciByZWdpc3RlcmVkIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkpKSkpCiAKIDs7IFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCBieSBgaW5vdGlmeScsIGBrcXVldWUnLCBgZ2ZpbGVub3RpZnknIGFu ZAogOzsgYHczMm5vdGlmeScgZXZlbnRzLgpAQCAtMTAyLDkgKzExNCw5IEBAIGZpbGUtbm90aWZ5 LS1wZW5kaW5nLWV2ZW50CiAoZGVmdW4gZmlsZS1ub3RpZnktLWV2ZW50LXdhdGNoZWQtZmlsZSAo ZXZlbnQpCiAgICJSZXR1cm4gZmlsZSBvciBkaXJlY3RvcnkgYmVpbmcgd2F0Y2hlZC4KIENvdWxk IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkaXJlY3Rvcnkgd2F0Y2hlZCBieSB0aGUgYmFja2VuZCBs aWJyYXJ5LiIKLSAgKGxldCogKChkZXNjIChpZiAoY29uc3AgKGNhciBldmVudCkpIChjYWFyIGV2 ZW50KSAoY2FyIGV2ZW50KSkpCi0gICAgICAgICAocmVnaXN0ZXJlZCAoZ2V0aGFzaCBkZXNjIGZp bGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkKLQkgKGZpbGUgKGlmIChjb25zcCAoY2FyIGV2ZW50KSkg KGNkYXIgZXZlbnQpIChjbC1jYWFkciByZWdpc3RlcmVkKSkpCisgIChsZXQqICgoZGVzY3JpcHRv ciAoY2FyIGV2ZW50KSkKKyAgICAgICAgIChyZWdpc3RlcmVkIChnZXRoYXNoIGRlc2NyaXB0b3Ig ZmlsZS1ub3RpZnktZGVzY3JpcHRvcnMpKQorCSAoZmlsZSAoY2wtY2FhZHIgcmVnaXN0ZXJlZCkp CiAJIChkaXIgKGNhciByZWdpc3RlcmVkKSkpCiAgICAgKGlmIGZpbGUgKGV4cGFuZC1maWxlLW5h bWUgZmlsZSBkaXIpIGRpcikpKQogCkBAIC0xMzAsMjEgKzE0Miw2IEBAIGZpbGUtbm90aWZ5LS1l dmVudC1jb29raWUKIFRoaXMgaXMgYXZhaWxhYmxlIGluIGNhc2UgYSBmaWxlIGhhcyBiZWVuIG1v dmVkLiIKICAgKG50aCAzIGV2ZW50KSkKIAotOzsgYGlub3RpZnknIHJldHVybnMgdGhlIHNhbWUg ZGVzY3JpcHRvciB3aGVuIHRoZSBmaWxlIChkaXJlY3RvcnkpCi07OyB1c2VzIHRoZSBzYW1lIGlu b2RlLiAgV2Ugd2FudCB0byBkaXN0aW5ndWlzaCwgYW5kIGFwcGx5IGEgdmlydHVhbAotOzsgZGVz Y3JpcHRvciB3aGljaCBtYWtlIHRoZSBkaWZmZXJlbmNlLgotKGRlZnVuIGZpbGUtbm90aWZ5LS1k ZXNjcmlwdG9yIChkZXNjIGZpbGUpCi0gICJSZXR1cm4gdGhlIGRlc2NyaXB0b3IgdG8gYmUgdXNl ZCBpbiBgZmlsZS1ub3RpZnktKi13YXRjaCcuCi1Gb3IgYGdmaWxlbm90aWZ5JyBhbmQgYHczMm5v dGlmeScgaXQgaXMgdGhlIHNhbWUgZGVzY3JpcHRvciBhcwotdXNlZCBpbiB0aGUgbG93LWxldmVs IGZpbGUgbm90aWZpY2F0aW9uIHBhY2thZ2UuIgotICAoaWYgKGFuZCAobmF0bnVtcCBkZXNjKSAo ZXEgZmlsZS1ub3RpZnktLWxpYnJhcnkgJ2lub3RpZnkpKQotICAgICAgKGNvbnMgZGVzYwotICAg ICAgICAgICAgKGFuZCAoc3RyaW5ncCBmaWxlKQotICAgICAgICAgICAgICAgICAoY2FyIChhc3Nv YwotICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxlKQot ICAgICAgICAgICAgICAgICAgICAgICAoZ2V0aGFzaCBkZXNjIGZpbGUtbm90aWZ5LWRlc2NyaXB0 b3JzKSkpKSkKLSAgICBkZXNjKSkKLQogOzsgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgdG8g bWFwIGJldHdlZW4gc3BlY2lmaWMgZmxhZ3Mgb2YgdGhlCiA7OyByZXNwZWN0aXZlIGZpbGUgbm90 aWZpY2F0aW9ucywgYW5kIHRoZSBvbmVzIHdlIHJldHVybi4KIChkZWZ1biBmaWxlLW5vdGlmeS1j YWxsYmFjayAoZXZlbnQpCkBAIC0yMjMsMTEgKzIyMCw3IEBAIGZpbGUtbm90aWZ5LWNhbGxiYWNr CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGZpbGUtbm90aWZ5LS1wZW5kaW5n LWV2ZW50KSkpCiAgICAgICAgICAgICAgICAgICA7OyBJZiB0aGUgc291cmNlIGlzIGhhbmRsZWQg YnkgYW5vdGhlciB3YXRjaCwgd2UKICAgICAgICAgICAgICAgICAgIDs7IG11c3QgZmlyZSB0aGUg cmVuYW1lIGV2ZW50IHRoZXJlIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAod2hlbiAobm90 IChlcXVhbCAoZmlsZS1ub3RpZnktLWRlc2NyaXB0b3IgZGVzYyBmaWxlMSkKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5vdGlmeS0tZGVzY3JpcHRvcgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWFyIGZpbGUtbm90aWZ5LS1wZW5kaW5n LWV2ZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5vdGlm eS0tZXZlbnQtZmlsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2ZW50KSkpKQorICAgICAgICAgICAgICAgICAgKHVubGVz cyAoZXF1YWwgZGVzYyAoY2FhciBmaWxlLW5vdGlmeS0tcGVuZGluZy1ldmVudCkpCiAgICAgICAg ICAgICAgICAgICAgIChzZXRxIHBlbmRpbmctZXZlbnQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgYCgoLChjYWFyIGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2ZW50KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZW5hbWVkICxmaWxlICxmaWxlMSkKQEAgLTIzNywxMSArMjMwLDYgQEAg ZmlsZS1ub3RpZnktY2FsbGJhY2sKIAogICAgICAgICA7OyBBcHBseSBwZW5kaW5nIGNhbGxiYWNr LgogICAgICAgICAod2hlbiBwZW5kaW5nLWV2ZW50Ci0gICAgICAgICAgKHNldGNhcgotICAgICAg ICAgICAoY2FyIHBlbmRpbmctZXZlbnQpCi0gICAgICAgICAgIChmaWxlLW5vdGlmeS0tZGVzY3Jp cHRvcgotICAgICAgICAgICAgKGNhYXIgcGVuZGluZy1ldmVudCkKLSAgICAgICAgICAgIChmaWxl LW5vdGlmeS0tZXZlbnQtZmlsZS1uYW1lIGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2ZW50KSkpCiAg ICAgICAgICAgKGZ1bmNhbGwgKGNhZHIgcGVuZGluZy1ldmVudCkgKGNhciBwZW5kaW5nLWV2ZW50 KSkKICAgICAgICAgICAoc2V0cSBwZW5kaW5nLWV2ZW50IG5pbCkpCiAKQEAgLTI2MywxNyArMjUx LDEyIEBAIGZpbGUtbm90aWZ5LWNhbGxiYWNrCiAJCQkgKHN0cmluZy1lcXVhbAogCQkJICAobnRo IDAgZW50cnkpIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUxKSkpKSkKICAgICAgICAgICA7 OyhtZXNzYWdlCi0gICAgICAgICAgIDs7ImZpbGUtbm90aWZ5LWNhbGxiYWNrICVTICVTICVTICVT ICVTIgotICAgICAgICAgICA7OyhmaWxlLW5vdGlmeS0tZGVzY3JpcHRvciBkZXNjIChjYXIgZW50 cnkpKQotICAgICAgICAgICA7O2FjdGlvbiBmaWxlIGZpbGUxIHJlZ2lzdGVyZWQpCisgICAgICAg ICAgOzsiZmlsZS1ub3RpZnktY2FsbGJhY2sgJVMgJVMgJVMgJVMgJVMiCisgICAgICAgICAgOztk ZXNjCisgICAgICAgICAgOzthY3Rpb24gZmlsZSBmaWxlMSByZWdpc3RlcmVkKQogCSAgKGlmIGZp bGUxCi0JICAgICAgKGZ1bmNhbGwKLQkgICAgICAgY2FsbGJhY2sKLQkgICAgICAgYCgsKGZpbGUt bm90aWZ5LS1kZXNjcmlwdG9yIGRlc2MgKGNhciBlbnRyeSkpCi0gICAgICAgICAgICAgICAgICxh Y3Rpb24gLGZpbGUgLGZpbGUxKSkKLQkgICAgKGZ1bmNhbGwKLQkgICAgIGNhbGxiYWNrCi0JICAg ICBgKCwoZmlsZS1ub3RpZnktLWRlc2NyaXB0b3IgZGVzYyAoY2FyIGVudHJ5KSkgLGFjdGlvbiAs ZmlsZSkpKSkKKyAgICAgICAgICAgICAgKGZ1bmNhbGwgY2FsbGJhY2sgYCgsZGVzYyAsYWN0aW9u ICxmaWxlICxmaWxlMSkpCisgICAgICAgICAgICAoZnVuY2FsbCBjYWxsYmFjayBgKCxkZXNjICxh Y3Rpb24gLGZpbGUpKSkpCiAKICAgICAgICAgOzsgU2VuZCBgc3RvcHBlZCcgZXZlbnQuCiAgICAg ICAgICh3aGVuIChvciBzdG9wcGVkCkBAIC0yODMsNyArMjY2LDcgQEAgZmlsZS1ub3RpZnktY2Fs bGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgOzsgV2F0Y2hlZCBmaWxlIG9yIGRpcmVjdG9y eSBpcyBjb25jZXJuZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctZXF1YWwKICAg ICAgICAgICAgICAgICAgICAgICAgIGZpbGUgKGZpbGUtbm90aWZ5LS1ldmVudC13YXRjaGVkLWZp bGUgZXZlbnQpKSkpCi0gICAgICAgICAgKGZpbGUtbm90aWZ5LXJtLXdhdGNoIChmaWxlLW5vdGlm eS0tZGVzY3JpcHRvciBkZXNjIChjYXIgZW50cnkpKSkpKSkpKQorICAgICAgICAgIChmaWxlLW5v dGlmeS1ybS13YXRjaCBkZXNjKSkpKSkpCiAKIDs7IGBrcXVldWUnLCBgZ2ZpbGVub3RpZnknIGFu ZCBgdzMybm90aWZ5JyByZXR1cm4gYSB1bmlxdWUgZGVzY3JpcHRvcgogOzsgZm9yIGV2ZXJ5IGBm aWxlLW5vdGlmeS1hZGQtd2F0Y2gnLCB3aGlsZSBgaW5vdGlmeScgcmV0dXJucyBhIHVuaXF1ZQpA QCAtMzQ5LDEwICszMzIsNyBAQCBmaWxlLW5vdGlmeS1hZGQtd2F0Y2gKIAk7OyBmaWxlIG5vdGlm aWNhdGlvbiBzdXBwb3J0LgogCShzZXRxIGRlc2MgKGZ1bmNhbGwKIAkJICAgIGhhbmRsZXIgJ2Zp bGUtbm90aWZ5LWFkZC13YXRjaAotICAgICAgICAgICAgICAgICAgICA7OyBrcXVldWUgZG9lcyBu b3QgcmVwb3J0IGZpbGUgY2hhbmdlcyBpbgotICAgICAgICAgICAgICAgICAgICA7OyBkaXJlY3Rv cnkgbW9uaXRvci4gIFNvIHdlIG11c3Qgd2F0Y2ggdGhlIGZpbGUKLSAgICAgICAgICAgICAgICAg ICAgOzsgaXRzZWxmLgotICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIGZpbGUtbm90aWZ5LS1s aWJyYXJ5ICdrcXVldWUpIGZpbGUgZGlyKQorICAgICAgICAgICAgICAgICAgICBkaXIKICAgICAg ICAgICAgICAgICAgICAgZmxhZ3MgY2FsbGJhY2spKQogCiAgICAgICA7OyBDaGVjaywgd2hldGhl ciBFbWFjcyBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGZpbGUgbm90aWZpY2F0aW9uCkBAIC0zOTYs MjEgKzM3NiwxOSBAQCBmaWxlLW5vdGlmeS1hZGQtd2F0Y2gKIAogICAgIDs7IE1vZGlmeSBgZmls ZS1ub3RpZnktZGVzY3JpcHRvcnMnLgogICAgIChzZXRxIGZpbGUgKHVubGVzcyAoZmlsZS1kaXJl Y3RvcnktcCBmaWxlKSAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxlKSkKLQkgIGRlc2MgKGlm IChjb25zcCBkZXNjKSAoY2FyIGRlc2MpIGRlc2MpCiAJICByZWdpc3RlcmVkIChnZXRoYXNoIGRl c2MgZmlsZS1ub3RpZnktZGVzY3JpcHRvcnMpCiAJICBlbnRyeSBgKCxmaWxlIC4gLGNhbGxiYWNr KSkKICAgICAodW5sZXNzIChtZW1iZXIgZW50cnkgKGNkciByZWdpc3RlcmVkKSkKICAgICAgIChw dXRoYXNoIGRlc2MgYCgsZGlyICxlbnRyeSAuICwoY2RyIHJlZ2lzdGVyZWQpKSBmaWxlLW5vdGlm eS1kZXNjcmlwdG9ycykpCiAKICAgICA7OyBSZXR1cm4gZGVzY3JpcHRvci4KLSAgICAoZmlsZS1u b3RpZnktLWRlc2NyaXB0b3IgZGVzYyBmaWxlKSkpCisgICAgZGVzYykpCiAKIChkZWZ1biBmaWxl LW5vdGlmeS1ybS13YXRjaCAoZGVzY3JpcHRvcikKICAgIlJlbW92ZSBhbiBleGlzdGluZyB3YXRj aCBzcGVjaWZpZWQgYnkgaXRzIERFU0NSSVBUT1IuCiBERVNDUklQVE9SIHNob3VsZCBiZSBhbiBv YmplY3QgcmV0dXJuZWQgYnkgYGZpbGUtbm90aWZ5LWFkZC13YXRjaCcuIgotICAobGV0KiAoKGRl c2MgKGlmIChjb25zcCBkZXNjcmlwdG9yKSAoY2FyIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3IpKQot CSAoZmlsZSAoaWYgKGNvbnNwIGRlc2NyaXB0b3IpIChjZHIgZGVzY3JpcHRvcikpKQotICAgICAg ICAgKHJlZ2lzdGVyZWQgKGdldGhhc2ggZGVzYyBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykpCisg IChsZXQqICgoZmlsZSBuaWwpCisgICAgICAgICAocmVnaXN0ZXJlZCAoZ2V0aGFzaCBkZXNjcmlw dG9yIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkKIAkgKGRpciAoY2FyIHJlZ2lzdGVyZWQpKQog CSAoaGFuZGxlciAoYW5kIChzdHJpbmdwIGRpcikKICAgICAgICAgICAgICAgICAgICAgICAgKGZp bmQtZmlsZS1uYW1lLWhhbmRsZXIgZGlyICdmaWxlLW5vdGlmeS1ybS13YXRjaCkpKSkKQEAgLTQz Miw3ICs0MTAsNyBAQCBmaWxlLW5vdGlmeS1ybS13YXRjaAogICAgICAgICAgICAgICAgICgoZXEg ZmlsZS1ub3RpZnktLWxpYnJhcnkgJ2txdWV1ZSkgJ2txdWV1ZS1ybS13YXRjaCkKICAgICAgICAg ICAgICAgICAoKGVxIGZpbGUtbm90aWZ5LS1saWJyYXJ5ICdnZmlsZW5vdGlmeSkgJ2dmaWxlLXJt LXdhdGNoKQogICAgICAgICAgICAgICAgICgoZXEgZmlsZS1ub3RpZnktLWxpYnJhcnkgJ3czMm5v dGlmeSkgJ3czMm5vdGlmeS1ybS13YXRjaCkpCi0gICAgICAgICAgICAgICBkZXNjKSkKKyAgICAg ICAgICAgICAgIGRlc2NyaXB0b3IpKQogICAgICAgICAgIChmaWxlLW5vdGlmeS1lcnJvciBuaWwp KSkKIAogICAgICAgOzsgTW9kaWZ5IGBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycycuCkBAIC00NDEs OSArNDE5LDggQEAgZmlsZS1ub3RpZnktcm0td2F0Y2gKIChkZWZ1biBmaWxlLW5vdGlmeS12YWxp ZC1wIChkZXNjcmlwdG9yKQogICAiQ2hlY2sgYSB3YXRjaCBzcGVjaWZpZWQgYnkgaXRzIERFU0NS SVBUT1IuCiBERVNDUklQVE9SIHNob3VsZCBiZSBhbiBvYmplY3QgcmV0dXJuZWQgYnkgYGZpbGUt bm90aWZ5LWFkZC13YXRjaCcuIgotICAobGV0KiAoKGRlc2MgKGlmIChjb25zcCBkZXNjcmlwdG9y KSAoY2FyIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3IpKQotCSAoZmlsZSAoaWYgKGNvbnNwIGRlc2Ny aXB0b3IpIChjZHIgZGVzY3JpcHRvcikpKQotICAgICAgICAgKHJlZ2lzdGVyZWQgKGdldGhhc2gg ZGVzYyBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykpCisgIChsZXQqICgoZmlsZSBuaWwpCisgICAg ICAgICAocmVnaXN0ZXJlZCAoZ2V0aGFzaCBkZXNjcmlwdG9yIGZpbGUtbm90aWZ5LWRlc2NyaXB0 b3JzKSkKIAkgKGRpciAoY2FyIHJlZ2lzdGVyZWQpKQogCSBoYW5kbGVyKQogCkBAIC00NjQsNyAr NDQxLDcgQEAgZmlsZS1ub3RpZnktdmFsaWQtcAogICAgICAgICAgICAgICAgKChlcSBmaWxlLW5v dGlmeS0tbGlicmFyeSAna3F1ZXVlKSAna3F1ZXVlLXZhbGlkLXApCiAgICAgICAgICAgICAgICAo KGVxIGZpbGUtbm90aWZ5LS1saWJyYXJ5ICdnZmlsZW5vdGlmeSkgJ2dmaWxlLXZhbGlkLXApCiAg ICAgICAgICAgICAgICAoKGVxIGZpbGUtbm90aWZ5LS1saWJyYXJ5ICd3MzJub3RpZnkpICd3MzJu b3RpZnktdmFsaWQtcCkpCi0gICAgICAgICAgICAgIGRlc2MpKQorICAgICAgICAgICAgICBkZXNj cmlwdG9yKSkKICAgICAgICAgICAgdCkpKSkKIAogOzsgVGhlIGVuZDoKZGlmZiAtLWdpdCBhL3Ny Yy9pbm90aWZ5LmMgYi9zcmMvaW5vdGlmeS5jCmluZGV4IDYxZWY2MTUzMjguLjA4OGI2NDkxMTkg MTAwNjQ0Ci0tLSBhL3NyYy9pbm90aWZ5LmMKKysrIGIvc3JjL2lub3RpZnkuYwpAQCAtNDUsMTYg KzQ1LDkwIEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIC8qIEZpbGUgaGFuZGxlIGZvciBpbm90aWZ5LiAgKi8K IHN0YXRpYyBpbnQgaW5vdGlmeWZkID0gLTE7CiAKLS8qIEFzc29jIGxpc3Qgb2YgZmlsZXMgYmVp bmcgd2F0Y2hlZC4KLSAgIEZvcm1hdDogKHdhdGNoLWRlc2NyaXB0b3IgbmFtZSBjYWxsYmFjaykK LSAqLworLyogQWxpc3Qgb2YgZmlsZXMgYmVpbmcgd2F0Y2hlZC4gIFdlIHdhbnQgdGhlIHJldHVy bmVkIGRlc2NyaXB0b3IgdG8KKyAgIGJlIHVuaXF1ZSBmb3IgZXZlcnkgd2F0Y2gsIGJ1dCBpbm90 aWZ5IHJldHVybnMgdGhlIHNhbWUgZGVzY3JpcHRvcgorICAgZm9yIG11bHRpcGxlIGNhbGxzIHRv IGlub3RpZnlfYWRkX3dhdGNoIHdpdGggdGhlIHNhbWUgZmlsZS4gIEluCisgICBvcmRlciB0byBz b2x2ZSB0aGlzIHByb2JsZW0sIHdlIGFkZCBhIElELCB1bmlxdWVseSBpZGVudGlmeWluZyBhCisg ICB3YXRjaC9maWxlIGNvbWJpbmF0aW9uLgorCisgICBGb3JtYXQ6IChkZXNjcmlwdG9yIC4gKChp ZCBmaWxlbmFtZSBjYWxsYmFjaykgLi4uKSkKKyovCiBzdGF0aWMgTGlzcF9PYmplY3Qgd2F0Y2hf bGlzdDsKIAorLyogQWRkIGEgbmV3IHdhdGNoIHRvIHdhdGNoLWRlc2NyaXB0b3IgV0Qgd2F0Y2hp bmcgRklMRU5BTUUgYW5kIHVzaW5nCisgICBDQUxMQkFDSy4gIFJldHVybnMgYSBjb25zIChERVND UklQVE9SIC4gSUQpIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHRoZQorICAgbmV3IHdhdGNoLiAqLwog c3RhdGljIExpc3BfT2JqZWN0Ci1tYWtlX3dhdGNoX2Rlc2NyaXB0b3IgKGludCB3ZCkKK2FkZF93 YXRjaCAoaW50IHdkLCBMaXNwX09iamVjdCBmaWxlbmFtZSwgTGlzcF9PYmplY3QgY2FsbGJhY2sp CiB7Ci0gIC8qIFRPRE8gcmVwbGFjZSB0aGlzIHdpdGggYSBNaXNjIE9iamVjdCEgKi8KLSAgcmV0 dXJuIG1ha2VfbnVtYmVyICh3ZCk7CisgIExpc3BfT2JqZWN0IGRlc2NyaXB0b3IgPSBtYWtlX251 bWJlciAod2QpOworICBMaXNwX09iamVjdCBlbHQgPSBGYXNzb2MgKGRlc2NyaXB0b3IsIHdhdGNo X2xpc3QpOworICBMaXNwX09iamVjdCB3YXRjaGVzID0gRmNkciAoZWx0KTsKKyAgTGlzcF9PYmpl Y3Qgd2F0Y2gsIHdhdGNoX2lkOworCisgIGludCBpZCA9IDA7CisKKyAgd2hpbGUgKCEgTklMUCAo d2F0Y2hlcykpCisgICAgeworICAgICAgaWQgPSBtYXggKGlkLCAxICsgWElOVCAoWENBUiAoWENB UiAod2F0Y2hlcykpKSk7CisgICAgICB3YXRjaGVzID0gWENEUiAod2F0Y2hlcyk7CisgICAgfQor CisgIHdhdGNoX2lkID0gbWFrZV9udW1iZXIgKGlkKTsKKyAgd2F0Y2ggPSBsaXN0MyAod2F0Y2hf aWQsIGZpbGVuYW1lLCBjYWxsYmFjayk7CisKKyAgaWYgKE5JTFAgKGVsdCkpCisgICAgd2F0Y2hf bGlzdCA9IEZjb25zIChGY29ucyAoZGVzY3JpcHRvciwgRmNvbnMgKHdhdGNoLCBRbmlsKSksCisg ICAgICAgICAgICAgICAgICAgICAgICB3YXRjaF9saXN0KTsKKyAgZWxzZQorICAgIFhTRVRDRFIg KGVsdCwgRmNvbnMgKHdhdGNoLCBYQ0RSIChlbHQpKSk7CisKKyAgcmV0dXJuIEZjb25zIChkZXNj cmlwdG9yLCB3YXRjaF9pZCk7Cit9CisKKy8qICBSZW1vdmUgYWxsIHdhdGNoZXMgYXNzb2NpYXRl ZCB3aXRoIGRlc2NyaXB0b3IuICBJZiBJTlZBTElEX1AgaXMKKyAgICB0cnVlLCB0aGUgZGVzY3Jp cHRvciBpcyBhbHJlYWR5IGludmFsaWQsIGkuZS4gaXQgcmVjZWl2ZWQgYQorICAgIElOX0lHTk9S RUQgZXZlbnQuIEluIHRoaXMgY2FzZSBza2lwIGNhbGxpbmcgaW5vdGlmeV9ybV93YXRjaC4gICov CitzdGF0aWMgdm9pZAorcmVtb3ZlX2Rlc2NyaXB0b3IgKExpc3BfT2JqZWN0IGRlc2NyaXB0b3Is IGJvb2wgaW52YWxpZF9wKQoreworICBMaXNwX09iamVjdCBlbHQgPSBGYXNzb2MgKGRlc2NyaXB0 b3IsIHdhdGNoX2xpc3QpOworCisgIGlmICghIE5JTFAgKGVsdCkpCisgICAgeworICAgICAgaW50 IHdkID0gWElOVCAoZGVzY3JpcHRvcik7CisKKyAgICAgIHdhdGNoX2xpc3QgPSBGZGVsZXRlIChl bHQsIHdhdGNoX2xpc3QpOworICAgICAgaWYgKCEgaW52YWxpZF9wKQorICAgICAgICBpZiAoaW5v dGlmeV9ybV93YXRjaCAoaW5vdGlmeWZkLCB3ZCkgPT0gLTEpCisgICAgICAgICAgcmVwb3J0X2Zp bGVfbm90aWZ5X2Vycm9yICgiQ291bGQgbm90IHJtIHdhdGNoIiwgZGVzY3JpcHRvcik7CisgICAg fQorICAvKiBDbGVhbnVwIGlmIG5vIG1vcmUgZmlsZXMgYXJlIHdhdGNoZWQuICAqLworICBpZiAo TklMUCAod2F0Y2hfbGlzdCkpCisgICAgeworICAgICAgZW1hY3NfY2xvc2UgKGlub3RpZnlmZCk7 CisgICAgICBkZWxldGVfcmVhZF9mZCAoaW5vdGlmeWZkKTsKKyAgICAgIGlub3RpZnlmZCA9IC0x OworICAgIH0KK30KKworLyogIFJlbW92ZSB3YXRjaCBhc3NvY2lhdGVkIHdpdGggKGRlc2NyaXB0 b3IsIGlkKS4gKi8KK3N0YXRpYyB2b2lkCityZW1vdmVfd2F0Y2ggKExpc3BfT2JqZWN0IGRlc2Ny aXB0b3IsIExpc3BfT2JqZWN0IGlkKQoreworICBMaXNwX09iamVjdCBlbHQgPSBGYXNzb2MgKGRl c2NyaXB0b3IsIHdhdGNoX2xpc3QpOworCisgIGlmICghIE5JTFAgKGVsdCkpCisgICAgeworICAg ICAgTGlzcF9PYmplY3Qgd2F0Y2ggPSBGYXNzb2MgKGlkLCBYQ0RSIChlbHQpKTsKKworICAgICAg aWYgKCEgTklMUCAod2F0Y2gpKQorICAgICAgICBYU0VUQ0RSIChlbHQsIEZkZWxldGUgKHdhdGNo LCBYQ0RSIChlbHQpKSk7CisKKyAgICAgIC8qIFJlbW92ZSB0aGUgZGVzY3JpcHRvciBpZiBub29u ZSBpcyB3YXRjaGluZyBpdC4gKi8KKyAgICAgIGlmIChOSUxQIChYQ0RSIChlbHQpKSkKKyAgICAg ICAgcmVtb3ZlX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3IsIGZhbHNlKTsKKyAgICB9CiB9CiAKIHN0 YXRpYyBMaXNwX09iamVjdApAQCAtOTYsNyArMTcwLDcgQEAgbWFza190b19hc3BlY3RzICh1aW50 MzJfdCBtYXNrKSB7CiB9CiAKIHN0YXRpYyBMaXNwX09iamVjdAotaW5vdGlmeWV2ZW50X3RvX2V2 ZW50IChMaXNwX09iamVjdCB3YXRjaF9vYmplY3QsIHN0cnVjdCBpbm90aWZ5X2V2ZW50IGNvbnN0 ICpldikKK2lub3RpZnlldmVudF90b19ldmVudCAoTGlzcF9PYmplY3Qgd2F0Y2gsIHN0cnVjdCBp bm90aWZ5X2V2ZW50IGNvbnN0ICpldikKIHsKICAgTGlzcF9PYmplY3QgbmFtZSA9IFFuaWw7CiAg IGlmIChldi0+bGVuID4gMCkKQEAgLTEwNiwxMyArMTgwLDEzIEBAIGlub3RpZnlldmVudF90b19l dmVudCAoTGlzcF9PYmplY3Qgd2F0Y2hfb2JqZWN0LCBzdHJ1Y3QgaW5vdGlmeV9ldmVudCBjb25z dCAqZXYpCiAgICAgICBuYW1lID0gREVDT0RFX0ZJTEUgKG5hbWUpOwogICAgIH0KICAgZWxzZQot ICAgIG5hbWUgPSBYQ0FSIChYQ0RSICh3YXRjaF9vYmplY3QpKTsKKyAgICBuYW1lID0gWENBUiAo WENEUiAod2F0Y2gpKTsKIAotICByZXR1cm4gbGlzdDIgKGxpc3Q0IChtYWtlX3dhdGNoX2Rlc2Ny aXB0b3IgKGV2LT53ZCksCisgIHJldHVybiBsaXN0MiAobGlzdDQgKEZjb25zIChtYWtlX251bWJl ciAoZXYtPndkKSwgWENBUiAod2F0Y2gpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFza190 b19hc3BlY3RzIChldi0+bWFzayksCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCiAgICAg ICAgICAgICAgICAgICAgICAgIG1ha2VfbnVtYmVyIChldi0+Y29va2llKSksCi0JCUZudGggKG1h a2VfbnVtYmVyICgyKSwgd2F0Y2hfb2JqZWN0KSk7CisJCUZudGggKG1ha2VfbnVtYmVyICgyKSwg d2F0Y2gpKTsKIH0KIAogLyogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgRkQgaXMg YXZhaWxhYmxlIGZvciByZWFkLiAgVGhlIGlub3RpZnkKQEAgLTEyMSw3ICsxOTUsNiBAQCBzdGF0 aWMgdm9pZAogaW5vdGlmeV9jYWxsYmFjayAoaW50IGZkLCB2b2lkICpfKQogewogICBzdHJ1Y3Qg aW5wdXRfZXZlbnQgZXZlbnQ7Ci0gIExpc3BfT2JqZWN0IHdhdGNoX29iamVjdDsKICAgaW50IHRv X3JlYWQ7CiAgIGNoYXIgKmJ1ZmZlcjsKICAgc3NpemVfdCBuOwpAQCAtMTQ2LDIwICsyMTksMjMg QEAgaW5vdGlmeV9jYWxsYmFjayAoaW50IGZkLCB2b2lkICpfKQogICB3aGlsZSAoaSA8IChzaXpl X3QpbikKICAgICB7CiAgICAgICBzdHJ1Y3QgaW5vdGlmeV9ldmVudCAqZXYgPSAoc3RydWN0IGlu b3RpZnlfZXZlbnQgKikgJmJ1ZmZlcltpXTsKKyAgICAgIExpc3BfT2JqZWN0IGRlc2NyaXB0b3Ig PSBtYWtlX251bWJlciAoZXYtPndkKTsKKyAgICAgIExpc3BfT2JqZWN0IGVsdCA9IEZhc3NvYyAo ZGVzY3JpcHRvciwgd2F0Y2hfbGlzdCk7CiAKLSAgICAgIHdhdGNoX29iamVjdCA9IEZhc3NvYyAo bWFrZV93YXRjaF9kZXNjcmlwdG9yIChldi0+d2QpLCB3YXRjaF9saXN0KTsKLSAgICAgIGlmICgh TklMUCAod2F0Y2hfb2JqZWN0KSkKKyAgICAgIGlmICghIE5JTFAgKGVsdCkpCiAgICAgICAgIHsK LSAgICAgICAgICBldmVudC5hcmcgPSBpbm90aWZ5ZXZlbnRfdG9fZXZlbnQgKHdhdGNoX29iamVj dCwgZXYpOwotCisgICAgICAgICAgTGlzcF9PYmplY3Qgd2F0Y2hlcyA9IFhDRFIgKGVsdCk7Cisg ICAgICAgICAgd2hpbGUgKCEgTklMUCAod2F0Y2hlcykpCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgIGV2ZW50LmFyZyA9IGlub3RpZnlldmVudF90b19ldmVudCAoWENBUiAod2F0Y2hlcyks IGV2KTsKKyAgICAgICAgICAgICAgaWYgKCFOSUxQIChldmVudC5hcmcpKQorICAgICAgICAgICAg ICAgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZldmVudCk7CisgICAgICAgICAgICAgIHdhdGNo ZXMgPSBYQ0RSICh3YXRjaGVzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAvKiBJZiBldmVu dCB3YXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5OiBEcm9wIGl0IGZyb20gd2F0Y2ggbGlzdC4gICov CiAgICAgICAgICAgaWYgKGV2LT5tYXNrICYgSU5fSUdOT1JFRCkKLSAgICAgICAgICAgIHdhdGNo X2xpc3QgPSBGZGVsZXRlICh3YXRjaF9vYmplY3QsIHdhdGNoX2xpc3QpOwotCi0JICBpZiAoIU5J TFAgKGV2ZW50LmFyZykpCi0JICAgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZldmVudCk7Cisg ICAgICAgICAgICByZW1vdmVfZGVzY3JpcHRvciAoZGVzY3JpcHRvciwgdHJ1ZSk7CiAgICAgICAg IH0KLQogICAgICAgaSArPSBzaXplb2YgKCpldikgKyBldi0+bGVuOwogICAgIH0KIApAQCAtMjky LDE0ICszNjgsMTIgQEAgcmVuYW1lcyAobW92ZWQtZnJvbSBhbmQgbW92ZWQtdG8pLgogU2VlIGlu b3RpZnkoNykgYW5kIGlub3RpZnlfYWRkX3dhdGNoKDIpIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9u LiAgVGhlIGlub3RpZnkgZmQKIGlzIG1hbmFnZWQgaW50ZXJuYWxseSBhbmQgdGhlcmUgaXMgbm8g Y29ycmVzcG9uZGluZyBpbm90aWZ5X2luaXQuICBVc2UKIGBpbm90aWZ5LXJtLXdhdGNoJyB0byBy ZW1vdmUgYSB3YXRjaC4KLSAgICAgICAgICAgICAqLykKKyAgICAgICAgICAgICovKQogICAgICAo TGlzcF9PYmplY3QgZmlsZV9uYW1lLCBMaXNwX09iamVjdCBhc3BlY3QsIExpc3BfT2JqZWN0IGNh bGxiYWNrKQogewogICB1aW50MzJfdCBtYXNrOwotICBMaXNwX09iamVjdCB3YXRjaF9vYmplY3Q7 CiAgIExpc3BfT2JqZWN0IGVuY29kZWRfZmlsZV9uYW1lOwotICBMaXNwX09iamVjdCB3YXRjaF9k ZXNjcmlwdG9yOwotICBpbnQgd2F0Y2hkZXNjID0gLTE7CisgIGludCB3ZCA9IC0xOwogCiAgIENI RUNLX1NUUklORyAoZmlsZV9uYW1lKTsKIApAQCAtMzE0LDIyICszODgsMTEgQEAgaXMgbWFuYWdl ZCBpbnRlcm5hbGx5IGFuZCB0aGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIGlub3RpZnlfaW5pdC4g IFVzZQogCiAgIG1hc2sgPSBhc3BlY3RfdG9faW5vdGlmeW1hc2sgKGFzcGVjdCk7CiAgIGVuY29k ZWRfZmlsZV9uYW1lID0gRU5DT0RFX0ZJTEUgKGZpbGVfbmFtZSk7Ci0gIHdhdGNoZGVzYyA9IGlu b3RpZnlfYWRkX3dhdGNoIChpbm90aWZ5ZmQsIFNTREFUQSAoZW5jb2RlZF9maWxlX25hbWUpLCBt YXNrKTsKLSAgaWYgKHdhdGNoZGVzYyA9PSAtMSkKKyAgd2QgPSBpbm90aWZ5X2FkZF93YXRjaCAo aW5vdGlmeWZkLCBTU0RBVEEgKGVuY29kZWRfZmlsZV9uYW1lKSwgbWFzayk7CisgIGlmICh3ZCA9 PSAtMSkKICAgICByZXBvcnRfZmlsZV9ub3RpZnlfZXJyb3IgKCJDb3VsZCBub3QgYWRkIHdhdGNo IGZvciBmaWxlIiwgZmlsZV9uYW1lKTsKIAotICB3YXRjaF9kZXNjcmlwdG9yID0gbWFrZV93YXRj aF9kZXNjcmlwdG9yICh3YXRjaGRlc2MpOwotCi0gIC8qIERlbGV0ZSBleGlzdGluZyB3YXRjaCBv YmplY3QuICAqLwotICB3YXRjaF9vYmplY3QgPSBGYXNzb2MgKHdhdGNoX2Rlc2NyaXB0b3IsIHdh dGNoX2xpc3QpOwotICBpZiAoIU5JTFAgKHdhdGNoX29iamVjdCkpCi0gICAgICB3YXRjaF9saXN0 ID0gRmRlbGV0ZSAod2F0Y2hfb2JqZWN0LCB3YXRjaF9saXN0KTsKLQotICAvKiBTdG9yZSB3YXRj aCBvYmplY3QgaW4gd2F0Y2ggbGlzdC4gICovCi0gIHdhdGNoX29iamVjdCA9IGxpc3QzICh3YXRj aF9kZXNjcmlwdG9yLCBlbmNvZGVkX2ZpbGVfbmFtZSwgY2FsbGJhY2spOwotICB3YXRjaF9saXN0 ID0gRmNvbnMgKHdhdGNoX29iamVjdCwgd2F0Y2hfbGlzdCk7Ci0KLSAgcmV0dXJuIHdhdGNoX2Rl c2NyaXB0b3I7CisgIHJldHVybiBhZGRfd2F0Y2ggKHdkLCBmaWxlX25hbWUsIGNhbGxiYWNrKTsK IH0KIAogREVGVU4gKCJpbm90aWZ5LXJtLXdhdGNoIiwgRmlub3RpZnlfcm1fd2F0Y2gsIFNpbm90 aWZ5X3JtX3dhdGNoLCAxLCAxLCAwLApAQCAtMzQxLDI0ICs0MDQsMTcgQEAgU2VlIGlub3RpZnlf cm1fd2F0Y2goMikgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgKi8pCiAgICAg IChMaXNwX09iamVjdCB3YXRjaF9kZXNjcmlwdG9yKQogewotICBMaXNwX09iamVjdCB3YXRjaF9v YmplY3Q7Ci0gIGludCB3ZCA9IFhJTlQgKHdhdGNoX2Rlc2NyaXB0b3IpOwogCi0gIGlmIChpbm90 aWZ5X3JtX3dhdGNoIChpbm90aWZ5ZmQsIHdkKSA9PSAtMSkKLSAgICByZXBvcnRfZmlsZV9ub3Rp ZnlfZXJyb3IgKCJDb3VsZCBub3Qgcm0gd2F0Y2giLCB3YXRjaF9kZXNjcmlwdG9yKTsKKyAgTGlz cF9PYmplY3QgZGVzY3JpcHRvciwgaWQ7CiAKLSAgLyogUmVtb3ZlIHdhdGNoIGRlc2NyaXB0b3Ig ZnJvbSB3YXRjaCBsaXN0LiAgKi8KLSAgd2F0Y2hfb2JqZWN0ID0gRmFzc29jICh3YXRjaF9kZXNj cmlwdG9yLCB3YXRjaF9saXN0KTsKLSAgaWYgKCFOSUxQICh3YXRjaF9vYmplY3QpKQotICAgIHdh dGNoX2xpc3QgPSBGZGVsZXRlICh3YXRjaF9vYmplY3QsIHdhdGNoX2xpc3QpOworICBpZiAoISAo Q09OU1AgKHdhdGNoX2Rlc2NyaXB0b3IpCisgICAgICAgICAmJiBJTlRFR0VSUCAoWENBUiAod2F0 Y2hfZGVzY3JpcHRvcikpCisgICAgICAgICAmJiBJTlRFR0VSUCAoWENEUiAod2F0Y2hfZGVzY3Jp cHRvcikpKSkKKyAgICByZXBvcnRfZmlsZV9ub3RpZnlfZXJyb3IgKCJJbnZhbGlkIGRlc2NyaXB0 b3IgIiwgd2F0Y2hfZGVzY3JpcHRvcik7CiAKLSAgLyogQ2xlYW51cCBpZiBubyBtb3JlIGZpbGVz IGFyZSB3YXRjaGVkLiAgKi8KLSAgaWYgKE5JTFAgKHdhdGNoX2xpc3QpKQotICAgIHsKLSAgICAg IGVtYWNzX2Nsb3NlIChpbm90aWZ5ZmQpOwotICAgICAgZGVsZXRlX3JlYWRfZmQgKGlub3RpZnlm ZCk7Ci0gICAgICBpbm90aWZ5ZmQgPSAtMTsKLSAgICB9CisgIGRlc2NyaXB0b3IgPSBYQ0FSICh3 YXRjaF9kZXNjcmlwdG9yKTsKKyAgaWQgPSBYQ0RSICh3YXRjaF9kZXNjcmlwdG9yKTsKKyAgcmVt b3ZlX3dhdGNoIChkZXNjcmlwdG9yLCBpZCk7CiAKICAgcmV0dXJuIFF0OwogfQpAQCAtMzc0LDEw ICs0MzAsMzMgQEAgcmVhc29uLiAgUmVtb3ZpbmcgdGhlIHdhdGNoIGJ5IGNhbGxpbmcgYGlub3Rp Znktcm0td2F0Y2gnIGFsc28gbWFrZXMKIGl0IGludmFsaWQuICAqLykKICAgICAgKExpc3BfT2Jq ZWN0IHdhdGNoX2Rlc2NyaXB0b3IpCiB7Ci0gIExpc3BfT2JqZWN0IHdhdGNoX29iamVjdCA9IEZh c3NvYyAod2F0Y2hfZGVzY3JpcHRvciwgd2F0Y2hfbGlzdCk7Ci0gIHJldHVybiBOSUxQICh3YXRj aF9vYmplY3QpID8gUW5pbCA6IFF0OworICBMaXNwX09iamVjdCBlbHQsIHdhdGNoOworCisgIGlm ICghIChDT05TUCAod2F0Y2hfZGVzY3JpcHRvcikKKyAgICAgICAgICYmIElOVEVHRVJQIChYQ0FS ICh3YXRjaF9kZXNjcmlwdG9yKSkKKyAgICAgICAgICYmIElOVEVHRVJQIChYQ0RSICh3YXRjaF9k ZXNjcmlwdG9yKSkpKQorICAgIHJldHVybiBRbmlsOworCisgIGVsdCA9IEZhc3NvYyAoWENBUiAo d2F0Y2hfZGVzY3JpcHRvciksIHdhdGNoX2xpc3QpOworICB3YXRjaCA9IEZhc3NvYyAoWENEUiAo d2F0Y2hfZGVzY3JpcHRvciksIFhDRFIgKGVsdCkpOworCisgIHJldHVybiAhIE5JTFAgKHdhdGNo KSA/IFF0IDogUW5pbDsKK30KKworI2lmZGVmIElOT1RJRllfREVCVUcKK0RFRlVOICgiaW5vdGlm eS13YXRjaC1saXN0IiwgRmlub3RpZnlfd2F0Y2hfbGlzdCwgU2lub3RpZnlfd2F0Y2hfbGlzdCwg MCwgMCwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVybiBhIGNvcHkgb2YgdGhlIGludGVybmFsIHdh dGNoX2xpc3QuICovKQoreworICByZXR1cm4gRmNvcHlfc2VxdWVuY2UgKHdhdGNoX2xpc3QpOwog fQogCitERUZVTiAoImlub3RpZnktYWxsb2NhdGVkLXAiLCBGaW5vdGlmeV9hbGxvY2F0ZWRfcCwg U2lub3RpZnlfYWxsb2NhdGVkX3AsIDAsIDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gbm9u LW5pbCwgaWYgYSBpbm90aWZ5IGluc3RhbmNlIGlzIGFsbG9jYXRlZC4gKi8pCit7CisgIHJldHVy biBpbm90aWZ5ZmQgPCAwID8gUW5pbCA6IFF0OworfQorI2VuZGlmCisKIHZvaWQKIHN5bXNfb2Zf aW5vdGlmeSAodm9pZCkKIHsKQEAgLTQxNCw2ICs0OTMsMTAgQEAgc3ltc19vZl9pbm90aWZ5ICh2 b2lkKQogICBkZWZzdWJyICgmU2lub3RpZnlfcm1fd2F0Y2gpOwogICBkZWZzdWJyICgmU2lub3Rp ZnlfdmFsaWRfcCk7CiAKKyNpZmRlZiBJTk9USUZZX0RFQlVHCisgIGRlZnN1YnIgKCZTaW5vdGlm eV93YXRjaF9saXN0KTsKKyAgZGVmc3ViciAoJlNpbm90aWZ5X2FsbG9jYXRlZF9wKTsKKyNlbmRp ZgogICBzdGF0aWNwcm8gKCZ3YXRjaF9saXN0KTsKIAogICBGcHJvdmlkZSAoaW50ZXJuX2Nfc3Ry aW5nICgiaW5vdGlmeSIpLCBRbmlsKTsK --=-=-= Content-Type: text/plain -- --=-=-= Content-Type: text/plain Content-Disposition: inline Content-Description: filenotify as is inotify w32notify kqueue gfilenotify gvfs-monitor-dir inotifywait ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- file-create file created file created file skipped created file created file created file deleted file deleted file deleted file attr-changed file attr-changed file stopped file stopped file stopped file deleted file deleted file stopped file stopped file ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- file-read file deleted file deleted file deleted file deleted file deleted file deleted file stopped file stopped file stopped file stopped file stopped file stopped file ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- file-write file changed file changed file attr-changed file changed file changed file changed file deleted file changed file changed file changed file changed file changed file stopped file deleted file deleted file deleted file attr-changed file attr-changed file stopped file stopped file stopped file deleted file deleted file stopped file stopped file ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- file-attrib file attr-changed file changed file attr-changed file attr-changed file attr-changed file attr-changed file deleted file deleted file deleted file deleted file deleted file deleted file stopped file stopped file stopped file stopped file stopped file stopped file ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- file-rename dir renamed dir/src dir/dest deleted dir/dest deleted dir renamed dir/src dir/dest renamed dir/src dir/dest renamed dir/src dir/dest created dir/dest renamed dir/src dir/dest stopped dir deleted dir/dest attr-changed dir/dest attr-changed dir/dest deleted dir/dest timedout 12 deleted dir attr-changed dir/dest attr-changed dir/dest deleted dir stopped dir stopped dir deleted dir/dest deleted dir/dest stopped dir deleted dir deleted dir stopped dir stopped dir dir/src deleted dir timedout 12 deleted dir/src renamed dir/src dir/dest renamed dir/src dir/dest renamed dir/src dir/dest stopped dir/src stopped dir/src stopped dir/src stopped dir/src stopped dir/src stopped dir/src deleted dir/src dir/dest renamed dir/src dir/dest deleted dir/dest deleted dir/dest renamed dir/src dir/dest renamed dir/src dir/dest renamed dir/src dir/dest deleted dir/dest stopped dir/dest stopped dir/dest deleted dir/dest attr-changed dir/dest attr-changed dir/dest stopped dir/dest stopped dir/dest attr-changed dir/dest attr-changed dir/dest deleted dir/dest deleted dir/dest stopped dir/dest stopped dir/dest ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dir-create dir created dir created dir skipped created dir created dir created anon-1 deleted dir deleted dir deleted dir deleted dir deleted anon-1 stopped dir stopped dir stopped dir stopped dir timedout 12 stopped dir ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dir-read dir deleted dir timedout 12 deleted dir deleted dir deleted dir deleted dir stopped dir stopped dir stopped dir stopped dir stopped dir stopped dir ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dir-create-file dir deleted dir/file deleted dir/file deleted dir deleted dir/file deleted dir/file deleted dir/file deleted dir timedout 12 stopped dir deleted dir deleted dir deleted dir stopped dir stopped dir stopped dir stopped dir stopped dir dir/file deleted dir/file deleted dir/file deleted dir/file deleted dir/file deleted dir/file deleted dir/file stopped dir/file stopped dir/file stopped dir/file stopped dir/file stopped dir/file stopped dir/file ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dir-create-dir dir deleted dir/dir deleted dir/dir deleted dir deleted dir/dir deleted dir/dir deleted dir deleted dir timedout 12 stopped dir deleted dir deleted dir stopped dir stopped dir stopped dir stopped dir stopped dir dir/dir deleted dir/dir timedout 12 deleted dir/dir deleted dir/dir deleted dir/dir deleted dir/dir stopped dir/dir stopped dir/dir stopped dir/dir stopped dir/dir stopped dir/dir stopped dir/dir ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dir-attrib dir attr-changed dir timedout 12 attr-changed dir attr-changed dir attr-changed dir attr-changed dir deleted dir stopped dir deleted dir deleted dir deleted dir deleted dir stopped dir stopped dir stopped dir stopped dir stopped dir ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dir-rename dir renamed dir/src dir/dest deleted dir/src skipped renamed dir/src dir/dest deleted dir/src renamed dir anon-1 deleted dir timedout 12 deleted dir deleted dir deleted dir stopped dir stopped dir stopped dir stopped dir stopped dir dir/src deleted dir/src timedout 12 skipped deleted dir/src deleted dir/src deleted dir/src stopped dir/src stopped dir/src stopped dir/src stopped dir/src stopped dir/src dir/dest renamed dir/src dir/dest created dir/dest skipped created dir/dest created dir/dest attr-changed anon-1 deleted dir/dest deleted dir/dest deleted dir/dest attr-changed dir/dest attr-changed anon-1 stopped dir/dest stopped dir/dest stopped dir/dest attr-changed dir/dest deleted anon-1 deleted dir/dest deleted anon-1 stopped dir/dest timedout 12 stopped dir/dest ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;; Local Variables: ;; truncate-lines: t ;; End: --=-=-= Content-Type: text/plain -ap --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 02:36:10 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 06:36:10 +0000 Received: from localhost ([127.0.0.1]:43161 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crfJ4-0006E1-2f for submit@debbugs.gnu.org; Sat, 25 Mar 2017 02:36:10 -0400 Received: from eggs.gnu.org ([208.118.235.92]:33989) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crfJ2-0006Dp-KQ for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 02:36:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1crfIu-0004PP-Dc for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 02:36:03 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50188) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1crfIu-0004P0-34; Sat, 25 Mar 2017 02:36:00 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4403 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1crfIs-0005Xs-BW; Sat, 25 Mar 2017 02:35:59 -0400 Date: Sat, 25 Mar 2017 09:35:53 +0300 Message-Id: <83zig9c186.fsf@gnu.org> From: Eli Zaretskii To: Andreas Politz In-reply-to: <877f3el80j.fsf@luca> (message from Andreas Politz on Fri, 24 Mar 2017 21:44:28 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, michael.albinus@gmx.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Andreas Politz > Date: Fri, 24 Mar 2017 21:44:28 +0100 > Cc: 26126@debbugs.gnu.org > > I also thought about the test-cases and more generally about how to > develop a specification for this library, i.e. how do we want this to > behave. Do we have the desire that it works uniformly across all > participating back-ends ? In general, yes. > And is that even possible ? Almost. Some corner cases (like what happens when the watched directory is deleted) behave differently. > One way to go about this would be to write a series of definitive > unit-tests which specify the intended behavior. Then, allow them to fail > for a specific back-end, until someone has fixed potential bugs for it > and confirmed that the test succeeds. That's how these tests were developed. What you see is the result; if you have specific comments about some known failures, please spell them out. > Anyway, I was bored today, so I took a look at what events these > libraries actually produce, the result of which you may also find below. Thanks, but I have difficulty reading it. Could you please provide a short legend? > Finally, I'm tempted to suggest to get rid of the flags argument of > file-notify-add-watch. As it is, things are already complicated enough > and we don't seem to have many people working on this. I think we could > make it backward-compatible to a certain degree. Note also, that many > file operations trigger both kinds of events anyway. The flags are there for the operations where the differences matter. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 04:58:14 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 08:58:14 +0000 Received: from localhost ([127.0.0.1]:43231 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crhWY-00012P-Im for submit@debbugs.gnu.org; Sat, 25 Mar 2017 04:58:14 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:52843) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crhWW-000128-BG for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 04:58:12 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id F120C179B3B4; Sat, 25 Mar 2017 09:57:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490432273; bh=EFx5O+tEk635Uo3w3VnFcLOYz1w=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=DT5rCSshBnEqeKdEaW0Jj4kxzLO7bzdUAuX5gRqlC7Q/+/aD/VEuqVYaSg0odIw2z uH3Ahl8G1tFfbraVV7H4q7bgV/CkhYRswW2w004tPxRLBJtTrMReWPnWfkmcqwGP0v WYXNm/LWRkf8Juo9HRfGjyvb4Rp5FlpKh7DPaKhE= From: Andreas Politz To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <83zig9c186.fsf@gnu.org> Date: Sat, 25 Mar 2017 09:57:52 +0100 In-Reply-To: <83zig9c186.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 25 Mar 2017 09:35:53 +0300") Message-ID: <87a889hgxb.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, michael.albinus@gmx.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Eli Zaretskii writes: > Thanks, but I have difficulty reading it. Could you please provide a > short legend? Sorry, I forgot to do that. The first column is the name of the test. The 2nd lists all watched entities mapped to symbolic names. Further columns list the events for specific back ends, which may refer to the same names. Because kqueue does not support watching nonexistent files, in most cases I did create them before starting to watch. That's why there are usually no creation events. In every test, I deleted all participating files as the last step. A `(timeout n)' event means just that: We waited for n seconds without receiving a stopped event. If the event lists a name anon-xyz, it means that it contained the filename of a non-watched file. This may signify a bug. All test ran with the last patched I've posted applied. >> Finally, I'm tempted to suggest to get rid of the flags argument of >> file-notify-add-watch. > The flags are there for the operations where the differences matter. When does it matter ? The callback can just ignore the events its not interested in. The sole advantage would be reduced complexity, but, of course, it shouldn't be done, if this is not seen as a sufficient reason. Also: I think in the end we want to add a layer above filenotify.el, with the added ability of multiplexing events in a directory to multiple watches, watching files in that directory. The current implementation (including the patch) returns a new descriptor for every watch. This is good for a low-level api, because it is easy to manage. The downside is, that it does not scale very well. For example every tramp watch starts a new process and (it seems to me) every w32 watch a new thread. And, coming back to the original point, in this case we usually need to watch with all flags enabled anyway. -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 08:51:06 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 12:51:07 +0000 Received: from localhost ([127.0.0.1]:43293 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crl9u-0008Gl-Nk for submit@debbugs.gnu.org; Sat, 25 Mar 2017 08:51:06 -0400 Received: from mout.gmx.net ([212.227.15.19]:57677) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crl9s-0008GF-Vj for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 08:51:05 -0400 Received: from detlef.gmx.de ([87.146.63.110]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LaFmY-1cS1303I22-00m0sk; Sat, 25 Mar 2017 13:50:56 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> Date: Sat, 25 Mar 2017 13:50:53 +0100 In-Reply-To: <87lgrulabr.fsf@luca> (Andreas Politz's message of "Fri, 24 Mar 2017 20:54:32 +0100") Message-ID: <87fui1jz9u.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:ogENy6uVb+LnUfu5q4ge7U4lLfXfpbmEuilSvYyUARbt8PD2zIS ctI6Pi6uZXThAEfrxxtuAcTx0c4tHtCCNvpf8z+9XNT3twye1DwinKqXrZiyJALg8G37Gau NTi4gBDWGfIzaA+hWfkBT80k26jG8Y3k4/+EoVp9SJC2ssk+lac8WnXOsRUgDdyzJYRpdH+ YFasLGkZJUfKMHkZ0kEeQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:z1GOaqNpQGY=:SEUtzwnveDC7NkP1yWE2yK r+v0N1WLGOyv3ESFvOBNqfMTlHf8MxFYkjHdW4aAfUJoB0Hix6f3W7rsZe+U0HcEm21K0A4Fd +5ii58GOkt7HXNN2h/Lz3fM9ivZdTSRWljjcfxwLf8wSPa+PXBAJufLaPp0EJA3Tmk8vGyvGU szho3DjJ3s12S+LOSvkNfB47ZVVCfNNzVeOnKKc4EFL20IHhB1zIBY9bAxBhecpOKttxvu1K8 HXTl7Coygi1EW8Gs7KSO9D2EZCYDXR02SQYU2WD4mJz9vMB08BLJm087pm5eUT8m8x9wd0tyr TWVHnjN0RiK7cskO4vkG6iWxLEflr53i3ZsXvPswk9lzJsp+JEnuLszPH6maxWLw5of5VR+0p NjPAVdZYQNbk0AnbsYNOu0J42hK2YKnkXDbJtgl/qseDv1gFLmF7nZohCu8FUTHU0dIGjfjUD GDRTzs8uuWXD5F1WoOWuLEueH1NmwxnhvqG1DQQ1MNLGiQpC+L2aNTTYJKBkVLYhWiwZ9Fa4G 31J7rDkdim0u5u2rJVrnCHvConIPyUSfOfByb3TWymZyPipuXwFqODj1h/FZ3yJutHgA3gjja Mq8dL+1FzZI2b/a8X/bLJA8GUwa1uElLvNPJyC6zEZg4mlgYvCfnLO44HXEV7X6420c/wj1/b dGKWt10ZIRdv7OIxnn+2DER/kAjSDzp4pd8aDHhk9OHSwDHdqZw291CcJnkSWd4lE/6YRZfTT Nq16g2UzdIXSmmbtBI71CPi4VCfkZThjAu7jVfg0OKKi/Hw4Tsy+UGgL7r3YQAPMuP4x1z40H pqlHQ5V X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: Hi Andreas, > I just wanted to add, that file-handler do not necessarily have to refer > to files, e.g. think of a /proc kind of handler making internal Emacs > state available via filenames. I don't understand. File name handlers in Emacs provide alternative implementations of basic file manipulation operations, see the list in (info "(elisp) Magic File Names") Do you propose to add a new file name handler for the "/proc" virtual file system? > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 09:59:27 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 13:59:27 +0000 Received: from localhost ([127.0.0.1]:44389 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmE3-0001fa-EC for submit@debbugs.gnu.org; Sat, 25 Mar 2017 09:59:27 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:34024) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmE1-0001fI-3k for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 09:59:25 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 227E7179AD9A; Sat, 25 Mar 2017 14:59:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490450346; bh=kuZBut3qD0uNd33kXp+E4eKleqo=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=aTEOTzu7IMhyeX7thwD9BjqOP8Q+e5Qh893V0c5iDRXE4TK9mo+k3mQxBpenTixQF omZCB5yB1a1hQ930CjkI0imoMd5dyMOvx81eKiCG8V69ahIkcHb0fXA3DFxcfjI08F +Ciy/s+wSincVhXGhBsL6OdbzA6N4qYWzJkSosg0= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> Date: Sat, 25 Mar 2017 14:59:05 +0100 In-Reply-To: <87fui1jz9u.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 13:50:53 +0100") Message-ID: <87wpbdfoeu.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Do you propose to add a new file name handler for the "/proc" virtual > file system? No, I propose that it is possible to do that. And it seems that this is already a reality, e.g. url-file-handler. -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 10:04:14 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 14:04:14 +0000 Received: from localhost ([127.0.0.1]:44406 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmIg-0001pR-GX for submit@debbugs.gnu.org; Sat, 25 Mar 2017 10:04:14 -0400 Received: from mout.gmx.net ([212.227.15.19]:49607) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmIf-0001pE-9I for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 10:04:13 -0400 Received: from detlef.gmx.de ([87.146.63.110]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MY7ZA-1ceSTk3qBE-00Usht; Sat, 25 Mar 2017 15:04:05 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> Date: Sat, 25 Mar 2017 15:04:03 +0100 In-Reply-To: <877f3el80j.fsf@luca> (Andreas Politz's message of "Fri, 24 Mar 2017 21:44:28 +0100") Message-ID: <87a889jvvw.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:m9fVJudXhPh5H+bK8rENW2BRdGpZeFhqhX4VBspUjZI/G6zpP06 I3XNuWH7vHGNYS1QPxtxpWV+CUS29Lud2fRHfeqkP2HI0CLUmGMSdsCPAcuIgpaOhpZNjJk AV9G6mYU3SWIXqmt8XzKc6ZcYdA76Ld+rGiqAKNsZJwufUusoDgzMFYcsoI71jcFU6Vm/fd 9GpSUqWToJCP5xSVzi59w== X-UI-Out-Filterresults: notjunk:1;V01:K0:pRGl7Xprf6s=:Fo0/oq98ukLQkxVMJHsvHf SrdBRor66bJvLYcdrqXqx489x8C3ccS3QPcYlt5ok8YsEux6U/e0jbOUiov6nJuvTW0sKlw/F WgxnqCZBpsV1IqzOEW0oEwO8IfZ2cQ8ukxM7LlXa637iLi2PSRNBu0g0zLqjLBhoapdwlVdxH zskwT5TBq3PT3d8ZnB1NUj9OUWW5wUlxymazEFHwp5UCbmvQXeNGngqPFtkS6Tr1U92D9Bj7O +TPrrtsdrEpxKK+hOIetLuipFjT+4bdM/XVzgXLdyD8NDkPjSiv8DQPlb9Ypu8WdQgJs0ernJ RiwJGY3R5qdL6ef/7+uHhxtYaSFHuLmk1pl340ZT6GgXSLSyMpbDO7pXwRpu02lq1FOdqwPQt jKdoeWwh4didkuBEEcv0uYRHKnVEYDbUsCUMTgIaHf+kr+EYDnfVn4VOsWW1TnrgKvTM5ssPn jlYEYDs6IhuyQNp4rHgz2XzaLq5bZaJPklEqwSB4kONkS8B3yPzIouXxgXbFeo9f5vveRHwSr S051Tw8+zyJJXeUdOlQIRWs2ckS5Ry434IN7rKns4dzltZkozOerRW4VYAjdy9GUBN9Qzf/1S bIVSKSYwhb1E5+PBGzJLLdAPb7bwQFeq+y4qgRM1yWr1hWgtp4dG+n0dfHmlFF9tRpsubTXlc zuvAkbLHT0JlyOSEd4zXtmv/F263EFhscjpLk3Uq7WEasOiHFI/6VcDtL3sE6u9R+2p9W7WgJ N+BbEVIxWewTldRTt79gVei8BfOcSSiZHEYe0/vc07Za5mpT03OvvB1Sp96hsXKj1BbZIJyTY H7m44Ah X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: > Hey ! Hi Andreas, > Below is a second version of the previous patch. It is somewhat > conservative, since neither did I attempt to > > + further simplify filenotify.el nor > > + handle differing masks in inotify.c . Thanks for this. Next time you provide a patch, could you pls merge emacs recent changes from master first? Your patch was rejected partly, and I had to apply rejected hunks manually. Comments: > diff --git a/lisp/filenotify.el b/lisp/filenotify.el > index 7eb6229976..5dea67b580 100644 > --- a/lisp/filenotify.el > +++ b/lisp/filenotify.el > @@ -25,6 +25,20 @@ > ;; file notification packages `inotify', `kqueue', `gfilenotify' and > ;; `w32notify'. > > +;; TODO: Pls move TODOs at the end of the file. > +;; * "inotify_add_watch adds a new watch, or modifies an existing watch" > +;; We need to make sure that different watches for the same directory > +;; don't set the mask in a conflicting way regarding changed/attribute-changed > +;; * Also check which other inotify flags are problematic > +;; for concurrent use of the underlying descriptor Well, I had always the hope to modify inotify watches in this case. If there is a watch with flags f1, and a new watch for the same file is requested with flags f2, and f2 contains a flag which is not part of f1, then either the existing watch shall be adapted, or the existing watch shall be removed, and a new shall be installed. Don't know what's possible in inotify. > @@ -48,16 +62,14 @@ file-notify-descriptors > > (DIR (FILE . CALLBACK) (FILE . CALLBACK) ...) > > -Several values for a given DIR happen only for `inotify', when > -different files from the same directory are watched.") > +Several values for a given DIR should currently not occur.") Remove "currently". Every docstring speaks about current state. > (defun file-notify-rm-watch (descriptor) > "Remove an existing watch specified by its DESCRIPTOR. > DESCRIPTOR should be an object returned by `file-notify-add-watch'." > - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) > - (file (if (consp descriptor) (cdr descriptor))) > - (registered (gethash desc file-notify-descriptors)) > + (let* ((file nil) > (defun file-notify-valid-p (descriptor) > "Check a watch specified by its DESCRIPTOR. > DESCRIPTOR should be an object returned by `file-notify-add-watch'." > - (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) > - (file (if (consp descriptor) (cdr descriptor))) > - (registered (gethash desc file-notify-descriptors)) > + (let* ((file nil) In both functions I believe we don't need to bind `file'. The code could be simplified, because (or (not file) ...) always succeeds. Your changes look good; "make -C test filenotify-tests SELECTOR='$(SELECTOR_DEFAULT)'" passes all tests. Even if there is room for improvement I believe you could push your patch to master now, in order to get feedback from other developers. > I also thought about the test-cases and more generally about how to > develop a specification for this library, i.e. how do we want this to > behave. Do we have the desire that it works uniformly across all > participating back-ends ? And is that even possible ? As Eli said, that's the intention. But we cannot reach this goal completely due to the different behaviour of the libraries. > I think it is to easy to adapt the tests for each back-end, until they > succeed and thereby potentially masking actual bugs. That's what file-notify-test.el intends to do. Well, the code has evolved over the time, and it is somehow hard to read. Improvements are welcome! > One way to go about this would be to write a series of definitive > unit-tests which specify the intended behavior. Then, allow them to fail > for a specific back-end, until someone has fixed potential bugs for it > and confirmed that the test succeeds. This would allow for an > incremental improvement on fairly solid grounds. I'm assuming that > people of the future are interested in improving their used back-end > (e.g. make kqueue watch directories properly, if that is possible). Could you show an example how this shall look like? > Anyway, I was bored today, so I took a look at what events these > libraries actually produce, the result of which you may also find below. Thanks; I'll review it next days. > Finally, I'm tempted to suggest to get rid of the flags argument of > file-notify-add-watch. As it is, things are already complicated enough > and we don't seem to have many people working on this. I think we could > make it backward-compatible to a certain degree. Note also, that many > file operations trigger both kinds of events anyway. I agree with you. I haven't seen any different use of the flags yet (but I maybe wrong). Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 10:09:07 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 14:09:07 +0000 Received: from localhost ([127.0.0.1]:44414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmNP-0001wW-FE for submit@debbugs.gnu.org; Sat, 25 Mar 2017 10:09:07 -0400 Received: from mout.gmx.net ([212.227.17.22]:61252) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmNN-0001vu-M2 for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 10:09:06 -0400 Received: from detlef.gmx.de ([87.146.63.110]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M7UUd-1bvGQv0Hhf-00xKWG; Sat, 25 Mar 2017 15:08:58 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> <87wpbdfoeu.fsf@luca> Date: Sat, 25 Mar 2017 15:08:56 +0100 In-Reply-To: <87wpbdfoeu.fsf@luca> (Andreas Politz's message of "Sat, 25 Mar 2017 14:59:05 +0100") Message-ID: <8760ixjvnr.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:mtYg0dNRuQujFYIbtsTSroqQIK7loEYUJgV+s/ZHD2LnNfhTiA6 j+MENxZDxlaIUF/yBM7zzfHceknsRxs4fIiCV9CUpEEoWTJfKD0OYL+ktB+/Pjicd7PrX6u Ln/3XdUFOW0c9AAC3AcBoruAc1DWErjLo7G2fcpFzmHkvxn6G5bqDR75qO0pBUE7PRkl8cm rE9H8IAt1wGWKkbkc7Tog== X-UI-Out-Filterresults: notjunk:1;V01:K0:keyhGdzNtkc=:Rf6Lh8pifyhVBeMP2akY74 1iwXgnFkWeAmuQpfYfr0tHyM/JkPUJT8nFE+2i9oUEJ9lKgHuwQrNzafp3FQaPSquodukuowi WURyai4NqEpz3X4sa5pQLh6c1rQVQxNO+j42Ggak2T8cvEtzcPYiydXgJ0bcTcDdRX0GSUVhS mJ9XM0fnrFzuUj/Qg3NHXIWSI/q4gy/lRsMpFIEvhzUYvhJIp4vAjTal1MQ8L6HmZAxf3qbl8 ibuNNwMpDbwqtPFPn+j0xIy7T+ZM3C7MIa7B6z5HStIXeAbov1u0l+vD84mxjfpWb6KIqABXP ePUC0yG6oV1Q38VAcMz/kc6snvROv6ZLadJ5Bovmd8iUF6U+sDEAN5U/DZ6v53Jsvy28Tq1Pm E+DE0IJhG9Nvu30qqTkmxDJ587iC5cuEg3YzpjzQtMlJrcl4SXYiVW+nlBt1WrcDhLhuj1zDv Zgn1YF9758Mbc3kcOLAJh2b5S868XtJ7rzb1dNWwnRgzyI5qV7klqm62FpL7Majz5D/KptXSg jbRFlZjRwCFYHuCzrscXib6HmMH3f4j+LbYKNRA3QJZKmKIb/he/B4vrFsqYMvzG6ZLJXEkrs AJi59uGAvhGLozQfSEpKpMm6smMze+/qEtKhKNCghdSnjuyyRnxfYSBTtGDqlCYSxx3LMPctm LzP/iemf3ewmCjRcRCf0nTaoisIHuoKQIivvZnDZs9+yP7G2kDefA6rU/sECJhacFke7gvHX+ RGfZVNiq1NKr/lhnWWo+/GZ2bbITZhdCbQ04qOcr9jEv7T6GnjjSQfyZikJAMu8DnOhSnq5+T hMSg/tc X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) Andreas Politz writes: > And it seems that this is already a reality, e.g. url-file-handler. Which works also over file names, like "http://host/path/to/file". > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 10:18:02 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 14:18:03 +0000 Received: from localhost ([127.0.0.1]:44424 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmW2-00029L-M7 for submit@debbugs.gnu.org; Sat, 25 Mar 2017 10:18:02 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42189) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crmW1-00028t-Ai for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 10:18:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1crmVs-0001Vl-5K for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 10:17:56 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55070) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1crmVs-0001Vf-2C; Sat, 25 Mar 2017 10:17:52 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1625 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1crmVq-00065v-P8; Sat, 25 Mar 2017 10:17:51 -0400 Date: Sat, 25 Mar 2017 17:17:42 +0300 Message-Id: <83poh5bfuh.fsf@gnu.org> From: Eli Zaretskii To: Andreas Politz In-reply-to: <87a889hgxb.fsf@luca> (message from Andreas Politz on Sat, 25 Mar 2017 09:57:52 +0100) Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <83zig9c186.fsf@gnu.org> <87a889hgxb.fsf@luca> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, michael.albinus@gmx.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Andreas Politz > Cc: michael.albinus@gmx.de, 26126@debbugs.gnu.org > Date: Sat, 25 Mar 2017 09:57:52 +0100 > > Eli Zaretskii writes: > > > Thanks, but I have difficulty reading it. Could you please provide a > > short legend? > > Sorry, I forgot to do that. > > The first column is the name of the test. The 2nd lists all watched > entities mapped to symbolic names. Further columns list the events for > specific back ends, which may refer to the same names. That still leaves a lot of unclear entries there. maybe it isn't important. > >> Finally, I'm tempted to suggest to get rid of the flags argument of > >> file-notify-add-watch. > > > The flags are there for the operations where the differences matter. > > When does it matter ? Why should we care? That's for the programmer to decide; we just give them the tools. > Also: I think in the end we want to add a layer above filenotify.el, > with the added ability of multiplexing events in a directory to multiple > watches, watching files in that directory. That was the original plan, AFAIR, but this facility still has too few users to try abstracting that higher layer, IMO. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 12:19:47 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 16:19:47 +0000 Received: from localhost ([127.0.0.1]:44496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1croPq-0006rp-OC for submit@debbugs.gnu.org; Sat, 25 Mar 2017 12:19:46 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:39671) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1croPn-0006rZ-Kq for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 12:19:45 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id D999C179B521; Sat, 25 Mar 2017 17:19:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490458764; bh=ZuuaH8Eg7A51SBftFjtczmBzvr0=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=DXocsMqpQveVnSLbkwPJhmQ4noPORDvAHP33ClEiCmcfYtZkSvjmjpNz61Ao6k06N nq2nOGOCyqojbcwGB9ko5b5yRO1IvYgtGlw8zuygdeMIkpRur7cHlXomn6KR22PTeP bwGCspWf0gsk8wjv8rsVrg9WE4HKWFKZTIi6Afiw= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <87a889jvvw.fsf@detlef> Date: Sat, 25 Mar 2017 17:19:23 +0100 In-Reply-To: <87a889jvvw.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 15:04:03 +0100") Message-ID: <87shm1fhx0.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=-=-= Content-Type: text/plain Michael Albinus writes: > Andreas Politz writes: >> + further simplify filenotify.el nor >> >> + handle differing masks in inotify.c . > > Thanks for this. Next time you provide a patch, could you pls merge > emacs recent changes from master first? Your patch was rejected partly, > and I had to apply rejected hunks manually. Comments: Sorry, I forgot to pull. Anyway, here is the more progressive version of the patch, adding both of the above points. (I guess, I'm to conservative sometimes and/or seeing only problems everywhere.) >> +;; * "inotify_add_watch adds a new watch, or modifies an existing watch" >> +;; We need to make sure that different watches for the same directory >> +;; don't set the mask in a conflicting way regarding changed/attribute-changed >> +;; * Also check which other inotify flags are problematic >> +;; for concurrent use of the underlying descriptor > > Well, I had always the hope to modify inotify watches in this case. If > there is a watch with flags f1, and a new watch for the same file is > requested with flags f2, and f2 contains a flag which is not part of f1, > then either the existing watch shall be adapted, or the existing watch > shall be removed, and a new shall be installed. Don't know what's > possible in inotify. I implemented it by always using constantly watching for all events (IN_ALL_EVENTS) and storing the given user-flags with the callback etc. When an event occurs, I check whether it matches the given mask. For that to work, I had to restrict the flag-usage by the user to those not having an effect on the shared descriptor. I also added IN_EXCL_UNLINK as a default. This avoids reporting events for already deleted filenames, which are still opened by some process, which seems what we want as a default. > Your changes look good; "make -C test filenotify-tests > SELECTOR='$(SELECTOR_DEFAULT)'" passes all tests. Even if there is room > for improvement I believe you could push your patch to master now, in > order to get feedback from other developers. I ran the non-expensive tests for inotify, kqueue and they succeeded. I have no push privileges. --=-=-= Content-Type: test/x-patch Content-Disposition: inline Content-Transfer-Encoding: base64 Content-Description: Draft 3 ZGlmZiAtLWdpdCBhL2xpc3AvZmlsZW5vdGlmeS5lbCBiL2xpc3AvZmlsZW5vdGlmeS5lbAppbmRl eCA4MGU5Zjg5OGIyLi4wZjhjOTQ1YTc5IDEwMDY0NAotLS0gYS9saXNwL2ZpbGVub3RpZnkuZWwK KysrIGIvbGlzcC9maWxlbm90aWZ5LmVsCkBAIC00MCw0MSArNDAsNDIgQEAgZmlsZS1ub3RpZnkt LWxpYnJhcnkKIHRvIGJlIHVzZWQgZm9yIGxvY2FsIGZpbGUgc3lzdGVtcy4gIFJlbW90ZSBmaWxl IG5vdGlmaWNhdGlvbnMKIGNvdWxkIHVzZSBhbm90aGVyIGltcGxlbWVudGF0aW9uLiIpCiAKKyhj bC1kZWZzdHJ1Y3QgKGZpbGUtbm90aWZ5LS13YXRjaAorICAgICAgICAgICAgICAgKDpjb25zdHJ1 Y3RvciBuaWwpCisgICAgICAgICAgICAgICAoOmNvbnN0cnVjdG9yIGZpbGUtbm90aWZ5LS13YXRj aC1tYWtlIChkaXJlY3RvcnkgZmlsZW5hbWUgY2FsbGJhY2spKSkKKyAgOzsgV2F0Y2hlZCBkaXJl Y3RvcnkKKyAgZGlyZWN0b3J5CisgIDs7IFdhdGNoZWQgcmVsYXRpdmUgZmlsZW5hbWUsIG5pbCBp ZiB3YXRjaGluZyB0aGUgZGlyZWN0b3J5LgorICBmaWxlbmFtZQorICA7OyBGdW5jdGlvbiB0byBw cm9wYWdhdGUgZXZlbnRzIHRvCisgIGNhbGxiYWNrKQorCisoZGVmdW4gZmlsZS1ub3RpZnktLXdh dGNoLWFic29sdXRlLWZpbGVuYW1lICh3YXRjaCkKKyAgKGlmIChmaWxlLW5vdGlmeS0td2F0Y2gt ZmlsZW5hbWUgd2F0Y2gpCisgICAgICAoZXhwYW5kLWZpbGUtbmFtZQorICAgICAgIChmaWxlLW5v dGlmeS0td2F0Y2gtZmlsZW5hbWUgd2F0Y2gpCisgICAgICAgKGZpbGUtbm90aWZ5LS13YXRjaC1k aXJlY3Rvcnkgd2F0Y2gpKQorICAgIChmaWxlLW5vdGlmeS0td2F0Y2gtZGlyZWN0b3J5IHdhdGNo KSkpCisKIChkZWZ2YXIgZmlsZS1ub3RpZnktZGVzY3JpcHRvcnMgKG1ha2UtaGFzaC10YWJsZSA6 dGVzdCAnZXF1YWwpCiAgICJIYXNoIHRhYmxlIGZvciByZWdpc3RlcmVkIGZpbGUgbm90aWZpY2F0 aW9uIGRlc2NyaXB0b3JzLgogQSBrZXkgaW4gdGhpcyBoYXNoIHRhYmxlIGlzIHRoZSBkZXNjcmlw dG9yIGFzIHJldHVybmVkIGZyb20KIGBpbm90aWZ5JywgYGtxdWV1ZScsIGBnZmlsZW5vdGlmeScs IGB3MzJub3RpZnknIG9yIGEgZmlsZSBuYW1lCi1oYW5kbGVyLiAgVGhlIHZhbHVlIGluIHRoZSBo YXNoIHRhYmxlIGlzIGEgbGlzdAotCi0gIChESVIgKEZJTEUgLiBDQUxMQkFDSykgKEZJTEUgLiBD QUxMQkFDSykgLi4uKQotCi1TZXZlcmFsIHZhbHVlcyBmb3IgYSBnaXZlbiBESVIgaGFwcGVuIG9u bHkgZm9yIGBpbm90aWZ5Jywgd2hlbgotZGlmZmVyZW50IGZpbGVzIGZyb20gdGhlIHNhbWUgZGly ZWN0b3J5IGFyZSB3YXRjaGVkLiIpCitoYW5kbGVyLiAgVGhlIHZhbHVlIGluIHRoZSBoYXNoIHRh YmxlIGlzIGZpbGUtbm90aWZ5LS13YXRjaAorc3RydWN0LiIpCiAKIChkZWZ1biBmaWxlLW5vdGlm eS0tcm0tZGVzY3JpcHRvciAoZGVzY3JpcHRvcikKICAgIlJlbW92ZSBERVNDUklQVE9SIGZyb20g YGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzJy4KLURFU0NSSVBUT1Igc2hvdWxkIGJlIGFuIG9iamVj dCByZXR1cm5lZCBieSBgZmlsZS1ub3RpZnktYWRkLXdhdGNoJy4KLUlmIGl0IGlzIHJlZ2lzdGVy ZWQgaW4gYGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzJywgYSBzdG9wcGVkIGV2ZW50IGlzIHNlbnQu IgotICAobGV0KiAoKGRlc2MgKGlmIChjb25zcCBkZXNjcmlwdG9yKSAoY2FyIGRlc2NyaXB0b3Ip IGRlc2NyaXB0b3IpKQotICAgICAgICAgKHJlZ2lzdGVyZWQgKGdldGhhc2ggZGVzYyBmaWxlLW5v dGlmeS1kZXNjcmlwdG9ycykpCi0JIChmaWxlIChpZiAoY29uc3AgZGVzY3JpcHRvcikgKGNkciBk ZXNjcmlwdG9yKSAoY2wtY2FhZHIgcmVnaXN0ZXJlZCkpKQotCSAoZGlyIChjYXIgcmVnaXN0ZXJl ZCkpKQotCi0gICAgKHdoZW4gKGNvbnNwIHJlZ2lzdGVyZWQpCi0gICAgICA7OyBTZW5kIGBzdG9w cGVkJyBldmVudC4KLSAgICAgICh3aGVuIChjb25zcCAoYXNzb2MgZmlsZSAoY2RyIHJlZ2lzdGVy ZWQpKSkKK0RFU0NSSVBUT1Igc2hvdWxkIGJlIGFuIG9iamVjdCByZXR1cm5lZCBieQorYGZpbGUt bm90aWZ5LWFkZC13YXRjaCcuICBJZiBpdCBpcyByZWdpc3RlcmVkIGluCitgZmlsZS1ub3RpZnkt ZGVzY3JpcHRvcnMnLCBhIHN0b3BwZWQgZXZlbnQgaXMgc2VudC4iCisgICh3aGVuLWxldCAod2F0 Y2ggKGdldGhhc2ggZGVzY3JpcHRvciBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykpCisgICAgOzsg U2VuZCBgc3RvcHBlZCcgZXZlbnQuCisgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgIChmdW5j YWxsCi0gICAgICAgICAoY2RyIChhc3NvYyBmaWxlIChjZHIgcmVnaXN0ZXJlZCkpKQotICAgICAg ICAgYCgsZGVzY3JpcHRvciBzdG9wcGVkICwoaWYgZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSBmaWxl IGRpcikgZGlyKSkpKQotCi0gICAgICA7OyBNb2RpZnkgYGZpbGUtbm90aWZ5LWRlc2NyaXB0b3Jz Jy4KLSAgICAgIChpZiAobm90IGZpbGUpCi0JICAocmVtaGFzaCBkZXNjIGZpbGUtbm90aWZ5LWRl c2NyaXB0b3JzKQotCShzZXRjZHIgcmVnaXN0ZXJlZAotCQkoZGVsZXRlIChhc3NvYyBmaWxlIChj ZHIgcmVnaXN0ZXJlZCkpIChjZHIgcmVnaXN0ZXJlZCkpKQotCShpZiAobnVsbCAoY2RyIHJlZ2lz dGVyZWQpKQotCSAgICAocmVtaGFzaCBkZXNjIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKQotCSAg KHB1dGhhc2ggZGVzYyByZWdpc3RlcmVkIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkpKSkpCisg ICAgICAgICAoZmlsZS1ub3RpZnktLXdhdGNoLWNhbGxiYWNrIHdhdGNoKQorICAgICAgICAgYCgs ZGVzY3JpcHRvciBzdG9wcGVkICwoZmlsZS1ub3RpZnktLXdhdGNoLWFic29sdXRlLWZpbGVuYW1l IHdhdGNoKSkpCisgICAgICAocmVtaGFzaCBkZXNjcmlwdG9yIGZpbGUtbm90aWZ5LWRlc2NyaXB0 b3JzKSkpKQogCiA7OyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYGlub3RpZnknLCBga3F1ZXVl JywgYGdmaWxlbm90aWZ5JyBhbmQKIDs7IGB3MzJub3RpZnknIGV2ZW50cy4KQEAgLTg4LDcgKzg5 LDggQEAgZmlsZS1ub3RpZnktaGFuZGxlLWV2ZW50CiBPdGhlcndpc2UsIHNpZ25hbCBhIGBmaWxl LW5vdGlmeS1lcnJvcicuIgogICAoaW50ZXJhY3RpdmUgImUiKQogICA7OyhtZXNzYWdlICJmaWxl LW5vdGlmeS1oYW5kbGUtZXZlbnQgJVMiIGV2ZW50KQotICAoaWYgKGFuZCAoZXEgKGNhciBldmVu dCkgJ2ZpbGUtbm90aWZ5KQorICAoaWYgKGFuZCAoY29uc3AgZXZlbnQpCisgICAgICAgICAgIChl cSAoY2FyIGV2ZW50KSAnZmlsZS1ub3RpZnkpCiAJICAgKD49IChsZW5ndGggZXZlbnQpIDMpKQog ICAgICAgKGZ1bmNhbGwgKG50aCAyIGV2ZW50KSAobnRoIDEgZXZlbnQpKQogICAgIChzaWduYWwg J2ZpbGUtbm90aWZ5LWVycm9yCkBAIC05NiwzMyArOTgsMzMgQEAgZmlsZS1ub3RpZnktaGFuZGxl LWV2ZW50CiAKIDs7IE5lZWRlZCBmb3IgYGlub3RpZnknIGFuZCBgdzMybm90aWZ5Jy4gIEluIHRo ZSBsYXR0ZXIgY2FzZSwgQ09PS0lFIGlzIG5pbC4KIChkZWZ2YXIgZmlsZS1ub3RpZnktLXBlbmRp bmctZXZlbnQgbmlsCi0gICJBIHBlbmRpbmcgZmlsZSBub3RpZmljYXRpb24gZXZlbnRzIGZvciBh IGZ1dHVyZSBgcmVuYW1lZCcgYWN0aW9uLgorICAiQSBwZW5kaW5nIGZpbGUgbm90aWZpY2F0aW9u IGV2ZW50IGZvciBhIGZ1dHVyZSBgcmVuYW1lZCcgYWN0aW9uLgogSXQgaXMgYSBmb3JtICgoREVT Q1JJUFRPUiBBQ1RJT04gRklMRSBbRklMRTEtT1ItQ09PS0lFXSkgQ0FMTEJBQ0spLiIpCiAKIChk ZWZ1biBmaWxlLW5vdGlmeS0tZXZlbnQtd2F0Y2hlZC1maWxlIChldmVudCkKICAgIlJldHVybiBm aWxlIG9yIGRpcmVjdG9yeSBiZWluZyB3YXRjaGVkLgogQ291bGQgYmUgZGlmZmVyZW50IGZyb20g dGhlIGRpcmVjdG9yeSB3YXRjaGVkIGJ5IHRoZSBiYWNrZW5kIGxpYnJhcnkuIgotICAobGV0KiAo KGRlc2MgKGlmIChjb25zcCAoY2FyIGV2ZW50KSkgKGNhYXIgZXZlbnQpIChjYXIgZXZlbnQpKSkK LSAgICAgICAgIChyZWdpc3RlcmVkIChnZXRoYXNoIGRlc2MgZmlsZS1ub3RpZnktZGVzY3JpcHRv cnMpKQotCSAoZmlsZSAoaWYgKGNvbnNwIChjYXIgZXZlbnQpKSAoY2RhciBldmVudCkgKGNsLWNh YWRyIHJlZ2lzdGVyZWQpKSkKLQkgKGRpciAoY2FyIHJlZ2lzdGVyZWQpKSkKLSAgICAoaWYgZmls ZSAoZXhwYW5kLWZpbGUtbmFtZSBmaWxlIGRpcikgZGlyKSkpCisgICh3aGVuLWxldCAod2F0Y2gg KGdldGhhc2ggKGNhciBldmVudCkgZmlsZS1ub3RpZnktZGVzY3JpcHRvcnMpKQorICAgIChmaWxl LW5vdGlmeS0td2F0Y2gtYWJzb2x1dGUtZmlsZW5hbWUgd2F0Y2gpKSkKIAogKGRlZnVuIGZpbGUt bm90aWZ5LS1ldmVudC1maWxlLW5hbWUgKGV2ZW50KQogICAiUmV0dXJuIGZpbGUgbmFtZSBvZiBm aWxlIG5vdGlmaWNhdGlvbiBldmVudCwgb3IgbmlsLiIKLSAgKGRpcmVjdG9yeS1maWxlLW5hbWUK LSAgIChleHBhbmQtZmlsZS1uYW1lCi0gICAgKG9yICAoYW5kIChzdHJpbmdwIChudGggMiBldmVu dCkpIChudGggMiBldmVudCkpICIiKQotICAgIChjYXIgKGdldGhhc2ggKGNhciBldmVudCkgZmls ZS1ub3RpZnktZGVzY3JpcHRvcnMpKSkpKQorICAod2hlbi1sZXQgKHdhdGNoIChnZXRoYXNoIChj YXIgZXZlbnQpIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkKKyAgICAoZGlyZWN0b3J5LWZpbGUt bmFtZQorICAgICAoZXhwYW5kLWZpbGUtbmFtZQorICAgICAgKG9yICAoYW5kIChzdHJpbmdwIChu dGggMiBldmVudCkpIChudGggMiBldmVudCkpICIiKQorICAgICAgKGZpbGUtbm90aWZ5LS13YXRj aC1kaXJlY3Rvcnkgd2F0Y2gpKSkpKQogCiA7OyBPbmx5IGBnZmlsZW5vdGlmeScgY291bGQgcmV0 dXJuIHR3byBmaWxlIG5hbWVzLgogKGRlZnVuIGZpbGUtbm90aWZ5LS1ldmVudC1maWxlMS1uYW1l IChldmVudCkKICAgIlJldHVybiBzZWNvbmQgZmlsZSBuYW1lIG9mIGZpbGUgbm90aWZpY2F0aW9u IGV2ZW50LCBvciBuaWwuCiBUaGlzIGlzIGF2YWlsYWJsZSBpbiBjYXNlIGEgZmlsZSBoYXMgYmVl biBtb3ZlZC4iCi0gIChhbmQgKHN0cmluZ3AgKG50aCAzIGV2ZW50KSkKLSAgICAgICAoZGlyZWN0 b3J5LWZpbGUtbmFtZQotICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZQotICAgICAgICAgKG50aCAz IGV2ZW50KSAoY2FyIChnZXRoYXNoIChjYXIgZXZlbnQpIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3Jz KSkpKSkpCisgICh3aGVuLWxldCAod2F0Y2ggKGdldGhhc2ggKGNhciBldmVudCkgZmlsZS1ub3Rp ZnktZGVzY3JpcHRvcnMpKQorICAgIChhbmQgKHN0cmluZ3AgKG50aCAzIGV2ZW50KSkKKyAgICAg ICAgIChkaXJlY3RvcnktZmlsZS1uYW1lCisgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUKKyAg ICAgICAgICAgKG50aCAzIGV2ZW50KQorICAgICAgICAgICAoZmlsZS1ub3RpZnktLXdhdGNoLWRp cmVjdG9yeSB3YXRjaCkpKSkpKQogCiA7OyBDb29raWVzIGFyZSBvZmZlcmVkIGJ5IGBpbm90aWZ5 JyBvbmx5LgogKGRlZnVuIGZpbGUtbm90aWZ5LS1ldmVudC1jb29raWUgKGV2ZW50KQpAQCAtMTMw LDIxICsxMzIsNiBAQCBmaWxlLW5vdGlmeS0tZXZlbnQtY29va2llCiBUaGlzIGlzIGF2YWlsYWJs ZSBpbiBjYXNlIGEgZmlsZSBoYXMgYmVlbiBtb3ZlZC4iCiAgIChudGggMyBldmVudCkpCiAKLTs7 IGBpbm90aWZ5JyByZXR1cm5zIHRoZSBzYW1lIGRlc2NyaXB0b3Igd2hlbiB0aGUgZmlsZSAoZGly ZWN0b3J5KQotOzsgdXNlcyB0aGUgc2FtZSBpbm9kZS4gIFdlIHdhbnQgdG8gZGlzdGluZ3Vpc2gs IGFuZCBhcHBseSBhIHZpcnR1YWwKLTs7IGRlc2NyaXB0b3Igd2hpY2ggbWFrZSB0aGUgZGlmZmVy ZW5jZS4KLShkZWZ1biBmaWxlLW5vdGlmeS0tZGVzY3JpcHRvciAoZGVzYyBmaWxlKQotICAiUmV0 dXJuIHRoZSBkZXNjcmlwdG9yIHRvIGJlIHVzZWQgaW4gYGZpbGUtbm90aWZ5LSotd2F0Y2gnLgot Rm9yIGBnZmlsZW5vdGlmeScgYW5kIGB3MzJub3RpZnknIGl0IGlzIHRoZSBzYW1lIGRlc2NyaXB0 b3IgYXMKLXVzZWQgaW4gdGhlIGxvdy1sZXZlbCBmaWxlIG5vdGlmaWNhdGlvbiBwYWNrYWdlLiIK LSAgKGlmIChhbmQgKG5hdG51bXAgZGVzYykgKGVxIGZpbGUtbm90aWZ5LS1saWJyYXJ5ICdpbm90 aWZ5KSkKLSAgICAgIChjb25zIGRlc2MKLSAgICAgICAgICAgIChhbmQgKHN0cmluZ3AgZmlsZSkK LSAgICAgICAgICAgICAgICAgKGNhciAoYXNzb2MKLSAgICAgICAgICAgICAgICAgICAgICAgKGZp bGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgKGdldGhh c2ggZGVzYyBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykpKSkpCi0gICAgZGVzYykpCi0KIDs7IFRo ZSBjYWxsYmFjayBmdW5jdGlvbiB1c2VkIHRvIG1hcCBiZXR3ZWVuIHNwZWNpZmljIGZsYWdzIG9m IHRoZQogOzsgcmVzcGVjdGl2ZSBmaWxlIG5vdGlmaWNhdGlvbnMsIGFuZCB0aGUgb25lcyB3ZSBy ZXR1cm4uCiAoZGVmdW4gZmlsZS1ub3RpZnktY2FsbGJhY2sgKGV2ZW50KQpAQCAtMTUyLDEzOCAr MTM5LDEyNSBAQCBmaWxlLW5vdGlmeS1jYWxsYmFjawogRVZFTlQgaXMgdGhlIGNhZHIgb2YgdGhl IGV2ZW50IGluIGBmaWxlLW5vdGlmeS1oYW5kbGUtZXZlbnQnCiBcKERFU0NSSVBUT1IgQUNUSU9O UyBGSUxFIFtGSUxFMS1PUi1DT09LSUVdKS4iCiAgIChsZXQqICgoZGVzYyAoY2FyIGV2ZW50KSkK LQkgKHJlZ2lzdGVyZWQgKGdldGhhc2ggZGVzYyBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykpCisJ ICh3YXRjaCAoZ2V0aGFzaCBkZXNjIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkKIAkgKGFjdGlv bnMgKG50aCAxIGV2ZW50KSkKIAkgKGZpbGUgKGZpbGUtbm90aWZ5LS1ldmVudC1maWxlLW5hbWUg ZXZlbnQpKQotCSBmaWxlMSBjYWxsYmFjayBwZW5kaW5nLWV2ZW50IHN0b3BwZWQpCisJIGZpbGUx IHBlbmRpbmctZXZlbnQgc3RvcHBlZCkKIAogICAgIDs7IE1ha2UgYWN0aW9ucyBhIGxpc3QuCiAg ICAgKHVubGVzcyAoY29uc3AgYWN0aW9ucykgKHNldHEgYWN0aW9ucyAoY29ucyBhY3Rpb25zIG5p bCkpKQogCi0gICAgOzsgTG9vcCBvdmVyIHJlZ2lzdGVyZWQgZW50cmllcy4gIEluIGZhY3QsIG1v cmUgdGhhbiBvbmUgZW50cnkKLSAgICA7OyBoYXBwZW5zIG9ubHkgZm9yIGBpbm90aWZ5Jy4KLSAg ICAoZG9saXN0IChlbnRyeSAoY2RyIHJlZ2lzdGVyZWQpKQotCi0gICAgICA7OyBDaGVjaywgdGhh dCBldmVudCBpcyBtZWFudCBmb3IgdXMuCi0gICAgICAodW5sZXNzIChzZXRxIGNhbGxiYWNrIChj ZHIgZW50cnkpKQotCShzZXRxIGFjdGlvbnMgbmlsKSkKLQorICAgICh3aGVuIHdhdGNoCiAgICAg ICA7OyBMb29wIG92ZXIgYWN0aW9ucy4gIEluIGZhY3QsIG1vcmUgdGhhbiBvbmUgYWN0aW9uIGhh cHBlbnMgb25seQogICAgICAgOzsgZm9yIGBpbm90aWZ5JyBhbmQgYGtxdWV1ZScuCi0gICAgICAo ZG9saXN0IChhY3Rpb24gYWN0aW9ucykKLQotCTs7IFNlbmQgcGVuZGluZyBldmVudCwgaWYgaXQg ZG9lc24ndCBtYXRjaC4KLQkod2hlbiAoYW5kIGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2ZW50Ci0J CSAgIDs7IFRoZSBjb29raWUgZG9lc24ndCBtYXRjaC4KLQkJICAgKG5vdCAoZXEgKGZpbGUtbm90 aWZ5LS1ldmVudC1jb29raWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBmaWxl LW5vdGlmeS0tcGVuZGluZy1ldmVudCkpCi0JCQkgICAgKGZpbGUtbm90aWZ5LS1ldmVudC1jb29r aWUgZXZlbnQpKSkKLQkJICAgKG9yCi0JCSAgICA7OyBpbm90aWZ5LgotCQkgICAgKGFuZCAoZXEg KG50aCAxIChjYXIgZmlsZS1ub3RpZnktLXBlbmRpbmctZXZlbnQpKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnbW92ZWQtZnJvbSkKLQkJCSAobm90IChlcSBhY3Rpb24gJ21vdmVkLXRv KSkpCi0JCSAgICA7OyB3MzJub3RpZnkuCi0JCSAgICAoYW5kIChlcSAobnRoIDEgKGNhciBmaWxl LW5vdGlmeS0tcGVuZGluZy1ldmVudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdy ZW5hbWVkLWZyb20pCi0JCQkgKG5vdCAoZXEgYWN0aW9uICdyZW5hbWVkLXRvKSkpKSkKLSAgICAg ICAgICAoc2V0cSBwZW5kaW5nLWV2ZW50IGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2ZW50Ci0gICAg ICAgICAgICAgICAgZmlsZS1ub3RpZnktLXBlbmRpbmctZXZlbnQgbmlsKQotICAgICAgICAgIChz ZXRjYXIgKGNkYXIgcGVuZGluZy1ldmVudCkgJ2RlbGV0ZWQpKQotCi0JOzsgTWFwIGFjdGlvbi4g IFdlIGlnbm9yZSBhbGwgZXZlbnRzIHdoaWNoIGNhbm5vdCBiZSBtYXBwZWQuCi0JKHNldHEgYWN0 aW9uCi0JICAgICAgKGNvbmQKLQkgICAgICAgKChtZW1xIGFjdGlvbgotICAgICAgICAgICAgICAg ICAgICAgICcoYXR0cmlidXRlLWNoYW5nZWQgY2hhbmdlZCBjcmVhdGVkIGRlbGV0ZWQgcmVuYW1l ZCkpCi0JCWFjdGlvbikKLQkgICAgICAgKChtZW1xIGFjdGlvbiAnKG1vdmVkIHJlbmFtZSkpCi0J CTs7IFRoZSBrcXVldWUgcmVuYW1lIGV2ZW50IGRvZXMgbm90IHJldHVybiBmaWxlMSBpbgotCQk7 OyBjYXNlIGEgZmlsZSBtb25pdG9yIGlzIGVzdGFibGlzaGVkLgotCQkoaWYgKHNldHEgZmlsZTEg KGZpbGUtbm90aWZ5LS1ldmVudC1maWxlMS1uYW1lIGV2ZW50KSkKLQkJICAgICdyZW5hbWVkICdk ZWxldGVkKSkKLQkgICAgICAgKChlcSBhY3Rpb24gJ2lnbm9yZWQpCi0gICAgICAgICAgICAgICAg KHNldHEgc3RvcHBlZCB0IGFjdGlvbnMgbmlsKSkKLQkgICAgICAgKChtZW1xIGFjdGlvbiAnKGF0 dHJpYiBsaW5rKSkgJ2F0dHJpYnV0ZS1jaGFuZ2VkKQotCSAgICAgICAoKG1lbXEgYWN0aW9uICco Y3JlYXRlIGFkZGVkKSkgJ2NyZWF0ZWQpCi0JICAgICAgICgobWVtcSBhY3Rpb24gJyhtb2RpZnkg bW9kaWZpZWQgd3JpdGUpKSAnY2hhbmdlZCkKLQkgICAgICAgKChtZW1xIGFjdGlvbiAnKGRlbGV0 ZSBkZWxldGUtc2VsZiBtb3ZlLXNlbGYgcmVtb3ZlZCkpICdkZWxldGVkKQotCSAgICAgICA7OyBN YWtlIHRoZSBldmVudCBwZW5kaW5nLgotCSAgICAgICAoKG1lbXEgYWN0aW9uICcobW92ZWQtZnJv bSByZW5hbWVkLWZyb20pKQotCQkoc2V0cSBmaWxlLW5vdGlmeS0tcGVuZGluZy1ldmVudAotICAg ICAgICAgICAgICAgICAgICAgIGAoKCxkZXNjICxhY3Rpb24gLGZpbGUgLChmaWxlLW5vdGlmeS0t ZXZlbnQtY29va2llIGV2ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICxjYWxsYmFjaykp Ci0JCW5pbCkKLQkgICAgICAgOzsgTG9vayBmb3IgcGVuZGluZyBldmVudC4KLQkgICAgICAgKCht ZW1xIGFjdGlvbiAnKG1vdmVkLXRvIHJlbmFtZWQtdG8pKQotCQkoaWYgKG51bGwgZmlsZS1ub3Rp ZnktLXBlbmRpbmctZXZlbnQpCi0JCSAgICAnY3JlYXRlZAotCQkgIChzZXRxIGZpbGUxIGZpbGUK LQkJCWZpbGUgKGZpbGUtbm90aWZ5LS1ldmVudC1maWxlLW5hbWUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjYXIgZmlsZS1ub3RpZnktLXBlbmRpbmctZXZlbnQpKSkKLSAgICAgICAg ICAgICAgICAgIDs7IElmIHRoZSBzb3VyY2UgaXMgaGFuZGxlZCBieSBhbm90aGVyIHdhdGNoLCB3 ZQotICAgICAgICAgICAgICAgICAgOzsgbXVzdCBmaXJlIHRoZSByZW5hbWUgZXZlbnQgdGhlcmUg YXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICh3aGVuIChub3QgKGVxdWFsIChmaWxlLW5vdGlm eS0tZGVzY3JpcHRvciBkZXNjIGZpbGUxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZpbGUtbm90aWZ5LS1kZXNjcmlwdG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNhYXIgZmlsZS1ub3RpZnktLXBlbmRpbmctZXZlbnQpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbm90aWZ5LS1ldmVudC1maWxlLW5hbWUK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS1ub3RpZnktLXBlbmRp bmctZXZlbnQpKSkpCi0gICAgICAgICAgICAgICAgICAgIChzZXRxIHBlbmRpbmctZXZlbnQKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgYCgoLChjYWFyIGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2 ZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVkICxmaWxlICxmaWxlMSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGNhZHIgZmlsZS1ub3RpZnktLXBlbmRpbmct ZXZlbnQpKSkpCi0gICAgICAgICAgICAgICAgICAoc2V0cSBmaWxlLW5vdGlmeS0tcGVuZGluZy1l dmVudCBuaWwpCi0gICAgICAgICAgICAgICAgICAncmVuYW1lZCkpKSkKLQotICAgICAgICA7OyBB cHBseSBwZW5kaW5nIGNhbGxiYWNrLgotICAgICAgICAod2hlbiBwZW5kaW5nLWV2ZW50Ci0gICAg ICAgICAgKHNldGNhcgotICAgICAgICAgICAoY2FyIHBlbmRpbmctZXZlbnQpCi0gICAgICAgICAg IChmaWxlLW5vdGlmeS0tZGVzY3JpcHRvcgotICAgICAgICAgICAgKGNhYXIgcGVuZGluZy1ldmVu dCkKLSAgICAgICAgICAgIChmaWxlLW5vdGlmeS0tZXZlbnQtZmlsZS1uYW1lIGZpbGUtbm90aWZ5 LS1wZW5kaW5nLWV2ZW50KSkpCi0gICAgICAgICAgKGZ1bmNhbGwgKGNhZHIgcGVuZGluZy1ldmVu dCkgKGNhciBwZW5kaW5nLWV2ZW50KSkKLSAgICAgICAgICAoc2V0cSBwZW5kaW5nLWV2ZW50IG5p bCkpCi0KLQk7OyBBcHBseSBjYWxsYmFjay4KLQkod2hlbiAoYW5kIGFjdGlvbgotCQkgICAob3IK LQkJICAgIDs7IElmIHRoZXJlIGlzIG5vIHJlbGF0aXZlIGZpbGUgbmFtZSBmb3IgdGhhdCB3YXRj aCwKLQkJICAgIDs7IHdlIHdhdGNoIHRoZSB3aG9sZSBkaXJlY3RvcnkuCi0JCSAgICAobnVsbCAo bnRoIDAgZW50cnkpKQotCQkgICAgOzsgRmlsZSBtYXRjaGVzLgotCQkgICAgKHN0cmluZy1lcXVh bAotCQkgICAgIChudGggMCBlbnRyeSkgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkpCi0J CSAgICA7OyBEaXJlY3RvcnkgbWF0Y2hlcy4KLQkJICAgIChzdHJpbmctZXF1YWwKLQkJICAgICAo ZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxlKQotCQkgICAgIChmaWxlLW5hbWUtbm9uZGlyZWN0 b3J5IChjYXIgcmVnaXN0ZXJlZCkpKQotCQkgICAgOzsgRmlsZTEgbWF0Y2hlcy4KLQkJICAgIChh bmQgKHN0cmluZ3AgZmlsZTEpCi0JCQkgKHN0cmluZy1lcXVhbAotCQkJICAobnRoIDAgZW50cnkp IChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUxKSkpKSkKLSAgICAgICAgICA7OyhtZXNzYWdl Ci0gICAgICAgICAgIDs7ImZpbGUtbm90aWZ5LWNhbGxiYWNrICVTICVTICVTICVTICVTIgotICAg ICAgICAgICA7OyhmaWxlLW5vdGlmeS0tZGVzY3JpcHRvciBkZXNjIChjYXIgZW50cnkpKQotICAg ICAgICAgICA7O2FjdGlvbiBmaWxlIGZpbGUxIHJlZ2lzdGVyZWQpCi0JICAoaWYgZmlsZTEKLQkg ICAgICAoZnVuY2FsbAotCSAgICAgICBjYWxsYmFjawotCSAgICAgICBgKCwoZmlsZS1ub3RpZnkt LWRlc2NyaXB0b3IgZGVzYyAoY2FyIGVudHJ5KSkKLSAgICAgICAgICAgICAgICAgLGFjdGlvbiAs ZmlsZSAsZmlsZTEpKQotCSAgICAoZnVuY2FsbAotCSAgICAgY2FsbGJhY2sKLQkgICAgIGAoLChm aWxlLW5vdGlmeS0tZGVzY3JpcHRvciBkZXNjIChjYXIgZW50cnkpKSAsYWN0aW9uICxmaWxlKSkp KQotCi0gICAgICAgIDs7IFNlbmQgYHN0b3BwZWQnIGV2ZW50LgotICAgICAgICAod2hlbiAob3Ig c3RvcHBlZAotICAgICAgICAgICAgICAgICAgKGFuZCAobWVtcSBhY3Rpb24gJyhkZWxldGVkIHJl bmFtZWQpKQotICAgICAgICAgICAgICAgICAgICAgICA7OyBOb3QsIHdoZW4gYSBmaWxlIGlzIGJh Y2tlZCB1cC4KLSAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoYW5kIChzdHJpbmdwIGZpbGUx KSAoYmFja3VwLWZpbGUtbmFtZS1wIGZpbGUxKSkpCi0gICAgICAgICAgICAgICAgICAgICAgIDs7 IFdhdGNoZWQgZmlsZSBvciBkaXJlY3RvcnkgaXMgY29uY2VybmVkLgotICAgICAgICAgICAgICAg ICAgICAgICAoc3RyaW5nLWVxdWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlIChmaWxl LW5vdGlmeS0tZXZlbnQtd2F0Y2hlZC1maWxlIGV2ZW50KSkpKQotICAgICAgICAgIChmaWxlLW5v dGlmeS1ybS13YXRjaCAoZmlsZS1ub3RpZnktLWRlc2NyaXB0b3IgZGVzYyAoY2FyIGVudHJ5KSkp KSkpKSkKKyAgICAgICh3aGlsZSBhY3Rpb25zCisgICAgICAgIChsZXQgKChhY3Rpb24gKHBvcCBh Y3Rpb25zKSkpCisgICAgICAgICAgOzsgU2VuZCBwZW5kaW5nIGV2ZW50LCBpZiBpdCBkb2Vzbid0 IG1hdGNoLgorICAgICAgICAgICh3aGVuIChhbmQgZmlsZS1ub3RpZnktLXBlbmRpbmctZXZlbnQK KyAgICAgICAgICAgICAgICAgICAgIDs7IFRoZSBjb29raWUgZG9lc24ndCBtYXRjaC4KKyAgICAg ICAgICAgICAgICAgICAgIChub3QgKGVxIChmaWxlLW5vdGlmeS0tZXZlbnQtY29va2llCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBmaWxlLW5vdGlmeS0tcGVuZGluZy1ldmVu dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1ub3RpZnktLWV2ZW50LWNv b2tpZSBldmVudCkpKQorICAgICAgICAgICAgICAgICAgICAgKG9yCisgICAgICAgICAgICAgICAg ICAgICAgOzsgaW5vdGlmeS4KKyAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcSAobnRoIDEg KGNhciBmaWxlLW5vdGlmeS0tcGVuZGluZy1ldmVudCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ21vdmVkLWZyb20pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChl cSBhY3Rpb24gJ21vdmVkLXRvKSkpCisgICAgICAgICAgICAgICAgICAgICAgOzsgdzMybm90aWZ5 LgorICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxIChudGggMSAoY2FyIGZpbGUtbm90aWZ5 LS1wZW5kaW5nLWV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVuYW1l ZC1mcm9tKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgYWN0aW9uICdyZW5h bWVkLXRvKSkpKSkKKyAgICAgICAgICAgIChzZXRxIHBlbmRpbmctZXZlbnQgZmlsZS1ub3RpZnkt LXBlbmRpbmctZXZlbnQKKyAgICAgICAgICAgICAgICAgIGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2 ZW50IG5pbCkKKyAgICAgICAgICAgIChzZXRjYXIgKGNkYXIgcGVuZGluZy1ldmVudCkgJ2RlbGV0 ZWQpKQorCisgICAgICAgICAgOzsgTWFwIGFjdGlvbi4gIFdlIGlnbm9yZSBhbGwgZXZlbnRzIHdo aWNoIGNhbm5vdCBiZSBtYXBwZWQuCisgICAgICAgICAgKHNldHEgYWN0aW9uCisgICAgICAgICAg ICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgKChtZW1xIGFjdGlvbgorICAgICAgICAgICAg ICAgICAgICAgICAgJyhhdHRyaWJ1dGUtY2hhbmdlZCBjaGFuZ2VkIGNyZWF0ZWQgZGVsZXRlZCBy ZW5hbWVkKSkKKyAgICAgICAgICAgICAgICAgIGFjdGlvbikKKyAgICAgICAgICAgICAgICAgKCht ZW1xIGFjdGlvbiAnKG1vdmVkIHJlbmFtZSkpCisgICAgICAgICAgICAgICAgICA7OyBUaGUga3F1 ZXVlIHJlbmFtZSBldmVudCBkb2VzIG5vdCByZXR1cm4gZmlsZTEgaW4KKyAgICAgICAgICAgICAg ICAgIDs7IGNhc2UgYSBmaWxlIG1vbml0b3IgaXMgZXN0YWJsaXNoZWQuCisgICAgICAgICAgICAg ICAgICAoaWYgKHNldHEgZmlsZTEgKGZpbGUtbm90aWZ5LS1ldmVudC1maWxlMS1uYW1lIGV2ZW50 KSkKKyAgICAgICAgICAgICAgICAgICAgICAncmVuYW1lZCAnZGVsZXRlZCkpCisgICAgICAgICAg ICAgICAgICgoZXEgYWN0aW9uICdpZ25vcmVkKQorICAgICAgICAgICAgICAgICAgKHNldHEgc3Rv cHBlZCB0IGFjdGlvbnMgbmlsKSkKKyAgICAgICAgICAgICAgICAgKChtZW1xIGFjdGlvbiAnKGF0 dHJpYiBsaW5rKSkgJ2F0dHJpYnV0ZS1jaGFuZ2VkKQorICAgICAgICAgICAgICAgICAoKG1lbXEg YWN0aW9uICcoY3JlYXRlIGFkZGVkKSkgJ2NyZWF0ZWQpCisgICAgICAgICAgICAgICAgICgobWVt cSBhY3Rpb24gJyhtb2RpZnkgbW9kaWZpZWQgd3JpdGUpKSAnY2hhbmdlZCkKKyAgICAgICAgICAg ICAgICAgKChtZW1xIGFjdGlvbiAnKGRlbGV0ZSBkZWxldGUtc2VsZiBtb3ZlLXNlbGYgcmVtb3Zl ZCkpICdkZWxldGVkKQorICAgICAgICAgICAgICAgICA7OyBNYWtlIHRoZSBldmVudCBwZW5kaW5n LgorICAgICAgICAgICAgICAgICAoKG1lbXEgYWN0aW9uICcobW92ZWQtZnJvbSByZW5hbWVkLWZy b20pKQorICAgICAgICAgICAgICAgICAgKHNldHEgZmlsZS1ub3RpZnktLXBlbmRpbmctZXZlbnQK KyAgICAgICAgICAgICAgICAgICAgICAgIGAoKCxkZXNjICxhY3Rpb24gLGZpbGUgLChmaWxlLW5v dGlmeS0tZXZlbnQtY29va2llIGV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLChm aWxlLW5vdGlmeS0td2F0Y2gtY2FsbGJhY2sgd2F0Y2gpKSkKKyAgICAgICAgICAgICAgICAgIG5p bCkKKyAgICAgICAgICAgICAgICAgOzsgTG9vayBmb3IgcGVuZGluZyBldmVudC4KKyAgICAgICAg ICAgICAgICAgKChtZW1xIGFjdGlvbiAnKG1vdmVkLXRvIHJlbmFtZWQtdG8pKQorICAgICAgICAg ICAgICAgICAgKGlmIChudWxsIGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2ZW50KQorICAgICAgICAg ICAgICAgICAgICAgICdjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgIChzZXRxIGZpbGUxIGZp bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSAoZmlsZS1ub3RpZnktLWV2ZW50LWZp bGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGZpbGUtbm90aWZ5 LS1wZW5kaW5nLWV2ZW50KSkpCisgICAgICAgICAgICAgICAgICAgIDs7IElmIHRoZSBzb3VyY2Ug aXMgaGFuZGxlZCBieSBhbm90aGVyIHdhdGNoLCB3ZQorICAgICAgICAgICAgICAgICAgICA7OyBt dXN0IGZpcmUgdGhlIHJlbmFtZSBldmVudCB0aGVyZSBhcyB3ZWxsLgorICAgICAgICAgICAgICAg ICAgICAod2hlbiAobm90IChlcXVhbCBkZXNjIChjYWFyIGZpbGUtbm90aWZ5LS1wZW5kaW5nLWV2 ZW50KSkpCisgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcGVuZGluZy1ldmVudAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGAoKCwoY2FhciBmaWxlLW5vdGlmeS0tcGVuZGluZy1ldmVu dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVkICxmaWxlICxmaWxlMSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoY2FkciBmaWxlLW5vdGlmeS0tcGVuZGlu Zy1ldmVudCkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHNldHEgZmlsZS1ub3RpZnktLXBlbmRp bmctZXZlbnQgbmlsKQorICAgICAgICAgICAgICAgICAgICAncmVuYW1lZCkpKSkKKworICAgICAg ICAgIDs7IEFwcGx5IHBlbmRpbmcgY2FsbGJhY2suCisgICAgICAgICAgKHdoZW4gcGVuZGluZy1l dmVudAorICAgICAgICAgICAgKHNldGNhcgorICAgICAgICAgICAgIChjYXIgcGVuZGluZy1ldmVu dCkKKyAgICAgICAgICAgICAoY2FhciBwZW5kaW5nLWV2ZW50KSkKKyAgICAgICAgICAgIChmdW5j YWxsIChjYWRyIHBlbmRpbmctZXZlbnQpIChjYXIgcGVuZGluZy1ldmVudCkpCisgICAgICAgICAg ICAoc2V0cSBwZW5kaW5nLWV2ZW50IG5pbCkpCisKKyAgICAgICAgICA7OyBBcHBseSBjYWxsYmFj ay4KKyAgICAgICAgICAod2hlbiAoYW5kIGFjdGlvbgorICAgICAgICAgICAgICAgICAgICAgKG9y CisgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhlcmUgaXMgbm8gcmVsYXRpdmUgZmlsZSBu YW1lIGZvciB0aGF0IHdhdGNoLAorICAgICAgICAgICAgICAgICAgICAgIDs7IHdlIHdhdGNoIHRo ZSB3aG9sZSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgKG51bGwgKGZpbGUtbm90 aWZ5LS13YXRjaC1maWxlbmFtZSB3YXRjaCkpCisgICAgICAgICAgICAgICAgICAgICAgOzsgRmls ZSBtYXRjaGVzLgorICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctZXF1YWwKKyAgICAgICAg ICAgICAgICAgICAgICAgKGZpbGUtbm90aWZ5LS13YXRjaC1maWxlbmFtZSB3YXRjaCkKKyAgICAg ICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkpCisgICAgICAg ICAgICAgICAgICAgICAgOzsgRGlyZWN0b3J5IG1hdGNoZXMuCisgICAgICAgICAgICAgICAgICAg ICAgKHN0cmluZy1lcXVhbAorICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLW5vbmRp cmVjdG9yeSBmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLW5vbmRpcmVj dG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbm90aWZ5LS13YXRjaC1kaXJlY3Rv cnkgd2F0Y2gpKSkKKyAgICAgICAgICAgICAgICAgICAgICA7OyBGaWxlMSBtYXRjaGVzLgorICAg ICAgICAgICAgICAgICAgICAgIChhbmQgKHN0cmluZ3AgZmlsZTEpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWVxdWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZp bGUtbm90aWZ5LS13YXRjaC1maWxlbmFtZSB3YXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxlMSkpKSkpCisgICAgICAgICAgICA7Oyht ZXNzYWdlCisgICAgICAgICAgICA7OyJmaWxlLW5vdGlmeS1jYWxsYmFjayAlUyAlUyAlUyAlUyAl UyIKKyAgICAgICAgICAgIDs7ZGVzYworICAgICAgICAgICAgOzthY3Rpb24gZmlsZSBmaWxlMSB3 YXRjaCkKKyAgICAgICAgICAgIChpZiBmaWxlMQorICAgICAgICAgICAgICAgIChmdW5jYWxsIChm aWxlLW5vdGlmeS0td2F0Y2gtY2FsbGJhY2sgd2F0Y2gpCisgICAgICAgICAgICAgICAgICAgICAg ICAgYCgsZGVzYyAsYWN0aW9uICxmaWxlICxmaWxlMSkpCisgICAgICAgICAgICAgIChmdW5jYWxs IChmaWxlLW5vdGlmeS0td2F0Y2gtY2FsbGJhY2sgd2F0Y2gpCisgICAgICAgICAgICAgICAgICAg ICAgIGAoLGRlc2MgICxhY3Rpb24gLGZpbGUpKSkpCisKKyAgICAgICAgICA7OyBTZW5kIGBzdG9w cGVkJyBldmVudC4KKyAgICAgICAgICAod2hlbiAob3Igc3RvcHBlZAorICAgICAgICAgICAgICAg ICAgICAoYW5kIChtZW1xIGFjdGlvbiAnKGRlbGV0ZWQgcmVuYW1lZCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgTm90LCB3aGVuIGEgZmlsZSBpcyBiYWNrZWQgdXAuCisgICAgICAgICAg ICAgICAgICAgICAgICAgKG5vdCAoYW5kIChzdHJpbmdwIGZpbGUxKSAoYmFja3VwLWZpbGUtbmFt ZS1wIGZpbGUxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgV2F0Y2hlZCBmaWxlIG9y IGRpcmVjdG9yeSBpcyBjb25jZXJuZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu Zy1lcXVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIChmaWxlLW5vdGlmeS0tZXZl bnQtd2F0Y2hlZC1maWxlIGV2ZW50KSkpKQorICAgICAgICAgICAgKGZpbGUtbm90aWZ5LXJtLXdh dGNoIGRlc2MpKSkpKSkpCiAKIDs7IGBrcXVldWUnLCBgZ2ZpbGVub3RpZnknIGFuZCBgdzMybm90 aWZ5JyByZXR1cm4gYSB1bmlxdWUgZGVzY3JpcHRvcgogOzsgZm9yIGV2ZXJ5IGBmaWxlLW5vdGlm eS1hZGQtd2F0Y2gnLCB3aGlsZSBgaW5vdGlmeScgcmV0dXJucyBhIHVuaXF1ZQpAQCAtMzM5LDcg KzMxMyw3IEBAIGZpbGUtbm90aWZ5LWFkZC13YXRjaAogCSAgICAgICAoaWYgKGZpbGUtZGlyZWN0 b3J5LXAgZmlsZSkKIAkJICAgZmlsZQogCQkgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZSkpKSkK LQlkZXNjIGZ1bmMgbC1mbGFncyByZWdpc3RlcmVkIGVudHJ5KQorICAgICAgICAgZGVzYyBmdW5j IGwtZmxhZ3MpCiAKICAgICAodW5sZXNzIChmaWxlLWRpcmVjdG9yeS1wIGRpcikKICAgICAgIChz aWduYWwgJ2ZpbGUtbm90aWZ5LWVycm9yIGAoIkRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCIgLGRp cikpKQpAQCAtMzkxLDY2ICszNjUsNDYgQEAgZmlsZS1ub3RpZnktYWRkLXdhdGNoCiAgICAgICAg ICAgICAgICAgICBsLWZsYWdzICdmaWxlLW5vdGlmeS1jYWxsYmFjaykpKQogCiAgICAgOzsgTW9k aWZ5IGBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycycuCi0gICAgKHNldHEgZmlsZSAodW5sZXNzIChm aWxlLWRpcmVjdG9yeS1wIGZpbGUpIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUpKQotCSAg ZGVzYyAoaWYgKGNvbnNwIGRlc2MpIChjYXIgZGVzYykgZGVzYykKLQkgIHJlZ2lzdGVyZWQgKGdl dGhhc2ggZGVzYyBmaWxlLW5vdGlmeS1kZXNjcmlwdG9ycykKLQkgIGVudHJ5IGAoLGZpbGUgLiAs Y2FsbGJhY2spKQotICAgICh1bmxlc3MgKG1lbWJlciBlbnRyeSAoY2RyIHJlZ2lzdGVyZWQpKQot ICAgICAgKHB1dGhhc2ggZGVzYyBgKCxkaXIgLGVudHJ5IC4gLChjZHIgcmVnaXN0ZXJlZCkpIGZp bGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkKLQorICAgIChsZXQgKCh3YXRjaCAoZmlsZS1ub3RpZnkt LXdhdGNoLW1ha2UKKyAgICAgICAgICAgICAgICAgIGRpcgorICAgICAgICAgICAgICAgICAgKHVu bGVzcyAoZmlsZS1kaXJlY3RvcnktcCBmaWxlKSAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxl KSkKKyAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKSkpCisgICAgICAocHV0aGFzaCBkZXNjIHdh dGNoIGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzKSkKICAgICA7OyBSZXR1cm4gZGVzY3JpcHRvci4K LSAgICAoZmlsZS1ub3RpZnktLWRlc2NyaXB0b3IgZGVzYyBmaWxlKSkpCisgICAgZGVzYykpCiAK IChkZWZ1biBmaWxlLW5vdGlmeS1ybS13YXRjaCAoZGVzY3JpcHRvcikKICAgIlJlbW92ZSBhbiBl eGlzdGluZyB3YXRjaCBzcGVjaWZpZWQgYnkgaXRzIERFU0NSSVBUT1IuCiBERVNDUklQVE9SIHNo b3VsZCBiZSBhbiBvYmplY3QgcmV0dXJuZWQgYnkgYGZpbGUtbm90aWZ5LWFkZC13YXRjaCcuIgot ICAobGV0KiAoKGRlc2MgKGlmIChjb25zcCBkZXNjcmlwdG9yKSAoY2FyIGRlc2NyaXB0b3IpIGRl c2NyaXB0b3IpKQotCSAoZmlsZSAoaWYgKGNvbnNwIGRlc2NyaXB0b3IpIChjZHIgZGVzY3JpcHRv cikpKQotICAgICAgICAgKHJlZ2lzdGVyZWQgKGdldGhhc2ggZGVzYyBmaWxlLW5vdGlmeS1kZXNj cmlwdG9ycykpCi0JIChkaXIgKGNhciByZWdpc3RlcmVkKSkKLQkgKGhhbmRsZXIgKGFuZCAoc3Ry aW5ncCBkaXIpCi0gICAgICAgICAgICAgICAgICAgICAgIChmaW5kLWZpbGUtbmFtZS1oYW5kbGVy IGRpciAnZmlsZS1ub3RpZnktcm0td2F0Y2gpKSkpCi0KLSAgICAod2hlbiAoc3RyaW5ncCBkaXIp Ci0gICAgICA7OyBDYWxsIGxvdy1sZXZlbCBmdW5jdGlvbi4KLSAgICAgICh3aGVuIChvciAobm90 IGZpbGUpCi0gICAgICAgICAgICAgICAgKGFuZCAoPSAobGVuZ3RoIChjZHIgcmVnaXN0ZXJlZCkp IDEpCi0gICAgICAgICAgICAgICAgICAgICAoYXNzb2MgZmlsZSAoY2RyIHJlZ2lzdGVyZWQpKSkp Ci0gICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwKLSAgICAgICAgICAgIChpZiBoYW5kbGVyCi0g ICAgICAgICAgICAgICAgOzsgQSBmaWxlIG5hbWUgaGFuZGxlciBjb3VsZCBleGlzdCBldmVuIGlm IHRoZXJlIGlzIG5vIGxvY2FsCi0gICAgICAgICAgICAgICAgOzsgZmlsZSBub3RpZmljYXRpb24g c3VwcG9ydC4KLSAgICAgICAgICAgICAgICAoZnVuY2FsbCBoYW5kbGVyICdmaWxlLW5vdGlmeS1y bS13YXRjaCBkZXNjcmlwdG9yKQotCi0gICAgICAgICAgICAgIChmdW5jYWxsCi0gICAgICAgICAg ICAgICAoY29uZAotICAgICAgICAgICAgICAgICgoZXEgZmlsZS1ub3RpZnktLWxpYnJhcnkgJ2lu b3RpZnkpICdpbm90aWZ5LXJtLXdhdGNoKQotICAgICAgICAgICAgICAgICgoZXEgZmlsZS1ub3Rp ZnktLWxpYnJhcnkgJ2txdWV1ZSkgJ2txdWV1ZS1ybS13YXRjaCkKLSAgICAgICAgICAgICAgICAo KGVxIGZpbGUtbm90aWZ5LS1saWJyYXJ5ICdnZmlsZW5vdGlmeSkgJ2dmaWxlLXJtLXdhdGNoKQot ICAgICAgICAgICAgICAgICgoZXEgZmlsZS1ub3RpZnktLWxpYnJhcnkgJ3czMm5vdGlmeSkgJ3cz Mm5vdGlmeS1ybS13YXRjaCkpCi0gICAgICAgICAgICAgICBkZXNjKSkKLSAgICAgICAgICAoZmls ZS1ub3RpZnktZXJyb3IgbmlsKSkpCi0KLSAgICAgIDs7IE1vZGlmeSBgZmlsZS1ub3RpZnktZGVz Y3JpcHRvcnMnLgotICAgICAgKGZpbGUtbm90aWZ5LS1ybS1kZXNjcmlwdG9yIGRlc2NyaXB0b3Ip KSkpCisgICh3aGVuLWxldCAod2F0Y2ggKGdldGhhc2ggZGVzY3JpcHRvciBmaWxlLW5vdGlmeS1k ZXNjcmlwdG9ycykpCisgICAgKGxldCAoKGhhbmRsZXIgKGZpbmQtZmlsZS1uYW1lLWhhbmRsZXIK KyAgICAgICAgICAgICAgICAgICAgKGZpbGUtbm90aWZ5LS13YXRjaC1kaXJlY3Rvcnkgd2F0Y2gp CisgICAgICAgICAgICAgICAgICAgICdmaWxlLW5vdGlmeS1ybS13YXRjaCkpKQorICAgICAgKGNv bmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgIChpZiBoYW5kbGVyCisgICAgICAgICAgICAgIDs7 IEEgZmlsZSBuYW1lIGhhbmRsZXIgY291bGQgZXhpc3QgZXZlbiBpZiB0aGVyZSBpcyBubyBsb2Nh bAorICAgICAgICAgICAgICA7OyBmaWxlIG5vdGlmaWNhdGlvbiBzdXBwb3J0LgorICAgICAgICAg ICAgICAoZnVuY2FsbCBoYW5kbGVyICdmaWxlLW5vdGlmeS1ybS13YXRjaCBkZXNjcmlwdG9yKQor CisgICAgICAgICAgICAoZnVuY2FsbAorICAgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAg ICgoZXEgZmlsZS1ub3RpZnktLWxpYnJhcnkgJ2lub3RpZnkpICdpbm90aWZ5LXJtLXdhdGNoKQor ICAgICAgICAgICAgICAoKGVxIGZpbGUtbm90aWZ5LS1saWJyYXJ5ICdrcXVldWUpICdrcXVldWUt cm0td2F0Y2gpCisgICAgICAgICAgICAgICgoZXEgZmlsZS1ub3RpZnktLWxpYnJhcnkgJ2dmaWxl bm90aWZ5KSAnZ2ZpbGUtcm0td2F0Y2gpCisgICAgICAgICAgICAgICgoZXEgZmlsZS1ub3RpZnkt LWxpYnJhcnkgJ3czMm5vdGlmeSkgJ3czMm5vdGlmeS1ybS13YXRjaCkpCisgICAgICAgICAgICAg ZGVzY3JpcHRvcikpCisgICAgICAgIChmaWxlLW5vdGlmeS1lcnJvciBuaWwpKSkKKyAgICA7OyBN b2RpZnkgYGZpbGUtbm90aWZ5LWRlc2NyaXB0b3JzJy4KKyAgICAoZmlsZS1ub3RpZnktLXJtLWRl c2NyaXB0b3IgZGVzY3JpcHRvcikpKQogCiAoZGVmdW4gZmlsZS1ub3RpZnktdmFsaWQtcCAoZGVz Y3JpcHRvcikKICAgIkNoZWNrIGEgd2F0Y2ggc3BlY2lmaWVkIGJ5IGl0cyBERVNDUklQVE9SLgog REVTQ1JJUFRPUiBzaG91bGQgYmUgYW4gb2JqZWN0IHJldHVybmVkIGJ5IGBmaWxlLW5vdGlmeS1h ZGQtd2F0Y2gnLiIKLSAgKGxldCogKChkZXNjIChpZiAoY29uc3AgZGVzY3JpcHRvcikgKGNhciBk ZXNjcmlwdG9yKSBkZXNjcmlwdG9yKSkKLQkgKGZpbGUgKGlmIChjb25zcCBkZXNjcmlwdG9yKSAo Y2RyIGRlc2NyaXB0b3IpKSkKLSAgICAgICAgIChyZWdpc3RlcmVkIChnZXRoYXNoIGRlc2MgZmls ZS1ub3RpZnktZGVzY3JpcHRvcnMpKQotCSAoZGlyIChjYXIgcmVnaXN0ZXJlZCkpCi0JIGhhbmRs ZXIpCi0KLSAgICAod2hlbiAoc3RyaW5ncCBkaXIpCi0gICAgICAoc2V0cSBoYW5kbGVyIChmaW5k LWZpbGUtbmFtZS1oYW5kbGVyIGRpciAnZmlsZS1ub3RpZnktdmFsaWQtcCkpCi0KLSAgICAgIChh bmQgKG9yIDs7IEl0IGlzIGEgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgKG5vdCBmaWxlKQot ICAgICAgICAgICAgICAgOzsgVGhlIGZpbGUgaXMgcmVnaXN0ZXJlZC4KLSAgICAgICAgICAgICAg IChhc3NvYyBmaWxlIChjZHIgcmVnaXN0ZXJlZCkpKQotICAgICAgICAgICAoaWYgaGFuZGxlcgor ICAod2hlbi1sZXQgKHdhdGNoIChnZXRoYXNoIGRlc2NyaXB0b3IgZmlsZS1ub3RpZnktZGVzY3Jp cHRvcnMpKQorICAgIChsZXQgKChoYW5kbGVyIChmaW5kLWZpbGUtbmFtZS1oYW5kbGVyCisgICAg ICAgICAgICAgICAgICAgIChmaWxlLW5vdGlmeS0td2F0Y2gtZGlyZWN0b3J5IHdhdGNoKQorICAg ICAgICAgICAgICAgICAgICAnZmlsZS1ub3RpZnktdmFsaWQtcCkpKQorICAgICAgKGFuZCAoaWYg aGFuZGxlcgogICAgICAgICAgICAgICAgOzsgQSBmaWxlIG5hbWUgaGFuZGxlciBjb3VsZCBleGlz dCBldmVuIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgICAgICAgICA7OyBsb2NhbCBmaWxlIG5vdGlm aWNhdGlvbiBzdXBwb3J0LgogICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGFuZGxlciAnZmlsZS1u b3RpZnktdmFsaWQtcCBkZXNjcmlwdG9yKQpAQCAtNDYwLDkgKzQxNCwxOSBAQCBmaWxlLW5vdGlm eS12YWxpZC1wCiAgICAgICAgICAgICAgICAoKGVxIGZpbGUtbm90aWZ5LS1saWJyYXJ5ICdrcXVl dWUpICdrcXVldWUtdmFsaWQtcCkKICAgICAgICAgICAgICAgICgoZXEgZmlsZS1ub3RpZnktLWxp YnJhcnkgJ2dmaWxlbm90aWZ5KSAnZ2ZpbGUtdmFsaWQtcCkKICAgICAgICAgICAgICAgICgoZXEg ZmlsZS1ub3RpZnktLWxpYnJhcnkgJ3czMm5vdGlmeSkgJ3czMm5vdGlmeS12YWxpZC1wKSkKLSAg ICAgICAgICAgICAgZGVzYykpCisgICAgICAgICAgICAgIGRlc2NyaXB0b3IpKQogICAgICAgICAg ICB0KSkpKQogCisKKzs7IFRPRE86Cis7OyAqIFdhdGNoaW5nIGEgL2Rpci9maWxlIG1heSByZWNl aXZlIGV2ZW50cyBmb3IgZGlyLgorOzsgICAoVGhpcyBtYXkgYmUgdGhlIGRlc2lyZWQgYmVoYXZp b3VyLikKKzs7ICogV2F0Y2hpbmcgYSBmaWxlIGluIGEgYWxyZWFkeSB3YXRjaGVkIGRpcmVjdG9y eQorOzsgICBJZiB0aGUgZmlsZSBpcyBjcmVhdGVkIGFuZCAqdGhlbiogYSB3YXRjaCBpcyBhZGRl ZCB0byB0aGF0IGZpbGUsIHRoZQorOzsgICB3YXRjaCBtaWdodCByZWNlaXZlIGV2ZW50cyB3aGlj aCBvY2N1cmVkIHByaW9yIHRvIGl0IGJlaW5nIGNyZWF0ZWQsCis7OyAgIGR1ZSB0byB0aGUgd2F5 IGV2ZW50cyBhcmUgcHJvcGFnYXRlZCBkdXJpbmcgaWRsZSB0aW1lLiAgTm90ZTogVGhpcworOzsg ICBtYXkgYmUgcGVyZmVjdGx5IGFjY2VwdGFibGUuCisKIDs7IFRoZSBlbmQ6CiAocHJvdmlkZSAn ZmlsZW5vdGlmeSkKIApkaWZmIC0tZ2l0IGEvc3JjL2lub3RpZnkuYyBiL3NyYy9pbm90aWZ5LmMK aW5kZXggNjFlZjYxNTMyOC4uYTA4NDU1MmFkYyAxMDA2NDQKLS0tIGEvc3JjL2lub3RpZnkuYwor KysgYi9zcmMvaW5vdGlmeS5jCkBAIC00MSwyMyArNDEsMzAgQEAgYWxvbmcgd2l0aCBHTlUgRW1h Y3MuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2lm bmRlZiBJTl9PTkxZRElSCiAjIGRlZmluZSBJTl9PTkxZRElSIDAKICNlbmRpZgorI2RlZmluZSBJ Tk9USUZZX0RFRkFVTFRfTUFTSyAoSU5fQUxMX0VWRU5UU3xJTl9FWENMX1VOTElOSykKIAogLyog RmlsZSBoYW5kbGUgZm9yIGlub3RpZnkuICAqLwogc3RhdGljIGludCBpbm90aWZ5ZmQgPSAtMTsK IAotLyogQXNzb2MgbGlzdCBvZiBmaWxlcyBiZWluZyB3YXRjaGVkLgotICAgRm9ybWF0OiAod2F0 Y2gtZGVzY3JpcHRvciBuYW1lIGNhbGxiYWNrKQorLyogQWxpc3Qgb2YgZmlsZXMgYmVpbmcgd2F0 Y2hlZC4gIFdlIHdhbnQgdGhlIHJldHVybmVkIGRlc2NyaXB0b3IgdG8KKyAgIGJlIHVuaXF1ZSBm b3IgZXZlcnkgd2F0Y2gsIGJ1dCBpbm90aWZ5IHJldHVybnMgdGhlIHNhbWUgZGVzY3JpcHRvcgor ICAgZm9yIG11bHRpcGxlIGNhbGxzIHRvIGlub3RpZnlfYWRkX3dhdGNoIHdpdGggdGhlIHNhbWUg ZmlsZS4gIEluCisgICBvcmRlciB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIHdlIGFkZCBhIElELCB1 bmlxdWVseSBpZGVudGlmeWluZyBhCisgICB3YXRjaC9maWxlIGNvbWJpbmF0aW9uLgorCisgICBG b3IgdGhlIHNhbWUgcmVhc29uLCB3ZSBhbHNvIG5lZWQgdG8gc3RvcmUgdGhlIHdhdGNoJ3MgbWFz ayBhbmQgd2UKKyAgIGNhbid0IGFsbG93IHRoZSBmb2xsb3dpbmcgZmxhZ3MgdG8gYmUgdXNlZC4K KworICAgSU5fRVhDTF9VTkxJTksKKyAgIElOX01BU0tfQURECisgICBJTl9PTkVTSE9UCisgICBJ Tl9PTkxZRElSCisKKyAgIEZvcm1hdDogKGRlc2NyaXB0b3IgLiAoKGlkIGZpbGVuYW1lIGNhbGxi YWNrIG1hc2spIC4uLikpCiAgKi8KIHN0YXRpYyBMaXNwX09iamVjdCB3YXRjaF9saXN0OwogCiBz dGF0aWMgTGlzcF9PYmplY3QKLW1ha2Vfd2F0Y2hfZGVzY3JpcHRvciAoaW50IHdkKQotewotICAv KiBUT0RPIHJlcGxhY2UgdGhpcyB3aXRoIGEgTWlzYyBPYmplY3QhICovCi0gIHJldHVybiBtYWtl X251bWJlciAod2QpOwotfQotCi1zdGF0aWMgTGlzcF9PYmplY3QKIG1hc2tfdG9fYXNwZWN0cyAo dWludDMyX3QgbWFzaykgewogICBMaXNwX09iamVjdCBhc3BlY3RzID0gUW5pbDsKICAgaWYgKG1h c2sgJiBJTl9BQ0NFU1MpCkBAIC05NSw3NyArMTAyLDYgQEAgbWFza190b19hc3BlY3RzICh1aW50 MzJfdCBtYXNrKSB7CiAgIHJldHVybiBhc3BlY3RzOwogfQogCi1zdGF0aWMgTGlzcF9PYmplY3QK LWlub3RpZnlldmVudF90b19ldmVudCAoTGlzcF9PYmplY3Qgd2F0Y2hfb2JqZWN0LCBzdHJ1Y3Qg aW5vdGlmeV9ldmVudCBjb25zdCAqZXYpCi17Ci0gIExpc3BfT2JqZWN0IG5hbWUgPSBRbmlsOwot ICBpZiAoZXYtPmxlbiA+IDApCi0gICAgewotICAgICAgc2l6ZV90IGNvbnN0IGxlbiA9IHN0cmxl biAoZXYtPm5hbWUpOwotICAgICAgbmFtZSA9IG1ha2VfdW5pYnl0ZV9zdHJpbmcgKGV2LT5uYW1l LCBtaW4gKGxlbiwgZXYtPmxlbikpOwotICAgICAgbmFtZSA9IERFQ09ERV9GSUxFIChuYW1lKTsK LSAgICB9Ci0gIGVsc2UKLSAgICBuYW1lID0gWENBUiAoWENEUiAod2F0Y2hfb2JqZWN0KSk7Ci0K LSAgcmV0dXJuIGxpc3QyIChsaXN0NCAobWFrZV93YXRjaF9kZXNjcmlwdG9yIChldi0+d2QpLAot ICAgICAgICAgICAgICAgICAgICAgICBtYXNrX3RvX2FzcGVjdHMgKGV2LT5tYXNrKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9udW1i ZXIgKGV2LT5jb29raWUpKSwKLQkJRm50aCAobWFrZV9udW1iZXIgKDIpLCB3YXRjaF9vYmplY3Qp KTsKLX0KLQotLyogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgRkQgaXMgYXZhaWxh YmxlIGZvciByZWFkLiAgVGhlIGlub3RpZnkKLSAgIGV2ZW50cyBhcmUgcmVhZCBmcm9tIEZEIGFu ZCBjb252ZXJ0ZWQgaW50byBpbnB1dF9ldmVudHMuICAqLwotc3RhdGljIHZvaWQKLWlub3RpZnlf Y2FsbGJhY2sgKGludCBmZCwgdm9pZCAqXykKLXsKLSAgc3RydWN0IGlucHV0X2V2ZW50IGV2ZW50 OwotICBMaXNwX09iamVjdCB3YXRjaF9vYmplY3Q7Ci0gIGludCB0b19yZWFkOwotICBjaGFyICpi dWZmZXI7Ci0gIHNzaXplX3QgbjsKLSAgc2l6ZV90IGk7Ci0KLSAgdG9fcmVhZCA9IDA7Ci0gIGlm IChpb2N0bCAoZmQsIEZJT05SRUFELCAmdG9fcmVhZCkgPT0gLTEpCi0gICAgcmVwb3J0X2ZpbGVf bm90aWZ5X2Vycm9yICgiRXJyb3Igd2hpbGUgcmV0cmlldmluZyBmaWxlIHN5c3RlbSBldmVudHMi LAotCQkJICAgICAgUW5pbCk7Ci0gIGJ1ZmZlciA9IHhtYWxsb2MgKHRvX3JlYWQpOwotICBuID0g cmVhZCAoZmQsIGJ1ZmZlciwgdG9fcmVhZCk7Ci0gIGlmIChuIDwgMCkKLSAgICB7Ci0gICAgICB4 ZnJlZSAoYnVmZmVyKTsKLSAgICAgIHJlcG9ydF9maWxlX25vdGlmeV9lcnJvciAoIkVycm9yIHdo aWxlIHJlYWRpbmcgZmlsZSBzeXN0ZW0gZXZlbnRzIiwgUW5pbCk7Ci0gICAgfQotCi0gIEVWRU5U X0lOSVQgKGV2ZW50KTsKLSAgZXZlbnQua2luZCA9IEZJTEVfTk9USUZZX0VWRU5UOwotCi0gIGkg PSAwOwotICB3aGlsZSAoaSA8IChzaXplX3QpbikKLSAgICB7Ci0gICAgICBzdHJ1Y3QgaW5vdGlm eV9ldmVudCAqZXYgPSAoc3RydWN0IGlub3RpZnlfZXZlbnQgKikgJmJ1ZmZlcltpXTsKLQotICAg ICAgd2F0Y2hfb2JqZWN0ID0gRmFzc29jIChtYWtlX3dhdGNoX2Rlc2NyaXB0b3IgKGV2LT53ZCks IHdhdGNoX2xpc3QpOwotICAgICAgaWYgKCFOSUxQICh3YXRjaF9vYmplY3QpKQotICAgICAgICB7 Ci0gICAgICAgICAgZXZlbnQuYXJnID0gaW5vdGlmeWV2ZW50X3RvX2V2ZW50ICh3YXRjaF9vYmpl Y3QsIGV2KTsKLQotICAgICAgICAgIC8qIElmIGV2ZW50IHdhcyByZW1vdmVkIGF1dG9tYXRpY2Fs bHk6IERyb3AgaXQgZnJvbSB3YXRjaCBsaXN0LiAgKi8KLSAgICAgICAgICBpZiAoZXYtPm1hc2sg JiBJTl9JR05PUkVEKQotICAgICAgICAgICAgd2F0Y2hfbGlzdCA9IEZkZWxldGUgKHdhdGNoX29i amVjdCwgd2F0Y2hfbGlzdCk7Ci0KLQkgIGlmICghTklMUCAoZXZlbnQuYXJnKSkKLQkgICAga2Jk X2J1ZmZlcl9zdG9yZV9ldmVudCAoJmV2ZW50KTsKLSAgICAgICAgfQotCi0gICAgICBpICs9IHNp emVvZiAoKmV2KSArIGV2LT5sZW47Ci0gICAgfQotCi0gIHhmcmVlIChidWZmZXIpOwotfQotCiBz dGF0aWMgdWludDMyX3QKIHN5bWJvbF90b19pbm90aWZ5bWFzayAoTGlzcF9PYmplY3Qgc3ltYikK IHsKQEAgLTIwMCwxNCArMTM2LDYgQEAgc3ltYm9sX3RvX2lub3RpZnltYXNrIChMaXNwX09iamVj dCBzeW1iKQogCiAgIGVsc2UgaWYgKEVRIChzeW1iLCBRZG9udF9mb2xsb3cpKQogICAgIHJldHVy biBJTl9ET05UX0ZPTExPVzsKLSAgZWxzZSBpZiAoRVEgKHN5bWIsIFFleGNsX3VubGluaykpCi0g ICAgcmV0dXJuIElOX0VYQ0xfVU5MSU5LOwotICBlbHNlIGlmIChFUSAoc3ltYiwgUW1hc2tfYWRk KSkKLSAgICByZXR1cm4gSU5fTUFTS19BREQ7Ci0gIGVsc2UgaWYgKEVRIChzeW1iLCBRb25lc2hv dCkpCi0gICAgcmV0dXJuIElOX09ORVNIT1Q7Ci0gIGVsc2UgaWYgKEVRIChzeW1iLCBRb25seWRp cikpCi0gICAgcmV0dXJuIElOX09OTFlESVI7CiAKICAgZWxzZSBpZiAoRVEgKHN5bWIsIFF0KSB8 fCBFUSAoc3ltYiwgUWFsbF9ldmVudHMpKQogICAgIHJldHVybiBJTl9BTExfRVZFTlRTOwpAQCAt MjM2LDYgKzE2NCwxNzQgQEAgYXNwZWN0X3RvX2lub3RpZnltYXNrIChMaXNwX09iamVjdCBhc3Bl Y3QpCiAgICAgcmV0dXJuIHN5bWJvbF90b19pbm90aWZ5bWFzayAoYXNwZWN0KTsKIH0KIAorc3Rh dGljIExpc3BfT2JqZWN0CittYWtlX2xpc3B5X21hc2sgKHVpbnQzMl90IG1hc2spCit7CisgIHJl dHVybiBGY29ucyAobWFrZV9udW1iZXIgKG1hc2sgJiAweGZmZmYpLAorICAgICAgICAgICAgICAg IG1ha2VfbnVtYmVyIChtYXNrID4+IDE2KSk7Cit9CisKK3N0YXRpYyBib29sCitsaXNweV9tYXNr X21hdGNoX3AgKExpc3BfT2JqZWN0IG1hc2ssIHVpbnQzMl90IG90aGVyKQoreworICByZXR1cm4g KFhJTlQgKFhDQVIgKG1hc2spKSAmIG90aGVyKQorICAgIHx8ICgoWElOVCAoWENEUiAobWFzaykp IDw8IDE2KSAmIG90aGVyKTsKK30KKworc3RhdGljIExpc3BfT2JqZWN0Citpbm90aWZ5ZXZlbnRf dG9fZXZlbnQgKExpc3BfT2JqZWN0IHdhdGNoLCBzdHJ1Y3QgaW5vdGlmeV9ldmVudCBjb25zdCAq ZXYpCit7CisgIExpc3BfT2JqZWN0IG5hbWUgPSBRbmlsOworCisgIGlmICghIGxpc3B5X21hc2tf bWF0Y2hfcCAoRm50aCAobWFrZV9udW1iZXIgKDMpLCB3YXRjaCksIGV2LT5tYXNrKSkKKyAgICBy ZXR1cm4gUW5pbDsKKworICBpZiAoZXYtPmxlbiA+IDApCisgICAgeworICAgICAgc2l6ZV90IGNv bnN0IGxlbiA9IHN0cmxlbiAoZXYtPm5hbWUpOworICAgICAgbmFtZSA9IG1ha2VfdW5pYnl0ZV9z dHJpbmcgKGV2LT5uYW1lLCBtaW4gKGxlbiwgZXYtPmxlbikpOworICAgICAgbmFtZSA9IERFQ09E RV9GSUxFIChuYW1lKTsKKyAgICB9CisgIGVsc2UKKyAgICBuYW1lID0gWENBUiAoWENEUiAod2F0 Y2gpKTsKKworICByZXR1cm4gbGlzdDIgKGxpc3Q0IChGY29ucyAobWFrZV9udW1iZXIgKGV2LT53 ZCksIFhDQVIgKHdhdGNoKSksCisgICAgICAgICAgICAgICAgICAgICAgIG1hc2tfdG9fYXNwZWN0 cyAoZXYtPm1hc2spLAorICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICBtYWtlX251bWJlciAoZXYtPmNvb2tpZSkpLAorCQlGbnRoIChtYWtlX251bWJl ciAoMiksIHdhdGNoKSk7Cit9CisKKy8qIEFkZCBhIG5ldyB3YXRjaCB0byB3YXRjaC1kZXNjcmlw dG9yIFdEIHdhdGNoaW5nIEZJTEVOQU1FIGFuZCB1c2luZworICAgQ0FMTEJBQ0suICBSZXR1cm5z IGEgY29ucyAoREVTQ1JJUFRPUiAuIElEKSB1bmlxdWVseSBpZGVudGlmeWluZyB0aGUKKyAgIG5l dyB3YXRjaC4gKi8KK3N0YXRpYyBMaXNwX09iamVjdAorYWRkX3dhdGNoIChpbnQgd2QsIExpc3Bf T2JqZWN0IGZpbGVuYW1lLCBMaXNwX09iamVjdCBhc3BlY3QsIExpc3BfT2JqZWN0IGNhbGxiYWNr KQoreworICBMaXNwX09iamVjdCBkZXNjcmlwdG9yID0gbWFrZV9udW1iZXIgKHdkKTsKKyAgTGlz cF9PYmplY3QgZWx0ID0gRmFzc29jIChkZXNjcmlwdG9yLCB3YXRjaF9saXN0KTsKKyAgTGlzcF9P YmplY3Qgd2F0Y2hlcyA9IEZjZHIgKGVsdCk7CisgIExpc3BfT2JqZWN0IHdhdGNoLCB3YXRjaF9p ZDsKKyAgTGlzcF9PYmplY3QgbWFzayA9IG1ha2VfbGlzcHlfbWFzayAoYXNwZWN0X3RvX2lub3Rp ZnltYXNrIChhc3BlY3QpKTsKKworICBpbnQgaWQgPSAwOworCisgIHdoaWxlICghIE5JTFAgKHdh dGNoZXMpKQorICAgIHsKKyAgICAgIGlkID0gbWF4IChpZCwgMSArIFhJTlQgKFhDQVIgKFhDQVIg KHdhdGNoZXMpKSkpOworICAgICAgd2F0Y2hlcyA9IFhDRFIgKHdhdGNoZXMpOworICAgIH0KKwor ICB3YXRjaF9pZCA9IG1ha2VfbnVtYmVyIChpZCk7CisgIHdhdGNoID0gbGlzdDQgKHdhdGNoX2lk LCBmaWxlbmFtZSwgY2FsbGJhY2ssIG1hc2spOworCisgIGlmIChOSUxQIChlbHQpKQorICAgIHdh dGNoX2xpc3QgPSBGY29ucyAoRmNvbnMgKGRlc2NyaXB0b3IsIEZjb25zICh3YXRjaCwgUW5pbCkp LAorICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hfbGlzdCk7CisgIGVsc2UKKyAgICBYU0VU Q0RSIChlbHQsIEZjb25zICh3YXRjaCwgWENEUiAoZWx0KSkpOworCisgIHJldHVybiBGY29ucyAo ZGVzY3JpcHRvciwgd2F0Y2hfaWQpOworfQorCisvKiAgUmVtb3ZlIGFsbCB3YXRjaGVzIGFzc29j aWF0ZWQgd2l0aCBkZXNjcmlwdG9yLiAgSWYgSU5WQUxJRF9QIGlzCisgICAgdHJ1ZSwgdGhlIGRl c2NyaXB0b3IgaXMgYWxyZWFkeSBpbnZhbGlkLCBpLmUuIGl0IHJlY2VpdmVkIGEKKyAgICBJTl9J R05PUkVEIGV2ZW50LiBJbiB0aGlzIGNhc2Ugc2tpcCBjYWxsaW5nIGlub3RpZnlfcm1fd2F0Y2gu ICAqLworc3RhdGljIHZvaWQKK3JlbW92ZV9kZXNjcmlwdG9yIChMaXNwX09iamVjdCBkZXNjcmlw dG9yLCBib29sIGludmFsaWRfcCkKK3sKKyAgTGlzcF9PYmplY3QgZWx0ID0gRmFzc29jIChkZXNj cmlwdG9yLCB3YXRjaF9saXN0KTsKKworICBpZiAoISBOSUxQIChlbHQpKQorICAgIHsKKyAgICAg IGludCB3ZCA9IFhJTlQgKGRlc2NyaXB0b3IpOworCisgICAgICB3YXRjaF9saXN0ID0gRmRlbGV0 ZSAoZWx0LCB3YXRjaF9saXN0KTsKKyAgICAgIGlmICghIGludmFsaWRfcCkKKyAgICAgICAgaWYg KGlub3RpZnlfcm1fd2F0Y2ggKGlub3RpZnlmZCwgd2QpID09IC0xKQorICAgICAgICAgIHJlcG9y dF9maWxlX25vdGlmeV9lcnJvciAoIkNvdWxkIG5vdCBybSB3YXRjaCIsIGRlc2NyaXB0b3IpOwor ICAgIH0KKyAgLyogQ2xlYW51cCBpZiBubyBtb3JlIGZpbGVzIGFyZSB3YXRjaGVkLiAgKi8KKyAg aWYgKE5JTFAgKHdhdGNoX2xpc3QpKQorICAgIHsKKyAgICAgIGVtYWNzX2Nsb3NlIChpbm90aWZ5 ZmQpOworICAgICAgZGVsZXRlX3JlYWRfZmQgKGlub3RpZnlmZCk7CisgICAgICBpbm90aWZ5ZmQg PSAtMTsKKyAgICB9Cit9CisKKy8qICBSZW1vdmUgd2F0Y2ggYXNzb2NpYXRlZCB3aXRoIChkZXNj cmlwdG9yLCBpZCkuICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX3dhdGNoIChMaXNwX09iamVjdCBk ZXNjcmlwdG9yLCBMaXNwX09iamVjdCBpZCkKK3sKKyAgTGlzcF9PYmplY3QgZWx0ID0gRmFzc29j IChkZXNjcmlwdG9yLCB3YXRjaF9saXN0KTsKKworICBpZiAoISBOSUxQIChlbHQpKQorICAgIHsK KyAgICAgIExpc3BfT2JqZWN0IHdhdGNoID0gRmFzc29jIChpZCwgWENEUiAoZWx0KSk7CisKKyAg ICAgIGlmICghIE5JTFAgKHdhdGNoKSkKKyAgICAgICAgWFNFVENEUiAoZWx0LCBGZGVsZXRlICh3 YXRjaCwgWENEUiAoZWx0KSkpOworCisgICAgICAvKiBSZW1vdmUgdGhlIGRlc2NyaXB0b3IgaWYg bm9vbmUgaXMgd2F0Y2hpbmcgaXQuICovCisgICAgICBpZiAoTklMUCAoWENEUiAoZWx0KSkpCisg ICAgICAgIHJlbW92ZV9kZXNjcmlwdG9yIChkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAgfQorfQor CisvKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBGRCBpcyBhdmFpbGFibGUgZm9y IHJlYWQuICBUaGUgaW5vdGlmeQorICAgZXZlbnRzIGFyZSByZWFkIGZyb20gRkQgYW5kIGNvbnZl cnRlZCBpbnRvIGlucHV0X2V2ZW50cy4gICovCitzdGF0aWMgdm9pZAoraW5vdGlmeV9jYWxsYmFj ayAoaW50IGZkLCB2b2lkICpfKQoreworICBzdHJ1Y3QgaW5wdXRfZXZlbnQgZXZlbnQ7CisgIGlu dCB0b19yZWFkOworICBjaGFyICpidWZmZXI7CisgIHNzaXplX3QgbjsKKyAgc2l6ZV90IGk7CisK KyAgdG9fcmVhZCA9IDA7CisgIGlmIChpb2N0bCAoZmQsIEZJT05SRUFELCAmdG9fcmVhZCkgPT0g LTEpCisgICAgcmVwb3J0X2ZpbGVfbm90aWZ5X2Vycm9yICgiRXJyb3Igd2hpbGUgcmV0cmlldmlu ZyBmaWxlIHN5c3RlbSBldmVudHMiLAorCQkJICAgICAgUW5pbCk7CisgIGJ1ZmZlciA9IHhtYWxs b2MgKHRvX3JlYWQpOworICBuID0gcmVhZCAoZmQsIGJ1ZmZlciwgdG9fcmVhZCk7CisgIGlmIChu IDwgMCkKKyAgICB7CisgICAgICB4ZnJlZSAoYnVmZmVyKTsKKyAgICAgIHJlcG9ydF9maWxlX25v dGlmeV9lcnJvciAoIkVycm9yIHdoaWxlIHJlYWRpbmcgZmlsZSBzeXN0ZW0gZXZlbnRzIiwgUW5p bCk7CisgICAgfQorCisgIEVWRU5UX0lOSVQgKGV2ZW50KTsKKyAgZXZlbnQua2luZCA9IEZJTEVf Tk9USUZZX0VWRU5UOworCisgIGkgPSAwOworICB3aGlsZSAoaSA8IChzaXplX3QpbikKKyAgICB7 CisgICAgICBzdHJ1Y3QgaW5vdGlmeV9ldmVudCAqZXYgPSAoc3RydWN0IGlub3RpZnlfZXZlbnQg KikgJmJ1ZmZlcltpXTsKKyAgICAgIExpc3BfT2JqZWN0IGRlc2NyaXB0b3IgPSBtYWtlX251bWJl ciAoZXYtPndkKTsKKyAgICAgIExpc3BfT2JqZWN0IGVsdCA9IEZhc3NvYyAoZGVzY3JpcHRvciwg d2F0Y2hfbGlzdCk7CisKKyAgICAgIGlmICghIE5JTFAgKGVsdCkpCisgICAgICAgIHsKKyAgICAg ICAgICBMaXNwX09iamVjdCB3YXRjaGVzID0gWENEUiAoZWx0KTsKKyAgICAgICAgICB3aGlsZSAo ISBOSUxQICh3YXRjaGVzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZXZlbnQuYXJn ID0gaW5vdGlmeWV2ZW50X3RvX2V2ZW50IChYQ0FSICh3YXRjaGVzKSwgZXYpOworICAgICAgICAg ICAgICBpZiAoIU5JTFAgKGV2ZW50LmFyZykpCisgICAgICAgICAgICAgICAga2JkX2J1ZmZlcl9z dG9yZV9ldmVudCAoJmV2ZW50KTsKKyAgICAgICAgICAgICAgd2F0Y2hlcyA9IFhDRFIgKHdhdGNo ZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgIC8qIElmIGV2ZW50IHdhcyByZW1vdmVkIGF1 dG9tYXRpY2FsbHk6IERyb3AgaXQgZnJvbSB3YXRjaCBsaXN0LiAgKi8KKyAgICAgICAgICBpZiAo ZXYtPm1hc2sgJiBJTl9JR05PUkVEKQorICAgICAgICAgICAgcmVtb3ZlX2Rlc2NyaXB0b3IgKGRl c2NyaXB0b3IsIHRydWUpOworICAgICAgICB9CisgICAgICBpICs9IHNpemVvZiAoKmV2KSArIGV2 LT5sZW47CisgICAgfQorCisgIHhmcmVlIChidWZmZXIpOworfQorCiBERUZVTiAoImlub3RpZnkt YWRkLXdhdGNoIiwgRmlub3RpZnlfYWRkX3dhdGNoLCBTaW5vdGlmeV9hZGRfd2F0Y2gsIDMsIDMs IDAsCiAgICAgICAgZG9jOiAvKiBBZGQgYSB3YXRjaCBmb3IgRklMRS1OQU1FIHRvIGlub3RpZnku CiAKQEAgLTI2NCwxMCArMzYwLDYgQEAgY2xvc2UKIFRoZSBmb2xsb3dpbmcgc3ltYm9scyBjYW4g YWxzbyBiZSBhZGRlZCB0byBhIGxpc3Qgb2YgYXNwZWN0czoKIAogZG9udC1mb2xsb3cKLWV4Y2wt dW5saW5rCi1tYXNrLWFkZAotb25lc2hvdAotb25seWRpcgogCiBXYXRjaGluZyBhIGRpcmVjdG9y eSBpcyBub3QgcmVjdXJzaXZlLiAgQ0FMTEJBQ0sgaXMgcGFzc2VkIGEgc2luZ2xlIGFyZ3VtZW50 CiBFVkVOVCB3aGljaCBjb250YWlucyBhbiBldmVudCBzdHJ1Y3R1cmUgb2YgdGhlIGZvcm1hdApA QCAtMjg2LDIyICszNzgsMjIgQEAgdW5tb3VudAogCiBJZiBhIGRpcmVjdG9yeSBpcyB3YXRjaGVk IHRoZW4gTkFNRSBpcyB0aGUgbmFtZSBvZiBmaWxlIHRoYXQgY2F1c2VkIHRoZSBldmVudC4KIAot Q09PS0lFIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSBjb21wYXJlZCB1c2luZyBgZXF1YWwnIHRv IGlkZW50aWZ5IHR3byBtYXRjaGluZworQ09PS0lFIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSBj b21wYXJlZCB1c2luZyBgZXF1YWwnIHRvIGlkZW50aWZ5IHR3byBtYXRjaGluZ3QKIHJlbmFtZXMg KG1vdmVkLWZyb20gYW5kIG1vdmVkLXRvKS4KIAogU2VlIGlub3RpZnkoNykgYW5kIGlub3RpZnlf YWRkX3dhdGNoKDIpIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLiAgVGhlIGlub3RpZnkgZmQKIGlz IG1hbmFnZWQgaW50ZXJuYWxseSBhbmQgdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBpbm90aWZ5 X2luaXQuICBVc2UKIGBpbm90aWZ5LXJtLXdhdGNoJyB0byByZW1vdmUgYSB3YXRjaC4KLSAgICAg ICAgICAgICAqLykKLSAgICAgKExpc3BfT2JqZWN0IGZpbGVfbmFtZSwgTGlzcF9PYmplY3QgYXNw ZWN0LCBMaXNwX09iamVjdCBjYWxsYmFjaykKKyAgICAgICAgICAgICovKQorICAgICAoTGlzcF9P YmplY3QgZmlsZW5hbWUsIExpc3BfT2JqZWN0IGFzcGVjdCwgTGlzcF9PYmplY3QgY2FsbGJhY2sp CiB7Ci0gIHVpbnQzMl90IG1hc2s7Ci0gIExpc3BfT2JqZWN0IHdhdGNoX29iamVjdDsKICAgTGlz cF9PYmplY3QgZW5jb2RlZF9maWxlX25hbWU7Ci0gIExpc3BfT2JqZWN0IHdhdGNoX2Rlc2NyaXB0 b3I7Ci0gIGludCB3YXRjaGRlc2MgPSAtMTsKKyAgYm9vbCBkb250X2ZvbGxvdyA9ICEgTklMUCAo Rm1lbXEgKFFkb250X2ZvbGxvdywgYXNwZWN0KSk7CisgIGludCB3ZCA9IC0xOworICB1aW50MzJf dCBtYXNrID0gKElOT1RJRllfREVGQVVMVF9NQVNLCisgICAgICAgICAgICAgICAgICAgfCAoZG9u dF9mb2xsb3cgPyBJTl9ET05UX0ZPTExPVyA6IDApKTsKIAotICBDSEVDS19TVFJJTkcgKGZpbGVf bmFtZSk7CisgIENIRUNLX1NUUklORyAoZmlsZW5hbWUpOwogCiAgIGlmIChpbm90aWZ5ZmQgPCAw KQogICAgIHsKQEAgLTMxMiwyNCArNDA0LDEyIEBAIGlzIG1hbmFnZWQgaW50ZXJuYWxseSBhbmQg dGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBpbm90aWZ5X2luaXQuICBVc2UKICAgICAgIGFkZF9y ZWFkX2ZkIChpbm90aWZ5ZmQsICZpbm90aWZ5X2NhbGxiYWNrLCBOVUxMKTsKICAgICB9CiAKLSAg bWFzayA9IGFzcGVjdF90b19pbm90aWZ5bWFzayAoYXNwZWN0KTsKLSAgZW5jb2RlZF9maWxlX25h bWUgPSBFTkNPREVfRklMRSAoZmlsZV9uYW1lKTsKLSAgd2F0Y2hkZXNjID0gaW5vdGlmeV9hZGRf d2F0Y2ggKGlub3RpZnlmZCwgU1NEQVRBIChlbmNvZGVkX2ZpbGVfbmFtZSksIG1hc2spOwotICBp ZiAod2F0Y2hkZXNjID09IC0xKQotICAgIHJlcG9ydF9maWxlX25vdGlmeV9lcnJvciAoIkNvdWxk IG5vdCBhZGQgd2F0Y2ggZm9yIGZpbGUiLCBmaWxlX25hbWUpOwotCi0gIHdhdGNoX2Rlc2NyaXB0 b3IgPSBtYWtlX3dhdGNoX2Rlc2NyaXB0b3IgKHdhdGNoZGVzYyk7CisgIGVuY29kZWRfZmlsZV9u YW1lID0gRU5DT0RFX0ZJTEUgKGZpbGVuYW1lKTsKKyAgd2QgPSBpbm90aWZ5X2FkZF93YXRjaCAo aW5vdGlmeWZkLCBTU0RBVEEgKGVuY29kZWRfZmlsZV9uYW1lKSwgbWFzayk7CisgIGlmICh3ZCA9 PSAtMSkKKyAgICByZXBvcnRfZmlsZV9ub3RpZnlfZXJyb3IgKCJDb3VsZCBub3QgYWRkIHdhdGNo IGZvciBmaWxlIiwgZmlsZW5hbWUpOwogCi0gIC8qIERlbGV0ZSBleGlzdGluZyB3YXRjaCBvYmpl Y3QuICAqLwotICB3YXRjaF9vYmplY3QgPSBGYXNzb2MgKHdhdGNoX2Rlc2NyaXB0b3IsIHdhdGNo X2xpc3QpOwotICBpZiAoIU5JTFAgKHdhdGNoX29iamVjdCkpCi0gICAgICB3YXRjaF9saXN0ID0g RmRlbGV0ZSAod2F0Y2hfb2JqZWN0LCB3YXRjaF9saXN0KTsKLQotICAvKiBTdG9yZSB3YXRjaCBv YmplY3QgaW4gd2F0Y2ggbGlzdC4gICovCi0gIHdhdGNoX29iamVjdCA9IGxpc3QzICh3YXRjaF9k ZXNjcmlwdG9yLCBlbmNvZGVkX2ZpbGVfbmFtZSwgY2FsbGJhY2spOwotICB3YXRjaF9saXN0ID0g RmNvbnMgKHdhdGNoX29iamVjdCwgd2F0Y2hfbGlzdCk7Ci0KLSAgcmV0dXJuIHdhdGNoX2Rlc2Ny aXB0b3I7CisgIHJldHVybiBhZGRfd2F0Y2ggKHdkLCBmaWxlbmFtZSwgYXNwZWN0LCBjYWxsYmFj ayk7CiB9CiAKIERFRlVOICgiaW5vdGlmeS1ybS13YXRjaCIsIEZpbm90aWZ5X3JtX3dhdGNoLCBT aW5vdGlmeV9ybV93YXRjaCwgMSwgMSwgMCwKQEAgLTMzOCwyNyArNDE4LDIwIEBAIERFRlVOICgi aW5vdGlmeS1ybS13YXRjaCIsIEZpbm90aWZ5X3JtX3dhdGNoLCBTaW5vdGlmeV9ybV93YXRjaCwg MSwgMSwgMCwKIFdBVENILURFU0NSSVBUT1Igc2hvdWxkIGJlIGFuIG9iamVjdCByZXR1cm5lZCBi eSBgaW5vdGlmeS1hZGQtd2F0Y2gnLgogCiBTZWUgaW5vdGlmeV9ybV93YXRjaCgyKSBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAqLykKKyAgICAgICAgICAgICovKQogICAgICAo TGlzcF9PYmplY3Qgd2F0Y2hfZGVzY3JpcHRvcikKIHsKLSAgTGlzcF9PYmplY3Qgd2F0Y2hfb2Jq ZWN0OwotICBpbnQgd2QgPSBYSU5UICh3YXRjaF9kZXNjcmlwdG9yKTsKIAotICBpZiAoaW5vdGlm eV9ybV93YXRjaCAoaW5vdGlmeWZkLCB3ZCkgPT0gLTEpCi0gICAgcmVwb3J0X2ZpbGVfbm90aWZ5 X2Vycm9yICgiQ291bGQgbm90IHJtIHdhdGNoIiwgd2F0Y2hfZGVzY3JpcHRvcik7CisgIExpc3Bf T2JqZWN0IGRlc2NyaXB0b3IsIGlkOwogCi0gIC8qIFJlbW92ZSB3YXRjaCBkZXNjcmlwdG9yIGZy b20gd2F0Y2ggbGlzdC4gICovCi0gIHdhdGNoX29iamVjdCA9IEZhc3NvYyAod2F0Y2hfZGVzY3Jp cHRvciwgd2F0Y2hfbGlzdCk7Ci0gIGlmICghTklMUCAod2F0Y2hfb2JqZWN0KSkKLSAgICB3YXRj aF9saXN0ID0gRmRlbGV0ZSAod2F0Y2hfb2JqZWN0LCB3YXRjaF9saXN0KTsKKyAgaWYgKCEgKENP TlNQICh3YXRjaF9kZXNjcmlwdG9yKQorICAgICAgICAgJiYgSU5URUdFUlAgKFhDQVIgKHdhdGNo X2Rlc2NyaXB0b3IpKQorICAgICAgICAgJiYgSU5URUdFUlAgKFhDRFIgKHdhdGNoX2Rlc2NyaXB0 b3IpKSkpCisgICAgcmVwb3J0X2ZpbGVfbm90aWZ5X2Vycm9yICgiSW52YWxpZCBkZXNjcmlwdG9y ICIsIHdhdGNoX2Rlc2NyaXB0b3IpOwogCi0gIC8qIENsZWFudXAgaWYgbm8gbW9yZSBmaWxlcyBh cmUgd2F0Y2hlZC4gICovCi0gIGlmIChOSUxQICh3YXRjaF9saXN0KSkKLSAgICB7Ci0gICAgICBl bWFjc19jbG9zZSAoaW5vdGlmeWZkKTsKLSAgICAgIGRlbGV0ZV9yZWFkX2ZkIChpbm90aWZ5ZmQp OwotICAgICAgaW5vdGlmeWZkID0gLTE7Ci0gICAgfQorICBkZXNjcmlwdG9yID0gWENBUiAod2F0 Y2hfZGVzY3JpcHRvcik7CisgIGlkID0gWENEUiAod2F0Y2hfZGVzY3JpcHRvcik7CisgIHJlbW92 ZV93YXRjaCAoZGVzY3JpcHRvciwgaWQpOwogCiAgIHJldHVybiBRdDsKIH0KQEAgLTM3NCwxMCAr NDQ3LDMzIEBAIHJlYXNvbi4gIFJlbW92aW5nIHRoZSB3YXRjaCBieSBjYWxsaW5nIGBpbm90aWZ5 LXJtLXdhdGNoJyBhbHNvIG1ha2VzCiBpdCBpbnZhbGlkLiAgKi8pCiAgICAgIChMaXNwX09iamVj dCB3YXRjaF9kZXNjcmlwdG9yKQogewotICBMaXNwX09iamVjdCB3YXRjaF9vYmplY3QgPSBGYXNz b2MgKHdhdGNoX2Rlc2NyaXB0b3IsIHdhdGNoX2xpc3QpOwotICByZXR1cm4gTklMUCAod2F0Y2hf b2JqZWN0KSA/IFFuaWwgOiBRdDsKKyAgTGlzcF9PYmplY3QgZWx0LCB3YXRjaDsKKworICBpZiAo ISAoQ09OU1AgKHdhdGNoX2Rlc2NyaXB0b3IpCisgICAgICAgICAmJiBJTlRFR0VSUCAoWENBUiAo d2F0Y2hfZGVzY3JpcHRvcikpCisgICAgICAgICAmJiBJTlRFR0VSUCAoWENEUiAod2F0Y2hfZGVz Y3JpcHRvcikpKSkKKyAgICByZXR1cm4gUW5pbDsKKworICBlbHQgPSBGYXNzb2MgKFhDQVIgKHdh dGNoX2Rlc2NyaXB0b3IpLCB3YXRjaF9saXN0KTsKKyAgd2F0Y2ggPSBGYXNzb2MgKFhDRFIgKHdh dGNoX2Rlc2NyaXB0b3IpLCBYQ0RSIChlbHQpKTsKKworICByZXR1cm4gISBOSUxQICh3YXRjaCkg PyBRdCA6IFFuaWw7Cit9CisKKyNpZmRlZiBJTk9USUZZX0RFQlVHCitERUZVTiAoImlub3RpZnkt d2F0Y2gtbGlzdCIsIEZpbm90aWZ5X3dhdGNoX2xpc3QsIFNpbm90aWZ5X3dhdGNoX2xpc3QsIDAs IDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBpbnRlcm5hbCB3YXRj aF9saXN0LiAqLykKK3sKKyAgcmV0dXJuIEZjb3B5X3NlcXVlbmNlICh3YXRjaF9saXN0KTsKIH0K IAorREVGVU4gKCJpbm90aWZ5LWFsbG9jYXRlZC1wIiwgRmlub3RpZnlfYWxsb2NhdGVkX3AsIFNp bm90aWZ5X2FsbG9jYXRlZF9wLCAwLCAwLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJuIG5vbi1u aWwsIGlmIGEgaW5vdGlmeSBpbnN0YW5jZSBpcyBhbGxvY2F0ZWQuICovKQoreworICByZXR1cm4g aW5vdGlmeWZkIDwgMCA/IFFuaWwgOiBRdDsKK30KKyNlbmRpZgorCiB2b2lkCiBzeW1zX29mX2lu b3RpZnkgKHZvaWQpCiB7CkBAIC00MDAsMTAgKzQ5Niw2IEBAIHN5bXNfb2ZfaW5vdGlmeSAodm9p ZCkKICAgREVGU1lNIChRY2xvc2UsICJjbG9zZSIpOwkJLyogSU5fQ0xPU0UgKi8KIAogICBERUZT WU0gKFFkb250X2ZvbGxvdywgImRvbnQtZm9sbG93Iik7CS8qIElOX0RPTlRfRk9MTE9XICovCi0g IERFRlNZTSAoUWV4Y2xfdW5saW5rLCAiZXhjbC11bmxpbmsiKTsJLyogSU5fRVhDTF9VTkxJTksg Ki8KLSAgREVGU1lNIChRbWFza19hZGQsICJtYXNrLWFkZCIpOwkvKiBJTl9NQVNLX0FERCAqLwot ICBERUZTWU0gKFFvbmVzaG90LCAib25lc2hvdCIpOwkJLyogSU5fT05FU0hPVCAqLwotICBERUZT WU0gKFFvbmx5ZGlyLCAib25seWRpciIpOwkJLyogSU5fT05MWURJUiAqLwogCiAgIERFRlNZTSAo UWlnbm9yZWQsICJpZ25vcmVkIik7CQkvKiBJTl9JR05PUkVEICovCiAgIERFRlNZTSAoUWlzZGly LCAiaXNkaXIiKTsJCS8qIElOX0lTRElSICovCkBAIC00MTQsNiArNTA2LDEwIEBAIHN5bXNfb2Zf aW5vdGlmeSAodm9pZCkKICAgZGVmc3ViciAoJlNpbm90aWZ5X3JtX3dhdGNoKTsKICAgZGVmc3Vi ciAoJlNpbm90aWZ5X3ZhbGlkX3ApOwogCisjaWZkZWYgSU5PVElGWV9ERUJVRworICBkZWZzdWJy ICgmU2lub3RpZnlfd2F0Y2hfbGlzdCk7CisgIGRlZnN1YnIgKCZTaW5vdGlmeV9hbGxvY2F0ZWRf cCk7CisjZW5kaWYKICAgc3RhdGljcHJvICgmd2F0Y2hfbGlzdCk7CiAKICAgRnByb3ZpZGUgKGlu dGVybl9jX3N0cmluZyAoImlub3RpZnkiKSwgUW5pbCk7Cg== --=-=-= Content-Type: text/plain -ap --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 12:21:40 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 16:21:40 +0000 Received: from localhost ([127.0.0.1]:44500 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1croRg-0006uy-7k for submit@debbugs.gnu.org; Sat, 25 Mar 2017 12:21:40 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:39717) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1croRf-0006um-9D for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 12:21:39 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 28717179AD9A; Sat, 25 Mar 2017 17:21:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490458881; bh=H1MEevQt+LAFotVYsltdR0fINRQ=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=Ci7gweLkj55gLKrqkz7q6YUHlaL7ZnahVcfvRZf2ljdp/SeLFfNF+jE4+kfizgCFi zX09W3NCs5H1flIrYZcaw0hU/TqTeIjlq24sJcGTZIT6znU8q6GcQIJBOlzAF9RugK Q2T9lxnW4MsdZ+HTaBCisfmZYT8OwgYZQ2KHkHzE= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <87a889jvvw.fsf@detlef> Date: Sat, 25 Mar 2017 17:21:20 +0100 In-Reply-To: <87a889jvvw.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 15:04:03 +0100") Message-ID: <87o9wpfhtr.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > That's what file-notify-test.el intends to do. Well, the code has > evolved over the time, and it is somehow hard to read. Improvements are > welcome! OK, I'm going to work a little bit on this. -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 12:27:44 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 16:27:44 +0000 Received: from localhost ([127.0.0.1]:44510 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1croXY-00075X-8l for submit@debbugs.gnu.org; Sat, 25 Mar 2017 12:27:44 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:39856) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1croXV-00075K-Uj for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 12:27:42 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id B4B15179B521; Sat, 25 Mar 2017 17:27:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490459243; bh=BKPEkkGsHJYJ/ZH5id2RaVpg1HU=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=CJQe/QmelgBCX6lw/ZngPf92bX31camdK2cXTUDiClTnYvsxV+dA3UuN6oesVwvJJ C8y9ERDViNnh0XiVvYCWbmnuKQ5Bfpv2BdMmzmJgHxLGaWI+BLgj8UhcvSeTLY2eut 0gXR9Anza2iVebZS4GkNxAdvILLLuHFqZzsejKb4= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> <87wpbdfoeu.fsf@luca> <8760ixjvnr.fsf@detlef> Date: Sat, 25 Mar 2017 17:27:23 +0100 In-Reply-To: <8760ixjvnr.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 15:08:56 +0100") Message-ID: <87k27dfhjo.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: > >> And it seems that this is already a reality, e.g. url-file-handler. > > Which works also over file names, like "http://host/path/to/file". If you think that's a file, how about this: (url-handler-mode) (find-file "http://www.google.com/?s=foo") (file-notify-add-watch "http://www.google.com/?s=foo" '(change) #'ignore) => File notification error: "Directory does not exist", "http://www.google.com" or this (hypothetical-emacsfs-mode) (find-file "/efs/recentf/some-recent-file") (find-file "/efs/bookmarks/some-bookmark") -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 12:34:24 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 16:34:24 +0000 Received: from localhost ([127.0.0.1]:44514 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1croe0-0007G9-29 for submit@debbugs.gnu.org; Sat, 25 Mar 2017 12:34:24 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:40036) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crody-0007Fn-78 for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 12:34:22 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id AB9D0179B593; Sat, 25 Mar 2017 17:34:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490459644; bh=cBobyOS9FpBBtCFeQpvH7beBcoA=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=ZoL7h7xWXdpcNbG6Bx8gnbe0PCY8XEadZMr2Dbi1RkQyy0044W83Px0fbx4q6n7DK QS0WusZqr1WPuO4WByfGK/Pknfjt4nBo4nmxD2p7aF9RDkZRmjtVNZ6ixoDU5uYgmU Avg/MQZgvt8ClpzYQlUsnvelpMTR/qi9QB+3wZRg= From: Andreas Politz To: Eli Zaretskii Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <83zig9c186.fsf@gnu.org> <87a889hgxb.fsf@luca> <83poh5bfuh.fsf@gnu.org> Date: Sat, 25 Mar 2017 17:34:03 +0100 In-Reply-To: <83poh5bfuh.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 25 Mar 2017 17:17:42 +0300") Message-ID: <87fui1fh8k.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org, michael.albinus@gmx.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=-=-= Content-Type: text/plain Eli Zaretskii writes: > That still leaves a lot of unclear entries there. maybe it isn't > important. Mmh. I attached the file which generated the table. >> >> Finally, I'm tempted to suggest to get rid of the flags argument of >> >> file-notify-add-watch. >> >> > The flags are there for the operations where the differences matter. >> >> When does it matter ? > > Why should we care? That's for the programmer to decide; we just give > them the tools. But this is not a restriction on the part of the programmer, as he can still filter out the events he's not interested in. >> Also: I think in the end we want to add a layer above filenotify.el, > That was the original plan, ... That's good to hear. -ap --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=check-filenotify.el Content-Transfer-Encoding: quoted-printable Content-Description: check-filenotify.el ;; -*- lexical-binding: t -*- (require 'cl-lib) (require 'filenotify) (require 'tramp) (require 'tramp-sh) (require 'seq) (defvar checkfn-tests nil) (defvar checkfn-rationalize-results t "Whether to map filenames to symbolic names.") (defvar checkfn-timeout 12 "Timeout for a single test.") (defvar checkfn-watch-flags '(changed attribute-change) "Flags used for `file-notify-add-watch'.") (defun checkfn-delete-files (filenames) (dolist (filename filenames) (when (and (stringp filename) (file-exists-p filename)) (if (file-directory-p filename) (delete-directory filename t) (delete-file filename))))) (defmacro checkfn-gather-events-let* (bindings &rest body) "Watch files bound in BINDINGS collecting all events. BINDINGS should bind variables to filenames. If BODY does not delete these filenames, this macro will do it. Return alist with elements (FILENAME . EVENTS)." (declare (indent 1) (debug ((&rest (symbolp form)) body))) (let ((watches (make-symbol "watches")) (results (make-symbol "results")) (filenames (make-symbol "filenames")) (filealist (make-symbol "filealist")) (done (make-symbol "done"))) `(let* (,@bindings (,filenames (list ,@(mapcar #'car bindings))) (,filealist (list ,@(mapcar (lambda (elt) `(cons ,(car elt) ',(car elt))) bindings))) (,results (mapcar #'list ,filenames)) (,done (mapcar #'list ,filenames)) (,watches (progn (mapcar (lambda (filename) (file-notify-add-watch filename checkfn-watch-flags (lambda (event) (when (eq (nth 1 event) 'stopped) (let ((elt (assoc filename ,done))) (setcdr elt t))) (let ((elt (assoc filename ,results))) (setcdr elt (append (cdr elt) (list (cdr ev= ent)))))))) ,filenames)))) (unwind-protect (progn (progn ,@body) (checkfn-delete-files ,filenames) (with-timeout (checkfn-timeout (dolist (elt ,results) (unless (cdr (assoc (car elt) ,done)) (setcdr elt (append (cdr elt) `((timedout ,checkfn-timeout)))))) (dolist (watch ,watches) (ignore-errors (file-notify-rm-watch watch)))) (while (memq nil (mapcar #'cdr ,done)) (read-event nil nil 0.1))) (if checkfn-rationalize-results (checkfn-gather-events-rationalize-results ,results ,filea= list) ,results)) (dolist (watch ,watches) (ignore-errors (file-notify-rm-watch watch))))))) (defun checkfn-gather-events-rationalize-results (results alist) (let ((nanons 0)) (cl-labels ((aget (key) (let ((elt (assoc key alist))) (if elt (cdr elt) (let ((anon (intern (format "anon-%d" (cl-incf nanons= ))))) (push (cons key anon) alist) anon))))) (mapcar (pcase-lambda (`(,filename . ,events)) (cons (aget filename) (mapcar (pcase-lambda (`(,action ,file . ,rest)) (if (eq action 'timedout) (list action file) (if rest `(,action ,(aget file) ,(aget (car rest))) `(,action ,(aget file))))) events))) results)))) (defmacro define-checkfn-test (name &optional documentation &rest body) (cl-check-type name symbol) (let ((fn (intern (format "checkfn-test-%s" name)))) `(progn (defun ,fn () ,documentation ,@body) (setq checkfn-tests (append (cl-remove ',name checkfn-tests :key #'car) (list (cons ',name ',fn)))) ',name))) (defun checkfn-chattr (filename) (cl-assert (file-exists-p filename)) (set-file-times filename (seconds-to-time (1+ (time-to-seconds (current-time)))))) (defun checkfn-create (filename &optional directory-p) (cl-assert (not (file-exists-p filename))) (if directory-p (make-directory filename) (with-temp-file filename))) (defun checkfn-make-file (&optional dir directory-p) (cl-check-type dir (or null string)) (let ((temporary-file-directory (or dir temporary-file-directory))) (make-temp-file "checkfn" directory-p))) (defun checkfn-make-name (&optional dir) (cl-check-type dir (or null string)) (make-temp-name (format "%s/checkfn" (directory-file-name (or dir temporary-file-directory))))) (defmacro checkfn-cleanup-files-let* (bindings &rest body) (declare (indent 1) (debug ((&rest (symbolp form)) body))) (let ((files (make-symbol "files"))) `(let* (,@bindings (,files (list ,@(mapcar #'car bindings)))) (unwind-protect (progn ,@body) (checkfn-delete-files ,files))))) ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ ;; | Regular Files ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ (define-checkfn-test file-create (if (eq (checkfn-backend) 'kqueue) 'skipped (checkfn-gather-events-let* ((file (checkfn-make-name))) (checkfn-create file)))) (define-checkfn-test file-read (checkfn-gather-events-let* ((file (checkfn-make-file))) (with-temp-buffer (insert-file-contents file)))) (define-checkfn-test file-write (checkfn-gather-events-let* ((file (checkfn-make-file))) (with-temp-file file (insert "XXX")))) (define-checkfn-test file-attrib (checkfn-gather-events-let* ((file (checkfn-make-file))) (checkfn-chattr file) (delete-file file))) (define-checkfn-test file-rename (checkfn-gather-events-let* ((dir (checkfn-make-file nil t)) (dir/src (checkfn-make-file dir)) (dir/dest (checkfn-make-file dir))) (rename-file dir/src dir/dest t))) ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ ;; | Directories ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ (define-checkfn-test dir-create (if (eq (checkfn-backend) 'kqueue) 'skipped (checkfn-gather-events-let* ((dir (checkfn-make-name))) (checkfn-create dir t)))) (define-checkfn-test dir-read (checkfn-gather-events-let* ((dir (checkfn-make-file nil t))) (directory-files dir))) (define-checkfn-test dir-create-file (checkfn-gather-events-let* ((dir (checkfn-make-file nil t)) (dir/file (checkfn-make-file dir))))) (define-checkfn-test dir-create-dir (checkfn-gather-events-let* ((dir (checkfn-make-file nil t)) (dir/dir (checkfn-make-file dir t))))) (define-checkfn-test dir-attrib (checkfn-gather-events-let* ((dir (checkfn-make-file nil t))) (checkfn-chattr dir))) (define-checkfn-test dir-rename (if (eq (checkfn-backend) 'kqueue) 'skipped (checkfn-gather-events-let* ((dir (checkfn-make-file nil t)) (dir/src (checkfn-make-file dir t)) (dir/dest (checkfn-make-name))) (rename-file dir/src dir/dest t)))) ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ ;; | Runner ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ (defun checkfn-backend (&optional filename) (unless filename (setq filename temporary-file-directory)) (let* ((watch (file-notify-add-watch filename '(change attribute-change) #'ignore))) (unwind-protect (cond ((processp watch) (intern (file-name-sans-extension (replace-regexp-in-string "<[[:digit:]]+>" "" (process-name watch))))) (t file-notify--library)) (ignore-errors (file-notify-rm-watch watch))))) (defun checkfn-run (&optional tests) (unless tests (setq tests checkfn-tests)) (let (results) (dolist (elt tests) (when (symbolp elt) (setq elt (assq elt checkfn-tests))) (cl-check-type elt cons) (cl-check-type (car elt) symbol) (cl-check-type (cdr elt) function) (message "Test: %s" (car elt)) (checkfn-cleanup-files-let* ((temporary-file-directory (checkfn-make-file nil t))) (pcase-let ((`(,name . ,fn) elt)) (push (cons name (condition-case err (funcall fn) (error (message "Error: %s" (error-message-string er= r)) 'failed))) results)))) (cons (checkfn-backend) (nreverse results)))) (defun checkfn-run-pp (&optional outfile tests) (let ((print-length nil) (print-level nil) (print-quoted t) (standard-output (if outfile (with-current-buffer (find-file-noselect outfile) (erase-buffer) (current-buffer)) standard-output))) (message "Backend: %s" (checkfn-backend)) (when outfile (message "Writing to `%s'" outfile)) (pp (checkfn-run tests)) (when outfile (with-current-buffer standard-output (save-buffer))))) (defmacro checkfn-with-tramp-mock-method (&rest body) `(let ((tramp-methods (cons '("mock" (tramp-login-program "sh") (tramp-login-args (("-i"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")) (tramp-connection-timeout 10)) tramp-methods))) ,@body)) (defun checkfn-gfilemonitor-run-pp (&optional outfile tests) (cl-letf (((symbol-function 'tramp-get-remote-inotifywait) #'ignore)) (checkfn-with-tramp-mock-method (let ((temporary-file-directory (concat "/mock::" temporary-file-directory)) (tramp-verbose 0)) (checkfn-run-pp outfile tests))))) (defun checkfn-inotifywait-run-pp (&optional outfile tests) (cl-letf (((symbol-function 'tramp-get-remote-gvfs-monitor-dir) #'ignore)) (checkfn-with-tramp-mock-method (let ((temporary-file-directory (concat "/mock::" temporary-file-directory)) (tramp-verbose 0)) (checkfn-run-pp outfile tests))))) (defun checkfn-run-batch (&optional outdir backend) (let ((outfile (expand-file-name (format "checkfn-%s-log.el" (or backend (checkfn-backend))) outdir))) (message "%S" backend) (pcase backend ('gfilemonitor (checkfn-gfilemonitor-run-pp outfile)) ('inotifywait (checkfn-inotifywait-run-pp outfile)) ((guard (or (null backend) (eq backend (checkfn-backend)))) (checkfn-run-pp outfile)) (_ (error "Backend not available: %s" backend))))) ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ ;; | Table ;; +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ (defun checkfn-table-draw-test-result (test-results c1 c2 c3) (let ((name (caar test-results)) (actions (let ((watches (seq-some (lambda (elt) (and (consp elt) (mapcar #'car elt))) (mapcar #'cdr test-results)))) (mapcar (lambda (events) (if (not (consp events)) (mapcar (lambda (watch) (cons watch (list events))) (or watches (list ""))) events)) (mapcar #'cdr test-results))))) (princ name) (move-to-column c1 t) (apply #'cl-mapcar (lambda (&rest watches) (princ (caar watches)) (move-to-column (+ c1 c2) t) (let ((actions (mapcar #'cdr watches))) (while (not (seq-every-p #'null actions)) (let ((column (+ c1 c2))) (setq actions (mapcar (lambda (action) (prog1 (when action (if (consp (car action)) (dolist (action (car action)) (princ (cl-case action (attribute-changed 'attr-changed) (t action))) (princ " ")) (princ (car action))) (cdr action)) (cl-incf column c3) (move-to-column column t))) actions))) (terpri) (move-to-column (+ c1 c2) t)) (terpri) (move-to-column c1 t))) actions) (move-to-column 0 t))) (defun checkfn-make-table (&rest results) (setq results (mapcar (lambda (result) (if (stringp result) (with-temp-buffer (insert-file-contents result) (goto-char 1) (read (current-buffer))) result)) results)) (with-current-buffer (get-buffer-create "*checkfn-table*") (let* ((inhibit-read-only t) (standard-output (current-buffer)) (backends (mapcar #'car results)) (columns (list 16 12 32))) (cl-destructuring-bind (c1 c2 c3) columns (cl-labels ((hline () (princ (make-string (+ c1 c2 (* c3 (length backends))= ) ?-)) (terpri))) (erase-buffer) (setq-local truncate-lines t) (let ((column (+ c1 c2))) (move-to-column column t) (dolist (backend backends) (pp backend) (cl-incf column c3) (move-to-column column t)) (terpri)) (hline) (dotimes (n (length (cdr (car results)))) (checkfn-table-draw-test-result (checkfn-table-nth-test results n) c1 c2 c3) (hline)) (pop-to-buffer (current-buffer)) (goto-char (point-min)) (delete-other-windows)))))) --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 12:37:58 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 16:37:58 +0000 Received: from localhost ([127.0.0.1]:44518 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crohS-0007MG-J2 for submit@debbugs.gnu.org; Sat, 25 Mar 2017 12:37:58 -0400 Received: from mout.gmx.net ([212.227.15.15]:54453) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crohQ-0007Lz-95 for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 12:37:56 -0400 Received: from detlef.gmx.de ([87.146.63.110]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M8NBi-1bvzB30iPK-00w06D; Sat, 25 Mar 2017 17:37:47 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> <87wpbdfoeu.fsf@luca> <8760ixjvnr.fsf@detlef> <87k27dfhjo.fsf@luca> Date: Sat, 25 Mar 2017 17:37:45 +0100 In-Reply-To: <87k27dfhjo.fsf@luca> (Andreas Politz's message of "Sat, 25 Mar 2017 17:27:23 +0100") Message-ID: <87inmx8g86.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:v+Cif0QFEC4lssYWM50maeU54dx7JVl3oVem/1LTTY3+NwvJxF7 cMI2CgMbvSXbQRp6Z8b60wJVchCxCqD+h+gb3NtFRmdV/7vCtO7dweOZHIL+3nBoyE/cWe2 obwbtB/JVsbr+NF6TrGwwVtBdMvpSD1oeftTTJSCmCY4bzQphiEjmrDy1tx1DEiwcK5wxsx /M8Vfk1yeoptS3pTg5YeA== X-UI-Out-Filterresults: notjunk:1;V01:K0:aTmEbcIDzzM=:RuZKVGw6z8P/zeUJwYll70 41dNor0G/AaRMNuSNWFaMu90kR5WOWLvF8j20+rPezOCx+MnZOb7IRX5DNYqpIiCt+RTYdK+i H2O8yHSuEUuweO451vLwvXQTkg+jgeniOoEvQP413JzVToteZSuCfYSzSH4Tx7RYPRgs9LQEN zz2hSdi9EgscxuV8/YTMHNUXr0wNQgm9oSmS6W2+iAAeExvg8U/ztKWfAnQgg/TtRfZ8a4tk8 H6MJhH5j+JMaUBqqPqJJDq7zyYZZtiT32FBG/7E/cWKbYwuJPhIN2kv05VzDVXujWgvDo3gAu GYQ7MNhUk57QMnr3q9Pazok03bEzAqHIdLa5Ev2JeG4otMC0nGUh3WkoelQ8/vGuap9Xccsvl xYTp1nWAgMCkthobFdy4LCPtRKA0kAiI9dvaVVxkwu+IY9oWRgJvXTqE9j/LMxSFK4UI5Dsm6 7iKxH6Hi2DlGiwQJezY7vH2+tYfaxvOO5nfwPGh8CVC4Mzq8pcm7QOV4YzChDMD5sdIdu3nca efbzZ+9RjLGG5OvHlW1CU7tTSLh8EZmC5XIuu3v9ypojLUdvth/OGBIQwOAUenGK+/wt+UdnX +tLCcfuwpJsDbiHHtfPGk0wmo+o8+I4K7JPZYFSsnk+FXbi3/k0k08HG+5QndFe8ue3yJPzh1 FiiSVUzaCYkGKPG0FpF33vISoLh8In5sby2wIvvLtWxpCowi4AtA0ecyDIlD7uX2LRWyvttN5 ItfDB/xqtYGTM4oNTpUoIjViWfMfNICye07gmz3JHVrkFQEHpivEee1RMz/h6XQWEnpdCPHzh rn3/ErX X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: >> Which works also over file names, like "http://host/path/to/file". > > If you think that's a file, how about this: I don't think it's a file; beause I don't know anything about it. I think it's a file name, which makes a difference. > (url-handler-mode) > (find-file "http://www.google.com/?s=foo") > (file-notify-add-watch "http://www.google.com/?s=foo" '(change) #'ignore) > => File notification error: "Directory does not exist", "http://www.google.com" What's wrong with this? `url-handler-mode' hasn't implemented `file-notify-add-watch'. In such cases, the original implementation is applied. And `file-notify-add-watch' is right in saying that this "directory" doesn't exist, from its pov. > or this > > (hypothetical-emacsfs-mode) > (find-file "/efs/recentf/some-recent-file") > (find-file "/efs/bookmarks/some-bookmark") No problem. Write a file name handler which takes responsibility for all files whose names start with "/efs", and here we are. It would still be a handler which is called based on the file *name*. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 13:09:44 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 17:09:44 +0000 Received: from localhost ([127.0.0.1]:44541 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crpCC-00086E-8R for submit@debbugs.gnu.org; Sat, 25 Mar 2017 13:09:44 -0400 Received: from mout.gmx.net ([212.227.15.18]:57803) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crpCA-000861-5c for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 13:09:42 -0400 Received: from detlef.gmx.de ([87.146.63.110]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MJSQ7-1ctlGW1Uhn-0035ha; Sat, 25 Mar 2017 18:09:35 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <87a889jvvw.fsf@detlef> <87shm1fhx0.fsf@luca> Date: Sat, 25 Mar 2017 18:09:34 +0100 In-Reply-To: <87shm1fhx0.fsf@luca> (Andreas Politz's message of "Sat, 25 Mar 2017 17:19:23 +0100") Message-ID: <87efxl8er5.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:nK+sv0wVUkZW+SZGaQRLIJj9SfStGR52nTRZWVZ+XFnhMciZzrD EI1XASbyW14deaKhX6/I1pPtUQIy9gR38gXgjeGXH4pDB4xM0sdFA9GyuXQ1hV5GlE2iG5q FNT3DnGk78WhRy06JHznE3viEamqJxMe8lg+0gja3RsIk2Op7fXFCyhFLvzzKMX1+qe6P6E Z0/73hrFatX2d1onz2KlQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:vQR1PHsL7VY=:yQ5+GLBfBcQbKNkIyByqYm cvNAr9Ol6MoZ5jCM5z9x0sMjI68kraUdpZYYjs8o/sHAV4CYrS/CD1/afG0rtVUM8PmTPsbyM 2744/EUIDKZLwrCJBE23c727iQIE8JHOnnkKXoSl7ZWUf7c6vW9v0ipqDbltsQdk3Zf/QnRNf rbNXVLhtRqhmhv1rRzk9pxQDxs8HtYMyM1QeM+sugsIMv0KwWNCUvCMSAawBgYp8qunPSaDmU MSrkyBW3258RhPK7Pqgumg0gcr86e2a5NGt6HK0bkbTN6wRS+U+33X7TEK+QcgaPEmGBnE1jq I+8k0lAj4hxQxRl78jgVW2mfWc3m1oCO5UpD78sAAVSIjy4lE8qzQUWtjDF2GV2dU3F/eb7O4 U3BzCCqoyoWqpddpbB4Mvq36U2rMdAudEyzJMvghOWbawBtJFYQ2oUyjL5zjbbBX1108ppgrP IPpZIbU89L0mMPI/vbQkGpZIokfiTR/EljVOH4CFV/g4pWKn3Tg8iQDa/8YLPODqlKJCkZI3s pjNW3Y5J9H7VV74EiaiNw0ixtdIrf0V9Y4uc2aQcRCKorJ6DqTi6glSRhTt8lpMnNRVXPb6g9 mTbP1scFejOcLRUzA2Pk4miNeq8MBjbH4oS7fJcBYMfDRZVTp0RZw1iLyBlfHl7NtlRv325ZR a1FrrK5CHRAN1+FX0b6jE0HamfPXfg4vMDEio5m/FENLBMo0rYYyECytVLbwWlDPpV3g1XbnG 4rfmWXMQ8C1HECQHu4brT7Wc8GxbtlHpE069a1ek/051B9cHzltNPlKDT1TIgDaErCW8tZ8+7 xb2bzAM X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Andreas Politz writes: > Anyway, here is the more progressive version of the patch, adding both > of the above points. (I guess, I'm to conservative sometimes and/or > seeing only problems everywhere.) Thanks! >> Well, I had always the hope to modify inotify watches in this case. If >> there is a watch with flags f1, and a new watch for the same file is >> requested with flags f2, and f2 contains a flag which is not part of f1, >> then either the existing watch shall be adapted, or the existing watch >> shall be removed, and a new shall be installed. Don't know what's >> possible in inotify. > > I implemented it by always using constantly watching for all events > (IN_ALL_EVENTS) and storing the given user-flags with the callback etc. > When an event occurs, I check whether it matches the given mask. Sounds good. > For that to work, I had to restrict the flag-usage by the user to those > not having an effect on the shared descriptor. What does this mean in practice? Any restriction we need to document? > I also added IN_EXCL_UNLINK as a default. This avoids reporting events > for already deleted filenames, which are still opened by some process, > which seems what we want as a default. OK. > I have no push privileges. I'm willing to push the patch in your name, if you provide me a ChangeLog style commit message. For the future, I recommend to obtain push privileges. Some nitpicks: > --- a/lisp/filenotify.el > +++ b/lisp/filenotify.el > +(defun file-notify--watch-absolute-filename (watch) This deserves a docstring. > +handler. The value in the hash table is file-notify--watch > +struct.") Please quote `file-notify--watch'. > (defun file-notify--rm-descriptor (descriptor) > +DESCRIPTOR should be an object returned by > +`file-notify-add-watch'. If it is registered in > +`file-notify-descriptors', a stopped event is sent." Don't reformat the docstring, keep the first line as complete sentence. > - (dolist (action actions) > + (while actions > + (let ((action (pop actions))) Being curious: why did you change this? > --- a/src/inotify.c > +++ b/src/inotify.c > @@ -264,10 +360,6 @@ close > The following symbols can also be added to a list of aspects: > > dont-follow > -excl-unlink > -mask-add > -oneshot > -onlydir Maybe we shall say explicitely, that those inotify events are not supported. > -COOKIE is an object that can be compared using `equal' to identify two matching > +COOKIE is an object that can be compared using `equal' to identify two matchingt Typo. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 13:12:38 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 17:12:38 +0000 Received: from localhost ([127.0.0.1]:44546 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crpEz-0008AZ-PE for submit@debbugs.gnu.org; Sat, 25 Mar 2017 13:12:37 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:41353) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crpEy-0008AM-El for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 13:12:36 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 53E85179B38D; Sat, 25 Mar 2017 18:12:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490461938; bh=sqCI+fbP/EY8J4mWOYBejrxbDik=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=cKkk/Tu+Z6YxhlcGJsZ5VzBTG2ZP4+Fuzrimfr91jow57mToqdXwsW/AQXHwhUFeR zwDUyxN+0FzyBmQyvDzIWcNT1lmCJMLwfr9ApkmU6asIEKok2si6BIi4F0fIpapg2K fFYXT+N2ZTvAeZx3fSHM/GvQSl8Qfbj0VajQ3pPk= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> <87wpbdfoeu.fsf@luca> <8760ixjvnr.fsf@detlef> <87k27dfhjo.fsf@luca> <87inmx8g86.fsf@detlef> Date: Sat, 25 Mar 2017 18:12:17 +0100 In-Reply-To: <87inmx8g86.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 17:37:45 +0100") Message-ID: <87r31le0we.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > Andreas Politz writes: > >>> Which works also over file names, like "http://host/path/to/file". >> >> If you think that's a file, how about this: > > I don't think it's a file; beause I don't know anything about it. Then I'm confused, since I didn't mean to suggest that file-name-handler work on anything other then strings. >> (file-notify-add-watch "http://www.google.com/?s=foo" '(change) #'ignore) >> => File notification error: "Directory does not exist", "http://www.google.com" > > What's wrong with this? `url-handler-mode' hasn't implemented > `file-notify-add-watch'. Yes, but the point is how would you ? By restricting watches to directories, you are also forcing every handler to have a concept of such an entity and to be able to watch it; rather then the original "filename". >> (hypothetical-emacsfs-mode) > No problem. Let's backtrack. I was suggesting that providing the given filename as an argument to the file-handler is more general than using it's directory. Your point as I understood it, was, that the existing file-notify-add-watch tramp-handler work just fine with directories, therefore such a change is not needed. My argument is that there may be other ways of using the file-name-handler machinery, and I was presenting some examples. I also fail to see any disadvantages (of using the given filename). -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 13:26:39 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 17:26:39 +0000 Received: from localhost ([127.0.0.1]:44557 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crpSZ-00005v-C3 for submit@debbugs.gnu.org; Sat, 25 Mar 2017 13:26:39 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:41761) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crpSY-00005g-34 for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 13:26:38 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id B8A09179AD71; Sat, 25 Mar 2017 18:26:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490462779; bh=8nF1pfAsCdV4dx+Vdfm3n5Y+JII=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type:Content-Transfer-Encoding; b=NzbA27q6ESCEZst66NjTBotZe0URJRsBK+GpOroLT082xo3/JZ/n6Lr9lA7O7bWsS eAFHkCMXvPlMyQCy6dChkguK9llfYnbBk5JRR1LkoC7rjtz3XNddrAGwi2jWJ7u195 p6OjIjuGeCngXs5bDVbXkcOW1mp+HvXSlAxyrX6k= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <87a889jvvw.fsf@detlef> <87shm1fhx0.fsf@luca> <87efxl8er5.fsf@detlef> Date: Sat, 25 Mar 2017 18:26:17 +0100 In-Reply-To: <87efxl8er5.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 18:09:34 +0100") Message-ID: <87mvc9e092.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: >> For that to work, I had to restrict the flag-usage by the user to those >> not having an effect on the shared descriptor. > > What does this mean in practice? Any restriction we need to document? I don't think so, apart from inotify-add-watch's doc-string. It means a user of inotify can't use the following flags IN_EXCL_UNLINK - already mentioned IN_MASK_ADD - modifies the (shared) descriptor IN_ONESHOT - monitor for one event only IN_ONLYDIR - From the man page: "Watch pathname only if it is a directory. Using this flag provides an a= pplica=E2=80=90 tion with a race-free way of ensuring that the monitored object is a direct= ory." This sounded esoteric enough for it to be excluded, i.e. I don't know the exact behavior on a already existing descriptor and it does not seam to be useful for our use-case. > I'm willing to push the patch in your name, if you provide me a ChangeLog > style commit message.=20 OK, will do. > This deserves a docstring. > > Please quote `file-notify--watch'. > > Don't reformat the docstring, keep the first line as complete > sentence. OK. >> - (dolist (action actions) > >> + (while actions >> + (let ((action (pop actions))) > > Being curious: why did you change this? actions is set to nil at one point inside the loop, but dolist creates an alias for it, such that setting the variable would have no effect. >> -excl-unlink >> -mask-add >> -oneshot >> -onlydir > > Maybe we shall say explicitely, that those inotify events are not support= ed. > Typo. OK. Thanks for the feedback, -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 14:18:25 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 18:18:26 +0000 Received: from localhost ([127.0.0.1]:44582 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crqGf-0001MQ-Mn for submit@debbugs.gnu.org; Sat, 25 Mar 2017 14:18:25 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:43011) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crqGe-0001MD-5u for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 14:18:24 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 2B111179B62B; Sat, 25 Mar 2017 19:18:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490465885; bh=4m1QhQ9HszV9zy7YKvSqt3KBajY=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=BGW7bgL9VB2agMcJ1gNHXdjj4FUutqqdcGQcVtyLik3MgjdA8CefeocP0vgsqiSO9 YNZNOQ6JbkqHjXuF2LX7Gks79yEm1dD2vS7Bb81X0/mYK97glkdo/JUUHbm++WYmq7 ViCVevr77/HGW75OstGqwotD2LbS+K5I5R/YgA2U= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <87a889jvvw.fsf@detlef> <87shm1fhx0.fsf@luca> <87efxl8er5.fsf@detlef> Date: Sat, 25 Mar 2017 19:18:04 +0100 In-Reply-To: <87efxl8er5.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 18:09:34 +0100") Message-ID: <8760ixdxur.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: >> (defun file-notify--rm-descriptor (descriptor) >> +DESCRIPTOR should be an object returned by >> +`file-notify-add-watch'. If it is registered in >> +`file-notify-descriptors', a stopped event is sent." > > Don't reformat the docstring, keep the first line as complete sentence. It's the second line: (defun file-notify--rm-descriptor (descriptor) "Remove DESCRIPTOR from `file-notify-descriptors'. -DESCRIPTOR should be an object returned by `file-notify-add-watch'. +DESCRIPTOR should be an object returned by -ap From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 14:37:06 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 18:37:06 +0000 Received: from localhost ([127.0.0.1]:44597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crqYj-0001qE-RQ for submit@debbugs.gnu.org; Sat, 25 Mar 2017 14:37:06 -0400 Received: from mout.gmx.net ([212.227.17.20]:54078) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crqYh-0001pi-9A for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 14:37:03 -0400 Received: from detlef.gmx.de ([87.146.63.110]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LhCDT-1cLUYa0A6R-00oUms; Sat, 25 Mar 2017 19:36:55 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> <87wpbdfoeu.fsf@luca> <8760ixjvnr.fsf@detlef> <87k27dfhjo.fsf@luca> <87inmx8g86.fsf@detlef> <87r31le0we.fsf@luca> Date: Sat, 25 Mar 2017 19:36:53 +0100 In-Reply-To: <87r31le0we.fsf@luca> (Andreas Politz's message of "Sat, 25 Mar 2017 18:12:17 +0100") Message-ID: <877f3d8apm.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:NvDDGRtVsPB+qopGoILpUzyATyEJvAA2LQexWAlAnWR3XdOZEnO StwMCf2SSiUtROzJN5Theq0IAKu0MDw40Xs+KK4FOknVmCAD1QmchSWBnBXWVbv26hbnokr cIsIY09UNQ6ZSeFZKmKYh336one2p9hBfupeZ+MdP3fQQuv6Yxjuwd63nQP+/B5VdAIOy9q oF1hrgnDa6rg2h22LGKaw== X-UI-Out-Filterresults: notjunk:1;V01:K0:Qo/2bHeX8vM=:JrgcBOFQK9GbLKYVtJMNuT C1N8j9F3Jn9GQUofMFTw36GtAWpjvMdwvOEjr9vPF7j3cP4L+MYx9zySPjEPdczqPDVeVLs4t IxIPy+TPzHwlSxGucv45t0SHNmH6GCqt+8gTVwHEujt3/sX/Ks9vgLD0LuF2F8OkA3m8yBr8Y uaZ7g8Ubkpy2sEGc6Zqf0Iluys7HxE6BJrAcpSM0oq410RUP1J0p/K7eLp+LZN8eGJB3m2v6j thJ1HVHPLkgPo1Y+BT32flff1Qrd2cZQT3xgVzSKUXxSm0u241tELqY3i+obNtoVATHKL3Ffx Usu5qQoLZ9e22+o6Wnk01fD04UO+DrXRgVkTHa06A4+kVarMQyAkmfK9DJx7uym8PNzQkBoJB 7+ct44OQ3EV9Vj8WfXERjkyhNFDIscJ/phSvffxlPHNndmIzbqUjhg0Upydw4UE9/wnq9Wrgd cgAo0HA0efWewEyLi3OH23DdLApeGSq9mjy+WrtReE23KHVjvZ47/u0dSVBZropH2gbYjBI9Z Ev4T2Th7ArPxMbtfrfDeKpcVqj/DF1pN6MoHvHELzet8ehIzoUoZckQdXvX/aGZ0yiktxYHw9 8juUVuf+nLkKT4O1YFuh/iXVUC1t6rx+3cW5lqlt5Fyx7nWpOC3EVmwumk9/IV3Yq9HMhKhMP PhsTblH2BfIh39GEYdlkZIE+DyL3ZgxJ93pvX/ebU1Enx8TNoSk63RL7zTUoQe61g1KtP3b6q xi0cM0NYkKpNjhGYfkEzOvrGG2h0MrM/jeHNQCszgIRRM47g+B9CAh8K/4EydR46Wb11CCupf Q7vl5BQ X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) Andreas Politz writes: >>> (file-notify-add-watch "http://www.google.com/?s=foo" '(change) #'ignore) >>> => File notification error: "Directory does not exist", >>> "http://www.google.com" >> >> What's wrong with this? `url-handler-mode' hasn't implemented >> `file-notify-add-watch'. > > Yes, but the point is how would you ? By restricting watches to > directories, you are also forcing every handler to have a concept of > such an entity and to be able to watch it; rather then the original > "filename". The error message says, that the upper directory of "http://www.google.com/?s=foo", "http://www.google.com", does not exist. This would be a problem for any file notification library. This does not mean that the handler is forced to watch a directory only. >>> (hypothetical-emacsfs-mode) > >> No problem. > > Let's backtrack. > > I was suggesting that providing the given filename as an argument to the > file-handler is more general than using it's directory. Your point as I > understood it, was, that the existing file-notify-add-watch > tramp-handler work just fine with directories, therefore such a change > is not needed. > > My argument is that there may be other ways of using the > file-name-handler machinery, and I was presenting some examples. > > I also fail to see any disadvantages (of using the given filename). Then I completely misunderstood your argumentation. What's your point with (hypothetical-emacsfs-mode) ? > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 14:40:38 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 18:40:38 +0000 Received: from localhost ([127.0.0.1]:44610 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crqc9-0001w1-Qo for submit@debbugs.gnu.org; Sat, 25 Mar 2017 14:40:37 -0400 Received: from mout.gmx.net ([212.227.15.19]:52318) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crqc8-0001vm-7K for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 14:40:36 -0400 Received: from detlef.gmx.de ([87.146.63.110]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M3S2C-1c0ywX2eLQ-00r3sR; Sat, 25 Mar 2017 19:40:29 +0100 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87shmcney8.fsf@detlef> <87efxw7xvc.fsf@luca> <87mvcjophx.fsf@detlef> <87tw6rssoi.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <8737e8excq.fsf@luca> <877f3el80j.fsf@luca> <87a889jvvw.fsf@detlef> <87shm1fhx0.fsf@luca> <87efxl8er5.fsf@detlef> <8760ixdxur.fsf@luca> Date: Sat, 25 Mar 2017 19:40:28 +0100 In-Reply-To: <8760ixdxur.fsf@luca> (Andreas Politz's message of "Sat, 25 Mar 2017 19:18:04 +0100") Message-ID: <8737e18ajn.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:qz85Z/xTeErkVCUciizT5kb0dT09c8q0GFdlnRTMln4Or7ofDMH yhHCUitqfdnwGjFhePSjWVaUBglxEFBSSohHo46H5yLhjMlXRUevreyin4ZRYqtka4Z6oYp xDk7bhgykOD4yJjTNlzVkww4qXgKvLJSIDlS8SK7IDIS8+5ne/X64hmsKMQ+5Vv1naOFWtw ItAmbHRg+bwwhWmiszsNg== X-UI-Out-Filterresults: notjunk:1;V01:K0:AY7Lu6/UvQE=:xj4ysyqBA/H/oNE2x9at39 qstYI3g2GVeLqnrXlVI/6RfLtdLXfNGdsg+b4DN+MYwR+mcyeoMGGInC7o81yKWDZ1nLLrI6P bYzb4M4Lg74soRqVZnpz6dg6rKZyJJXSoPVr0PHlVNIlruV9ute8V8b4EJwDyQcD4EbpqgmyM BCyscK28JFe4Jngami2I2OdV5C3Nj2uuiWWztxXHSZHRVniAvkY6bTBYJB2A7K2HnINTtlmIC v/jDAePl9XprsRDD5BKc2s+OwRCNhPHhR1pd7Os2i/8w8RrTCQ30onhQYjaP8fG5R7jAnnCOK MFmanf+uyDvUWauxoP4KSUfSOhIEY9SoNC/VAPqQU9xW5xkPrXSAeNinL4hTnZ0UI5rMX+5zK 6yzZSS/IMVjc65M+1GMQKJBe+ud5HZ/qr4tyUlCVwX9b/9DYHKJsOGn2rLRF8+lyLfTFuK/KR ZH4cs9biVCtw9rir5N5FYbOAyRPNEU0nKyCElfrLm1vHekBH4bU6le8Nq/TQQQfehzRcQ8kso whAAB+4aGXb38eU2fYDuQuAfH2A/WHkvq8EiK1f2YVzLl6BkhxPkW49vgBMMYmY0BohVnquk+ XnIOSsgK1lreh05lHDU0zxOUUmFVj0UtEVrP5eXq+0LWTNwwBaWKiBzuluPR7OZytMqyCffN7 tDhU/QJnrW2EP3KA8ir+kIh8saK0/SxkK8VDUvJ9asM2h7M7spo+l5CRXirzKs12C5DhvOItr poZPK+yCLA9npGfZuZjnST1jHeX4v2wcvHwvu/LtBjv0hW/01mpUZzQCxB7dr1idcnCb1jh0E jwFBV2r X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: >> Don't reformat the docstring, keep the first line as complete sentence. > > It's the second line: Ah, yes. But still, the docstring doesn't need to be reformatted. Nitpick, as said ... > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 25 15:35:13 2017 Received: (at 26126) by debbugs.gnu.org; 25 Mar 2017 19:35:13 +0000 Received: from localhost ([127.0.0.1]:44624 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crrSz-00050O-9Y for submit@debbugs.gnu.org; Sat, 25 Mar 2017 15:35:13 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:44719) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crrSx-00050B-DC for 26126@debbugs.gnu.org; Sat, 25 Mar 2017 15:35:11 -0400 X-Virus-Scanned: by Amavisd-new + McAfee uvscan + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (ip5f5bdecf.dynamic.kabel-deutschland.de [95.91.222.207]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 17E47179B429; Sat, 25 Mar 2017 20:34:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1490470493; bh=Kybwre9XP9ZRwuHi1bjdkvbVYss=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=n/dSNiSawPHIrSk+xyQqqpMcOH6WguVZjg5irYfn2B6EeAc+DX2ICIjBkK85npsTs sKazbkCuUuNAiwk8WMH/XiA++IepKohPfZNmRMTnPupWY+4TyXlLJgbE8CRtD8VDHC 9c+ULaIS2nt8vTY/t17/3UPn6XJxw42V7FEMqDMg= From: Andreas Politz To: Michael Albinus Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87pohfkmvh.fsf@detlef> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> <87wpbdfoeu.fsf@luca> <8760ixjvnr.fsf@detlef> <87k27dfhjo.fsf@luca> <87inmx8g86.fsf@detlef> <87r31le0we.fsf@luca> <877f3d8apm.fsf@detlef> Date: Sat, 25 Mar 2017 20:34:52 +0100 In-Reply-To: <877f3d8apm.fsf@detlef> (Michael Albinus's message of "Sat, 25 Mar 2017 19:36:53 +0100") Message-ID: <87wpbdcfqb.fsf@luca> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Michael Albinus writes: > This does not mean that the handler is forced to watch a directory > only. But it is: #+BEGIN_SRC emacs-lisp (defun file-notify-add-watch (file flags callback) ;;.... (let* ((handler (find-file-name-handler file 'file-notify-add-watch)) (dir (directory-file-name (if (file-directory-p file) file (file-name-directory file)))) desc func l-flags) (unless (file-directory-p dir) (signal 'file-notify-error `("Directory does not exist" ,dir))) (if handler ;; A file name handler could exist even if there is no local ;; file notification support. (setq desc (funcall handler 'file-notify-add-watch dir flags callback)) ;;---------------------------------------------------------^ #+END_SRC -ap From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 26 03:08:57 2017 Received: (at 26126) by debbugs.gnu.org; 26 Mar 2017 07:08:57 +0000 Received: from localhost ([127.0.0.1]:44952 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cs2IK-0002Sc-So for submit@debbugs.gnu.org; Sun, 26 Mar 2017 03:08:57 -0400 Received: from mout.gmx.net ([212.227.15.19]:56615) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cs2II-0002SP-KY for 26126@debbugs.gnu.org; Sun, 26 Mar 2017 03:08:55 -0400 Received: from detlef.gmx.de ([87.146.32.149]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MHH6Z-1cvb3719P9-00E9BJ; Sun, 26 Mar 2017 09:08:46 +0200 From: Michael Albinus To: Andreas Politz Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches References: <87r31x9ulw.fsf@luca> <87lgs2sobr.fsf@luca> <87y3w2gywc.fsf@detlef> <878to21fty.fsf@luca> <87wpbl1u80.fsf@detlef> <87d1ddecx2.fsf@luca> <87efxtnk8m.fsf@detlef> <87tw6nd6nf.fsf@luca> <871strm323.fsf@detlef> <838tnywshh.fsf@gnu.org> <8737e54f8c.fsf@detlef> <838tnx71u0.fsf@gnu.org> <87lgrulabr.fsf@luca> <87fui1jz9u.fsf@detlef> <87wpbdfoeu.fsf@luca> <8760ixjvnr.fsf@detlef> <87k27dfhjo.fsf@luca> <87inmx8g86.fsf@detlef> <87r31le0we.fsf@luca> <877f3d8apm.fsf@detlef> <87wpbdcfqb.fsf@luca> Date: Sun, 26 Mar 2017 09:08:43 +0200 In-Reply-To: <87wpbdcfqb.fsf@luca> (Andreas Politz's message of "Sat, 25 Mar 2017 20:34:52 +0100") Message-ID: <87lgrscy6c.fsf@detlef> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:sgVoQO7onZSGNwr9aovfF2H5Qa2hQCX6Ddb0yLkvqWDzqxCbJUj JkUGywAAFZN8MEB6ILmUfBVV1AkEA8YK4uKMwYYsE0Ik4iyuI63aiF0ksWcDmyabXCrodpz o3Sc6Jlu0CcpW6+6W2WQ5r2fPQu1lfZQN9geO7M5B3AUhTDwr9Yp+9P0D3CBlDlFbyKD18G WNlwlt8mSK5Wn6xArivfg== X-UI-Out-Filterresults: notjunk:1;V01:K0:uZbsn+5GF0k=:STZYTdUgn4MucIqhIrT7IZ iGk8mOPtSwIOXKVHTrX/WAsrtmxUAVNFYVGPSRrCklSUm3JwaeqeaQZwK6doRlUWhqIvIprHz Tcz73JBR8Tpo8PONRnb7cxZ9/k8JQNTTCeuSOI32hnNOsn15VfHA4PhPPYshBaUOm3m75t4Y3 IKpSEifWwF+WtVmLh4b/8iJdIRBZgi+Hqq+GSUvbY2O+XMep5VOlzixPO9qJ9VuuKqf+a/drd 4/tsSCMlHOpBa3UzCxEy658rcVBRstSP9Nom8CpEde1jt2lwWfuoffjzloe1CGjHtfMQj/d6b KgpvXGE0JNACbvpcfCDb2IZBQ8ioGsMvXXmCW24bpx+xVBdyIzc16j6bD5+pZ0Hrn3UX9DzdC U5mIU7felCbOy1WkonV3o3dSkh0Lzb7ue4raUgcg5CVMnQBU3qKdTy5mC3GZBHWtlweNqNtyN bgqVts/MxxAUKytGa9vpM1NyLKBhy5uo1CTFYBaTbOEtUDU5FEF2mMn618nUHM7mjIw/lllXz Y5KAWD2rhtjHA7bjDJc4fMG0SYlzTadk7rFuC+CR43dcexCXXs0YxhiFa84E2RGMGSbw6Ys87 YP4i0JfAmmgZHQJDkqebrlzxh1WzHXa3OlEZE1x0jBcTADzrZmo5xvCk58frQeZ0GjZ/L4rdx pkGQOcTrHDDjS9OZ4vl+LHs1UOhdbHg0AE5ibUSEX/O3/hrFVMIMalaqX6Kj9Bh8REs8HacV2 pLELY6iay7txOa4wXqdzf1RZZQb3DcLx7/NmW8U9Pef148UX6FaUCIa3QKmQDrhzVXqv0rEW+ jjavvkQ X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 26126 Cc: Eli Zaretskii , 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Andreas Politz writes: > Michael Albinus writes: > >> This does not mean that the handler is forced to watch a directory >> only. > > But it is: I was speaking solely about the message. And yes, the file name handlers watch a directory. I wouldn't change this, until there is the need to support a file name handler which cannot implement it. > -ap Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 26 05:43:18 2017 Received: (at control) by debbugs.gnu.org; 26 Mar 2017 09:43:18 +0000 Received: from localhost ([127.0.0.1]:45013 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cs4hh-00068e-R8 for submit@debbugs.gnu.org; Sun, 26 Mar 2017 05:43:17 -0400 Received: from mout.gmx.net ([212.227.17.21]:60021) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cs4hf-00068O-Pg for control@debbugs.gnu.org; Sun, 26 Mar 2017 05:43:16 -0400 Received: from detlef.gmx.de ([87.146.32.149]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MVsUW-1chBgK2KLY-00X77g for ; Sun, 26 Mar 2017 11:43:08 +0200 Date: Sun, 26 Mar 2017 11:43:07 +0200 Message-Id: <87d1d4cr10.fsf@detlef> To: control@debbugs.gnu.org From: Michael Albinus Subject: control message for bug #26126 X-Provags-ID: V03:K0:iXGyHjaQLqbSG9iCND4CcMpgBPbQz4jUvvJos6WYsRZnXPY0JAL HFL7BoWPZhXpARtEk6dWxdcV0d7efzcz/YItLbgEndQN89htkE/3ZeLONqq/hy/C5HSXgk0 dFDorqpUF/lkmTHS0S4+fE6OvA7ONf2Uy0B015ds7BbygcQ4NtUckgHk4mWj5icS6qyIkSp EC0vBA6G1WMCSDKVMFDmw== X-UI-Out-Filterresults: notjunk:1;V01:K0:t59J/eNKo4o=:6LzKqrvYl+cNazGQRvuPlY jojzcuifHsJjf9K8fNUFsafwhnwudCICz2ui6GvTQjgF11LSaBWnFCNMXYq4tNAimdLszS3oP ThXZkuXlQ3EKcRj/vWy8n9FDTI8dFUFzrT+lKtyxL+jXYihhulJ24AoXY0Trw4GaVe/Q2Qex6 wA9gLSn/uwWbiehIQ/yrA4AgBfZgRiiQGcsvP6/y9Q9OCpazIh/2PquPq5HAKVnX9tKIl+UIE x4qcwqRGtMJNzH+aw0olMTjrADZTRs4bhjqPN57iUVdnAM+ggenDH5xc9r6kuaWQbkkifQVS/ +GBR+UKp92QeJ8hUkTa83h5Uh1seCc8RL2O4+0gvzOmuQ3FoujoJGFNNzb/v3jVnYN2rdP4YD RhbJlsgm3bg+dXZ9KyTqjbDHOnW1vljZEn7Xb1snPuRCCxUNhHpzpQw+HdAXo+D82IY7IQwOm 3/7Cmw/d/D/UJjHB310EaZSZ6wvnvcQucYVNtcicByCQKBexkLSJJ7skyZHbnQfeQH9dpJZCA kgv3oGi9aSDHreIyQAFerZzHNBlU0BsycWwubaq6SgGcBgnJ9QYSIWNkSo2Eba8l+FzRqo9K6 bQh1mQHDK6lfIPD/StmNAwI/KwC4DDzapkELSvlzRDPt4YE4aL+4m3wWQldi1K4SDY+mhWEv8 pMXDnLZEP0Q5nPbw0iieSPVH+azpuVbGfnZF+MRxmMHtg3tmFHM6Hh6Co8Sa+XAyP638AMGET PhdJGCVW0hViaMx28hj8kQkgzoeQRVCNcIiKWL2FV2mUjsKgv9zR1zva7yY= X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) tags 26126 fixed close 26126 26.1 From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 30 14:16:00 2017 Received: (at 26126) by debbugs.gnu.org; 30 Mar 2017 18:16:01 +0000 Received: from localhost ([127.0.0.1]:53170 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ctec4-0001aA-2Z for submit@debbugs.gnu.org; Thu, 30 Mar 2017 14:16:00 -0400 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:60108) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ctec1-0001Zx-Jf for 26126@debbugs.gnu.org; Thu, 30 Mar 2017 14:15:58 -0400 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 0477816004E; Thu, 30 Mar 2017 11:15:52 -0700 (PDT) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id gwtkJlc4HSTz; Thu, 30 Mar 2017 11:15:49 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id C377F160090; Thu, 30 Mar 2017 11:15:49 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id A1T5OPKN25Ph; Thu, 30 Mar 2017 11:15:49 -0700 (PDT) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id A401116004E; Thu, 30 Mar 2017 11:15:49 -0700 (PDT) To: Andreas Politz , Michael Albinus From: Paul Eggert Subject: Re: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches Organization: UCLA Computer Science Department Message-ID: <25f8a6eb-2d71-42af-818a-80fd3b1d1a3c@cs.ucla.edu> Date: Thu, 30 Mar 2017 11:15:49 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------151D4BE51E41B3284D298EF2" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 26126 Cc: 26126@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) This is a multi-part message in MIME format. --------------151D4BE51E41B3284D298EF2 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for writing and reviewing that code. I looked at inotify.c after the patch was applied and found a few races and integer-overflow issues, most of which have likely been lurking there for a while. I fixed the problems that I found by installing the attached patch into master; please give it a try when you have the time. --------------151D4BE51E41B3284D298EF2 Content-Type: text/plain; charset=UTF-8; name="0001-Some-inotify-cleanup.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Some-inotify-cleanup.txt" RnJvbSA2OGQ3MGMxNjM0MTMyNDIzZGE4MDcwYzA2YTMwMjQ3MzhjOTA0ZjgzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUaHUsIDMwIE1hciAyMDE3IDExOjA4OjIzIC0wNzAwClN1YmplY3Q6IFtQQVRD SF0gU29tZSBpbm90aWZ5IGNsZWFudXAKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IDhiaXQKClRoaXMgY2F0Y2hlcyBzb21lIHByb2JsZW1zIHdpdGggaW50ZWdlciBvdmVyZmxv dyBhbmQgcmFjZXMKdGhhdCBJIG5vdGljZWQgaW4gaW5vdGlmeS5jIGFmdGVyIHJldmlld2lu ZyB0aGUgY2hhbmdlcwppbnN0YWxsZWQgdG8gZml4IEJ1ZyMyNjEyNi4KKiBzcmMvZm5zLmMs IHNyYy9saXNwLmggKGVxdWFsX25vX3F1aXQpOiBOb3cgZXh0ZXJuLgoqIHNyYy9pbm90aWZ5 LmMgKGFzcGVjdF90b19pbm90aWZ5bWFzayk6CkNoZWNrIGZvciBjeWNsZXMgYW5kIGZvciBp bXByb3BlciBsaXN0cy4KKG1ha2VfbGlzcHlfbWFzaywgbGlzcHlfbWFza19tYXRjaF9wKTog UmVtb3ZlLgpBbGwgY2FsbGVycyBjaGFuZ2VkIHRvIHVzZSBJTlRFR0VSX1RPX0NPTlMgYW5k IENPTlNfVE9fSU5URUdFUi4KKGlub3RpZnlldmVudF90b19ldmVudCwgYWRkX3dhdGNoKToK RG9u4oCZdCBhc3N1bWUgd2F0Y2ggZGVzY3JpcHRvcnMgYW5kIGNvb2tpZXMgZml0IGluIGZp eG51bXMuCihhZGRfd2F0Y2gpOiBVc2UgYXNzb2Nfbm9fcXVpdCwgbm90IEZhc3NvYy4KQXZv aWQgaW50ZWdlciBvdmVyZmxvdyBpbiAodmVyeSEpIGxvbmctcnVubmluZyBwcm9jZXNzZXMg d2hlcmUKdGhlIEVtYWNzIHdhdGNoIElEIGNvdWxkIG92ZXJmbG93LiAgQXZvaWQgc29tZSBk dXBsaWNhdGUgY29kZS4KKGZpbmRfZGVzY3JpcHRvcik6IE5ldyBmdW5jdGlvbi4KKHJlbW92 ZV9kZXNjcmlwdG9yKTogRmlyc3QgYXJnIGlzIG5vdyB0aGUgcmV0dXJuZWQgdmFsdWUgZnJv bQpmaW5kX2Rlc2NyaXB0b3IsIHJhdGhlciB0aGFuIHRoZSBkZXNjcmlwdG9yLiAgVGhpcyB3 YXksIHRoZQp2YWx1ZSBjYW4gYmUgcmVtb3ZlZCB3aXRob3V0IGNhbGxpbmcgRmRlbGV0ZSwg d2hpY2ggbWlnaHQgcXVpdC4KV2FpdCB1bnRpbCB0aGUgZW5kICh3aGVuIHdhdGNoX2xpc3Qg aXMgY29uc2lzdGVudCkgYmVmb3JlIHNpZ25hbGluZwphbnkgZXJyb3JzLgoocmVtb3ZlX3dh dGNoLCBpbm90aWZ5X2NhbGxiYWNrKToKVXNlIGZpbmRfZGVzY3JpcHRvciB0byBhdm9pZCB0 aGUgbmVlZCBmb3IgRmRlbGV0ZS4KKGlub3RpZnlfY2FsbGJhY2spOiBVc2Ugc2ltcGxlciB0 ZXN0cyBmb3IgaW9jdGwgZmFpbHVyZS4KRnJlZSB0ZW1wb3JhcnkgYnVmZmVyIGlmIHNpZ25h bGVkLCBhbmQgcHV0IGl0IG9uIHRoZSBzdGFjayBpZiBzbWFsbC4KVXNlIHNzaXplX3QgdG8g aW5kZXggdGhyb3VnaCByZWFkIHJlc3VsdHMsIHRvIGF2b2lkIGEgY2FzdC4KKHZhbGlkX3dh dGNoX2Rlc2NyaXB0b3IpOiBOZXcgZnVuY3Rpb24sIHdpdGggYSB0aWdodGVyIGNoZWNrLgoo Rmlub3RpZnlfcm1fd2F0Y2gsIEZpbm90aWZ5X3ZhbGlkX3ApOiBVc2UgaXQuCihGaW5vdGlm eV92YWxpZF9wKTogVXNlIGFzc29jX25vX3F1aXQgYW5kIGFzc19ub19xdWl0IGluc3RlYWQK b2YgRmFzc29jLiAgRG8gbm90IGFzc3VtZSB0aGUgZmlyc3QgYXNzb2Mgc3VjY2VlZHMuCiog dGVzdC9zcmMvaW5vdGlmeS10ZXN0cy5lbCAoaW5vdGlmeS12YWxpZC1wLXNpbXBsZSk6CkFk ZCBpbm90aWZ5LXZhbGlkLXAgdGVzdHMsIHNvbWUgb2Ygd2hpY2ggZHVtcCBjb3JlIHdpdGhv dXQKdGhlIGZpeGVzIG5vdGVkIGFib3ZlLgotLS0KIHNyYy9mbnMuYyAgICAgICAgICAgICAg ICAgfCAgIDMgKy0KIHNyYy9pbm90aWZ5LmMgICAgICAgICAgICAgfCAyNTAgKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2xpc3AuaCAgICAg ICAgICAgICAgICB8ICAgMSArCiB0ZXN0L3NyYy9pbm90aWZ5LXRlc3RzLmVsIHwgICA5ICsr CiA0IGZpbGVzIGNoYW5nZWQsIDE0OSBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Zucy5jIGIvc3JjL2Zucy5jCmluZGV4IDQyZTJlZWMuLmRl N2ZjMWIgMTAwNjQ0Ci0tLSBhL3NyYy9mbnMuYworKysgYi9zcmMvZm5zLmMKQEAgLTM4LDcg KzM4LDYgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiBzdGF0aWMgdm9pZCBzb3J0X3ZlY3Rvcl9j b3B5IChMaXNwX09iamVjdCwgcHRyZGlmZl90LAogCQkJICAgICAgTGlzcF9PYmplY3QgKnJl c3RyaWN0LCBMaXNwX09iamVjdCAqcmVzdHJpY3QpOwotc3RhdGljIGJvb2wgZXF1YWxfbm9f cXVpdCAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGVudW0gZXF1YWxfa2luZCB7IEVR VUFMX05PX1FVSVQsIEVRVUFMX1BMQUlOLCBFUVVBTF9JTkNMVURJTkdfUFJPUEVSVElFUyB9 Owogc3RhdGljIGJvb2wgaW50ZXJuYWxfZXF1YWwgKExpc3BfT2JqZWN0LCBMaXNwX09iamVj dCwKIAkJCSAgICBlbnVtIGVxdWFsX2tpbmQsIGludCwgTGlzcF9PYmplY3QpOwpAQCAtMjEy MSw3ICsyMTIwLDcgQEAgb2Ygc3RyaW5ncy4gIChgZXF1YWwnIGlnbm9yZXMgdGV4dCBwcm9w ZXJ0aWVzLikgICovKQogICAgVXNlIHRoaXMgb25seSBvbiBhcmd1bWVudHMgdGhhdCBhcmUg Y3ljbGUtZnJlZSBhbmQgbm90IHRvbyBsYXJnZSBhbmQKICAgIGFyZSBub3Qgd2luZG93IGNv bmZpZ3VyYXRpb25zLiAgKi8KIAotc3RhdGljIGJvb2wKK2Jvb2wKIGVxdWFsX25vX3F1aXQg KExpc3BfT2JqZWN0IG8xLCBMaXNwX09iamVjdCBvMikKIHsKICAgcmV0dXJuIGludGVybmFs X2VxdWFsIChvMSwgbzIsIEVRVUFMX05PX1FVSVQsIDAsIFFuaWwpOwpkaWZmIC0tZ2l0IGEv c3JjL2lub3RpZnkuYyBiL3NyYy9pbm90aWZ5LmMKaW5kZXggMDA0Njg5Yi4uYTBhODlhYSAx MDA2NDQKLS0tIGEvc3JjL2lub3RpZnkuYworKysgYi9zcmMvaW5vdGlmeS5jCkBAIC00MSwx NiArNDEsMTYgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2lmbmRlZiBJTl9PTkxZRElSCiAjIGRl ZmluZSBJTl9PTkxZRElSIDAKICNlbmRpZgotI2RlZmluZSBJTk9USUZZX0RFRkFVTFRfTUFT SyAoSU5fQUxMX0VWRU5UU3xJTl9FWENMX1VOTElOSykKKyNkZWZpbmUgSU5PVElGWV9ERUZB VUxUX01BU0sgKElOX0FMTF9FVkVOVFMgfCBJTl9FWENMX1VOTElOSykKIAogLyogRmlsZSBo YW5kbGUgZm9yIGlub3RpZnkuICAqLwogc3RhdGljIGludCBpbm90aWZ5ZmQgPSAtMTsKIAog LyogQWxpc3Qgb2YgZmlsZXMgYmVpbmcgd2F0Y2hlZC4gIFdlIHdhbnQgdGhlIHJldHVybmVk IGRlc2NyaXB0b3IgdG8KICAgIGJlIHVuaXF1ZSBmb3IgZXZlcnkgd2F0Y2gsIGJ1dCBpbm90 aWZ5IHJldHVybnMgdGhlIHNhbWUgZGVzY3JpcHRvcgotICAgZm9yIG11bHRpcGxlIGNhbGxz IHRvIGlub3RpZnlfYWRkX3dhdGNoIHdpdGggdGhlIHNhbWUgZmlsZS4gIEluCi0gICBvcmRl ciB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIHdlIGFkZCBhIElELCB1bmlxdWVseSBpZGVudGlm eWluZyBhCi0gICB3YXRjaC9maWxlIGNvbWJpbmF0aW9uLgorICAgV0QgZm9yIG11bHRpcGxl IGNhbGxzIHRvIGlub3RpZnlfYWRkX3dhdGNoIHdpdGggdGhlIHNhbWUgZmlsZS4KKyAgIFN1 cHBseSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgSUQsIHNvIHRoYXQgV0QgYW5kIElEIHRvZ2V0 aGVyCisgICB1bmlxdWVseSBpZGVudGlmeSBhIHdhdGNoL2ZpbGUgY29tYmluYXRpb24uCiAK ICAgIEZvciB0aGUgc2FtZSByZWFzb24sIHdlIGFsc28gbmVlZCB0byBzdG9yZSB0aGUgd2F0 Y2gncyBtYXNrIGFuZCB3ZQogICAgY2FuJ3QgYWxsb3cgdGhlIGZvbGxvd2luZyBmbGFncyB0 byBiZSB1c2VkLgpAQCAtNjAsMTIgKzYwLDIxIEBAIHN0YXRpYyBpbnQgaW5vdGlmeWZkID0g LTE7CiAgICBJTl9PTkVTSE9UCiAgICBJTl9PTkxZRElSCiAKLSAgIEZvcm1hdDogKGRlc2Ny aXB0b3IgLiAoKGlkIGZpbGVuYW1lIGNhbGxiYWNrIG1hc2spIC4uLikpCi0qLworICAgRWFj aCBlbGVtZW50IG9mIHRoaXMgbGlzdCBpcyBvZiB0aGUgZm9ybSAoREVTQ1JJUFRPUiAuIFdB VENIRVMpCisgICB3aGVyZSBubyB0d28gREVTQ1JJUFRPUiB2YWx1ZXMgYXJlIHRoZSBzYW1l LiAgREVTQ1JJUFRPUiByZXByZXNlbnRzCisgICB0aGUgaW5vdGlmeSB3YXRjaCBkZXNjcmlw dG9yIGFuZCBXQVRDSEVTIGlzIGEgbGlzdCB3aXRoIGVsZW1lbnRzIG9mCisgICB0aGUgZm9y bSAoSUQgRklMRU5BTUUgQ0FMTEJBQ0sgTUFTSyksIHdoZXJlIElEIGlzIHRoZSBpbnRlZ2Vy CisgICBkZXNjcmliZWQgYWJvdmUsIEZJTEVOQU1FIG5hbWVzIHRoZSBmaWxlIGJlaW5nIHdh dGNoZWQsIENBTExCQUNLIGlzCisgICBpbnZva2VkIHdoZW4gdGhlIGV2ZW50IG9jY3Vycywg YW5kIE1BU0sgcmVwcmVzZW50cyB0aGUgYXNwZWN0cworICAgYmVpbmcgd2F0Y2hlZC4gIFRo ZSBXQVRDSEVTIGxpc3QgaXMgc29ydGVkIGJ5IElELiAgQWx0aG91Z2gKKyAgIERFU0NSSVBU T1IgYW5kIE1BU0sgYXJlIG9yZGluYXJpbHkgaW50ZWdlcnMsIHRoZXkgYXJlIGNvbnNlcyB3 aGVuCisgICByZXByZXNlbnRpbmcgaW50ZWdlcnMgb3V0c2lkZSBvZiBmaXhudW0gcmFuZ2Uu ICAqLworCiBzdGF0aWMgTGlzcF9PYmplY3Qgd2F0Y2hfbGlzdDsKIAogc3RhdGljIExpc3Bf T2JqZWN0Ci1tYXNrX3RvX2FzcGVjdHMgKHVpbnQzMl90IG1hc2spIHsKK21hc2tfdG9fYXNw ZWN0cyAodWludDMyX3QgbWFzaykKK3sKICAgTGlzcF9PYmplY3QgYXNwZWN0cyA9IFFuaWw7 CiAgIGlmIChtYXNrICYgSU5fQUNDRVNTKQogICAgIGFzcGVjdHMgPSBGY29ucyAoUWFjY2Vz cywgYXNwZWN0cyk7CkBAIC0xNDksMTUgKzE1OCwxMyBAQCBzeW1ib2xfdG9faW5vdGlmeW1h c2sgKExpc3BfT2JqZWN0IHN5bWIpCiBzdGF0aWMgdWludDMyX3QKIGFzcGVjdF90b19pbm90 aWZ5bWFzayAoTGlzcF9PYmplY3QgYXNwZWN0KQogewotICBpZiAoQ09OU1AgKGFzcGVjdCkp CisgIGlmIChDT05TUCAoYXNwZWN0KSB8fCBOSUxQIChhc3BlY3QpKQogICAgIHsKICAgICAg IExpc3BfT2JqZWN0IHggPSBhc3BlY3Q7CiAgICAgICB1aW50MzJfdCBtYXNrID0gMDsKLSAg ICAgIHdoaWxlIChDT05TUCAoeCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtYXNrIHw9IHN5 bWJvbF90b19pbm90aWZ5bWFzayAoWENBUiAoeCkpOwotICAgICAgICAgIHggPSBYQ0RSICh4 KTsKLSAgICAgICAgfQorICAgICAgRk9SX0VBQ0hfVEFJTCAoeCkKKwltYXNrIHw9IHN5bWJv bF90b19pbm90aWZ5bWFzayAoWENBUiAoeCkpOworICAgICAgQ0hFQ0tfTElTVF9FTkQgKHgs IGFzcGVjdCk7CiAgICAgICByZXR1cm4gbWFzazsKICAgICB9CiAgIGVsc2UKQEAgLTE2NSwy NSArMTcyLDEzIEBAIGFzcGVjdF90b19pbm90aWZ5bWFzayAoTGlzcF9PYmplY3QgYXNwZWN0 KQogfQogCiBzdGF0aWMgTGlzcF9PYmplY3QKLW1ha2VfbGlzcHlfbWFzayAodWludDMyX3Qg bWFzaykKLXsKLSAgcmV0dXJuIEZjb25zIChtYWtlX251bWJlciAobWFzayAmIDB4ZmZmZiks Ci0gICAgICAgICAgICAgICAgbWFrZV9udW1iZXIgKG1hc2sgPj4gMTYpKTsKLX0KLQotc3Rh dGljIGJvb2wKLWxpc3B5X21hc2tfbWF0Y2hfcCAoTGlzcF9PYmplY3QgbWFzaywgdWludDMy X3Qgb3RoZXIpCi17Ci0gIHJldHVybiAoWElOVCAoWENBUiAobWFzaykpICYgb3RoZXIpCi0g ICAgfHwgKChYSU5UIChYQ0RSIChtYXNrKSkgPDwgMTYpICYgb3RoZXIpOwotfQotCi1zdGF0 aWMgTGlzcF9PYmplY3QKIGlub3RpZnlldmVudF90b19ldmVudCAoTGlzcF9PYmplY3Qgd2F0 Y2gsIHN0cnVjdCBpbm90aWZ5X2V2ZW50IGNvbnN0ICpldikKIHsKLSAgTGlzcF9PYmplY3Qg bmFtZSA9IFFuaWw7CisgIExpc3BfT2JqZWN0IG5hbWU7CisgIHVpbnQzMl90IG1hc2s7Cisg IENPTlNfVE9fSU5URUdFUiAoRm50aCAobWFrZV9udW1iZXIgKDMpLCB3YXRjaCksIHVpbnQz Ml90LCBtYXNrKTsKIAotICBpZiAoISBsaXNweV9tYXNrX21hdGNoX3AgKEZudGggKG1ha2Vf bnVtYmVyICgzKSwgd2F0Y2gpLCBldi0+bWFzaykpCisgIGlmICghIChtYXNrICYgZXYtPm1h c2spKQogICAgIHJldHVybiBRbmlsOwogCiAgIGlmIChldi0+bGVuID4gMCkKQEAgLTE5NSwx MCArMTkwLDEwIEBAIGlub3RpZnlldmVudF90b19ldmVudCAoTGlzcF9PYmplY3Qgd2F0Y2gs IHN0cnVjdCBpbm90aWZ5X2V2ZW50IGNvbnN0ICpldikKICAgZWxzZQogICAgIG5hbWUgPSBY Q0FSIChYQ0RSICh3YXRjaCkpOwogCi0gIHJldHVybiBsaXN0MiAobGlzdDQgKEZjb25zICht YWtlX251bWJlciAoZXYtPndkKSwgWENBUiAod2F0Y2gpKSwKKyAgcmV0dXJuIGxpc3QyIChs aXN0NCAoRmNvbnMgKElOVEVHRVJfVE9fQ09OUyAoZXYtPndkKSwgWENBUiAod2F0Y2gpKSwK ICAgICAgICAgICAgICAgICAgICAgICAgbWFza190b19hc3BlY3RzIChldi0+bWFzayksCiAg ICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIG1h a2VfbnVtYmVyIChldi0+Y29va2llKSksCisJCSAgICAgICBJTlRFR0VSX1RPX0NPTlMgKGV2 LT5jb29raWUpKSwKIAkJRm50aCAobWFrZV9udW1iZXIgKDIpLCB3YXRjaCkpOwogfQogCkBA IC0yMDksNTUgKzIwNCw4OCBAQCBzdGF0aWMgTGlzcF9PYmplY3QKIGFkZF93YXRjaCAoaW50 IHdkLCBMaXNwX09iamVjdCBmaWxlbmFtZSwKIAkgICBMaXNwX09iamVjdCBhc3BlY3QsIExp c3BfT2JqZWN0IGNhbGxiYWNrKQogewotICBMaXNwX09iamVjdCBkZXNjcmlwdG9yID0gbWFr ZV9udW1iZXIgKHdkKTsKLSAgTGlzcF9PYmplY3QgZWx0ID0gRmFzc29jIChkZXNjcmlwdG9y LCB3YXRjaF9saXN0KTsKLSAgTGlzcF9PYmplY3Qgd2F0Y2hlcyA9IEZjZHIgKGVsdCk7Cisg IExpc3BfT2JqZWN0IGRlc2NyaXB0b3IgPSBJTlRFR0VSX1RPX0NPTlMgKHdkKTsKKyAgTGlz cF9PYmplY3QgdGFpbCA9IGFzc29jX25vX3F1aXQgKGRlc2NyaXB0b3IsIHdhdGNoX2xpc3Qp OwogICBMaXNwX09iamVjdCB3YXRjaCwgd2F0Y2hfaWQ7Ci0gIExpc3BfT2JqZWN0IG1hc2sg PSBtYWtlX2xpc3B5X21hc2sgKGFzcGVjdF90b19pbm90aWZ5bWFzayAoYXNwZWN0KSk7Cisg IHVpbnQzMl90IGltYXNrID0gYXNwZWN0X3RvX2lub3RpZnltYXNrIChhc3BlY3QpOworICBM aXNwX09iamVjdCBtYXNrID0gSU5URUdFUl9UT19DT05TIChpbWFzayk7CiAKLSAgaW50IGlk ID0gMDsKLQotICB3aGlsZSAoISBOSUxQICh3YXRjaGVzKSkKKyAgRU1BQ1NfSU5UIGlkID0g MDsKKyAgaWYgKE5JTFAgKHRhaWwpKQorICAgIHsKKyAgICAgIHRhaWwgPSBsaXN0MSAoZGVz Y3JpcHRvcik7CisgICAgICB3YXRjaF9saXN0ID0gRmNvbnMgKHRhaWwsIHdhdGNoX2xpc3Qp OworICAgIH0KKyAgZWxzZQogICAgIHsKLSAgICAgIGlkID0gbWF4IChpZCwgMSArIFhJTlQg KFhDQVIgKFhDQVIgKHdhdGNoZXMpKSkpOwotICAgICAgd2F0Y2hlcyA9IFhDRFIgKHdhdGNo ZXMpOworICAgICAgLyogQXNzaWduIGEgd2F0Y2ggSUQgdGhhdCBpcyBub3QgYWxyZWFkeSBp biB1c2UsIGJ5IGxvb2tpbmcKKwkgZm9yIGEgZ2FwIGluIHRoZSBleGlzdGluZyBzb3J0ZWQg bGlzdC4gICovCisgICAgICBmb3IgKDsgISBOSUxQIChYQ0RSICh0YWlsKSk7IHRhaWwgPSBY Q0RSICh0YWlsKSwgaWQrKykKKwlpZiAoIUVRIChYQ0FSIChYQ0FSIChYQ0RSICh0YWlsKSkp LCBtYWtlX251bWJlciAoaWQpKSkKKwkgIGJyZWFrOworICAgICAgaWYgKE1PU1RfUE9TSVRJ VkVfRklYTlVNIDwgaWQpCisJZW1hY3NfYWJvcnQgKCk7CiAgICAgfQogCiAgIHdhdGNoX2lk ID0gbWFrZV9udW1iZXIgKGlkKTsKICAgd2F0Y2ggPSBsaXN0NCAod2F0Y2hfaWQsIGZpbGVu YW1lLCBjYWxsYmFjaywgbWFzayk7Ci0KLSAgaWYgKE5JTFAgKGVsdCkpCi0gICAgd2F0Y2hf bGlzdCA9IEZjb25zIChGY29ucyAoZGVzY3JpcHRvciwgRmNvbnMgKHdhdGNoLCBRbmlsKSks Ci0gICAgICAgICAgICAgICAgICAgICAgICB3YXRjaF9saXN0KTsKLSAgZWxzZQotICAgIFhT RVRDRFIgKGVsdCwgRmNvbnMgKHdhdGNoLCBYQ0RSIChlbHQpKSk7CisgIFhTRVRDRFIgKHRh aWwsIEZjb25zICh3YXRjaCwgWENEUiAodGFpbCkpKTsKIAogICByZXR1cm4gRmNvbnMgKGRl c2NyaXB0b3IsIHdhdGNoX2lkKTsKIH0KIAotLyogIFJlbW92ZSBhbGwgd2F0Y2hlcyBhc3Nv Y2lhdGVkIHdpdGggZGVzY3JpcHRvci4gIElmIElOVkFMSURfUCBpcwotICAgIHRydWUsIHRo ZSBkZXNjcmlwdG9yIGlzIGFscmVhZHkgaW52YWxpZCwgaS5lLiBpdCByZWNlaXZlZCBhCi0g ICAgSU5fSUdOT1JFRCBldmVudC4gSW4gdGhpcyBjYXNlIHNraXAgY2FsbGluZyBpbm90aWZ5 X3JtX3dhdGNoLiAgKi8KKy8qIEZpbmQgdGhlIHdhdGNoIGxpc3QgZWxlbWVudCAoaWYgYW55 KSBtYXRjaGluZyBERVNDUklQVE9SLiAgUmV0dXJuCisgICBuaWwgaWYgbm90IGZvdW5kLiAg SWYgZm91bmQsIHJldHVybiB0IGlmIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMKKyAgIERF U0NSSVBUT1I7IG90aGVyd2lzZSwgcmV0dXJuIHRoZSBjb25zIHdob3NlIGNkciBtYXRjaGVz CisgICBERVNDUklQVE9SLiAgVGhpcyBsZXRzIHRoZSBjYWxsZXIgZWFzaWx5IHJlbW92ZSB0 aGUgZWxlbWVudAorICAgbWF0Y2hpbmcgREVTQ1JJUFRPUiB3aXRob3V0IGhhdmluZyB0byBz ZWFyY2ggZm9yIGl0IGFnYWluLCBhbmQKKyAgIHdpdGhvdXQgY2FsbGluZyBGZGVsZXRlICh3 aGljaCBtaWdodCBxdWl0KS4gICovCisKK3N0YXRpYyBMaXNwX09iamVjdAorZmluZF9kZXNj cmlwdG9yIChMaXNwX09iamVjdCBkZXNjcmlwdG9yKQoreworICBMaXNwX09iamVjdCB0YWls LCBwcmV2dGFpbCA9IFF0OworICBmb3IgKHRhaWwgPSB3YXRjaF9saXN0OyAhTklMUCAodGFp bCk7IHByZXZ0YWlsID0gdGFpbCwgdGFpbCA9IFhDRFIgKHRhaWwpKQorICAgIGlmIChlcXVh bF9ub19xdWl0IChYQ0FSIChYQ0FSICh0YWlsKSksIGRlc2NyaXB0b3IpKQorICAgICAgcmV0 dXJuIHByZXZ0YWlsOworICByZXR1cm4gUW5pbDsKK30KKworLyogIFJlbW92ZSBhbGwgd2F0 Y2hlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHdhdGNoIGxpc3QgZWxlbWVudCBhZnRlcgorICAg IFBSRVZUQUlMLCBvciBhZnRlciB0aGUgZmlyc3QgZWxlbWVudCBpZiBQUkVWVEFJTCBpcyB0 LiAgSWYgSU5WQUxJRF9QCisgICAgaXMgdHJ1ZSwgdGhlIGRlc2NyaXB0b3IgaXMgYWxyZWFk eSBpbnZhbGlkLCBpLmUuLCBpdCByZWNlaXZlZCBhCisgICAgSU5fSUdOT1JFRCBldmVudC4g IEluIHRoaXMgY2FzZSBza2lwIGNhbGxpbmcgaW5vdGlmeV9ybV93YXRjaC4gICovCiBzdGF0 aWMgdm9pZAotcmVtb3ZlX2Rlc2NyaXB0b3IgKExpc3BfT2JqZWN0IGRlc2NyaXB0b3IsIGJv b2wgaW52YWxpZF9wKQorcmVtb3ZlX2Rlc2NyaXB0b3IgKExpc3BfT2JqZWN0IHByZXZ0YWls LCBib29sIGludmFsaWRfcCkKIHsKLSAgTGlzcF9PYmplY3QgZWx0ID0gRmFzc29jIChkZXNj cmlwdG9yLCB3YXRjaF9saXN0KTsKKyAgTGlzcF9PYmplY3QgdGFpbCA9IENPTlNQIChwcmV2 dGFpbCkgPyBYQ0RSIChwcmV2dGFpbCkgOiB3YXRjaF9saXN0OwogCi0gIGlmICghIE5JTFAg KGVsdCkpCisgIGludCBpbm90aWZ5X2Vycm5vID0gMDsKKyAgaWYgKCEgaW52YWxpZF9wKQog ICAgIHsKLSAgICAgIGludCB3ZCA9IFhJTlQgKGRlc2NyaXB0b3IpOworICAgICAgaW50IHdk OworICAgICAgQ09OU19UT19JTlRFR0VSIChYQ0FSIChYQ0FSICh0YWlsKSksIGludCwgd2Qp OworICAgICAgaWYgKGlub3RpZnlfcm1fd2F0Y2ggKGlub3RpZnlmZCwgd2QpICE9IDApCisJ aW5vdGlmeV9lcnJubyA9IGVycm5vOworICAgIH0KIAotICAgICAgd2F0Y2hfbGlzdCA9IEZk ZWxldGUgKGVsdCwgd2F0Y2hfbGlzdCk7Ci0gICAgICBpZiAoISBpbnZhbGlkX3ApCi0gICAg ICAgIGlmIChpbm90aWZ5X3JtX3dhdGNoIChpbm90aWZ5ZmQsIHdkKSA9PSAtMSkKLSAgICAg ICAgICByZXBvcnRfZmlsZV9ub3RpZnlfZXJyb3IgKCJDb3VsZCBub3Qgcm0gd2F0Y2giLCBk ZXNjcmlwdG9yKTsKKyAgaWYgKENPTlNQIChwcmV2dGFpbCkpCisgICAgWFNFVENEUiAocHJl dnRhaWwsIFhDRFIgKHRhaWwpKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHdhdGNoX2xpc3Qg PSBYQ0RSICh0YWlsKTsKKyAgICAgIGlmIChOSUxQICh3YXRjaF9saXN0KSkKKwl7CisJICBk ZWxldGVfcmVhZF9mZCAoaW5vdGlmeWZkKTsKKwkgIGVtYWNzX2Nsb3NlIChpbm90aWZ5ZmQp OworCSAgaW5vdGlmeWZkID0gLTE7CisJfQogICAgIH0KLSAgLyogQ2xlYW51cCBpZiBubyBt b3JlIGZpbGVzIGFyZSB3YXRjaGVkLiAgKi8KLSAgaWYgKE5JTFAgKHdhdGNoX2xpc3QpKQor CisgIGlmIChpbm90aWZ5X2Vycm5vICE9IDApCiAgICAgewotICAgICAgZW1hY3NfY2xvc2Ug KGlub3RpZnlmZCk7Ci0gICAgICBkZWxldGVfcmVhZF9mZCAoaW5vdGlmeWZkKTsKLSAgICAg IGlub3RpZnlmZCA9IC0xOworICAgICAgZXJybm8gPSBpbm90aWZ5X2Vycm5vOworICAgICAg cmVwb3J0X2ZpbGVfbm90aWZ5X2Vycm9yICgiQ291bGQgbm90IHJtIHdhdGNoIiwgWENBUiAo dGFpbCkpOwogICAgIH0KIH0KIApAQCAtMjY1LDE5ICsyOTMsMTkgQEAgcmVtb3ZlX2Rlc2Ny aXB0b3IgKExpc3BfT2JqZWN0IGRlc2NyaXB0b3IsIGJvb2wgaW52YWxpZF9wKQogc3RhdGlj IHZvaWQKIHJlbW92ZV93YXRjaCAoTGlzcF9PYmplY3QgZGVzY3JpcHRvciwgTGlzcF9PYmpl Y3QgaWQpCiB7Ci0gIExpc3BfT2JqZWN0IGVsdCA9IEZhc3NvYyAoZGVzY3JpcHRvciwgd2F0 Y2hfbGlzdCk7Ci0KLSAgaWYgKCEgTklMUCAoZWx0KSkKLSAgICB7Ci0gICAgICBMaXNwX09i amVjdCB3YXRjaCA9IEZhc3NvYyAoaWQsIFhDRFIgKGVsdCkpOwotCi0gICAgICBpZiAoISBO SUxQICh3YXRjaCkpCi0gICAgICAgIFhTRVRDRFIgKGVsdCwgRmRlbGV0ZSAod2F0Y2gsIFhD RFIgKGVsdCkpKTsKLQotICAgICAgLyogUmVtb3ZlIHRoZSBkZXNjcmlwdG9yIGlmIG5vb25l IGlzIHdhdGNoaW5nIGl0LiAgKi8KLSAgICAgIGlmIChOSUxQIChYQ0RSIChlbHQpKSkKLSAg ICAgICAgcmVtb3ZlX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3IsIGZhbHNlKTsKLSAgICB9Cisg IExpc3BfT2JqZWN0IHByZXZ0YWlsID0gZmluZF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yKTsK KyAgaWYgKE5JTFAgKHByZXZ0YWlsKSkKKyAgICByZXR1cm47CisKKyAgTGlzcF9PYmplY3Qg ZWx0ID0gWENBUiAoQ09OU1AgKHByZXZ0YWlsKSA/IFhDRFIgKHByZXZ0YWlsKSA6IHdhdGNo X2xpc3QpOworICBmb3IgKExpc3BfT2JqZWN0IHByZXYgPSBlbHQ7ICFOSUxQIChYQ0RSIChw cmV2KSk7IHByZXYgPSBYQ0RSIChwcmV2KSkKKyAgICBpZiAoRVEgKGlkLCBYQ0FSIChYQ0FS IChYQ0RSIChwcmV2KSkpKSkKKyAgICAgIHsKKwlYU0VUQ0RSIChwcmV2LCBYQ0RSIChYQ0RS IChwcmV2KSkpOworCWlmIChOSUxQIChYQ0RSIChlbHQpKSkKKwkgIHJlbW92ZV9kZXNjcmlw dG9yIChwcmV2dGFpbCwgZmFsc2UpOworCWJyZWFrOworICAgICAgfQogfQogCiAvKiBUaGlz IGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBGRCBpcyBhdmFpbGFibGUgZm9yIHJlYWQu ICBUaGUgaW5vdGlmeQpAQCAtMjg1LDUyICszMTMsNDQgQEAgcmVtb3ZlX3dhdGNoIChMaXNw X09iamVjdCBkZXNjcmlwdG9yLCBMaXNwX09iamVjdCBpZCkKIHN0YXRpYyB2b2lkCiBpbm90 aWZ5X2NhbGxiYWNrIChpbnQgZmQsIHZvaWQgKl8pCiB7Ci0gIHN0cnVjdCBpbnB1dF9ldmVu dCBldmVudDsKICAgaW50IHRvX3JlYWQ7Ci0gIGNoYXIgKmJ1ZmZlcjsKLSAgc3NpemVfdCBu OwotICBzaXplX3QgaTsKLQotICB0b19yZWFkID0gMDsKLSAgaWYgKGlvY3RsIChmZCwgRklP TlJFQUQsICZ0b19yZWFkKSA9PSAtMSkKKyAgaWYgKGlvY3RsIChmZCwgRklPTlJFQUQsICZ0 b19yZWFkKSA8IDApCiAgICAgcmVwb3J0X2ZpbGVfbm90aWZ5X2Vycm9yICgiRXJyb3Igd2hp bGUgcmV0cmlldmluZyBmaWxlIHN5c3RlbSBldmVudHMiLAogCQkJICAgICAgUW5pbCk7Ci0g IGJ1ZmZlciA9IHhtYWxsb2MgKHRvX3JlYWQpOwotICBuID0gcmVhZCAoZmQsIGJ1ZmZlciwg dG9fcmVhZCk7CisgIFVTRV9TQUZFX0FMTE9DQTsKKyAgY2hhciAqYnVmZmVyID0gU0FGRV9B TExPQ0EgKHRvX3JlYWQpOworICBzc2l6ZV90IG4gPSByZWFkIChmZCwgYnVmZmVyLCB0b19y ZWFkKTsKICAgaWYgKG4gPCAwKQotICAgIHsKLSAgICAgIHhmcmVlIChidWZmZXIpOwotICAg ICAgcmVwb3J0X2ZpbGVfbm90aWZ5X2Vycm9yICgiRXJyb3Igd2hpbGUgcmVhZGluZyBmaWxl IHN5c3RlbSBldmVudHMiLCBRbmlsKTsKLSAgICB9CisgICAgcmVwb3J0X2ZpbGVfbm90aWZ5 X2Vycm9yICgiRXJyb3Igd2hpbGUgcmVhZGluZyBmaWxlIHN5c3RlbSBldmVudHMiLCBRbmls KTsKIAorICBzdHJ1Y3QgaW5wdXRfZXZlbnQgZXZlbnQ7CiAgIEVWRU5UX0lOSVQgKGV2ZW50 KTsKICAgZXZlbnQua2luZCA9IEZJTEVfTk9USUZZX0VWRU5UOwogCi0gIGkgPSAwOwotICB3 aGlsZSAoaSA8IChzaXplX3QpbikKKyAgZm9yIChzc2l6ZV90IGkgPSAwOyBpIDwgbjsgKQog ICAgIHsKICAgICAgIHN0cnVjdCBpbm90aWZ5X2V2ZW50ICpldiA9IChzdHJ1Y3QgaW5vdGlm eV9ldmVudCAqKSAmYnVmZmVyW2ldOwotICAgICAgTGlzcF9PYmplY3QgZGVzY3JpcHRvciA9 IG1ha2VfbnVtYmVyIChldi0+d2QpOwotICAgICAgTGlzcF9PYmplY3QgZWx0ID0gRmFzc29j IChkZXNjcmlwdG9yLCB3YXRjaF9saXN0KTsKKyAgICAgIExpc3BfT2JqZWN0IGRlc2NyaXB0 b3IgPSBJTlRFR0VSX1RPX0NPTlMgKGV2LT53ZCk7CisgICAgICBMaXNwX09iamVjdCBwcmV2 dGFpbCA9IGZpbmRfZGVzY3JpcHRvciAoZGVzY3JpcHRvcik7CiAKLSAgICAgIGlmICghIE5J TFAgKGVsdCkpCisgICAgICBpZiAoISBOSUxQIChwcmV2dGFpbCkpCiAgICAgICAgIHsKLSAg ICAgICAgICBMaXNwX09iamVjdCB3YXRjaGVzID0gWENEUiAoZWx0KTsKLSAgICAgICAgICB3 aGlsZSAoISBOSUxQICh3YXRjaGVzKSkKKwkgIExpc3BfT2JqZWN0IHRhaWwgPSBDT05TUCAo cHJldnRhaWwpID8gWENEUiAocHJldnRhaWwpIDogd2F0Y2hfbGlzdDsKKwkgIGZvciAoTGlz cF9PYmplY3Qgd2F0Y2hlcyA9IFhDRFIgKFhDQVIgKHRhaWwpKTsgISBOSUxQICh3YXRjaGVz KTsKKwkgICAgICAgd2F0Y2hlcyA9IFhDRFIgKHdhdGNoZXMpKQogICAgICAgICAgICAgewog ICAgICAgICAgICAgICBldmVudC5hcmcgPSBpbm90aWZ5ZXZlbnRfdG9fZXZlbnQgKFhDQVIg KHdhdGNoZXMpLCBldik7CiAgICAgICAgICAgICAgIGlmICghTklMUCAoZXZlbnQuYXJnKSkK ICAgICAgICAgICAgICAgICBrYmRfYnVmZmVyX3N0b3JlX2V2ZW50ICgmZXZlbnQpOwotICAg ICAgICAgICAgICB3YXRjaGVzID0gWENEUiAod2F0Y2hlcyk7CiAgICAgICAgICAgICB9CiAg ICAgICAgICAgLyogSWYgZXZlbnQgd2FzIHJlbW92ZWQgYXV0b21hdGljYWxseTogRHJvcCBp dCBmcm9tIHdhdGNoIGxpc3QuICAqLwogICAgICAgICAgIGlmIChldi0+bWFzayAmIElOX0lH Tk9SRUQpCi0gICAgICAgICAgICByZW1vdmVfZGVzY3JpcHRvciAoZGVzY3JpcHRvciwgdHJ1 ZSk7CisJICAgIHJlbW92ZV9kZXNjcmlwdG9yIChwcmV2dGFpbCwgdHJ1ZSk7CiAgICAgICAg IH0KICAgICAgIGkgKz0gc2l6ZW9mICgqZXYpICsgZXYtPmxlbjsKICAgICB9CiAKLSAgeGZy ZWUgKGJ1ZmZlcik7CisgIFNBRkVfRlJFRSAoKTsKIH0KIAogREVGVU4gKCJpbm90aWZ5LWFk ZC13YXRjaCIsIEZpbm90aWZ5X2FkZF93YXRjaCwgU2lub3RpZnlfYWRkX3dhdGNoLCAzLCAz LCAwLApAQCAtNDA3LDcgKzQyNyw3IEBAIElOX09OTFlESVIgICovKQogCiAgIGlmIChpbm90 aWZ5ZmQgPCAwKQogICAgIHsKLSAgICAgIGlub3RpZnlmZCA9IGlub3RpZnlfaW5pdDEgKElO X05PTkJMT0NLfElOX0NMT0VYRUMpOworICAgICAgaW5vdGlmeWZkID0gaW5vdGlmeV9pbml0 MSAoSU5fTk9OQkxPQ0sgfCBJTl9DTE9FWEVDKTsKICAgICAgIGlmIChpbm90aWZ5ZmQgPCAw KQogCXJlcG9ydF9maWxlX25vdGlmeV9lcnJvciAoIkZpbGUgd2F0Y2hpbmcgaXMgbm90IGF2 YWlsYWJsZSIsIFFuaWwpOwogICAgICAgd2F0Y2hfbGlzdCA9IFFuaWw7CkBAIC00MTYsMTIg KzQzNiwyNCBAQCBJTl9PTkxZRElSICAqLykKIAogICBlbmNvZGVkX2ZpbGVfbmFtZSA9IEVO Q09ERV9GSUxFIChmaWxlbmFtZSk7CiAgIHdkID0gaW5vdGlmeV9hZGRfd2F0Y2ggKGlub3Rp ZnlmZCwgU1NEQVRBIChlbmNvZGVkX2ZpbGVfbmFtZSksIG1hc2spOwotICBpZiAod2QgPT0g LTEpCisgIGlmICh3ZCA8IDApCiAgICAgcmVwb3J0X2ZpbGVfbm90aWZ5X2Vycm9yICgiQ291 bGQgbm90IGFkZCB3YXRjaCBmb3IgZmlsZSIsIGZpbGVuYW1lKTsKIAogICByZXR1cm4gYWRk X3dhdGNoICh3ZCwgZmlsZW5hbWUsIGFzcGVjdCwgY2FsbGJhY2spOwogfQogCitzdGF0aWMg Ym9vbAordmFsaWRfd2F0Y2hfZGVzY3JpcHRvciAoTGlzcF9PYmplY3Qgd2QpCit7CisgIHJl dHVybiAoQ09OU1AgKHdkKQorCSAgJiYgKFJBTkdFRF9JTlRFR0VSUCAoMCwgWENBUiAod2Qp LCBJTlRfTUFYKQorCSAgICAgIHx8IChDT05TUCAoWENBUiAod2QpKQorCQkgICYmIFJBTkdF RF9JTlRFR0VSUCAoKE1PU1RfUE9TSVRJVkVfRklYTlVNID4+IDE2KSArIDEsCisJCQkJICAg ICAgWENBUiAoWENBUiAod2QpKSwgSU5UX01BWCA+PiAxNikKKwkJICAmJiBSQU5HRURfSU5U RUdFUlAgKDAsIFhDRFIgKFhDQVIgKHdkKSksICgxIDw8IDE2KSAtIDEpKSkKKwkgICYmIE5B VE5VTVAgKFhDRFIgKHdkKSkpOworfQorCiBERUZVTiAoImlub3RpZnktcm0td2F0Y2giLCBG aW5vdGlmeV9ybV93YXRjaCwgU2lub3RpZnlfcm1fd2F0Y2gsIDEsIDEsIDAsCiAgICAgICAg ZG9jOiAvKiBSZW1vdmUgYW4gZXhpc3RpbmcgV0FUQ0gtREVTQ1JJUFRPUi4KIApAQCAtNDMz LDkgKzQ2NSw3IEBAIFNlZSBpbm90aWZ5X3JtX3dhdGNoKDIpIGZvciBtb3JlIGluZm9ybWF0 aW9uLiAgKi8pCiAKICAgTGlzcF9PYmplY3QgZGVzY3JpcHRvciwgaWQ7CiAKLSAgaWYgKCEg KENPTlNQICh3YXRjaF9kZXNjcmlwdG9yKQotICAgICAgICAgJiYgSU5URUdFUlAgKFhDQVIg KHdhdGNoX2Rlc2NyaXB0b3IpKQotICAgICAgICAgJiYgSU5URUdFUlAgKFhDRFIgKHdhdGNo X2Rlc2NyaXB0b3IpKSkpCisgIGlmICghIHZhbGlkX3dhdGNoX2Rlc2NyaXB0b3IgKHdhdGNo X2Rlc2NyaXB0b3IpKQogICAgIHJlcG9ydF9maWxlX25vdGlmeV9lcnJvciAoIkludmFsaWQg ZGVzY3JpcHRvciAiLCB3YXRjaF9kZXNjcmlwdG9yKTsKIAogICBkZXNjcmlwdG9yID0gWENB UiAod2F0Y2hfZGVzY3JpcHRvcik7CkBAIC00NTYsMTYgKzQ4NiwxMiBAQCByZWFzb24uICBS ZW1vdmluZyB0aGUgd2F0Y2ggYnkgY2FsbGluZyBgaW5vdGlmeS1ybS13YXRjaCcgYWxzbyBt YWtlcwogaXQgaW52YWxpZC4gICovKQogICAgICAoTGlzcF9PYmplY3Qgd2F0Y2hfZGVzY3Jp cHRvcikKIHsKLSAgTGlzcF9PYmplY3QgZWx0LCB3YXRjaDsKLQotICBpZiAoISAoQ09OU1Ag KHdhdGNoX2Rlc2NyaXB0b3IpCi0gICAgICAgICAmJiBJTlRFR0VSUCAoWENBUiAod2F0Y2hf ZGVzY3JpcHRvcikpCi0gICAgICAgICAmJiBJTlRFR0VSUCAoWENEUiAod2F0Y2hfZGVzY3Jp cHRvcikpKSkKKyAgaWYgKCEgdmFsaWRfd2F0Y2hfZGVzY3JpcHRvciAod2F0Y2hfZGVzY3Jp cHRvcikpCiAgICAgcmV0dXJuIFFuaWw7Ci0KLSAgZWx0ID0gRmFzc29jIChYQ0FSICh3YXRj aF9kZXNjcmlwdG9yKSwgd2F0Y2hfbGlzdCk7Ci0gIHdhdGNoID0gRmFzc29jIChYQ0RSICh3 YXRjaF9kZXNjcmlwdG9yKSwgWENEUiAoZWx0KSk7Ci0KKyAgTGlzcF9PYmplY3QgdGFpbCA9 IGFzc29jX25vX3F1aXQgKFhDQVIgKHdhdGNoX2Rlc2NyaXB0b3IpLCB3YXRjaF9saXN0KTsK KyAgaWYgKE5JTFAgKHRhaWwpKQorICAgIHJldHVybiBRbmlsOworICBMaXNwX09iamVjdCB3 YXRjaCA9IGFzc3Ffbm9fcXVpdCAoWENEUiAod2F0Y2hfZGVzY3JpcHRvciksIFhDRFIgKHRh aWwpKTsKICAgcmV0dXJuICEgTklMUCAod2F0Y2gpID8gUXQgOiBRbmlsOwogfQogCmRpZmYg LS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xpc3AuaAppbmRleCA0YjljZDNjLi4zMTI1YmQy IDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAgLTMzNzYsNiAr MzM3Niw3IEBAIGV4dGVybiBMaXNwX09iamVjdCBtZXJnZSAoTGlzcF9PYmplY3QsIExpc3Bf T2JqZWN0LCBMaXNwX09iamVjdCk7CiBleHRlcm4gTGlzcF9PYmplY3QgZG9feWVzX29yX25v X3AgKExpc3BfT2JqZWN0KTsKIGV4dGVybiBMaXNwX09iamVjdCBjb25jYXQyIChMaXNwX09i amVjdCwgTGlzcF9PYmplY3QpOwogZXh0ZXJuIExpc3BfT2JqZWN0IGNvbmNhdDMgKExpc3Bf T2JqZWN0LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOworZXh0ZXJuIGJvb2wgZXF1YWxf bm9fcXVpdCAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiBMaXNwX09iamVj dCBuY29uYzIgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CiBleHRlcm4gTGlzcF9PYmpl Y3QgYXNzcV9ub19xdWl0IChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOwogZXh0ZXJuIExp c3BfT2JqZWN0IGFzc29jX25vX3F1aXQgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CmRp ZmYgLS1naXQgYS90ZXN0L3NyYy9pbm90aWZ5LXRlc3RzLmVsIGIvdGVzdC9zcmMvaW5vdGlm eS10ZXN0cy5lbAppbmRleCBmMzBhZWNjLi45ODdlMWZjIDEwMDY0NAotLS0gYS90ZXN0L3Ny Yy9pbm90aWZ5LXRlc3RzLmVsCisrKyBiL3Rlc3Qvc3JjL2lub3RpZnktdGVzdHMuZWwKQEAg LTI4LDYgKzI4LDEzIEBACiAoZGVjbGFyZS1mdW5jdGlvbiBpbm90aWZ5LWFkZC13YXRjaCAi aW5vdGlmeS5jIiAoZmlsZS1uYW1lIGFzcGVjdCBjYWxsYmFjaykpCiAoZGVjbGFyZS1mdW5j dGlvbiBpbm90aWZ5LXJtLXdhdGNoICJpbm90aWZ5LmMiICh3YXRjaC1kZXNjcmlwdG9yKSkK IAorKGVydC1kZWZ0ZXN0IGlub3RpZnktdmFsaWQtcC1zaW1wbGUgKCkKKyAgIlNpbXBsZSB0 ZXN0cyBmb3IgYGlub3RpZnktdmFsaWQtcCcuIgorICAoc2tpcC11bmxlc3MgKGZlYXR1cmVw ICdpbm90aWZ5KSkKKyAgKHNob3VsZC1ub3QgKGlub3RpZnktdmFsaWQtcCAwKSkKKyAgKHNo b3VsZC1ub3QgKGlub3RpZnktdmFsaWQtcCBuaWwpKQorICAoc2hvdWxkLW5vdCAoaW5vdGlm eS12YWxpZC1wICcoMCAuIDApKSkpCisKIDs7IChlcnQtZGVmdGVzdCBmaWxld2F0Y2gtZmls ZS13YXRjaC1hc3BlY3RzLWNoZWNrICgpCiA7OyAgICJUZXN0IHdoZXRoZXIgYGZpbGUtd2F0 Y2gnIHByb3Blcmx5IGNoZWNrcyB0aGUgYXNwZWN0cy4iCiA7OyAgIChsZXQgKCh0ZW1wLWZp bGUgKG1ha2UtdGVtcC1maWxlICJmaWxld2F0Y2gtYXNwZWN0cyIpKSkKQEAgLTU2LDcgKzYz LDkgQEAKIAkgICAgICAoaW5zZXJ0ICJGb29cbiIpKQogCSAgICAocmVhZC1ldmVudCBuaWwg bmlsIDUpCiAJICAgIChzaG91bGQgKD4gZXZlbnRzIDApKSkKKwkoc2hvdWxkIChpbm90aWZ5 LXZhbGlkLXAgd2QpKQogCShpbm90aWZ5LXJtLXdhdGNoIHdkKQorCShzaG91bGQtbm90IChp bm90aWZ5LXZhbGlkLXAgd2QpKQogCShkZWxldGUtZmlsZSB0ZW1wLWZpbGUpKSkpKQogCiAo cHJvdmlkZSAnaW5vdGlmeS10ZXN0cykKLS0gCjIuOS4zCgo= --------------151D4BE51E41B3284D298EF2-- From unknown Fri Jun 20 07:27:50 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 28 Apr 2017 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator