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. Also note, that the following inotify bit-masks can not be used, due to the fact that descriptors are shared across different callers. IN_EXCL_UNLINK IN_MASK_ADD IN_ONESHOT IN_ONLYDIR */) (Lisp_Object filename, Lisp_Object aspect, Lisp_Object callback) { Lisp_Object encoded_file_name; bool dont_follow = (CONSP (aspect) ? ! NILP (Fmemq (Qdont_follow, aspect)) : EQ (Qdont_follow, aspect)); int wd = -1; uint32_t mask = (INOTIFY_DEFAULT_MASK | (dont_follow ? IN_DONT_FOLLOW : 0)); CHECK_STRING (filename); if (inotifyfd < 0) { inotifyfd = inotify_init1 (IN_NONBLOCK | IN_CLOEXEC); if (inotifyfd < 0) report_file_notify_error ("File watching is not available", Qnil); watch_list = Qnil; add_read_fd (inotifyfd, &inotify_callback, NULL); }
static void fix_command (Lisp_Object input, Lisp_Object values) { /* FIXME: Instead of this ugly hack, we should provide a way for an interactive spec to return an expression/function that will re-build the args without user intervention. */ if (CONSP (input)) { Lisp_Object car; car = XCAR (input); /* Skip through certain special forms. */ while (EQ (car, Qlet) || EQ (car, Qletx) || EQ (car, Qsave_excursion) || EQ (car, Qprogn)) { while (CONSP (XCDR (input))) input = XCDR (input); input = XCAR (input); if (!CONSP (input)) break; car = XCAR (input); } if (EQ (car, Qlist)) { Lisp_Object intail, valtail; for (intail = Fcdr (input), valtail = values; CONSP (valtail); intail = Fcdr (intail), valtail = XCDR (valtail)) { Lisp_Object elt; elt = Fcar (intail); if (CONSP (elt)) { Lisp_Object presflag, carelt; carelt = XCAR (elt); /* If it is (if X Y), look at Y. */ if (EQ (carelt, Qif) && EQ (Fnthcdr (make_number (3), elt), Qnil)) elt = Fnth (make_number (2), elt); /* If it is (when ... Y), look at Y. */ else if (EQ (carelt, Qwhen)) { while (CONSP (XCDR (elt))) elt = XCDR (elt); elt = Fcar (elt); } /* If the function call we're looking at is a special preserved one, copy the whole expression for this argument. */ if (CONSP (elt)) { presflag = Fmemq (Fcar (elt), preserved_fns); if (!NILP (presflag)) Fsetcar (valtail, Fcar (intail)); } } } } } }
repv gh_memq(repv x, repv ls) { return Fmemq (x, ls); }