[pacman-dev] CVS update of pacman-lib (19 files)

Aaron Griffin aaron at archlinux.org
Tue Jan 30 02:47:20 EST 2007


    Date: Tuesday, January 30, 2007 @ 02:47:20
  Author: aaron
    Path: /home/cvs-pacman/pacman-lib

Modified: doc/po/hu.po (1.5 -> 1.6) doc/po/pacman.pot (1.5 -> 1.6)
          lib/libalpm/add.c (1.105 -> 1.106)
          lib/libalpm/alpm.c (1.107 -> 1.108)
          lib/libalpm/alpm.h (1.67 -> 1.68)
          lib/libalpm/alpm_list.c (1.5 -> 1.6)
          lib/libalpm/conflict.c (1.32 -> 1.33)
          lib/libalpm/db.c (1.56 -> 1.57) lib/libalpm/deps.c (1.61 -> 1.62)
          lib/libalpm/error.c (1.15 -> 1.16)
          lib/libalpm/group.c (1.12 -> 1.13)
          lib/libalpm/handle.c (1.28 -> 1.29)
          lib/libalpm/package.c (1.51 -> 1.52)
          lib/libalpm/sync.c (1.93 -> 1.94)
          lib/libalpm/trans.c (1.32 -> 1.33)
          lib/libalpm/util.h (1.19 -> 1.20)
          lib/libalpm/versioncmp.c (1.10 -> 1.11)
          lib/libalpm/versioncmp.h (1.5 -> 1.6)
          src/util/vercmp.c (1.5 -> 1.6)

K. Piche <kpiche at rogers.com>
* gcc visiblity changes

Also modified _alpm_versioncmp -> alpm_versioncmp (public function) as per K.
Piche's suggestions


--------------------------+
 doc/po/hu.po             |   25 ++--
 doc/po/pacman.pot        |  273 ++++++++++++++++++++++-----------------------
 lib/libalpm/add.c        |    6 
 lib/libalpm/alpm.c       |   54 ++++----
 lib/libalpm/alpm.h       |    3 
 lib/libalpm/alpm_list.c  |   16 +-
 lib/libalpm/conflict.c   |    8 -
 lib/libalpm/db.c         |    2 
 lib/libalpm/deps.c       |   10 -
 lib/libalpm/error.c      |    2 
 lib/libalpm/group.c      |    4 
 lib/libalpm/handle.c     |   22 +--
 lib/libalpm/package.c    |   50 ++++----
 lib/libalpm/sync.c       |   10 -
 lib/libalpm/trans.c      |    4 
 lib/libalpm/util.h       |    4 
 lib/libalpm/versioncmp.c |    6 
 lib/libalpm/versioncmp.h |    1 
 src/util/vercmp.c        |    4 
 19 files changed, 258 insertions(+), 246 deletions(-)


Index: pacman-lib/doc/po/hu.po
diff -u pacman-lib/doc/po/hu.po:1.5 pacman-lib/doc/po/hu.po:1.6
--- pacman-lib/doc/po/hu.po:1.5	Fri Dec 22 14:38:55 2006
+++ pacman-lib/doc/po/hu.po	Tue Jan 30 02:47:19 2007
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: pacman\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-12-23  1:35-0600\n"
+"POT-Creation-Date: 2007-01-30 13:43-0600\n"
 "PO-Revision-Date: 2006-08-26 14:53+0200\n"
 "Last-Translator: Hungarian <frugalware-devel at frugalware.org>\n"
 "Language-Team: Hungarian <frugalware-devel at frugalware.org>\n"
@@ -872,7 +872,7 @@
 msgstr ""
 
 # type: Plain text
-#: pacman.8:308
+#: pacman.8:311
 msgid ""
 "Each repository section defines a section name and at least one location "
 "where the packages can be found.  The section name is defined by the string "
@@ -880,17 +880,20 @@
 "Locations are defined with the I<Server> directive and follow a URL naming "
 "structure.  Currently only ftp is supported for remote servers.  If you want "
 "to use a local directory, you can specify the full path with a 'file://' "
-"prefix, as shown above."
+"prefix, as shown above.  The order of repositories in the file matters; "
+"repositories listed first will take precidence over those listed later in "
+"the file when packages in two repositories have identical names, regardless "
+"of version number."
 msgstr ""
 
 # type: SH
-#: pacman.8:308
+#: pacman.8:311
 #, no-wrap
 msgid "USING YOUR OWN REPOSITORY"
 msgstr ""
 
 # type: Plain text
-#: pacman.8:312
+#: pacman.8:315
 msgid ""
 "Let's say you have a bunch of custom packages in I</home/pkgs> and their "
 "respective PKGBUILD files are all in I</var/abs/local>.  All you need to do "
@@ -899,13 +902,13 @@
 msgstr ""
 
 # type: Plain text
-#: pacman.8:316
+#: pacman.8:319
 #, no-wrap
 msgid "# gensync /var/abs/local /home/pkgs/custom.db.tar.gz\n"
 msgstr ""
 
 # type: Plain text
-#: pacman.8:326
+#: pacman.8:329
 msgid ""
 "The above command will read all PKGBUILD files in /var/abs/local and "
 "generate a compressed database called /home/pkgs/custom.db.tar.gz.  Note "
@@ -918,24 +921,24 @@
 msgstr ""
 
 # type: SH
-#: pacman.8:326 makepkg.8:447 PKGBUILD.8:453
+#: pacman.8:329 makepkg.8:447 PKGBUILD.8:453
 #, no-wrap
 msgid "SEE ALSO"
 msgstr "LÁSD MÉG"
 
 # type: Plain text
-#: pacman.8:328
+#: pacman.8:331
 msgid "B<makepkg> is the package-building tool that comes with pacman."
 msgstr ""
 
 # type: SH
-#: pacman.8:328 makepkg.8:452 PKGBUILD.8:456
+#: pacman.8:331 makepkg.8:452 PKGBUILD.8:456
 #, no-wrap
 msgid "AUTHOR"
 msgstr "SZERZÕ"
 
 # type: Plain text
-#: pacman.8:331 makepkg.8:455
+#: pacman.8:334 makepkg.8:455
 #, no-wrap
 msgid "Judd Vinet E<lt>jvinet at zeroflux.orgE<gt>\n"
 msgstr ""
Index: pacman-lib/doc/po/pacman.pot
diff -u pacman-lib/doc/po/pacman.pot:1.5 pacman-lib/doc/po/pacman.pot:1.6
--- pacman-lib/doc/po/pacman.pot:1.5	Fri Dec 22 14:38:55 2006
+++ pacman-lib/doc/po/pacman.pot	Tue Jan 30 02:47:19 2007
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2006-12-23  1:35-0600\n"
+"POT-Creation-Date: 2007-01-30 13:43-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -33,7 +33,7 @@
 msgstr ""
 
 # type: SH
-#: pacman.8:2 makepkg.8:2 PKGBUILD.8:2
+#: pacman.8:2 makepkg.8:2 ./PKGBUILD.8:2
 #, no-wrap
 msgid "NAME"
 msgstr ""
@@ -55,7 +55,7 @@
 msgstr ""
 
 # type: SH
-#: pacman.8:6 makepkg.8:6 PKGBUILD.8:4
+#: pacman.8:6 makepkg.8:6 ./PKGBUILD.8:4
 #, no-wrap
 msgid "DESCRIPTION"
 msgstr ""
@@ -873,7 +873,7 @@
 msgstr ""
 
 # type: Plain text
-#: pacman.8:308
+#: pacman.8:311
 msgid ""
 "Each repository section defines a section name and at least one location "
 "where the packages can be found.  The section name is defined by the string "
@@ -881,17 +881,20 @@
 "Locations are defined with the I<Server> directive and follow a URL naming "
 "structure.  Currently only ftp is supported for remote servers.  If you want "
 "to use a local directory, you can specify the full path with a 'file://' "
-"prefix, as shown above."
+"prefix, as shown above.  The order of repositories in the file matters; "
+"repositories listed first will take precidence over those listed later in "
+"the file when packages in two repositories have identical names, regardless "
+"of version number."
 msgstr ""
 
 # type: SH
-#: pacman.8:308
+#: pacman.8:311
 #, no-wrap
 msgid "USING YOUR OWN REPOSITORY"
 msgstr ""
 
 # type: Plain text
-#: pacman.8:312
+#: pacman.8:315
 msgid ""
 "Let's say you have a bunch of custom packages in I</home/pkgs> and their "
 "respective PKGBUILD files are all in I</var/abs/local>.  All you need to do "
@@ -900,13 +903,13 @@
 msgstr ""
 
 # type: Plain text
-#: pacman.8:316
+#: pacman.8:319
 #, no-wrap
 msgid "# gensync /var/abs/local /home/pkgs/custom.db.tar.gz\n"
 msgstr ""
 
 # type: Plain text
-#: pacman.8:326
+#: pacman.8:329
 msgid ""
 "The above command will read all PKGBUILD files in /var/abs/local and "
 "generate a compressed database called /home/pkgs/custom.db.tar.gz.  Note "
@@ -919,24 +922,24 @@
 msgstr ""
 
 # type: SH
-#: pacman.8:326 makepkg.8:447 PKGBUILD.8:453
+#: pacman.8:329 makepkg.8:447 ./PKGBUILD.8:453
 #, no-wrap
 msgid "SEE ALSO"
 msgstr ""
 
 # type: Plain text
-#: pacman.8:328
+#: pacman.8:331
 msgid "B<makepkg> is the package-building tool that comes with pacman."
 msgstr ""
 
 # type: SH
-#: pacman.8:328 makepkg.8:452 PKGBUILD.8:456
+#: pacman.8:331 makepkg.8:452 ./PKGBUILD.8:456
 #, no-wrap
 msgid "AUTHOR"
 msgstr ""
 
 # type: Plain text
-#: pacman.8:331 makepkg.8:455
+#: pacman.8:334 makepkg.8:455
 #, no-wrap
 msgid "Judd Vinet E<lt>jvinet at zeroflux.orgE<gt>\n"
 msgstr ""
@@ -1013,7 +1016,7 @@
 msgstr ""
 
 # type: SH
-#: makepkg.8:30 PKGBUILD.8:11
+#: makepkg.8:30 ./PKGBUILD.8:11
 #, no-wrap
 msgid "PKGBUILD Example:"
 msgstr ""
@@ -1161,13 +1164,13 @@
 msgstr ""
 
 # type: SH
-#: makepkg.8:116 PKGBUILD.8:121
+#: makepkg.8:116 ./PKGBUILD.8:121
 #, no-wrap
 msgid "Install/Upgrade/Remove Scripting"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:120 PKGBUILD.8:125
+#: makepkg.8:120 ./PKGBUILD.8:125
 msgid ""
 "Pacman has the ability to store and execute a package-specific script when "
 "it installs, removes, or upgrades a package.  This allows a package to "
@@ -1176,73 +1179,73 @@
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:122 PKGBUILD.8:127
+#: makepkg.8:122 ./PKGBUILD.8:127
 msgid "The exact time the script is run varies with each operation:"
 msgstr ""
 
 # type: TP
-#: makepkg.8:122 PKGBUILD.8:127
+#: makepkg.8:122 ./PKGBUILD.8:127
 #, no-wrap
 msgid "B<pre_install>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:125 makepkg.8:133 PKGBUILD.8:130 PKGBUILD.8:138
+#: makepkg.8:125 makepkg.8:133 ./PKGBUILD.8:130 ./PKGBUILD.8:138
 msgid "script is run right before files are extracted."
 msgstr ""
 
 # type: TP
-#: makepkg.8:126 PKGBUILD.8:131
+#: makepkg.8:126 ./PKGBUILD.8:131
 #, no-wrap
 msgid "B<post_install>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:129 PKGBUILD.8:134
+#: makepkg.8:129 ./PKGBUILD.8:134
 msgid "script is run right after files are extracted."
 msgstr ""
 
 # type: TP
-#: makepkg.8:130 PKGBUILD.8:135
+#: makepkg.8:130 ./PKGBUILD.8:135
 #, no-wrap
 msgid "B<pre_upgrade>"
 msgstr ""
 
 # type: TP
-#: makepkg.8:134 PKGBUILD.8:139
+#: makepkg.8:134 ./PKGBUILD.8:139
 #, no-wrap
 msgid "B<post_upgrade>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:137 PKGBUILD.8:142
+#: makepkg.8:137 ./PKGBUILD.8:142
 msgid "script is run after files are extracted."
 msgstr ""
 
 # type: TP
-#: makepkg.8:138 PKGBUILD.8:143
+#: makepkg.8:138 ./PKGBUILD.8:143
 #, no-wrap
 msgid "B<pre_remove>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:141 PKGBUILD.8:146
+#: makepkg.8:141 ./PKGBUILD.8:146
 msgid "script is run right before files are removed."
 msgstr ""
 
 # type: TP
-#: makepkg.8:142 PKGBUILD.8:147
+#: makepkg.8:142 ./PKGBUILD.8:147
 #, no-wrap
 msgid "B<post_remove>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:145 PKGBUILD.8:150
+#: makepkg.8:145 ./PKGBUILD.8:150
 msgid "script is run right after files are removed."
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:149 PKGBUILD.8:154
+#: makepkg.8:149 ./PKGBUILD.8:154
 msgid ""
 "To use this feature, just create a file (eg, pkgname.install) and put it in "
 "the same directory as the PKGBUILD script.  Then use the I<install> "
@@ -1250,7 +1253,7 @@
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:152 PKGBUILD.8:157
+#: makepkg.8:152 ./PKGBUILD.8:157
 #, no-wrap
 msgid "install=pkgname.install\n"
 msgstr ""
@@ -1361,37 +1364,37 @@
 msgstr ""
 
 # type: SH
-#: makepkg.8:220 PKGBUILD.8:179
+#: makepkg.8:220 ./PKGBUILD.8:179
 #, no-wrap
 msgid "PKGBUILD Directives"
 msgstr ""
 
 # type: TP
-#: makepkg.8:221 PKGBUILD.8:180
+#: makepkg.8:221 ./PKGBUILD.8:180
 #, no-wrap
 msgid "B<pkgname>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:225 PKGBUILD.8:184
+#: makepkg.8:225 ./PKGBUILD.8:184
 msgid ""
 "The name of the package.  This has be a unix-friendly name as it will be "
 "used in the package filename."
 msgstr ""
 
 # type: TP
-#: makepkg.8:226 PKGBUILD.8:185
+#: makepkg.8:226 ./PKGBUILD.8:185
 #, no-wrap
 msgid "B<pkgver>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:229 PKGBUILD.8:188
+#: makepkg.8:229 ./PKGBUILD.8:188
 msgid "This is the version of the software as released from the author (eg, 2.7.1)."
 msgstr ""
 
 # type: TP
-#: makepkg.8:230 PKGBUILD.8:189
+#: makepkg.8:230 ./PKGBUILD.8:189
 #, no-wrap
 msgid "B<pkgrel>"
 msgstr ""
@@ -1402,13 +1405,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:234 PKGBUILD.8:193
+#: makepkg.8:234 ./PKGBUILD.8:193
 #, no-wrap
 msgid "B<pkgdesc>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:237 PKGBUILD.8:196
+#: makepkg.8:237 ./PKGBUILD.8:196
 msgid "This should be a brief description of the package and its functionality."
 msgstr ""
 
@@ -1467,20 +1470,20 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:260 PKGBUILD.8:204
+#: makepkg.8:260 ./PKGBUILD.8:204
 #, no-wrap
 msgid "B<url>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:264 PKGBUILD.8:208
+#: makepkg.8:264 ./PKGBUILD.8:208
 msgid ""
 "This field contains an optional URL that is associated with the piece of "
 "software being packaged.  This is typically the project's website."
 msgstr ""
 
 # type: TP
-#: makepkg.8:265 PKGBUILD.8:209
+#: makepkg.8:265 ./PKGBUILD.8:209
 #, no-wrap
 msgid "B<license>"
 msgstr ""
@@ -1507,13 +1510,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:279 PKGBUILD.8:214
+#: makepkg.8:279 ./PKGBUILD.8:214
 #, no-wrap
 msgid "B<install>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:285 PKGBUILD.8:220
+#: makepkg.8:285 ./PKGBUILD.8:220
 msgid ""
 "Specifies a special install script that is to be included in the package.  "
 "This file should reside in the same directory as the PKGBUILD, and will be "
@@ -1522,13 +1525,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:286 PKGBUILD.8:227
+#: makepkg.8:286 ./PKGBUILD.8:227
 #, no-wrap
 msgid "B<source >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:293 PKGBUILD.8:234
+#: makepkg.8:293 ./PKGBUILD.8:234
 msgid ""
 "The I<source> line is an array of source files required to build the "
 "package.  Source files must reside in the same directory as the PKGBUILD "
@@ -1537,7 +1540,7 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:294 PKGBUILD.8:235
+#: makepkg.8:294 ./PKGBUILD.8:235
 #, no-wrap
 msgid "B<md5sums >I<(array)>"
 msgstr ""
@@ -1554,13 +1557,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:303 PKGBUILD.8:261
+#: makepkg.8:303 ./PKGBUILD.8:261
 #, no-wrap
 msgid "B<groups >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:308 PKGBUILD.8:266
+#: makepkg.8:308 ./PKGBUILD.8:266
 msgid ""
 "This is an array of symbolic names that represent groups of packages, "
 "allowing you to install multiple packages by requesting a single target.  "
@@ -1569,13 +1572,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:309 PKGBUILD.8:273
+#: makepkg.8:309 ./PKGBUILD.8:273
 #, no-wrap
 msgid "B<backup >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:316 PKGBUILD.8:280
+#: makepkg.8:316 ./PKGBUILD.8:280
 msgid ""
 "A space-delimited array of filenames (without a preceding slash). The "
 "I<backup> line will be propagated to the package meta-info file for pacman.  "
@@ -1585,13 +1588,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:317 PKGBUILD.8:281
+#: makepkg.8:317 ./PKGBUILD.8:281
 #, no-wrap
 msgid "B<depends >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:325 PKGBUILD.8:289
+#: makepkg.8:325 ./PKGBUILD.8:289
 msgid ""
 "An array of packages that this package depends on to build and run.  "
 "Packages in this list should be surrounded with single quotes and contain at "
@@ -1603,26 +1606,26 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:326 PKGBUILD.8:290
+#: makepkg.8:326 ./PKGBUILD.8:290
 #, no-wrap
 msgid "B<makedepends >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:330 PKGBUILD.8:294
+#: makepkg.8:330 ./PKGBUILD.8:294
 msgid ""
 "An array of packages that this package depends on to build (ie, not required "
 "to run).  Packages in this list should follow the same format as I<depends>."
 msgstr ""
 
 # type: TP
-#: makepkg.8:331 PKGBUILD.8:303
+#: makepkg.8:331 ./PKGBUILD.8:303
 #, no-wrap
 msgid "B<conflicts >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:336 PKGBUILD.8:308
+#: makepkg.8:336 ./PKGBUILD.8:308
 msgid ""
 "An array of packages that will conflict with this package (ie, they cannot "
 "both be installed at the same time).  This directive follows the same format "
@@ -1630,13 +1633,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:337 PKGBUILD.8:309
+#: makepkg.8:337 ./PKGBUILD.8:309
 #, no-wrap
 msgid "B<provides >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:343 PKGBUILD.8:315
+#: makepkg.8:343 ./PKGBUILD.8:315
 msgid ""
 "An array of \"virtual provisions\" that this package provides.  This allows "
 "a package to provide dependency names other than it's own package name.  For "
@@ -1646,13 +1649,13 @@
 msgstr ""
 
 # type: TP
-#: makepkg.8:344 PKGBUILD.8:316
+#: makepkg.8:344 ./PKGBUILD.8:316
 #, no-wrap
 msgid "B<replaces >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: makepkg.8:350 PKGBUILD.8:322
+#: makepkg.8:350 ./PKGBUILD.8:322
 msgid ""
 "This is an array of packages that this package should replace, and can be "
 "used to handle renamed/combined packages.  For example, if the kernel "
@@ -1930,30 +1933,30 @@
 msgstr ""
 
 # type: TH
-#: PKGBUILD.8:1
+#: ./PKGBUILD.8:1
 #, no-wrap
 msgid "PKGBUILD"
 msgstr ""
 
 # type: TH
-#: PKGBUILD.8:1
+#: ./PKGBUILD.8:1
 #, no-wrap
 msgid "June 13, 2006"
 msgstr ""
 
 # type: TH
-#: PKGBUILD.8:1
+#: ./PKGBUILD.8:1
 #, no-wrap
 msgid "Archlinux Developer Manual"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:4
+#: ./PKGBUILD.8:4
 msgid "PKGBUILD - Archlinux package builder descriptor"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:8
+#: ./PKGBUILD.8:8
 msgid ""
 "This manual page is meant to describe general rules about PKGBUILDs. If "
 "you're interested in the package builder B<makepkg> itself, then see its "
@@ -1961,7 +1964,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:17
+#: ./PKGBUILD.8:17
 #, no-wrap
 msgid ""
 "# Last Modified: Sun, 19 Jun 2005 15:24:32 +0000\n"
@@ -1970,7 +1973,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:27
+#: ./PKGBUILD.8:27
 #, no-wrap
 msgid ""
 "pkgname=dvdauthor\n"
@@ -1985,27 +1988,27 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:29
+#: ./PKGBUILD.8:29
 #, no-wrap
 msgid "# optimization OK\n"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:34
+#: ./PKGBUILD.8:34
 msgid ""
 "As you can see, the setup is fairly simple. The first line tracks the time "
 "of the last update, this is automatically updated after a successful build."
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:37
+#: ./PKGBUILD.8:37
 msgid ""
 "The next line defines its build time. Of course, it depends on your "
 "hardware, so we use SBUs instead of minutes as a unit."
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:41
+#: ./PKGBUILD.8:41
 msgid ""
 "SBU is the Static Binutils Unit, which means the time \"repoman merge "
 "binutils\" takes on your machine. By default makepkg will print out how many "
@@ -2014,12 +2017,12 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:43
+#: ./PKGBUILD.8:43
 msgid "SBU=\"257\""
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:47
+#: ./PKGBUILD.8:47
 msgid ""
 "The line above means compiling binutils on your machine took 257 seconds.  "
 "Starting from this point, makepkg will print out SBUs instead of seconds "
@@ -2028,7 +2031,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:53
+#: ./PKGBUILD.8:53
 msgid ""
 "If you wish to maintain the package, write your name or nick and e-mail "
 "address to the third line. If you don't plan to maintain the package just "
@@ -2039,7 +2042,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:61
+#: ./PKGBUILD.8:61
 msgid ""
 "pkgname defines the package name. It should not contain any uppercase "
 "letters.  The package version defines the upstream version, while the "
@@ -2052,14 +2055,14 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:64
+#: ./PKGBUILD.8:64
 msgid ""
 "pkgdesc is a short one-line description for the package. Usually taken from "
 "the project's homepage or manpage. Try to keep the lenght under 80 chars."
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:69
+#: ./PKGBUILD.8:69
 msgid ""
 "depends() is a bash array which defines the dependencies of the package.  "
 "depends() means the other package is required for building and using the "
@@ -2068,7 +2071,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:78
+#: ./PKGBUILD.8:78
 msgid ""
 "The next line is a special Finclude commands which allows you to inherit any "
 "directive from a PKGBUILD scheme. They can be found in the FST, under "
@@ -2081,7 +2084,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:82
+#: ./PKGBUILD.8:82
 msgid ""
 "The groups() array's first element can't be omitted, and it should be a "
 "valid \"first group\". This means it should be in a foo or foo-extra format, "
@@ -2089,7 +2092,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:90
+#: ./PKGBUILD.8:90
 msgid ""
 "The archs() array defines for which architectures the given package is "
 "available. If it's not available, it means that gensync will skip it when "
@@ -2102,7 +2105,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:95
+#: ./PKGBUILD.8:95
 msgid ""
 "The sha1sums() array can be generated with the makepkg -g command. Its "
 "purpose is to prevent compiling from wrong sources, especially when the "
@@ -2111,7 +2114,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:103
+#: ./PKGBUILD.8:103
 msgid ""
 "The last line will be added automatically to the end of the PKGBUILD if the "
 "build() function used your $CFLAGS or $CXXFLAGS. This is handy if you want "
@@ -2123,7 +2126,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:111
+#: ./PKGBUILD.8:111
 msgid ""
 "Finally we define a build() function that will build the package. If you "
 "don't want to do anything special, probably you don't have to specify "
@@ -2135,7 +2138,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:117
+#: ./PKGBUILD.8:117
 msgid ""
 "Once the package is successfully installed into the package root, I<makepkg> "
 "will prepare some documentation. It will then strip debugging info from "
@@ -2145,14 +2148,14 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:120
+#: ./PKGBUILD.8:120
 msgid ""
 "At this point you should have a package file in the current directory, named "
 "something like name-version-release-arch.fpm.  Done!"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:163
+#: ./PKGBUILD.8:163
 msgid ""
 "The install script does not need to be specified in the I<source> array.  If "
 "you omit the install directive then makepkg will check for the "
@@ -2160,19 +2163,19 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:166
+#: ./PKGBUILD.8:166
 msgid ""
 "You can find a scriptlet skeleton in the /docs/tech/skel/ directory, use it "
 "when creating new packages."
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:168
+#: ./PKGBUILD.8:168
 msgid "The scriptlet messages are parsed, a simple example tells you everything:"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:177
+#: ./PKGBUILD.8:177
 #, no-wrap
 msgid ""
 "post_upgrade()\n"
@@ -2186,41 +2189,41 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:192
+#: ./PKGBUILD.8:192
 msgid "This is the release number specific to Archlinux Linux packages."
 msgstr ""
 
 # type: TP
-#: PKGBUILD.8:197
+#: ./PKGBUILD.8:197
 #, no-wrap
 msgid "B<pkgdesc_localized>"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:200
+#: ./PKGBUILD.8:200
 msgid "Array of the localized package descriptions."
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:203
+#: ./PKGBUILD.8:203
 msgid "The format is the following: pkgdesc_localized=('xx_YY foo' 'xx_YY bar')"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:213
+#: ./PKGBUILD.8:213
 msgid ""
 "Sets the license type (eg, \"GPL\", \"BSD\", \"NON-FREE\").  (B<Note>: This "
 "option is still in development and may change in the future)"
 msgstr ""
 
 # type: TP
-#: PKGBUILD.8:221
+#: ./PKGBUILD.8:221
 #, no-wrap
 msgid "B<up2date>"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:226
+#: ./PKGBUILD.8:226
 msgid ""
 "This directive should contain a command that prints the current upstream "
 "stable version of the project. This way we can check for newer version "
@@ -2228,7 +2231,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:243
+#: ./PKGBUILD.8:243
 msgid ""
 "If this field is present, it should contain an MD5 hash for every source "
 "file specified in the I<source> array (in the same order).  makepkg will use "
@@ -2239,13 +2242,13 @@
 msgstr ""
 
 # type: TP
-#: PKGBUILD.8:244
+#: ./PKGBUILD.8:244
 #, no-wrap
 msgid "B<sha1sums >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:252
+#: ./PKGBUILD.8:252
 msgid ""
 "If this field is present, it should contain an SHA1 hash for every source "
 "file specified in the I<source> array (in the same order).  makepkg will use "
@@ -2256,13 +2259,13 @@
 msgstr ""
 
 # type: TP
-#: PKGBUILD.8:253
+#: ./PKGBUILD.8:253
 #, no-wrap
 msgid "B<signatures >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:258
+#: ./PKGBUILD.8:258
 msgid ""
 "If this field is present, it should contain an array of gpg signatures "
 "required to validate the source files. Where there is no signature available "
@@ -2270,18 +2273,18 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:260
+#: ./PKGBUILD.8:260
 msgid "signatures=(${source[0]}.asc '')"
 msgstr ""
 
 # type: TP
-#: PKGBUILD.8:267
+#: ./PKGBUILD.8:267
 #, no-wrap
 msgid "B<archs >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:272
+#: ./PKGBUILD.8:272
 msgid ""
 "This array defines on which architectures the given package is avalibable.  "
 "If it's not available, that will mean that gensync will skip it when "
@@ -2289,13 +2292,13 @@
 msgstr ""
 
 # type: TP
-#: PKGBUILD.8:295
+#: ./PKGBUILD.8:295
 #, no-wrap
 msgid "B<rodepends >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:302
+#: ./PKGBUILD.8:302
 msgid ""
 "An array of packages that this package depends on to run (ie, not required "
 "to build). Generally I<rodepends> should be avoided in favour of I<depends> "
@@ -2305,18 +2308,18 @@
 msgstr ""
 
 # type: TP
-#: PKGBUILD.8:323
+#: ./PKGBUILD.8:323
 #, no-wrap
 msgid "B<options >I<(array)>"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:326
+#: ./PKGBUILD.8:326
 msgid "This is an array of various boolean options. The possible values are:"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:339
+#: ./PKGBUILD.8:339
 #, no-wrap
 msgid ""
 "nodocs     Don't add any documentation automatically (ie. when there'll be\n"
@@ -2337,13 +2340,13 @@
 msgstr ""
 
 # type: SH
-#: PKGBUILD.8:341
+#: ./PKGBUILD.8:341
 #, no-wrap
 msgid "What is the process of chrooted build ?"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:347
+#: ./PKGBUILD.8:347
 msgid ""
 "First, what is chroot? We currently use fakeroot to prevent build() from "
 "modifying the host system, and we use a prefix or DESTDIR directive to "
@@ -2352,7 +2355,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:355
+#: ./PKGBUILD.8:355
 msgid ""
 "This system lacks of the ability to control the list of installed packages "
 "during the build on the system of a packager, the given compiled package "
@@ -2365,14 +2368,14 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:358
+#: ./PKGBUILD.8:358
 msgid ""
 "Of course there is a sollution to avoid this, to use a real chroot instead "
 "of a simple fakeroot. What is this means? The followings:"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:366
+#: ./PKGBUILD.8:366
 msgid ""
 "When starting the build, a core chroot system is installed under "
 "/var/chroot.  (Of course you can change this value under /etc/makepkg.conf.) "
@@ -2384,7 +2387,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:372
+#: ./PKGBUILD.8:372
 msgid ""
 "When you start building with makepkg -R, pacman will install these packages "
 "to /var/chroot if necessary. This will produce a fully \"clean\" Archlinux "
@@ -2394,7 +2397,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:377
+#: ./PKGBUILD.8:377
 msgid ""
 "Here comes the fun part. The packages listed in depends() and makedepends() "
 "are installed to this clean (/var/chroot) system. From this point, this "
@@ -2403,7 +2406,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:381
+#: ./PKGBUILD.8:381
 msgid ""
 "After this the chroot should be cleaned up which means the removal of the "
 "installed depends() and makedepends(). This ensures us not to build from "
@@ -2411,7 +2414,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:385
+#: ./PKGBUILD.8:385
 msgid ""
 "This way we can prevent lots of dependency problems and it is even possible "
 "to build packages for a different Archlinux version. This is quite efficent "
@@ -2419,7 +2422,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:389
+#: ./PKGBUILD.8:389
 msgid ""
 "If the build is failed, the working directory will not be deleted, you can "
 "find it under /var/chroot/var/tmp/fst. Later if you want to clean your "
@@ -2428,20 +2431,20 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:392
+#: ./PKGBUILD.8:392
 msgid ""
 "To activate building in a chroot, you should run makepkg as root at least "
 "with the -R option."
 msgstr ""
 
 # type: SH
-#: PKGBUILD.8:393
+#: ./PKGBUILD.8:393
 #, no-wrap
 msgid "Package splitting"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:397
+#: ./PKGBUILD.8:397
 msgid ""
 "Package splitting means moving out a list of specifed files to subpackages "
 "(like libmysql out of mysql) and then defining the properties of "
@@ -2449,7 +2452,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:402
+#: ./PKGBUILD.8:402
 msgid ""
 "NOTE: if you create several subpackages, maintaining those packages will "
 "require more and more time. Thus, unnecessary splits aren't welcome.  "
@@ -2458,14 +2461,14 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:405
+#: ./PKGBUILD.8:405
 msgid ""
 "The B<subpkgs()> array is to define the pkgnames of the subpackages. From "
 "now all the directives has their subfoo equivalent:"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:421
+#: ./PKGBUILD.8:421
 #, no-wrap
 msgid ""
 "pkgname -E<gt> subpkgs()\n"
@@ -2486,7 +2489,7 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:425
+#: ./PKGBUILD.8:425
 msgid ""
 "Also note that bash does not support two-dimensional arrays, so when "
 "defining the array of arrays, then quotes are the major separators and "
@@ -2494,12 +2497,12 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:427
+#: ./PKGBUILD.8:427
 msgid "Simple example:"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:434
+#: ./PKGBUILD.8:434
 #, no-wrap
 msgid ""
 "Add the followings to your bottom of your PKGBUILD\n"
@@ -2511,14 +2514,14 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:438
+#: ./PKGBUILD.8:438
 msgid ""
 "You may define conflicts, replaces and other directives for your "
 "subpackages, but the requirement is only to define these 5 ones."
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:443
+#: ./PKGBUILD.8:443
 msgid ""
 "The second part is to move some files to the - just defined - "
 "subpackages. You should use the Fsplit command for this at the end of your "
@@ -2527,32 +2530,32 @@
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:446
+#: ./PKGBUILD.8:446
 #, no-wrap
 msgid "Fsplit subpkgname usr/share/\n"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:449
+#: ./PKGBUILD.8:449
 msgid ""
 "This will move the /usr/share dir of the package to the \"subpkgname\" "
 "subpackage."
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:452
+#: ./PKGBUILD.8:452
 msgid ""
 "NOTE: never use a trailing slash when defining file patterns, especially if "
 "you use wildcards in it!"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:456
+#: ./PKGBUILD.8:456
 msgid "B<makepkg>(8), B<pacman>(8)"
 msgstr ""
 
 # type: Plain text
-#: PKGBUILD.8:460
+#: ./PKGBUILD.8:460
 #, no-wrap
 msgid ""
 "Judd Vinet E<lt>jvinet at zeroflux.orgE<gt>\n"
Index: pacman-lib/lib/libalpm/add.c
diff -u pacman-lib/lib/libalpm/add.c:1.105 pacman-lib/lib/libalpm/add.c:1.106
--- pacman-lib/lib/libalpm/add.c:1.105	Tue Jan 30 00:41:13 2007
+++ pacman-lib/lib/libalpm/add.c	Tue Jan 30 02:47:19 2007
@@ -105,7 +105,7 @@
 	return(0);
 }
 
-int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
+int SYMHIDDEN _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
 {
 	pmpkg_t *info = NULL;
 	pmpkg_t *dummy;
@@ -154,7 +154,7 @@
 		if(trans->flags & PM_TRANS_FLAG_FRESHEN) {
 			/* only upgrade/install this package if it is already installed and at a lesser version */
 			dummy = _alpm_db_get_pkgfromcache(db, pkgname);
-			if(dummy == NULL || _alpm_versioncmp(dummy->version, pkgver) >= 0) {
+			if(dummy == NULL || alpm_versioncmp(dummy->version, pkgver) >= 0) {
 				pm_errno = PM_ERR_PKG_CANT_FRESH;
 				goto error;
 			}
@@ -166,7 +166,7 @@
 	for(i = trans->packages; i; i = i->next) {
 		pmpkg_t *pkg = i->data;
 		if(strcmp(pkg->name, pkgname) == 0) {
-			if(_alpm_versioncmp(pkg->version, pkgver) < 0) {
+			if(alpm_versioncmp(pkg->version, pkgver) < 0) {
 				pmpkg_t *newpkg;
 				_alpm_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target list"),
 				          pkg->name, pkg->version, pkgver);
Index: pacman-lib/lib/libalpm/alpm.c
diff -u pacman-lib/lib/libalpm/alpm.c:1.107 pacman-lib/lib/libalpm/alpm.c:1.108
--- pacman-lib/lib/libalpm/alpm.c:1.107	Mon Jan 29 22:46:33 2007
+++ pacman-lib/lib/libalpm/alpm.c	Tue Jan 30 02:47:19 2007
@@ -63,7 +63,7 @@
 
 /* Globals */
 pmhandle_t *handle = NULL;
-enum _pmerrno_t pm_errno;
+enum _pmerrno_t pm_errno SYMEXPORT;
 
 /** \addtogroup alpm_interface Interface Functions
  * @brief Functions to initialize and release libalpm
@@ -75,7 +75,7 @@
  * @param root the full path of the root we'll be installing to (usually /)
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_initialize(const char *root)
+int SYMEXPORT alpm_initialize(const char *root)
 {
 	char str[PATH_MAX];
 
@@ -99,7 +99,7 @@
 /** Release the library.  This should be the last alpm call you make.
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_release()
+int SYMEXPORT alpm_release()
 {
 	int dbs_left = 0;
 
@@ -139,7 +139,7 @@
  * @param treename the name of the repository
  * @return a pmdb_t* on success (the value), NULL on error
  */
-pmdb_t *alpm_db_register(char *treename)
+pmdb_t SYMEXPORT *alpm_db_register(char *treename)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, NULL));
@@ -245,7 +245,7 @@
  * @return 0 on success, > 0 on error (pm_errno is set accordingly), < 0 if up
  * to date
  */
-int alpm_db_update(int force, pmdb_t *db)
+int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
 {
 	alpm_list_t *lp;
 	char path[PATH_MAX];
@@ -330,7 +330,7 @@
  * @param name of the package
  * @return the package entry on success, NULL on error
  */
-pmpkg_t *alpm_db_readpkg(pmdb_t *db, char *name)
+pmpkg_t SYMEXPORT *alpm_db_readpkg(pmdb_t *db, char *name)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -344,7 +344,7 @@
  * @param db pointer to the package database to get the package from
  * @return the list of packages on success, NULL on error
  */
-alpm_list_t *alpm_db_getpkgcache(pmdb_t *db)
+alpm_list_t SYMEXPORT *alpm_db_getpkgcache(pmdb_t *db)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -358,7 +358,7 @@
  * @param name name of the package
  * @return the list of packages on success, NULL on error
  */
-alpm_list_t *alpm_db_whatprovides(pmdb_t *db, char *name)
+alpm_list_t SYMEXPORT *alpm_db_whatprovides(pmdb_t *db, char *name)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -373,7 +373,7 @@
  * @param name of the group
  * @return the groups entry on success, NULL on error
  */
-pmgrp_t *alpm_db_readgrp(pmdb_t *db, char *name)
+pmgrp_t SYMEXPORT *alpm_db_readgrp(pmdb_t *db, char *name)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -387,7 +387,7 @@
  * @param db pointer to the package database to get the group from
  * @return the list of groups on success, NULL on error
  */
-alpm_list_t *alpm_db_getgrpcache(pmdb_t *db)
+alpm_list_t SYMEXPORT *alpm_db_getgrpcache(pmdb_t *db)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -408,7 +408,7 @@
  * @param pkg address of the package pointer
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_pkg_load(char *filename, pmpkg_t **pkg)
+int SYMEXPORT alpm_pkg_load(char *filename, pmpkg_t **pkg)
 {
 	_alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_load");
 
@@ -429,7 +429,7 @@
  * @param pkg package pointer to free
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_pkg_free(pmpkg_t *pkg)
+int SYMEXPORT alpm_pkg_free(pmpkg_t *pkg)
 {
 	_alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_free");
 
@@ -543,9 +543,9 @@
  * @return postive, 0 or negative if ver1 is less, equal or more
  * than ver2, respectively.
  */
-int alpm_pkg_vercmp(const char *ver1, const char *ver2)
+int SYMEXPORT alpm_pkg_vercmp(const char *ver1, const char *ver2)
 {
-	return(_alpm_versioncmp(ver1, ver2));
+	return(alpm_versioncmp(ver1, ver2));
 }
 
 /* internal */
@@ -556,7 +556,7 @@
 	"x86_64",
 };
 
-char *alpm_pkg_name_hasarch(char *pkgname)
+char SYMEXPORT *alpm_pkg_name_hasarch(char *pkgname)
 {
 	/* TODO remove this when we transfer everything over to -ARCH
 	 *
@@ -596,7 +596,7 @@
  * @param db pointer to the package database to search in
  * @return the list of packages on success, NULL on error
  */
-alpm_list_t *alpm_db_search(pmdb_t *db)
+alpm_list_t SYMEXPORT *alpm_db_search(pmdb_t *db)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -622,7 +622,7 @@
  * @param progress progress callback function pointer
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_trans_init(pmtranstype_t type, unsigned int flags,
+int SYMEXPORT alpm_trans_init(pmtranstype_t type, unsigned int flags,
                     alpm_trans_cb_event event, alpm_trans_cb_conv conv,
                     alpm_trans_cb_progress progress)
 {
@@ -651,7 +651,7 @@
 /** Search for packages to upgrade and add them to the transaction.
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_trans_sysupgrade()
+int SYMEXPORT alpm_trans_sysupgrade()
 {
 	pmtrans_t *trans;
 
@@ -669,7 +669,7 @@
  * @param target the name of the target to add
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_trans_addtarget(char *target)
+int SYMEXPORT alpm_trans_addtarget(char *target)
 {
 	pmtrans_t *trans;
 
@@ -689,7 +689,7 @@
  * of an error can be dumped (ie. list of conflicting files)
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_trans_prepare(alpm_list_t **data)
+int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
@@ -706,7 +706,7 @@
  * of an error can be dumped (ie. list of conflicting files)
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_trans_commit(alpm_list_t **data)
+int SYMEXPORT alpm_trans_commit(alpm_list_t **data)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
@@ -726,7 +726,7 @@
 /** Release a transaction.
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_trans_release()
+int SYMEXPORT alpm_trans_release()
 {
 	pmtrans_t *trans;
 	char path[PATH_MAX];
@@ -774,7 +774,7 @@
  * @param fmt output format
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_logaction(char *fmt, ...)
+int SYMEXPORT alpm_logaction(char *fmt, ...)
 {
 	char str[LOG_STR_LEN];
 	va_list args;
@@ -812,7 +812,7 @@
  * @param name name of the file
  * @return the checksum on success, NULL on error
  */
-char *alpm_get_md5sum(char *name)
+char SYMEXPORT *alpm_get_md5sum(char *name)
 {
 	ASSERT(name != NULL, return(NULL));
 
@@ -823,7 +823,7 @@
  * @param name name of the file
  * @return the checksum on success, NULL on error
  */
-char *alpm_get_sha1sum(char *name)
+char SYMEXPORT *alpm_get_sha1sum(char *name)
 {
 	ASSERT(name != NULL, return(NULL));
 
@@ -834,7 +834,7 @@
  * @param url
  * @return the downloaded filename on success, NULL on error
  */
-char *alpm_fetch_pkgurl(char *url)
+char SYMEXPORT *alpm_fetch_pkgurl(char *url)
 {
 	ASSERT(strstr(url, "://"), return(NULL));
 
@@ -847,7 +847,7 @@
  * @param this_section the config current section being parsed
  * @return 0 on success, -1 on error (pm_errno is set accordingly)
  */
-int alpm_parse_config(char *file, alpm_cb_db_register callback, const char *this_section)
+int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const char *this_section)
 {
 	FILE *fp = NULL;
 	char line[PATH_MAX+1];
Index: pacman-lib/lib/libalpm/alpm.h
diff -u pacman-lib/lib/libalpm/alpm.h:1.67 pacman-lib/lib/libalpm/alpm.h:1.68
--- pacman-lib/lib/libalpm/alpm.h:1.67	Tue Jan 23 22:02:54 2007
+++ pacman-lib/lib/libalpm/alpm.h	Tue Jan 30 02:47:20 2007
@@ -486,6 +486,9 @@
 
 char *alpm_strerror(int err);
 
+/* Version Compare */
+int alpm_versioncmp(const char *a, const char *b);
+
 #ifdef __cplusplus
 }
 #endif
Index: pacman-lib/lib/libalpm/alpm_list.c
diff -u pacman-lib/lib/libalpm/alpm_list.c:1.5 pacman-lib/lib/libalpm/alpm_list.c:1.6
--- pacman-lib/lib/libalpm/alpm_list.c:1.5	Mon Jan 29 22:46:33 2007
+++ pacman-lib/lib/libalpm/alpm_list.c	Tue Jan 30 02:47:20 2007
@@ -52,7 +52,7 @@
 /** Free a list, but not the contained data
  *  @param list the list to free
  */
-void alpm_list_free(alpm_list_t *list)
+void SYMEXPORT alpm_list_free(alpm_list_t *list)
 {
 	alpm_list_t *it = list;
 
@@ -67,7 +67,7 @@
  *  @param list the list to free
  *  @param fn a free function for the internal data
  */
-void alpm_list_free_inner(alpm_list_t *list, alpm_list_fn_free fn)
+void SYMEXPORT alpm_list_free_inner(alpm_list_t *list, alpm_list_fn_free fn)
 {
 	alpm_list_t *it = list;
 
@@ -87,7 +87,7 @@
  *  @param data the new item to be added to the list
  *  @return the resultant list, or NULL on failure
  */
-alpm_list_t *alpm_list_add(alpm_list_t *list, void *data)
+alpm_list_t SYMEXPORT *alpm_list_add(alpm_list_t *list, void *data)
 {
 	alpm_list_t *ptr, *lp;
 
@@ -305,7 +305,7 @@
  *  @param list the list to copy
  *  @return a NEW list containing non-duplicated items
  */
-alpm_list_t *alpm_list_remove_dupes(alpm_list_t *list)
+alpm_list_t SYMEXPORT *alpm_list_remove_dupes(alpm_list_t *list)
 { /* TODO does removing the strdup here cause invalid free's anywhere? */
 	alpm_list_t *lp = list, *newlist = NULL;
 	while(lp) {
@@ -354,7 +354,7 @@
  * @param list the list
  * @return the first element in the list
  */
-alpm_list_t *alpm_list_first(alpm_list_t *list)
+alpm_list_t SYMEXPORT *alpm_list_first(alpm_list_t *list)
 {
 	return(list);
 }
@@ -377,7 +377,7 @@
  * @param entry the list entry
  * @return the next element, or NULL when no more elements exist
  */
-alpm_list_t *alpm_list_next(alpm_list_t *entry)
+alpm_list_t SYMEXPORT *alpm_list_next(alpm_list_t *entry)
 {
 	return(entry->next);
 }
@@ -398,7 +398,7 @@
  * @param entry the list entry
  * @return the contained data, or NULL if none
  */
-void *alpm_list_getdata(const alpm_list_t *entry)
+void SYMEXPORT *alpm_list_getdata(const alpm_list_t *entry)
 {
 	if(entry == NULL) return(NULL);
 	return(entry->data);
@@ -410,7 +410,7 @@
  *  @param list the list to operate on
  *  @return the number of list items
  */
-int alpm_list_count(const alpm_list_t *list)
+int SYMEXPORT alpm_list_count(const alpm_list_t *list)
 {
 	unsigned int i = 0;
 	const alpm_list_t *lp = list;
Index: pacman-lib/lib/libalpm/conflict.c
diff -u pacman-lib/lib/libalpm/conflict.c:1.32 pacman-lib/lib/libalpm/conflict.c:1.33
--- pacman-lib/lib/libalpm/conflict.c:1.32	Mon Jan 29 22:46:33 2007
+++ pacman-lib/lib/libalpm/conflict.c	Tue Jan 30 02:47:20 2007
@@ -360,7 +360,7 @@
 	return(conflicts);
 }
 
-const char *alpm_conflict_get_target(pmconflict_t *conflict)
+const char SYMEXPORT *alpm_conflict_get_target(pmconflict_t *conflict)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -369,7 +369,7 @@
 	return conflict->target;
 }
 
-pmconflicttype_t alpm_conflict_get_type(pmconflict_t *conflict)
+pmconflicttype_t SYMEXPORT alpm_conflict_get_type(pmconflict_t *conflict)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
@@ -378,7 +378,7 @@
 	return conflict->type;
 }
 
-const char *alpm_conflict_get_file(pmconflict_t *conflict)
+const char SYMEXPORT *alpm_conflict_get_file(pmconflict_t *conflict)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -387,7 +387,7 @@
 	return conflict->file;
 }
 
-const char *alpm_conflict_get_ctarget(pmconflict_t *conflict)
+const char SYMEXPORT *alpm_conflict_get_ctarget(pmconflict_t *conflict)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
Index: pacman-lib/lib/libalpm/db.c
diff -u pacman-lib/lib/libalpm/db.c:1.56 pacman-lib/lib/libalpm/db.c:1.57
--- pacman-lib/lib/libalpm/db.c:1.56	Tue Jan 23 22:02:54 2007
+++ pacman-lib/lib/libalpm/db.c	Tue Jan 30 02:47:20 2007
@@ -199,7 +199,7 @@
 	return(db);
 }
 
-const char *alpm_db_get_name(pmdb_t *db)
+const char SYMEXPORT *alpm_db_get_name(pmdb_t *db)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
Index: pacman-lib/lib/libalpm/deps.c
diff -u pacman-lib/lib/libalpm/deps.c:1.61 pacman-lib/lib/libalpm/deps.c:1.62
--- pacman-lib/lib/libalpm/deps.c:1.61	Tue Jan 30 00:41:13 2007
+++ pacman-lib/lib/libalpm/deps.c	Tue Jan 30 02:47:20 2007
@@ -646,7 +646,7 @@
 	return(-1);
 }
 
-const char *alpm_dep_get_target(pmdepmissing_t *miss)
+const char SYMEXPORT *alpm_dep_get_target(pmdepmissing_t *miss)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -655,7 +655,7 @@
 	return miss->target;
 }
 
-pmdeptype_t alpm_dep_get_type(pmdepmissing_t *miss)
+pmdeptype_t SYMEXPORT alpm_dep_get_type(pmdepmissing_t *miss)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
@@ -664,7 +664,7 @@
 	return miss->type;
 }
 
-pmdepmod_t alpm_dep_get_mod(pmdepmissing_t *miss)
+pmdepmod_t SYMEXPORT alpm_dep_get_mod(pmdepmissing_t *miss)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
@@ -673,7 +673,7 @@
 	return miss->depend.mod;
 }
 
-const char *alpm_dep_get_name(pmdepmissing_t *miss)
+const char SYMEXPORT *alpm_dep_get_name(pmdepmissing_t *miss)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -682,7 +682,7 @@
 	return miss->depend.name;
 }
 
-const char *alpm_dep_get_version(pmdepmissing_t *miss)
+const char SYMEXPORT *alpm_dep_get_version(pmdepmissing_t *miss)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
Index: pacman-lib/lib/libalpm/error.c
diff -u pacman-lib/lib/libalpm/error.c:1.15 pacman-lib/lib/libalpm/error.c:1.16
--- pacman-lib/lib/libalpm/error.c:1.15	Thu Jan 18 11:53:00 2007
+++ pacman-lib/lib/libalpm/error.c	Tue Jan 30 02:47:20 2007
@@ -26,7 +26,7 @@
 #include "util.h"
 #include "alpm.h"
 
-char *alpm_strerror(int err)
+char SYMEXPORT *alpm_strerror(int err)
 {
 	switch(err) {
 		/* System */
Index: pacman-lib/lib/libalpm/group.c
diff -u pacman-lib/lib/libalpm/group.c:1.12 pacman-lib/lib/libalpm/group.c:1.13
--- pacman-lib/lib/libalpm/group.c:1.12	Mon Jan 22 20:34:58 2007
+++ pacman-lib/lib/libalpm/group.c	Tue Jan 30 02:47:20 2007
@@ -70,7 +70,7 @@
 	return(strcmp(grp1->name, grp2->name));
 }
 
-const char *alpm_grp_get_name(pmgrp_t *grp)
+const char SYMEXPORT *alpm_grp_get_name(pmgrp_t *grp)
 {
 	/* Sanity checks */
 	ASSERT(grp != NULL, return(NULL));
@@ -78,7 +78,7 @@
 	return grp->name;
 }
 
-alpm_list_t *alpm_grp_get_packages(pmgrp_t *grp)
+alpm_list_t SYMEXPORT *alpm_grp_get_packages(pmgrp_t *grp)
 {
 	/* Sanity checks */
 	ASSERT(grp != NULL, return(NULL));
Index: pacman-lib/lib/libalpm/handle.c
diff -u pacman-lib/lib/libalpm/handle.c:1.28 pacman-lib/lib/libalpm/handle.c:1.29
--- pacman-lib/lib/libalpm/handle.c:1.28	Tue Jan 23 22:02:54 2007
+++ pacman-lib/lib/libalpm/handle.c	Tue Jan 30 02:47:20 2007
@@ -118,9 +118,9 @@
 alpm_cb_log alpm_option_get_logcb() { return handle->logcb; }
 alpm_cb_download alpm_option_get_dlcb() { return handle->dlcb; }
 unsigned short alpm_option_get_logmask() { return handle->logmask; }
-const char *alpm_option_get_root() { return handle->root; }
-const char *alpm_option_get_dbpath() { return handle->dbpath; }
-const char *alpm_option_get_cachedir() { return handle->cachedir; }
+const char SYMEXPORT *alpm_option_get_root() { return handle->root; }
+const char SYMEXPORT *alpm_option_get_dbpath() { return handle->dbpath; }
+const char SYMEXPORT *alpm_option_get_cachedir() { return handle->cachedir; }
 const char *alpm_option_get_logfile() { return handle->logfile; }
 unsigned short alpm_option_get_usesyslog() { return handle->usesyslog; }
 alpm_list_t *alpm_option_get_noupgrades() { return handle->noupgrade; }
@@ -130,21 +130,21 @@
 time_t alpm_option_get_upgradedelay() { return handle->upgradedelay; }
 const char *alpm_option_get_xfercommand() { return handle->xfercommand; }
 unsigned short alpm_option_get_nopassiveftp() { return handle->nopassiveftp; }
-unsigned short alpm_option_get_chomp() { return handle->chomp; }
+unsigned short SYMEXPORT alpm_option_get_chomp() { return handle->chomp; }
 alpm_list_t *alpm_option_get_needles() { return handle->needles; }
 unsigned short alpm_option_get_usecolor() { return handle->use_color; }
 
 pmdb_t *alpm_option_get_localdb() { return handle->db_local; }
-alpm_list_t *alpm_option_get_syncdbs()
+alpm_list_t SYMEXPORT *alpm_option_get_syncdbs()
 {
   return handle->dbs_sync;
 }
 
-void alpm_option_set_logcb(alpm_cb_log cb) { handle->logcb = cb; }
+void SYMEXPORT alpm_option_set_logcb(alpm_cb_log cb) { handle->logcb = cb; }
 
-void alpm_option_set_dlcb(alpm_cb_download cb) { handle->dlcb = cb; }
+void SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb) { handle->dlcb = cb; }
 
-void alpm_option_set_logmask(unsigned short mask) { handle->logmask = mask; }
+void SYMEXPORT alpm_option_set_logmask(unsigned short mask) { handle->logmask = mask; }
 
 void alpm_option_set_root(const char *root)
 {
@@ -152,7 +152,7 @@
 	if(root) handle->root = strdup(root);
 }
 
-void alpm_option_set_dbpath(const char *dbpath)
+void SYMEXPORT alpm_option_set_dbpath(const char *dbpath)
 {
   if(handle->dbpath) FREE(handle->dbpath);
   if(dbpath) handle->dbpath = strdup(dbpath);
@@ -205,7 +205,7 @@
 	if(noextract) handle->noextract = noextract;
 }
 
-void alpm_option_add_ignorepkg(char *pkg)
+void SYMEXPORT alpm_option_add_ignorepkg(char *pkg)
 {
   handle->ignorepkg = alpm_list_add(handle->ignorepkg, strdup(pkg));
 }
@@ -243,7 +243,7 @@
 
 void alpm_option_set_chomp(unsigned short chomp) { handle->chomp = chomp; }
 
-void alpm_option_add_needle(char *needle)
+void SYMEXPORT alpm_option_add_needle(char *needle)
 {
   handle->needles = alpm_list_add(handle->needles, strdup(needle));
 }
Index: pacman-lib/lib/libalpm/package.c
diff -u pacman-lib/lib/libalpm/package.c:1.51 pacman-lib/lib/libalpm/package.c:1.52
--- pacman-lib/lib/libalpm/package.c:1.51	Wed Jan 24 03:51:51 2007
+++ pacman-lib/lib/libalpm/package.c	Tue Jan 30 02:47:20 2007
@@ -457,7 +457,7 @@
 	return pkg->filename;
 }
 
-const char *alpm_pkg_get_name(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_name(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -466,7 +466,7 @@
 	return pkg->name;
 }
 
-const char *alpm_pkg_get_version(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_version(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -475,7 +475,7 @@
 	return pkg->version;
 }
 
-const char *alpm_pkg_get_desc(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_desc(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -487,7 +487,7 @@
 	return pkg->desc;
 }
 
-const char *alpm_pkg_get_url(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_url(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -499,7 +499,7 @@
 	return pkg->url;
 }
 
-const char *alpm_pkg_get_builddate(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_builddate(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -511,7 +511,7 @@
 	return pkg->builddate;
 }
 
-const char *alpm_pkg_get_buildtype(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_buildtype(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -523,7 +523,7 @@
 	return pkg->buildtype;
 }
 
-const char *alpm_pkg_get_installdate(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_installdate(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -535,7 +535,7 @@
 	return pkg->installdate;
 }
 
-const char *alpm_pkg_get_packager(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_packager(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -547,7 +547,7 @@
 	return pkg->packager;
 }
 
-const char *alpm_pkg_get_md5sum(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_md5sum(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -559,7 +559,7 @@
 	return pkg->md5sum;
 }
 
-const char *alpm_pkg_get_sha1sum(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_sha1sum(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -571,7 +571,7 @@
 	return pkg->sha1sum;
 }
 
-const char *alpm_pkg_get_arch(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_arch(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -583,7 +583,7 @@
 	return pkg->arch;
 }
 
-unsigned long alpm_pkg_get_size(pmpkg_t *pkg)
+unsigned long SYMEXPORT alpm_pkg_get_size(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
@@ -595,7 +595,7 @@
 	return pkg->size;
 }
 
-unsigned long alpm_pkg_get_isize(pmpkg_t *pkg)
+unsigned long SYMEXPORT alpm_pkg_get_isize(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
@@ -607,7 +607,7 @@
 	return pkg->isize;
 }
 
-pmpkgreason_t alpm_pkg_get_reason(pmpkg_t *pkg)
+pmpkgreason_t SYMEXPORT alpm_pkg_get_reason(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
@@ -619,7 +619,7 @@
 	return pkg->reason;
 }
 
-alpm_list_t *alpm_pkg_get_licenses(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_licenses(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -631,7 +631,7 @@
 	return pkg->license;
 }
 
-alpm_list_t *alpm_pkg_get_groups(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_groups(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -644,7 +644,7 @@
 }
 
 /* depends */
-alpm_list_t *alpm_pkg_get_depends(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_depends(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -656,7 +656,7 @@
 	return pkg->depends;
 }
 
-alpm_list_t *alpm_pkg_get_removes(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_removes(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -668,7 +668,7 @@
 	return pkg->removes;
 }
 
-alpm_list_t *alpm_pkg_get_requiredby(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_requiredby(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -680,7 +680,7 @@
 	return pkg->requiredby;
 }
 
-alpm_list_t *alpm_pkg_get_conflicts(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_conflicts(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -692,7 +692,7 @@
 	return pkg->conflicts;
 }
 
-alpm_list_t *alpm_pkg_get_provides(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_provides(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -704,7 +704,7 @@
 	return pkg->provides;
 }
 
-alpm_list_t *alpm_pkg_get_replaces(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_replaces(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -716,7 +716,7 @@
 	return pkg->replaces;
 }
 
-alpm_list_t *alpm_pkg_get_files(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_files(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -729,7 +729,7 @@
 	return pkg->files;
 }
 
-alpm_list_t *alpm_pkg_get_backup(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_backup(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
@@ -742,7 +742,7 @@
 	return pkg->backup;
 }
 
-unsigned short alpm_pkg_has_scriptlet(pmpkg_t *pkg)
+unsigned short SYMEXPORT alpm_pkg_has_scriptlet(pmpkg_t *pkg)
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
Index: pacman-lib/lib/libalpm/sync.c
diff -u pacman-lib/lib/libalpm/sync.c:1.93 pacman-lib/lib/libalpm/sync.c:1.94
--- pacman-lib/lib/libalpm/sync.c:1.93	Mon Jan 29 22:46:34 2007
+++ pacman-lib/lib/libalpm/sync.c	Tue Jan 30 02:47:20 2007
@@ -227,7 +227,7 @@
 			}
 
 			/* compare versions and see if we need to upgrade */
-			cmp = _alpm_versioncmp(local->version, spkg->version);
+			cmp = alpm_versioncmp(local->version, spkg->version);
 			if(cmp > 0 && !spkg->force) {
 				/* local version is newer */
 				pmdb_t *db = spkg->data;
@@ -340,7 +340,7 @@
 
 	local = _alpm_db_get_pkgfromcache(db_local, spkg->name);
 	if(local) {
-		cmp = _alpm_versioncmp(local->version, spkg->version);
+		cmp = alpm_versioncmp(local->version, spkg->version);
 		if(cmp > 0 && !spkg->force) {
 			/* local version is newer -- get confirmation before adding */
 			int resp = 0;
@@ -1069,7 +1069,7 @@
 	return(-1);
 }
 
-pmsynctype_t alpm_sync_get_type(pmsyncpkg_t *sync)
+pmsynctype_t SYMEXPORT alpm_sync_get_type(pmsyncpkg_t *sync)
 {
 	/* Sanity checks */
 	ASSERT(sync != NULL, return(-1));
@@ -1077,7 +1077,7 @@
 	return sync->type;
 }
 
-pmpkg_t *alpm_sync_get_package(pmsyncpkg_t *sync)
+pmpkg_t SYMEXPORT *alpm_sync_get_package(pmsyncpkg_t *sync)
 {
 	/* Sanity checks */
 	ASSERT(sync != NULL, return(NULL));
@@ -1085,7 +1085,7 @@
 	return sync->pkg;
 }
 
-void *alpm_sync_get_data(pmsyncpkg_t *sync)
+void SYMEXPORT *alpm_sync_get_data(pmsyncpkg_t *sync)
 {
 	/* Sanity checks */
 	ASSERT(sync != NULL, return(NULL));
Index: pacman-lib/lib/libalpm/trans.c
diff -u pacman-lib/lib/libalpm/trans.c:1.32 pacman-lib/lib/libalpm/trans.c:1.33
--- pacman-lib/lib/libalpm/trans.c:1.32	Mon Jan 29 22:46:34 2007
+++ pacman-lib/lib/libalpm/trans.c	Tue Jan 30 02:47:20 2007
@@ -237,7 +237,7 @@
 	return handle->trans->type;
 }
 
-unsigned int alpm_trans_get_flags()
+unsigned int SYMEXPORT alpm_trans_get_flags()
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(-1));
@@ -255,7 +255,7 @@
 	return handle->trans->targets;
 }
 
-alpm_list_t * alpm_trans_get_packages()
+alpm_list_t SYMEXPORT * alpm_trans_get_packages()
 {
 	/* Sanity checks */
 	ASSERT(handle != NULL, return(NULL));
Index: pacman-lib/lib/libalpm/util.h
diff -u pacman-lib/lib/libalpm/util.h:1.19 pacman-lib/lib/libalpm/util.h:1.20
--- pacman-lib/lib/libalpm/util.h:1.19	Tue Jan 23 22:02:54 2007
+++ pacman-lib/lib/libalpm/util.h	Tue Jan 30 02:47:20 2007
@@ -76,6 +76,10 @@
 char* mkdtemp(char *template);
 #endif
 
+/* check exported library symbols with: nm -C -D <lib> */
+#define SYMEXPORT __attribute__((visibility("default")))
+#define SYMHIDDEN __attribute__((visibility("hidden")))
+
 #endif /* _ALPM_UTIL_H */
 
 /* vim: set ts=2 sw=2 noet: */
Index: pacman-lib/lib/libalpm/versioncmp.c
diff -u pacman-lib/lib/libalpm/versioncmp.c:1.10 pacman-lib/lib/libalpm/versioncmp.c:1.11
--- pacman-lib/lib/libalpm/versioncmp.c:1.10	Mon Jan 29 22:46:34 2007
+++ pacman-lib/lib/libalpm/versioncmp.c	Tue Jan 30 02:47:20 2007
@@ -148,7 +148,7 @@
 #endif
 
 /* this function was taken from rpm 4.0.4 and rewritten */
-int _alpm_versioncmp(const char *a, const char *b)
+int SYMEXPORT alpm_versioncmp(const char *a, const char *b)
 {
 	char str1[64], str2[64];
 	char *ptr1, *ptr2;
@@ -236,7 +236,7 @@
 
 	if((!*one) && (!*two)) {
 		/* compare release numbers */
-		if(rel1 && rel2) return(_alpm_versioncmp(rel1, rel2));
+		if(rel1 && rel2) return(alpm_versioncmp(rel1, rel2));
 		return(0);
 	}
 
@@ -252,7 +252,7 @@
 		if(dep->mod == PM_DEP_MOD_ANY) {
 			equal = 1;
 		} else {
-			int cmp = _alpm_versioncmp(pkg->version, dep->version);
+			int cmp = alpm_versioncmp(pkg->version, dep->version);
 			switch(dep->mod) {
 				case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
 				case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
Index: pacman-lib/lib/libalpm/versioncmp.h
diff -u pacman-lib/lib/libalpm/versioncmp.h:1.5 pacman-lib/lib/libalpm/versioncmp.h:1.6
--- pacman-lib/lib/libalpm/versioncmp.h:1.5	Wed Nov 22 04:03:42 2006
+++ pacman-lib/lib/libalpm/versioncmp.h	Tue Jan 30 02:47:20 2007
@@ -26,7 +26,6 @@
 #include "deps.h"
 #include "package.h"
 
-int _alpm_versioncmp(const char *a, const char *b);
 int _alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep);
 
 #endif
Index: pacman-lib/src/util/vercmp.c
diff -u pacman-lib/src/util/vercmp.c:1.5 pacman-lib/src/util/vercmp.c:1.6
--- pacman-lib/src/util/vercmp.c:1.5	Wed Nov 22 21:36:26 2006
+++ pacman-lib/src/util/vercmp.c	Tue Jan 30 02:47:20 2007
@@ -27,7 +27,7 @@
 #ifndef PATH_MAX
 #define PATH_MAX 1024
 #endif
-#include "versioncmp.h"
+#include <alpm.h>
 
 int main(int argc, char *argv[])
 {
@@ -45,7 +45,7 @@
 		return(0);
 	}
 	
-	ret = _alpm_versioncmp(s1, s2);
+	ret = alpm_versioncmp(s1, s2);
 	printf("%d\n", ret);
 	return(ret);
 }




More information about the pacman-dev mailing list