[pacman-dev] CVS update of pacman-lib/src/util (Makefile.am testpkg.c)

Aaron Griffin aaron at archlinux.org
Sun Feb 11 20:30:03 EST 2007


    Date: Sunday, February 11, 2007 @ 20:30:03
  Author: aaron
    Path: /home/cvs-pacman/pacman-lib/src/util

   Added: testpkg.c (1.1)
Modified: Makefile.am (1.7 -> 1.8)

Added 'testpkg' binary to test for validity of a package:
  testpkg <package file>, returns 0 on success, 1 on failure
  failure will also output error messages to stdout


-------------+
 Makefile.am |    6 +++-
 testpkg.c   |   70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 2 deletions(-)


Index: pacman-lib/src/util/Makefile.am
diff -u pacman-lib/src/util/Makefile.am:1.7 pacman-lib/src/util/Makefile.am:1.8
--- pacman-lib/src/util/Makefile.am:1.7	Mon Jan 29 17:18:32 2007
+++ pacman-lib/src/util/Makefile.am	Sun Feb 11 20:30:02 2007
@@ -1,7 +1,9 @@
-bin_PROGRAMS = vercmp
+bin_PROGRAMS = vercmp testpkg
 
 AM_CFLAGS = -I$(top_srcdir)/lib/libalpm
 
 vercmp_SOURCES = vercmp.c
+vercmp_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.so
 
-vercmp_LDADD = $(top_builddir)/lib/libalpm/libalpm.la
+testpkg_SOURCES = testpkg.c
+testpkg_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.so
Index: pacman-lib/src/util/testpkg.c
diff -u /dev/null pacman-lib/src/util/testpkg.c:1.1
--- /dev/null	Sun Feb 11 20:30:03 2007
+++ pacman-lib/src/util/testpkg.c	Sun Feb 11 20:30:03 2007
@@ -0,0 +1,70 @@
+/*
+ *  testpkg.c : Test a pacman package for validity
+ *
+ *  Copyright (c) 2007 by Aaron Griffin <aaronmgriffin at gmail.com>
+ * 
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 
+ *  USA.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <libgen.h>
+
+#include <alpm.h>
+
+void output_cb(unsigned short level, char *msg)
+{
+	if(strlen(msg)) {
+        switch(level) {
+        case PM_LOG_ERROR: printf("error: "); break;
+        case PM_LOG_WARNING: printf("warning: "); break;
+        }
+        puts(msg);
+    }
+}
+
+int main(int argc, char **argv)
+{
+    int retval = 1; /* default = false */
+    pmpkg_t *pkg = NULL;
+
+    if(argc != 2) {
+		fprintf(stderr, "usage: %s <package file>\n", basename(argv[0]));
+		return(1);
+	}
+
+	if(alpm_initialize() == -1) {
+		fprintf(stderr, "cannot initilize alpm: %s\n", alpm_strerror(pm_errno));
+        return(1);
+	}
+
+    /* let us get log messages from libalpm */
+	alpm_option_set_logcb(output_cb);
+
+	if(alpm_pkg_load(argv[1], &pkg) == -1 || pkg == NULL) {
+        retval = 1;
+	} else {
+		alpm_pkg_free(pkg);
+        retval = 0;
+	}
+    
+	if(alpm_release() == -1) {
+		fprintf(stderr, "error releasing alpm: %s\n", alpm_strerror(pm_errno));
+	}
+
+    return(retval);
+}




More information about the pacman-dev mailing list