~ubuntu-branches/ubuntu/edgy/lurker/edgy

« back to all changes in this revision

Viewing changes to common/Keys.h

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Meurer
  • Date: 2004-09-26 16:27:51 UTC
  • Revision ID: james.westby@ubuntu.com-20040926162751-z1ohcjltv7ojtg6z
Tags: upstream-1.2
ImportĀ upstreamĀ versionĀ 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*  $Id: Keys.h,v 1.13 2004/08/24 21:52:39 terpstra Exp $
 
2
 *  
 
3
 *  Keys.h - What prefixs various database keys
 
4
 *  
 
5
 *  Copyright (C) 2002 - Wesley W. Terpstra
 
6
 *  
 
7
 *  License: GPL
 
8
 *  
 
9
 *  Authors: 'Wesley W. Terpstra' <wesley@terpstra.ca>
 
10
 *  
 
11
 *    This program is free software; you can redistribute it and/or modify
 
12
 *    it under the terms of the GNU General Public License as published by
 
13
 *    the Free Software Foundation; version 2.1.
 
14
 *    
 
15
 *    This program is distributed in the hope that it will be useful,
 
16
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
18
 *    GNU General Public License for more details.
 
19
 *    
 
20
 *    You should have received a copy of the GNU General Public License
 
21
 *    along with this program; if not, write to the Free Software
 
22
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
23
 */
 
24
 
 
25
#ifndef KEYS_H
 
26
#define KEYS_H
 
27
 
 
28
#include <string>
 
29
#include <vector>
 
30
 
 
31
using std::string;
 
32
using std::vector;
 
33
 
 
34
// These must have length 1
 
35
#define LU_THREADING    "t"
 
36
#define LU_KEYWORD      "k"
 
37
#define LU_SUMMARY      "s"
 
38
#define LU_CACHE        "c"
 
39
#define LU_NEW_TOPICS   "n"
 
40
 
 
41
#define LU_MESSAGE_DELETED      'd'
 
42
#define LU_MESSAGE_AUTHOR_EMAIL 'e'
 
43
#define LU_MESSAGE_AUTHOR_NAME  'n'
 
44
#define LU_MESSAGE_SUBJECT      's'
 
45
#define LU_MESSAGE_MBOX         'x'
 
46
 
 
47
/* special keywords */
 
48
#define LU_KEYWORD_DELETED      "id:deleted"    /* a deleted message */
 
49
 
 
50
/* fields indexed early */
 
51
#define LU_KEYWORD_EVERYTHING   "id:any"        /* empty search */
 
52
#define LU_KEYWORD_MESSAGE_ID   "id:"           /* Message id */
 
53
#define LU_KEYWORD_REPLY_TO     "rt:"           /* Reply-to */
 
54
#define LU_KEYWORD_THREAD       "th:"           /* THread */
 
55
 
 
56
/* lu_import_message */
 
57
#define LU_KEYWORD_LIST         "ml:"   /* Mailing List */
 
58
#define LU_KEYWORD_AUTHOR       "au:"   /* AUthor */
 
59
#define LU_KEYWORD_SUBJECT      "sb:"   /* SuBject */
 
60
 
 
61
/* magic automatic keywords */
 
62
#define LU_KEYWORD_GROUP        "gr:"   /* Mailing group */
 
63
#define LU_KEYWORD_LANGUAGE     "lang:" /* Language */
 
64
 
 
65
/* import processing */
 
66
#define LU_KEYWORD_WORD         ""      /* body keywords */
 
67
 
 
68
/* The longest length a keyword can be */
 
69
#define LU_KEYWORD_LEN          80
 
70
 
 
71
/* Analyze the string for keywords. */
 
72
extern int my_keyword_digest_string(
 
73
        const char* buf,
 
74
        int         len,
 
75
        const char* prefix,
 
76
        int       (*writefn)(const char* keyword, void* arg),
 
77
        void*       arg,
 
78
        int         do_div);
 
79
 
 
80
const char* skipSubjectStart(const char* subject);
 
81
string subject_hash(const char* subject);
 
82
vector<string> extract_message_ids(const char* str);
 
83
 
 
84
/* The database has these types:
 
85
 *
 
86
 * Threading:
 
87
 *   LU_THREADING 
 
88
 *   subject_hash 
 
89
 *   message_id
 
90
 *   (reply_to_hash*)
 
91
 * 
 
92
 * Summary:
 
93
 *  LU_SUMMARY
 
94
 *  message_id
 
95
 *  DELETED/AUTHOR_EMAIL/AUTHOR_NAME/SUBJECT/MBOX
 
96
 *  ... if it has any of these then it must have all of them, in that order
 
97
 *  For all except the MBOX+DELETED, one has just a string value.
 
98
 *  For Mbox:
 
99
 *   <mailbox-as-string> '\0' <64bit offset> <32bit length>
 
100
 *
 
101
 * Keyword:
 
102
 *  LU_KEYWORD
 
103
 *  keyword
 
104
 *  '\0'
 
105
 *  mid
 
106
 *
 
107
 * Cache cleaning:
 
108
 *  LU_CACHE
 
109
 *  import timestamp as 4 bytes in bigendian order
 
110
 *  mid
 
111
 * 
 
112
 * New topics fields:
 
113
 *  LU_NEW_TOPICS
 
114
 *  listid '\0'
 
115
 *  timestamp
 
116
 *  threadhash
 
117
 */
 
118
 
 
119
#endif