Mercurial > hg > xemacs-beta
comparison src/md5.c @ 800:a5954632b187
[xemacs-hg @ 2002-03-31 08:27:14 by ben]
more fixes, first crack at finishing behavior implementation
TODO.ben-mule-21-5: Update.
configure.in: Fix for new error-checking types.
make-mswin-unicode.pl: Don't be fucked up by CRLF. Output code
to force errors when nonintercepted Windows calls issued.
behavior.el, dumped-lisp.el, menubar-items.el: Add support for saving using custom. Load into a dumped XEmacs.
Correct :title to :short-doc in accordance with behavior-defs.el.
Add a submenu under Options for turning on/off behaviors.
cl-macs.el: Properly document `loop'. Fix a minor bug in keymap iteration and
add support for bit-vector iteration.
lisp-mode.el: Rearrange and add items for macro expanding.
menubar-items.el: Document connection between these two functions.
window.el: Port stuff from GNU 21.1.
config.inc.samp, xemacs.mak: Separate out and add new variable for controlling error-checking.
s/windowsnt.h: Use new ERROR_CHECK_ALL; not related to DEBUG_XEMACS.
alloc.c, backtrace.h, buffer.c, buffer.h, bytecode.c, callproc.c, casetab.c, charset.h, chartab.c, cmdloop.c, config.h.in, console-msw.c, console-stream.c, console-tty.c, console.c, console.h, data.c, device-msw.c, device.c, device.h, dired-msw.c, dired.c, dumper.c, editfns.c, eldap.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, file-coding.h, fileio.c, frame-msw.c, frame.c, frame.h, glyphs-gtk.c, glyphs-msw.c, glyphs-shared.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, insdel.c, intl-auto-encap-win32.c, intl-auto-encap-win32.h, intl-encap-win32.c, intl-win32.c, keymap.c, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, macros.c, marker.c, md5.c, menubar-x.c, menubar.c, mule-coding.c, ntproc.c, objects-gtk.c, objects-msw.c, objects-x.c, objects.c, opaque.c, print.c, process-nt.c, process-unix.c, process.c, rangetab.c, redisplay-msw.c, redisplay-output.c, redisplay.c, regex.c, scrollbar-msw.c, select-msw.c, signal.c, specifier.c, specifier.h, symbols.c, sysdep.c, syswindows.h, text.c, text.h, toolbar-msw.c, tooltalk.c, ui-gtk.c, unicode.c, window.c: Redo error-checking macros: ERROR_CHECK_TYPECHECK ->
ERROR_CHECK_TYPES, ERROR_CHECK_CHARBPOS -> ERROR_CHECK_TEXT, add
ERROR_CHECK_DISPLAY, ERROR_CHECK_STRUCTURES. Document these in
config.h.in. Fix code to follow docs. Fix *_checking_assert()
in accordance with new names.
Attempt to fix periodic redisplay crash freeing display line
structures. Add first implementation of sledgehammer redisplay
check.
Redo print_*() to use write_fmt_string(), write_fmt_string_lisp().
Fix bug in md5 handling.
Rename character-to-unicode to char-to-unicode; same for
unicode-to-char{acter}.
Move chartab documentation to `make-char-table'.
Some header cleanup.
Clean up remaining places where nonintercepted Windows calls are
being used.
automated/mule-tests.el: Fix for new Unicode support.
author | ben |
---|---|
date | Sun, 31 Mar 2002 08:30:17 +0000 |
parents | 943eaba38521 |
children | 804517e16990 |
comparison
equal
deleted
inserted
replaced
799:03d9f9084848 | 800:a5954632b187 |
---|---|
1 /* md5.c - Functions to compute MD5 message digest of files or memory blocks | 1 /* md5.c - Functions to compute MD5 message digest of files or memory blocks |
2 according to the definition of MD5 in RFC 1321 from April 1992. | 2 according to the definition of MD5 in RFC 1321 from April 1992. |
3 Copyright (C) 1995, 1996 Free Software Foundation, Inc. | 3 Copyright (C) 1995, 1996 Free Software Foundation, Inc. |
4 Copyright (C) 2001 Ben Wing. | 4 Copyright (C) 2001, 2002 Ben Wing. |
5 NOTE: The canonical source of this file is maintained with the GNU C | 5 NOTE: The canonical source of this file is maintained with the GNU C |
6 Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. | 6 Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. |
7 | 7 |
8 This program is free software; you can redistribute it and/or modify it | 8 This program is free software; you can redistribute it and/or modify it |
9 under the terms of the GNU General Public License as published by the | 9 under the terms of the GNU General Public License as published by the |
513 struct md5_ctx ctx; | 513 struct md5_ctx ctx; |
514 unsigned char digest[16]; | 514 unsigned char digest[16]; |
515 unsigned char thehash[33]; | 515 unsigned char thehash[33]; |
516 int i; | 516 int i; |
517 | 517 |
518 Lisp_Object instream; | 518 Lisp_Object raw_instream = Qnil, instream = Qnil; |
519 struct gcpro gcpro1; | 519 struct gcpro gcpro1, gcpro2; |
520 Lisp_Object raw_instream; | 520 |
521 struct gcpro ngcpro1; | 521 GCPRO2 (raw_instream, instream); |
522 | |
523 /* Set up the input stream. */ | 522 /* Set up the input stream. */ |
524 if (BUFFERP (object)) | 523 if (BUFFERP (object)) |
525 { | 524 { |
526 struct buffer *b; | 525 struct buffer *b; |
527 Charbpos begv, endv; | 526 Charbpos begv, endv; |
528 CHECK_LIVE_BUFFER (object); | 527 CHECK_LIVE_BUFFER (object); |
529 b = XBUFFER (object); | 528 b = XBUFFER (object); |
530 /* Figure out where we need to get info from */ | 529 /* Figure out where we need to get info from */ |
531 get_buffer_range_char (b, start, end, &begv, &endv, GB_ALLOW_NIL); | 530 get_buffer_range_char (b, start, end, &begv, &endv, GB_ALLOW_NIL); |
532 | 531 |
533 instream = make_lisp_buffer_input_stream (b, begv, endv, 0); | 532 raw_instream = make_lisp_buffer_input_stream (b, begv, endv, 0); |
534 } | 533 } |
535 else | 534 else |
536 { | 535 { |
537 Bytecount bstart, bend; | 536 Bytecount bstart, bend; |
538 CHECK_STRING (object); | 537 CHECK_STRING (object); |
539 get_string_range_byte (object, start, end, &bstart, &bend, | 538 get_string_range_byte (object, start, end, &bstart, &bend, |
540 GB_HISTORICAL_STRING_BEHAVIOR); | 539 GB_HISTORICAL_STRING_BEHAVIOR); |
541 instream = make_lisp_string_input_stream (object, bstart, bend - bstart); | 540 raw_instream = make_lisp_string_input_stream (object, bstart, |
542 } | 541 bend - bstart); |
543 GCPRO1 (instream); | 542 } |
544 | 543 |
545 /* Determine the coding and set up the conversion stream. */ | 544 /* Determine the coding and set up the conversion stream. */ |
546 coding = md5_coding_system (object, coding, instream, !NILP (noerror)); | 545 coding = md5_coding_system (object, coding, raw_instream, !NILP (noerror)); |
547 raw_instream = instream; | 546 Lstream_rewind (XLSTREAM (raw_instream)); |
548 instream = make_coding_input_stream (XLSTREAM (instream), coding, CODING_ENCODE); | 547 instream = make_coding_input_stream (XLSTREAM (raw_instream), coding, |
549 NGCPRO1 (raw_instream); | 548 CODING_ENCODE, 0); |
550 | 549 |
551 /* Initialize MD5 context. */ | 550 /* Initialize MD5 context. */ |
552 md5_init_ctx (&ctx); | 551 md5_init_ctx (&ctx); |
553 | 552 |
554 /* Get the data while doing the conversion. */ | 553 /* Get the data while doing the conversion. */ |
563 /* Process the bytes. */ | 562 /* Process the bytes. */ |
564 md5_process_bytes (tempbuf, size_in_bytes, &ctx); | 563 md5_process_bytes (tempbuf, size_in_bytes, &ctx); |
565 } | 564 } |
566 Lstream_delete (XLSTREAM (instream)); | 565 Lstream_delete (XLSTREAM (instream)); |
567 Lstream_delete (XLSTREAM (raw_instream)); | 566 Lstream_delete (XLSTREAM (raw_instream)); |
568 NUNGCPRO; | |
569 UNGCPRO; | 567 UNGCPRO; |
570 | 568 |
571 md5_finish_ctx (&ctx, digest); | 569 md5_finish_ctx (&ctx, digest); |
572 for (i = 0; i < 16; i++) | 570 for (i = 0; i < 16; i++) |
573 sprintf ((char *) (thehash + (i * 2)), "%02x", digest[i]); | 571 sprintf ((char *) (thehash + (i * 2)), "%02x", digest[i]); |