1fbfdbd43e88e490ea11d56a3abde4631dab8cb5
2000-11-30 Not Zed <NotZed@HelixCode.com> * providers/local/camel-mbox-folder.c (mbox_get_message): Remove assertion that content is there, when it no longer can be. * camel-folder-summary.h: Removed pos/bodypos/endpos from camelmeessagecontentinfo. (CamelMessageFlags): Added an attachments flag. * providers/local/camel-local-summary.h: Added load virtual function. * tests/lib/folders.c (test_message_info): Accessors. (test_folder_message): " * camel-folder-thread.c (get_root_subject): Fix accessors. (dump_tree_rec): " * camel-folder-search.c (camel_folder_search_execute_expression): Accessors for messageinfo. (search_match_all): " (search_header_contains): " (search_header_contains): " (search_body_contains): " (camel_folder_search_execute_expression): Use mepool_strdup. * providers/local/camel-mbox-summary.c (summary_update): Accessors for messageinfo. (mbox_summary_sync_full): " * providers/local/camel-mh-summary.c (remove_summary): Accessors for messageinfo. (mh_summary_check): " (mh_summary_sync_message): " (mh_summary_sync): " * providers/local/camel-mh-folder.c (mh_append_message): Use accessor for uid. * providers/local/camel-local-summary.c (local_summary_decode_x_evolution): Use accessor to uid. (local_summary_encode_x_evolution): Likewise. (message_info_new): And here. (camel_local_summary_load): Call virtual load function. (local_summary_load): Default load function, load summary. (camel_local_summary_load): Check file exists before trying to load. (camel_local_summary_construct): Turn off building content info! (CAMEL_LOCAL_SUMMARY_VERSION): Bump, since we dont build content info anymore. (camel_local_summary_load): After a successful load/check, do a save too so we dont have to go through it again randomly. * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Use accessors for messageinfo. * providers/nntp/camel-nntp-folder.c (nntp_folder_get_uids): Use accessors for uid. * providers/imap/camel-imap-folder.c (imap_refresh_info): Use accessor for uid. (imap_sync): Likewise. (imap_get_uids): Likewise. (imap_update_summary): And here. * providers/vee/camel-vee-folder.c (vfolder_remove_match): Use accessor for uid. (vfolder_add_match): Handle estrv stuff. (vfolder_change_match): Accessor for uid. (get_real_message): " (vee_get_uids): " (vee_folder_build): " + estrv. (vee_folder_build_folder): " * providers/local/camel-maildir-folder.c (maildir_append_message): Use acccessors for uid's. (maildir_get_message): Here too. * providers/local/camel-maildir-summary.c (camel_maildir_summary_init): Setup the string count for us. (message_info_new): Access the string array directly. (message_info_free): No need to free string if using array. (camel_maildir_summary_info_to_name): Use accessor to get to uid. (remove_summary): And here. (maildir_summary_check): Likewise. (maildir_summary_sync): And here. (maildir_summary_load): Load up a cache of uid->filename mappings before loading the actual summary file. This saves us having to waste the diskspace storing the filenames in the summary itself, and also helps us sync the summary better on load. (message_info_load): If we have the load_map setup, and the uid exists, then set the filename cache from it, and update the flags from the name, incase our summary mismatches it. * camel-folder-summary.c (camel_folder_summary_init): Setup string count for compressed info record. An optional compile mode which stores all strings for a given messageinfo into a packed array, which should save 36-50 bytes/record. (camel_folder_summary_info_new): Init the string array. (message_info_new): Set the string array items, as required. (message_info_load): And here too. (message_info_save): Use accessors to get to strings. (message_info_free): Free strings as one. (camel_message_info_dup_to): Handle packed array case. (camel_folder_summary_add): Use accessors. And pack the strv before storing it. (summary_assign_uid): New function to assign a unique uid to a message, if it doesn't have one. (camel_folder_summary_add): Call assign_uid instead of doing it ourselves. (camel_folder_summary_info_new_from_parser): " (camel_folder_summary_info_new_from_message): " (camel_folder_summary_encode_string): constify. (camel_folder_summary_encode_token): " (summary_build_content_info_message): Fix accessors to messageinfo. (CAMEL_FOLDER_SUMMARY_VERSION): Bumped, for removal of contentinfo->pos data. (camel_folder_summary_info_new_from_parser): Calculate the size based on the parser position, not the removed contentinfo stuff. (camel_folder_summary_info_new_from_message): Remove size stuff. (camel_folder_summary_offset_content): Removed, no longer means anything. (content_info_new): (content_info_load): (content_info_save): (summary_build_content_info): Remove stuff for contentinfo->pos*. (summary_build_content_info): Take a msginfo argument, set attachments flag if we find any attachments. (summary_build_content_info_message): set attachments flag if we find any attachments. (camel_folder_summary_info_new_from_parser): Always scan the content info, even if we dont save it. (camel_folder_summary_info_new_from_message): And here too. (summary_build_content_info): Only create the contentinfo stuff if we have it turned on, otherwise just parse and discard. (summary_build_content_info_message): Likewise. svn path=/trunk/; revision=6731
…
…
…
…
…
…
…
…
…
…
Evolution is the integrated mail, calendar and address book
distributed suite from Helix Code, Inc.
See http://www.helixcode.com/apps/evolution.php3 for more information.
Note that Evolution is still beta. This means it may delete all of
your mail if you give it the chance.
If you are interested in hacking on Evolution, you should subscribe to
the Evolution mailing list. Send mail to
"evolution-request@helixcode.com" with the word "subscribe" in the
body of the message. If you are planning to work on any part of
Evolution, please send mail to the mailing list first, to avoid
duplicated effort (and to make sure that you aren't basing your work
on interfaces that are expected to change).
There is a mailing list archive available at
http://lists.helixcode.com/archives/public/evolution/
There is also an #evolution IRC channel on irc.gnome.org.
IF IT DOESN'T WORK
------------------
Did you read the "How to build" section below? :-)
If you have built Evolution and it doesn't work, or you can't get it
or one of its dependencies to compile, try running the
"verify-evolution-install.sh" script in the tools/ subdirectory. It
may be able to figure out what went wrong.
HOW TO BUILD EVOLUTION
----------------------
*** READ THIS BEFORE YOU START BUILDING ANYTHING! ***
Evolution depends on a large number of unreleased and rapidly-changing
libraries. Some of these libraries in turn depend on other unreleased
and rapidly-changing libraries.
Building Evolution is HARD, and it's going to stay hard until all of
the libraries it depends on stabilize, and there's nothing we can do
to make it any easier until then.
General Principles
------------------
First you have to decide whether you want to install Evolution (and
its dependencies) into the same prefix as the rest of your GNOME
install, or into a new prefix. Installing everything into the same
prefix as the rest of your GNOME install will make it much easier to
build and run programs, but may make it harder to uninstall later.
If you want to install into the same prefix as the rest of GNOME,
type:
gnome-config --prefix
gnome-config --sysconfdir
and remember the answers, and pass them to "configure" and "autogen"
when building the other packages you need. Eg:
./configure --prefix=/usr --sysconfdir=/etc
If you do not do this, you will need to set the GNOME_PATH environment
variable (and ACLOCAL_FLAGS as well if building from CVS) to include
the prefix you install into. Eg:
export GNOME_PATH=/usr/local
export ACLOCAL_FLAGS="-I /usr/local/share/aclocal"
(Assuming your shell is bash, and you installed into /usr/local.) You
need to set GNOME_PATH both during compiling AND when you run
evolution. Remember also that if you're installing into an odd prefix
such as /evolution, that you also need to make sure to put
${prefix}/bin in your PATH.
If you install Evolution into a different prefix from OAF, you will
also need to set OAF_INFO_PATH to include the directory where the
oafinfo files are installed (${prefix}/share/oaf). (OAF will
eventually obey the GNOME_PATH variable, but it does not do so
currently.) Eg:
export OAF_INFO_PATH=/usr/local/share/oaf
If you are already running an oafd, you will need to kill it after
setting that variable so it gets restarted later with that in its
environment.
Dependencies
------------
All of these libraries are available in GNOME CVS, under the given
names. Most (but not all) of them are also available as tarballs on
ftp.gnome.org. The (*)ed packages are available in Helix GNOME
(http://www.helixcode.com/desktop/). Other packages may be available
from the evolution preview mirror.
- gnome-xml - 1.8.10 or later in the 1.0 series, but not from the 2.0
series (If you get this from GNOME CVS, use the tag "LIB_XML_1_X".)
(*)
- gnome-print - 0.20 or later (*)
- gdk-pixbuf - 0.7.0 or later (*)
- ORBit - 0.5.3 or later (*)
- oaf - 0.6.0 or later
*** If you are using oaf from CVS, you should use the flag
*** "--disable-more-warnings" when configure, or it may fail to
*** build.
- gnome-vfs - 0.3 or later
*** If you are using gnome-vfs from CVS, you should use the flag
*** "--disable-more-warnings" when configuring, or it may fail to
*** build.
- bonobo - 0.29 or later
*** Note that bonobo must be installed with the same --prefix as
*** either gnome-libs or evolution for the Makefiles to work
*** properly.
- libunicode - 0.4 or later, available from
http://www.pango.org/download.shtml
- gconf - 0.6 or later
- gal (GNOME Application Library) - from CVS
- gtkhtml - 0.7 or later
- libglade (*)
If you want support for PalmPilot syncing, currently experimental so
please back up your pilot, you will also need to do the following:
1) pilot-link
cvs -d pserver:anonymous@cvs.gnu-designs.com:/cvs/openpalm login
The password is just <ENTER>.
cvs -d pserver:anonymous@cvs.gnu-designs.com:/cvs/openpalm co pilot-link
./configure --prefix=<pilot-link-prefix> --with-perl=no --with-java=no --with-tcl=no --with-python=no
make
make install
2) gnome-pilot
cvs -z3 co gnome-pilot
./configure --prefix=<gnome-pilot-prefix> --with-pisock=<pilot-link-prefix>
make
make install
3) evolution
in your evo source dir do ./autogen.sh --prefix=<evo-prefix> --with-pisock=<pilot-link-prefix> --enable-pilot-conduits=yes
make
make install
The layout of the source tree is:
addressbook: the Address Book UI
art: graphics used by evolution
calendar: the Calendar UI
camel: libcamel, a messaging library used by the mailer.
Camel is inspired by Sun's JavaMail
(http://java.sun.com/products/javamail/) and the
IMAPv4 spec (RFC 2060).
composer: the message composer UI
data: the .desktop file for Evolution
default_user: initial Evolution config files for new users
devel-docs: entirely inadequate documentation
doc: more adequate documentation
e-util: utility code used by various parts of Evolution
filter: libfilter, a mail filtering library
libibex: an indexing library used by the mailer
libical: a library for the iCalendar format (RFC 2445-2446)
libversit: a library for the vCard (RFC 2425-2426) and vCalendar
(http://www.imc.org/pdi/vcal-10.txt) formats
mail: the mail display UI
shell: the Evolution shell (the main program that launches
the other components)
tests: some test programs
tools: utilities, notably "killev", a script to kill of all
of the Evolution components
widgets: widgets used by Evolution, including the shortcut bar,
ETable, and EText
wombat: Has source code that will load in the addressbook
and calendar backend, and will form the server
process we'll be using
Description
Languages
C
96.8%
JavaScript
1.4%
CMake
1.2%
Makefile
0.2%
Python
0.2%