view lisp/url/url-ns.el @ 110504:0fdd992ff057

Fix more uses of int instead of EMACS_INT. xdisp.c (check_point_in_composition, reconsider_clip_changes): Use EMACS_INT for buffer position variables and arguments. composite.c (get_composition_id, find_composition) (run_composition_function, compose_text) (composition_gstring_width, autocmp_chars) (composition_update_it, Ffind_composition_internal): Use EMACS_INT for buffer positions and string length variables and arguments. composite.h (get_composition_id, find_composition, compose_text) (composition_gstring_width): Adjust prototypes. editfns.c (Fformat): Use EMACS_INT for string size variables. xdisp.c (store_mode_line_noprop, display_mode_element): Use EMACS_INT for string positions. intervals.c (get_property_and_range): Use EMACS_INT for buffer position arguments. intervals.h (get_property_and_range): Adjust prototype. character.c (parse_str_as_multibyte, str_as_multibyte) (parse_str_to_multibyte, str_to_multibyte, str_as_unibyte) (string_count_byte8, string_escape_byte8, c_string_width) (strwidth, lisp_string_width, multibyte_chars_in_text): Use EMACS_INT for string length variables and arguments. (string_escape_byte8): Protect against too long strings. character.h (parse_str_as_multibyte, str_as_multibyte) (parse_str_to_multibyte, str_to_multibyte, str_as_unibyte) (c_string_width, strwidth, lisp_string_width): Adjust prototypes. lisp.h (check_point_in_composition): Adjust prototype.
author Eli Zaretskii <eliz@gnu.org>
date Thu, 23 Sep 2010 10:32:38 -0400
parents 1d1d5d9bd884
children 376148b31b5e
line wrap: on
line source

;;; url-ns.el --- Various netscape-ish functions for proxy definitions

;; Copyright (C) 1997, 1998, 1999, 2004, 2005,
;;   2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.

;; Keywords: comm, data, processes, hypermedia

;; 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 3 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.

;;; Code:

(require 'url-gw)

;;;###autoload
(defun isPlainHostName (host)
  (not (string-match "\\." host)))

;;;###autoload
(defun dnsDomainIs (host dom)
  (string-match (concat (regexp-quote dom) "$") host))

;;;###autoload
(defun dnsResolve (host)
  (url-gateway-nslookup-host host))

;;;###autoload
(defun isResolvable (host)
  (if (string-match "^[0-9.]+$" host)
      t
    (not (string= host (url-gateway-nslookup-host host)))))

;;;###autoload
(defun isInNet (ip net mask)
  (let ((netc (split-string ip "\\."))
	(ipc  (split-string net "\\."))
	(maskc (split-string mask "\\.")))
    (if (or (/= (length netc) (length ipc))
	    (/= (length ipc) (length maskc)))
	nil
      (setq netc (mapcar 'string-to-number netc)
	    ipc (mapcar 'string-to-number ipc)
	    maskc (mapcar 'string-to-number maskc))
      (and
       (= (logand (nth 0 netc) (nth 0 maskc))
	  (logand (nth 0 ipc)  (nth 0 maskc)))
       (= (logand (nth 1 netc) (nth 1 maskc))
	  (logand (nth 1 ipc)  (nth 1 maskc)))
       (= (logand (nth 2 netc) (nth 2 maskc))
	  (logand (nth 2 ipc)  (nth 2 maskc)))
       (= (logand (nth 3 netc) (nth 3 maskc))
	  (logand (nth 3 ipc)  (nth 3 maskc)))))))

;; Netscape configuration file parsing
(defvar url-ns-user-prefs nil
  "Internal, do not use.")

;;;###autoload
(defun url-ns-prefs (&optional file)
  (if (not file)
      (setq file (expand-file-name "~/.netscape/preferences.js")))
  (if (not (and (file-exists-p file)
		(file-readable-p file)))
      (message "Could not open %s for reading" file)
    (save-excursion
      (let ((false nil)
	    (true t))
	(setq url-ns-user-prefs (make-hash-table :size 13 :test 'equal))
	(set-buffer (get-buffer-create " *ns-parse*"))
	(erase-buffer)
	(insert-file-contents file)
	(goto-char (point-min))
	(while (re-search-forward "^//" nil t)
	  (replace-match ";;"))
	(goto-char (point-min))
	(while (re-search-forward "^user_pref(" nil t)
	  (replace-match "(url-ns-set-user-pref "))
	(goto-char (point-min))
	(while (re-search-forward "\"," nil t)
	  (replace-match "\""))
	(goto-char (point-min))
	(eval-buffer)))))

(defun url-ns-set-user-pref (key val)
  (puthash key val url-ns-user-prefs))

;;;###autoload
(defun url-ns-user-pref (key &optional default)
  (gethash key url-ns-user-prefs default))

(provide 'url-ns)

;; arch-tag: 69520992-cf97-40b4-9ad1-c866d3cae5bf
;;; url-ns.el ends here