fix
[elisp/flim.git] / sha1-dl.el
index 8708c01..7edccdd 100644 (file)
@@ -5,6 +5,8 @@
 ;; Author: Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
 ;; Keywords: SHA1, FIPS 180-1
 
+;; This file is part of FLIM (Faithful Library about Internet Message).
+
 ;; This program 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
 
 ;;; Code:
 
-(defvar sha1-dl-module
-  (if (and (fboundp 'sha1-string)
-          (subrp (symbol-function 'sha1-string)))
-      nil
-    (if (fboundp 'dynamic-link)
-       (let ((path (expand-file-name "sha1.so" exec-directory)))
-         (and (file-exists-p path)
-              path)))))
+(provide 'sha1-dl)                     ; beware of circular dependency.
+(eval-when-compile
+  (require 'sha1)                      ; sha1-dl-module.
+  (defun-maybe dynamic-link (a))
+  (defun-maybe dynamic-call (a b)))
 
 (defvar sha1-dl-handle
   (and (stringp sha1-dl-module)
        (file-exists-p sha1-dl-module)
        (dynamic-link sha1-dl-module)))
 
-;;; sha1-dl-module provides `sha1-string'.
+;;; sha1-dl-module provides `sha1-string' and `sha1-binary'.
 (dynamic-call "emacs_sha1_init" sha1-dl-handle)
 
 (defun sha1-region (beg end)
-  (interactive "r")
   (sha1-string (buffer-substring-no-properties beg end)))
 
-;;;###autoload
 (defun sha1 (object &optional beg end)
   "Return the SHA1 (Secure Hash Algorithm) of an object.
 OBJECT is either a string or a buffer.
@@ -58,6 +55,5 @@ hash of a portion of OBJECT."
       (sha1-region (or beg (point-min)) (or end (point-max))))))
 
 (provide 'sha1-dl)
-(provide 'sha1)
 
-;;; sha1-dl.el ends here.
+;;; sha1-dl.el ends here