summaryrefslogtreecommitdiff
path: root/bits/bbdb-filters/bbdb-passwd.el
diff options
context:
space:
mode:
Diffstat (limited to 'bits/bbdb-filters/bbdb-passwd.el')
-rw-r--r--bits/bbdb-filters/bbdb-passwd.el192
1 files changed, 0 insertions, 192 deletions
diff --git a/bits/bbdb-filters/bbdb-passwd.el b/bits/bbdb-filters/bbdb-passwd.el
deleted file mode 100644
index 74dc8fd..0000000
--- a/bits/bbdb-filters/bbdb-passwd.el
+++ /dev/null
@@ -1,192 +0,0 @@
-;;; This file is part of the BBDB Filters Package. BBDB Filters Package is a
-;;; collection of input and output filters for BBDB.
-;;;
-;;; Copyright (C) 1995 Neda Communications, Inc.
-;;; Prepared by Mohsen Banan (mohsen@neda.com)
-;;;
-;;; This library is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU Library General Public License as
-;;; published by the Free Software Foundation; either version 2 of the
-;;; License, or (at your option) any later version. This library 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 Library General Public
-;;; License for more details. You should have received a copy of the GNU
-;;; Library General Public License along with this library; if not, write
-;;; to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
-;;; USA.
-
-;;; This is bbdb-passwd.el
-
-;;; This file is a bbdb filter. It converts passwd files to the
-;;; canonical bbdb input filter format (i.e., a file of
-;;; bif-create-record expressions
-
-
-(defvar bpf-default-bif-file "~/passwd-bif.el"
- "*Default file name for bbdb-passwd-input.")
-
-
-(defvar bpf-default-domain-name (if (boundp '*eoe-site-name*) *eoe-site-name*)
- "*Default domain name for bbdb-passwd-input.")
-
-
-(defvar bpf-default-org-name (if (boundp 'gnus-local-organization) gnus-local-organization
- bpf-default-domain-name)
- "*Default organization name for bbdb-passwd-input.")
-
-
-(defvar bpf-omit-uid-limit 100
- "Skip UIDs below this value. Default is 100.")
-
-(defvar bpf-omit-user-name-regexp "\\(sl-\\\|guest\\)"
- "Skip usernames that match this regular expression.
-E.g., \"\\\\(sl-\\\\\\|guest\\\\)\"
-")
-
-(defvar bpf-omit-user-name-list '("nobody" "noaccess")
- "Skip usernames in this list.
-E.g., '(\"noaccess\" \"nobody\")
-")
-
-(defvar bpf-omit-pretty-name-regexp "\\(Slip \\\|Listserv\\\|PPP\\)"
- "Skip pretty names that match this regular expression.
-E.g., \"\\\\(Slip \\\\\\|Listserv\\\\\\|PPP\\\\)\"
-")
-
-(defvar bpf-omit-pretty-name-list '()
- "Skip pretty names that match this regular expression.
-E.g., '(\"John Q. Public\")
-")
-
-
-(defun bbdb-passwd-input (domain-name org-name to-file)
- "Parse current buffer which contains a UNIX passwd file to generate a .bif format file"
- (interactive (list (setq bpf-default-domain-name (read-string "Domain name: "
- bpf-default-domain-name))
- (setq bpf-default-org-name (read-string "Organization name: "
- bpf-default-org-name))
- (setq bpf-default-bif-file
- (read-file-name "Output To File: "
- (concat
- (file-name-directory bpf-default-bif-file)
- (concat "bif-" bpf-default-domain-name ".el"))
- (concat
- (file-name-directory bpf-default-bif-file)
- (concat "bif-" bpf-default-domain-name ".el"))))))
- (let (to-buffer)
- (save-excursion
- (message (expand-file-name to-file))
- (set-buffer (find-file (expand-file-name to-file)))
- (delete-region (point-min) (point-max))
- (bif-buffer-insert-header)
- (setq to-buffer (current-buffer)))
-
- ;; walk the passwd file in the current buffer
- (goto-char (point-min))
- (while (not (eobp))
- (beginning-of-line)
- (bpf-parse-line domain-name org-name to-buffer)
- (forward-line 1))
-
- (message "Done.")
- (set-buffer to-buffer)
- ))
-
-
-(defun bif-buffer-insert-header ()
- (insert "(require 'bbdb-passwd)\n\n"))
-
-
-(defun bif-buffer-insert-record (pretty-name org-name email)
- (insert (format "(bif-create-record"))
-
- (insert (format " \"%s\"" pretty-name)) ; NAME string
-
- (insert (format " \"%s\"" org-name)) ; COMPANY is a string or nil
-
- (insert (format " \"%s\"" email)) ; NET is a comma-separated list of email address,
- ; or a list of strings
-
- ;; (insert " nil") ; ADDRS is a list of address objects.
- ; An address is a vector of the form
- ; ["location" "line1" "line2" "line3" "City" "State" zip]
-
- ;; (insert " nil") ; PHONES is a list of phone-number objects.
- ; A phone-number is a vector of the form
- ; ["location" areacode prefix suffix extension-or-nil]
- ; or
- ; ["location" "phone-number"]
-
- ;; (insert " nil") ; NOTES is a string, or an alist associating symbols with
- ; strings.
-
- (insert ")\n")
- )
-
-(defun bpf-parse-line (domain-name org-name to-buffer)
- "Parse the passwd file line. Point is assumed to be at the beginning of line."
- (let (record-string uid user-name pretty-name email)
- (setq record-string (buffer-substring (point)
- (progn (end-of-line) (point))))
-
- (message "Processing record: %s" record-string)
-
- ;; (setq record-string "mohsen:x:100:10:Mohsen Banan:/home/arash/mohsen:/bin/csh")
-
- ;; check for a valid and qualifying uid on line, else skip
- (cond ((and
- ;;
- ;; extract and test uid
- ;;
- (string-match "^\\w*:\\w*:\\([0-9]+\\):" record-string)
- (setq uid (read (substring record-string
- (match-beginning 1)
- (match-end 1))))
- (>= uid bpf-omit-uid-limit)
- ;;
- ;; extract and test user name
- ;;
- (string-match "^\\([^:]+\\):" record-string)
- (setq user-name (substring record-string (match-beginning 1) (match-end 1)))
- (or (null bpf-omit-user-name-regexp)
- (not (string-match bpf-omit-user-name-regexp user-name)))
- (or (null bpf-omit-user-name-list)
- (not (member user-name bpf-omit-user-name-list)))
- ;;
- ;; extract and test pretty name
- ;;
- (string-match "^[^:]*:[^:]*:[^:]*:[^:]*:\\([^:]+\\):" record-string)
- (setq pretty-name (substring record-string (match-beginning 1) (match-end 1)))
- (or (null bpf-omit-pretty-name-regexp)
- (not (string-match bpf-omit-pretty-name-regexp pretty-name)))
- (or (null bpf-omit-pretty-name-list)
- (not (member pretty-name bpf-omit-pretty-name-list)))
- )
-
- ;; synthesize email address
- (setq email (concat user-name "@" domain-name))
-
- ;; output bif record
- (save-excursion
- (set-buffer to-buffer)
- (bif-buffer-insert-record pretty-name org-name email)
- )
- )
- (t
- ;; not a valid line, skip
- nil))
- ))
-
-(defun bif-create-record (name company net &optional addrs phones notes)
- "Try to add a record to BBDB; if one does not already exist."
- (condition-case err
- (progn
- (bbdb-create-internal name company net addrs phones notes)
- (message "%s <%s> added." name net))
- (error (message "%s" (car (cdr err)))
- (sleep-for 1))))
-
-
-(provide 'bbdb-passwd)
-