annotate src/md5.h @ 38588:08a4c6c00af0

(init_from_display_pos): If POS is in an overlay string, deal with the first overlay string having an image `display' property. (try_window_reusing_current_matrix, compute_line_metrics): Fix computation of row's visible height for the case that part of the row is invisible above and part of the row is at the same time invisible below the window.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 27 Jul 2001 15:29:16 +0000
parents ae7419cd51be
children 695cf19ef79e d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1 /* Declaration of functions and data types used for MD5 sum computing
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2 library functions.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3 Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4 This file is part of GNU Emacs.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 The GNU C Library is free software; you can redistribute it and/or
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 modify it under the terms of the GNU Library General Public License as
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 published by the Free Software Foundation; either version 2 of the
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 License, or (at your option) any later version.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11 The GNU C Library is distributed in the hope that it will be useful,
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 Library General Public License for more details.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU Library General Public
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 License along with the GNU C Library; see the file COPYING.LIB. If not,
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 #ifndef _MD5_H
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 #define _MD5_H 1
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24 #include <stdio.h>
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 #if defined HAVE_LIMITS_H || _LIBC
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 # include <limits.h>
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 #endif
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 /* The following contortions are an attempt to use the C preprocessor
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 to determine an unsigned integral type that is 32 bits wide. An
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
33 doing that would require that the configure script compile and *run*
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34 the resulting executable. Locally running cross-compiled executables
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35 is usually not possible. */
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37 #ifdef _LIBC
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38 # include <sys/types.h>
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39 typedef u_int32_t md5_uint32;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 #else
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 # if defined __STDC__ && __STDC__
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 # define UINT_MAX_32_BITS 4294967295U
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 # else
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 # define UINT_MAX_32_BITS 0xFFFFFFFF
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 # endif
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 /* If UINT_MAX isn't defined, assume it's a 32-bit type.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48 This should be valid for all systems GNU cares about because
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49 that doesn't include 16-bit systems, and only modern systems
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 (that certainly have <limits.h>) have 64+-bit integral types. */
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 # ifndef UINT_MAX
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 # define UINT_MAX UINT_MAX_32_BITS
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 # endif
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 # if UINT_MAX == UINT_MAX_32_BITS
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 typedef unsigned int md5_uint32;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58 # else
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 # if USHRT_MAX == UINT_MAX_32_BITS
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60 typedef unsigned short md5_uint32;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61 # else
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62 # if ULONG_MAX == UINT_MAX_32_BITS
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 typedef unsigned long md5_uint32;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 # else
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 /* The following line is intended to evoke an error.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 Using #error is not portable enough. */
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67 "Cannot determine unsigned 32-bit data type."
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 # endif
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 # endif
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 # endif
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 #endif
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
74 #ifndef __GNUC__
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
75 #define __attribute__(X)
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
76 #define __alignof__(X) 1
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
77 #endif
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
78
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 /* Structure to save state of computation between the single steps. */
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 struct md5_ctx
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 {
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 md5_uint32 A;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 md5_uint32 B;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84 md5_uint32 C;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85 md5_uint32 D;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87 md5_uint32 total[2];
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88 md5_uint32 buflen;
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 char buffer[128] __attribute__ ((__aligned__ (__alignof__ (md5_uint32))));
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90 };
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92 /*
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 * The following three functions are build up the low level used in
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
94 * the functions `md5_stream' and `md5_buffer'.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95 */
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
96
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97 /* Initialize structure containing state of computation.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98 (RFC 1321, 3.3: Step 3) */
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
99 extern void md5_init_ctx __P ((struct md5_ctx *ctx));
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 /* Starting with the result of former calls of this function (or the
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 initialization function update the context for the next LEN bytes
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 starting at BUFFER.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 It is necessary that LEN is a multiple of 64!!! */
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
105 extern void md5_process_block __P ((const void *buffer, size_t len,
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
106 struct md5_ctx *ctx));
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
107
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
108 /* Starting with the result of former calls of this function (or the
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
109 initialization function update the context for the next LEN bytes
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 starting at BUFFER.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 It is NOT required that LEN is a multiple of 64. */
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
112 extern void md5_process_bytes __P ((const void *buffer, size_t len,
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 struct md5_ctx *ctx));
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115 /* Process the remaining bytes in the buffer and put result from CTX
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116 in first 16 bytes following RESBUF. The result is always in little
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 endian byte order, so that a byte-wise output yields to the wanted
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118 ASCII representation of the message digest.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
119
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120 IMPORTANT: On some systems it is required that RESBUF is correctly
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 aligned for a 32 bits value. */
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
122 extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf));
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
125 /* Put result from CTX in first 16 bytes following RESBUF. The result is
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126 always in little endian byte order, so that a byte-wise output yields
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127 to the wanted ASCII representation of the message digest.
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129 IMPORTANT: On some systems it is required that RESBUF is correctly
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 aligned for a 32 bits value. */
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
131 extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf));
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134 /* Compute MD5 message digest for bytes read from STREAM. The
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 resulting message digest number will be written into the 16 bytes
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 beginning at RESBLOCK. */
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
137 extern int md5_stream __P ((FILE *stream, void *resblock));
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
140 result is always in little endian byte order, so that a byte-wise
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141 output yields to the wanted ASCII representation of the message
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 digest. */
34231
afdc28d28aaa Remove underscores from function declarations.
Jason Rumney <jasonr@gnu.org>
parents: 34054
diff changeset
143 extern void *md5_buffer __P ((const char *buffer, size_t len,
34054
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 void *resblock));
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145
da7a782777bc *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 #endif /* md5.h */