~ubuntu-branches/ubuntu/intrepid/mew-beta/intrepid

« back to all changes in this revision

Viewing changes to mew-search.el

  • Committer: Bazaar Package Importer
  • Author(s): Tatsuya Kinoshita
  • Date: 2007-04-23 20:51:39 UTC
  • mfrom: (1.1.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20070423205139-m5xqwnskzdar9cmu
Tags: 5.2.50~0.20070423-1
* New upstream release. (CVS trunk on 2007-04-23)
  - Preventing APOP attack. [CVE-2007-1558]
* debian/emacsen-install.in: Rename path.el to __path.el.

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
     mew-google-index-folder mew-google-index-all
35
35
     mew-pick-canonicalize-pattern-google
36
36
     mew-google-register mew-google-unregister)
37
 
    (est "Hyperestraier" ,mew-prog-est
 
37
    (est "Hyper Estraier" ,mew-prog-est
38
38
     mew-search-with-est mew-search-virtual-with-est
39
39
     mew-est-index-folder mew-est-index-all
40
40
     mew-pick-canonicalize-pattern-est
302
302
      (setq flds (cdr flds))
303
303
      (mew-search-spotlight pattern path)
304
304
      (goto-char (point-min))
305
 
      (while (looking-at regex)
306
 
        (setq rttl (1+ rttl))
307
 
        (setq crnt (match-string 1))
308
 
        (delete-region (match-beginning 0) (match-beginning 2))
309
 
        (when (not (string= crnt prev))
310
 
          (beginning-of-line)
311
 
          (insert "CD:" mew-folder-local crnt "\n"))
312
 
        (setq prev crnt)
313
 
        (forward-line))
 
305
      (while (not (eobp))
 
306
        (when (looking-at regex)
 
307
          (setq rttl (1+ rttl))
 
308
          (setq crnt (match-string 1))
 
309
          (delete-region (match-beginning 0) (match-beginning 2))
 
310
          (when (not (string= crnt prev))
 
311
            (beginning-of-line)
 
312
            (insert "CD:" mew-folder-local crnt "\n"))
 
313
          (setq prev crnt)
 
314
          (forward-line)))
314
315
      (mew-frwlet
315
316
       mew-cs-text-for-read mew-cs-text-for-write
316
317
       (write-region (point-min) (point-max) file (> n 1) 'no-msg))
395
396
         crnt)
396
397
    (mew-search-google pattern path)
397
398
    (goto-char (point-min))
398
 
    (while (looking-at regex)
399
 
      (setq rttl (1+ rttl))
400
 
      (setq crnt (match-string 1))
401
 
      (delete-region (match-beginning 0) (match-beginning 2))
402
 
      (when (not (string= crnt prev))
403
 
        (beginning-of-line)
404
 
        (insert "CD:" mew-folder-local crnt "\n"))
405
 
      (setq prev crnt)
406
 
      (forward-line))
 
399
    (while (not (eobp))
 
400
      (when (looking-at regex)
 
401
        (setq rttl (1+ rttl))
 
402
        (setq crnt (match-string 1))
 
403
        (delete-region (match-beginning 0) (match-beginning 2))
 
404
        (when (not (string= crnt prev))
 
405
          (beginning-of-line)
 
406
          (insert "CD:" mew-folder-local crnt "\n"))
 
407
        (setq prev crnt)
 
408
        (forward-line)))
407
409
    (mew-frwlet
408
410
     mew-cs-text-for-read mew-cs-text-for-write
409
411
     (write-region (point-min) (point-max) file nil 'no-msg))
477
479
         crnt)
478
480
    (mew-search-wds pattern path)
479
481
    (goto-char (point-min))
480
 
    (while (looking-at regex)
481
 
      (setq rttl (1+ rttl))
482
 
      (setq crnt (match-string 1))
483
 
      (delete-region (match-beginning 0) (match-beginning 2))
484
 
      (when (not (string= crnt prev))
485
 
        (beginning-of-line)
486
 
        (insert "CD:" mew-folder-local crnt "\n"))
487
 
      (setq prev crnt)
 
482
    (while (not (eobp))
 
483
      (when (looking-at regex)
 
484
        (setq rttl (1+ rttl))
 
485
        (setq crnt (match-string 1))
 
486
        (delete-region (match-beginning 0) (match-beginning 2))
 
487
        (when (not (string= crnt prev))
 
488
          (beginning-of-line)
 
489
          (insert "CD:" mew-folder-local crnt "\n"))
 
490
        (setq prev crnt))
488
491
      (forward-line))
489
492
    (mew-frwlet
490
493
     mew-cs-text-for-read mew-cs-text-for-write
533
536
;;;
534
537
 
535
538
(defun mew-est-input-filter ()
536
 
  (read-string "Hyperestraier filter: "))
 
539
  (read-string "Hyper Estraier filter: "))
537
540
 
538
541
(defvar mew-search-est-db "casket")
539
542
(defvar mew-prog-est-update "mewest")
540
543
 
541
544
(defun mew-search-est (pattern path filter)
542
 
  (setq pattern (mew-cs-encode-string pattern 'utf-8))
 
545
  (setq pattern (mew-cs-encode-string pattern mew-cs-est))
543
546
  (if (string= filter "")
544
547
      (setq filter nil)
545
 
    (setq filter (mew-cs-encode-string filter 'utf-8))
 
548
    (setq filter (mew-cs-encode-string filter mew-cs-est))
546
549
    (setq filter (let ((mew-inherit-pick-omit-and t))
547
550
                   (mew-pick-parse (mew-pick-lex filter))))
548
551
    (setq filter (mapcar 'mew-pick-filter-est-kyvl filter)))
549
552
  (let* ((ent (mew-search-get-ent mew-search-method))
550
553
         (prog (mew-search-get-prog ent))
551
554
         (casket (expand-file-name mew-search-est-db mew-conf-path))
552
 
         maildir len attr args)
553
 
    (mew-plet
554
 
     (mew-alet
555
 
      (setq maildir (file-truename (expand-file-name mew-home)))
556
 
      (setq len (length (file-name-as-directory maildir)))
557
 
      (setq path (substring (file-truename path) len))
558
 
      (setq path (file-name-as-directory path))
559
 
      (setq attr (format "@uri STRINC %s" (mew-q-encode-string path ?%)))
560
 
      (cond
561
 
       ((string-match "^ *ANDNOT " pattern)
562
 
        (setq pattern (concat "[UVSET] " pattern)))
563
 
       ((string-match "^ *$" pattern)
564
 
        (setq pattern "[UVSET]")))
565
 
      (setq args (list "-vu" "-max" "-1" "-ord" "@cdate NUMA" casket pattern))
566
 
      (setq filter (nreverse filter))
567
 
      (while filter
568
 
        (setq args (cons "-attr" (cons (car filter) args)))
569
 
        (setq filter (cdr filter)))
570
 
      (setq args (cons "-attr" (cons attr args)))
571
 
      (apply 'call-process prog nil t nil "search" args)))))
 
555
         ;; mew-home is not good for Zaurus
 
556
         (pregex (concat "^"
 
557
                         (regexp-quote
 
558
                          (file-name-directory
 
559
                           (directory-file-name
 
560
                            (file-truename
 
561
                             (expand-file-name mew-mail-path)))))))
 
562
         attr args)
 
563
    (setq path (file-truename (file-name-as-directory path)))
 
564
    (when (string-match pregex path)
 
565
      (setq path (substring path (match-end 0)))
 
566
      (mew-plet
 
567
       (mew-alet
 
568
        (setq attr (format "@uri STRINC %s" (mew-q-encode-string path ?%)))
 
569
        (cond
 
570
         ((string-match "^ *ANDNOT " pattern)
 
571
          (setq pattern (concat "[UVSET] " pattern)))
 
572
         ((string-match "^ *$" pattern)
 
573
          (setq pattern "[UVSET]")))
 
574
        (setq args (list "-vu" "-max" "-1" "-ord" "@cdate NUMA" casket pattern))
 
575
        (unless (eq mew-cs-est 'utf-8)
 
576
          (setq args (cons (mew-cs-to-charset mew-cs-est) args))
 
577
          (setq args (cons "-ic" args)))
 
578
        (setq filter (nreverse filter))
 
579
        (while filter
 
580
          (setq args (cons "-attr" (cons (car filter) args)))
 
581
          (setq filter (cdr filter)))
 
582
        (setq args (cons "-attr" (cons attr args)))
 
583
        (apply 'call-process prog nil t nil "search" args))))))
572
584
 
573
585
(defun mew-search-with-est (pattern folder filter)
574
586
  (let* ((path (mew-expand-folder folder))
647
659
    (message "Another Hyper Estraier indexer is running"))
648
660
   ((string-match "\.\.\.failed" string)
649
661
    (message "Hyper Estraier indexing ...failed"))
650
 
   ((string-match "\.\.\.done" string)
 
662
   ((string-match "old messages\.\.\.done" string)
 
663
    (message "Hyper Estraier purging ...done"))
 
664
   ((string-match "new messages\.\.\.done" string)
651
665
    (message "Hyper Estraier indexing ...done"))))
652
666
 
653
667
(defun mew-est-index-sentinel (process event)
657
671
 
658
672
;;; Copyright Notice:
659
673
 
660
 
;; Copyright (C) 2005-2006 Mew developing team.
 
674
;; Copyright (C) 2005-2007 Mew developing team.
661
675
;; All rights reserved.
662
676
 
663
677
;; Redistribution and use in source and binary forms, with or without