Mercurial > emacs
view src/systime.h @ 72367:12fa9bdadf0a
(allout-prior-bindings, allout-added-bindings): Remove, after long deprecation.
(allout-beginning-of-line-cycles, allout-end-of-line-cycles):
Add customization vars controlling allout-beginning-of-line and
allout-end-of-line conveniences.
(allout-header-prefix, allout-use-mode-specific-leader)
(allout-use-mode-specific-leader, allout-mode-leaders): Revised docstrings.
(allout-infer-header-lead): Change to be an alias for
allout-infer-header-lead-and-primary-bullet.
(allout-infer-header-lead-and-primary-bullet): New version of
allout-infer-header-lead which assigns the primary bullet to the
same as the header lead, when its being changed.
(allout-infer-body-reindent): Apply regexp-quote instead of unconditionally
prepending "\\", so that all literal allout-header-prefix and
allout-primary-bullet strings are properly handled.
(allout-add-resumptions): Add optional qualifier for extending or appending to
existing values, rather than replacing them.
(allout-view-change-hook): Clarify docstring.
(allout-exposure-change-hook): Take explicit arguments, via run-hook-with-args.
(allout-structure-added-hook, allout-structure-deleted-hook)
(allout-structure-shifted-hook): New hooks analogous to
allout-exposure-change-hook for other kinds of structural outline edits.
(allout-encryption-plaintext-sanitization-regexps): New encryption
customization variable, by which cooperating modes can provde massage of the
plaintext without actually being passed it.
(allout-encryption-ciphertext-rejection-regexps)
(allout-encryption-ciphertext-rejection-ceiling): New encryption
customization variables, by which cooperating modes can prohibit rare but
possible ciphertext patterns from fouling their operation, with actually being
passed the ciphertext.
(allout-mode): Run activation and deactivation hooks after the minor-mode
variable has been toggled, to clarify the mode disposition. The new encryption
ciphertext rejection variable is used to ensure that the ciphertext does not
contain text that would be recognized as outline structural elements by allout.
Substite allout-beginning-of-line and allout-end-of-line for conventionall
beginning-of-line and end-of-line bindings. If allout-old-style-prefixes is
non-nil, don't nullify it on mode activation!
(allout-beginning-of-line): Respect `allout-beginning-of-line-cycles'.
(allout-end-of-line): Respect `allout-end-of-line-cycles'.
(allout-chart-subtree): Implement new mode, charting only the visible items in
the subtree, when new 'visible' parameter is non-nil.
(allout-end-of-subtree): Properly handle the last item in the buffer.
(allout-pre-command-business, allout-command-counter): Increment an advertised
counter so that cooperating enhancements can track revisions of items.
(allout-open-topic): Run allout-structure-added-hook with suitable arguments.
(allout-shift-in): Run allout-structure-shifted-hook with suitable arguments.
(allout-shift-out): Fix doubling for negative args and ensure call of
allout-structure-shifted-hook by solely using allout-shift-in.
(allout-kill-line, allout-kill-topic): Run allout-structure-deleted-hook with
suitable arguments.
(allout-yank-processing): Run allout-structure-added-hook with proper arguments.
(allout-yank): Enclose activity in allout-unprotected.
(allout-flag-region): Run allout-exposure-change-hook with suitable arguments,
instead of making the callee infer the arguments.
(allout-encrypt-string): Support
allout-encryption-plaintext-sanitization-regexps,
allout-encryption-ciphertext-rejection-regexps, and
allout-encryption-ciphertext-rejection-ceiling. Indicate correct
en/decryption mode in symmetric encryption failure message.
(allout-obtain-passphrase): Use copy-sequence to get a distinct copy of the
passphrase, and don't zero it or we'll corrupt the stashed copy.
(allout-create-encryption-passphrase-verifier)
(allout-verify-passphrase): Respect the new signature for allout-encrypt-string.
(allout-get-configvar-values): Convenience for getting a configuration variable
value and handling its absence gracefully.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 12 Aug 2006 12:33:32 +0000 |
parents | 3bd95f4f2941 |
children | 132969301815 c5406394f567 |
line wrap: on
line source
/* systime.h - System-dependent definitions for time manipulations. Copyright (C) 1993, 1994, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef EMACS_SYSTIME_H #define EMACS_SYSTIME_H #ifdef TIME_WITH_SYS_TIME #include <sys/time.h> #include <time.h> #else #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #else #include <time.h> #endif #endif #ifdef HAVE_TZNAME #ifndef tzname /* For SGI. */ extern char *tzname[]; /* RS6000 and others want it this way. */ #endif #endif /* SVr4 doesn't actually declare this in its #include files. */ #ifdef USG5_4 extern time_t timezone; #endif #ifdef VMS #ifdef VAXC #include "vmstime.h" #endif #endif /* On some configurations (hpux8.0, X11R4), sys/time.h and X11/Xos.h disagree about the name of the guard symbol. */ #ifdef HPUX #ifdef _STRUCT_TIMEVAL #ifndef __TIMEVAL__ #define __TIMEVAL__ #endif #endif #endif /* EMACS_TIME is the type to use to represent temporal intervals - struct timeval on some systems, int on others. It can be passed as the timeout argument to the select system call. EMACS_SECS (TIME) is an rvalue for the seconds component of TIME. EMACS_SET_SECS (TIME, SECONDS) sets that to SECONDS. EMACS_HAS_USECS is defined iff EMACS_TIME has a usecs component. EMACS_USECS (TIME) is an rvalue for the microseconds component of TIME. This returns zero if EMACS_TIME doesn't have a microseconds component. EMACS_SET_USECS (TIME, MICROSECONDS) sets that to MICROSECONDS. This does nothing if EMACS_TIME doesn't have a microseconds component. EMACS_SET_SECS_USECS (TIME, SECS, USECS) sets both components of TIME. EMACS_GET_TIME (TIME) stores the current system time in TIME, which should be an lvalue. EMACS_ADD_TIME (DEST, SRC1, SRC2) adds SRC1 to SRC2 and stores the result in DEST. SRC should not be negative. EMACS_SUB_TIME (DEST, SRC1, SRC2) subtracts SRC2 from SRC1 and stores the result in DEST. SRC should not be negative. EMACS_TIME_NEG_P (TIME) is true iff TIME is negative. */ #ifdef HAVE_TIMEVAL #define EMACS_HAS_USECS #define EMACS_TIME struct timeval #define EMACS_SECS(time) ((time).tv_sec + 0) #define EMACS_USECS(time) ((time).tv_usec + 0) #define EMACS_SET_SECS(time, seconds) ((time).tv_sec = (seconds)) #define EMACS_SET_USECS(time, microseconds) ((time).tv_usec = (microseconds)) /* On SVR4, the compiler may complain if given this extra BSD arg. */ #ifdef GETTIMEOFDAY_ONE_ARGUMENT #define EMACS_GET_TIME(time) gettimeofday (&(time)) #else /* not GETTIMEOFDAY_ONE_ARGUMENT */ #ifdef HAVE_STRUCT_TIMEZONE #define EMACS_GET_TIME(time) \ do { \ struct timezone dummy; \ gettimeofday (&(time), &dummy); \ } while (0) #else /* Presumably the second arg is ignored. */ #define EMACS_GET_TIME(time) gettimeofday (&(time), NULL) #endif /* HAVE_STRUCT_TIMEZONE */ #endif /* not GETTIMEOFDAY_ONE_ARGUMENT */ #define EMACS_ADD_TIME(dest, src1, src2) \ do { \ (dest).tv_sec = (src1).tv_sec + (src2).tv_sec; \ (dest).tv_usec = (src1).tv_usec + (src2).tv_usec; \ if ((dest).tv_usec > 1000000) \ (dest).tv_usec -= 1000000, (dest).tv_sec++; \ } while (0) #define EMACS_SUB_TIME(dest, src1, src2) \ do { \ (dest).tv_sec = (src1).tv_sec - (src2).tv_sec; \ (dest).tv_usec = (src1).tv_usec - (src2).tv_usec; \ if ((dest).tv_usec < 0) \ (dest).tv_usec += 1000000, (dest).tv_sec--; \ } while (0) #define EMACS_TIME_NEG_P(time) \ ((long)(time).tv_sec < 0 \ || ((time).tv_sec == 0 \ && (long)(time).tv_usec < 0)) #else /* ! defined (HAVE_TIMEVAL) */ #define EMACS_TIME int #define EMACS_SECS(time) (time) #define EMACS_USECS(time) 0 #define EMACS_SET_SECS(time, seconds) ((time) = (seconds)) #define EMACS_SET_USECS(time, usecs) 0 #define EMACS_GET_TIME(t) ((t) = time ((long *) 0)) #define EMACS_ADD_TIME(dest, src1, src2) ((dest) = (src1) + (src2)) #define EMACS_SUB_TIME(dest, src1, src2) ((dest) = (src1) - (src2)) #define EMACS_TIME_NEG_P(t) ((t) < 0) #endif /* ! defined (HAVE_TIMEVAL) */ #define EMACS_SET_SECS_USECS(time, secs, usecs) \ (EMACS_SET_SECS (time, secs), EMACS_SET_USECS (time, usecs)) extern int set_file_times __P ((const char *, EMACS_TIME, EMACS_TIME)); /* defined in keyboard.c */ extern void set_waiting_for_input __P ((EMACS_TIME *)); /* When lisp.h is not included Lisp_Object is not defined (this can happen when this files is used outside the src directory). Use GCPRO1 to determine if lisp.h was included. */ #ifdef GCPRO1 /* defined in dired.c */ extern Lisp_Object make_time __P ((time_t)); #endif /* Compare times T1 and T2. Value is 0 if T1 and T2 are the same. Value is < 0 if T1 is less than T2. Value is > 0 otherwise. */ #define EMACS_TIME_CMP(T1, T2) \ (EMACS_SECS (T1) - EMACS_SECS (T2) \ + (EMACS_SECS (T1) == EMACS_SECS (T2) \ ? EMACS_USECS (T1) - EMACS_USECS (T2) \ : 0)) /* Compare times T1 and T2 for equality, inequality etc. */ #define EMACS_TIME_EQ(T1, T2) (EMACS_TIME_CMP (T1, T2) == 0) #define EMACS_TIME_NE(T1, T2) (EMACS_TIME_CMP (T1, T2) != 0) #define EMACS_TIME_GT(T1, T2) (EMACS_TIME_CMP (T1, T2) > 0) #define EMACS_TIME_GE(T1, T2) (EMACS_TIME_CMP (T1, T2) >= 0) #define EMACS_TIME_LT(T1, T2) (EMACS_TIME_CMP (T1, T2) < 0) #define EMACS_TIME_LE(T1, T2) (EMACS_TIME_CMP (T1, T2) <= 0) #endif /* EMACS_SYSTIME_H */ /* arch-tag: dcb79915-cf99-4bce-9778-aade71d07651 (do not change this comment) */