|
|
7a2e31 |
--- docs/man/CMakeLists.txt.orig 2024-02-07 13:36:51.000000000 +0000
|
|
|
7a2e31 |
+++ docs/man/CMakeLists.txt 2024-02-09 10:36:43.300952115 +0000
|
|
|
5b17a5 |
@@ -2,6 +2,7 @@ set(core
|
|
|
5b17a5 |
gendiff.1 rpm2cpio.8
|
|
|
5b17a5 |
rpm.8 rpmbuild.8 rpmdb.8 rpmkeys.8 rpmsign.8 rpmspec.8
|
|
|
5b17a5 |
rpmdeps.8 rpmgraph.8 rpmlua.8 rpm-misc.8 rpmsort.8
|
|
|
5b17a5 |
+ rpmqpack.8
|
|
|
5b17a5 |
)
|
|
|
5b17a5 |
set(extra
|
|
|
5b17a5 |
rpm2archive.8 rpm-plugins.8 rpm-plugin-prioreset.8 rpm-plugin-syslog.8
|
|
|
7a2e31 |
--- docs/man/rpmqpack.8.orig 2024-02-09 10:36:43.300952115 +0000
|
|
|
7a2e31 |
+++ docs/man/rpmqpack.8 2024-02-09 10:36:43.300952115 +0000
|
|
Bernhard M. Wiedemann |
1250f9 |
@@ -0,0 +1,25 @@
|
|
Bernhard M. Wiedemann |
1250f9 |
+.TH RPMQPACK 8 "Mar 2002"
|
|
Bernhard M. Wiedemann |
1250f9 |
+.SH NAME
|
|
Bernhard M. Wiedemann |
1250f9 |
+rpmqpack \- check for installed rpm packages
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
1250f9 |
+.SH SYNOPSIS
|
|
Bernhard M. Wiedemann |
1250f9 |
+.B rpmqpack
|
|
Bernhard M. Wiedemann |
1250f9 |
+.RI [ pack1 "] [" pack2 ]...
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
1250f9 |
+.SH DESCRIPTION
|
|
Bernhard M. Wiedemann |
1250f9 |
+rpmqpack checks if packages given as arguments are installed in
|
|
Bernhard M. Wiedemann |
1250f9 |
+the system. It prints each installed package to stdout.
|
|
Bernhard M. Wiedemann |
1250f9 |
+If no arguments are given all installed packages are printed.
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
1250f9 |
+.SH EXIT STATUS
|
|
Bernhard M. Wiedemann |
1250f9 |
+rpmqpack returns 0 if all given packages are installed, otherwise
|
|
Bernhard M. Wiedemann |
1250f9 |
+1.
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
1250f9 |
+.SH SEE ALSO
|
|
Bernhard M. Wiedemann |
1250f9 |
+.BR rpm (1)
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
1250f9 |
+.SH COPYRIGHT
|
|
Bernhard M. Wiedemann |
1250f9 |
+2002 SUSE Linux AG Nuernberg, Germany.
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
1250f9 |
+.SH AUTHOR
|
|
Bernhard M. Wiedemann |
1250f9 |
+Michael Schroeder <mls@suse.de>
|
|
|
7a2e31 |
--- tools/CMakeLists.txt.orig 2024-02-07 13:36:51.000000000 +0000
|
|
|
7a2e31 |
+++ tools/CMakeLists.txt 2024-02-09 10:37:32.932875459 +0000
|
|
|
5b17a5 |
@@ -7,6 +7,7 @@ add_executable(rpm2cpio rpm2cpio.c cliut
|
|
|
5b17a5 |
add_executable(rpmsign rpmsign.c cliutils)
|
|
|
5b17a5 |
add_executable(rpmbuild rpmbuild.c cliutils)
|
|
|
5b17a5 |
add_executable(rpmspec rpmspec.c cliutils)
|
|
|
5b17a5 |
+add_executable(rpmqpack rpmqpack.c)
|
|
|
5b17a5 |
|
|
|
5b17a5 |
add_executable(rpmdeps rpmdeps.c)
|
|
|
5b17a5 |
add_executable(rpmgraph rpmgraph.c)
|
|
|
7a2e31 |
@@ -60,7 +61,7 @@ foreach(cmd rpmverify rpmquery)
|
|
|
5b17a5 |
endforeach()
|
|
|
5b17a5 |
install(TARGETS
|
|
|
5b17a5 |
rpm rpmdb rpmkeys rpm2cpio rpmsign rpmbuild rpmspec
|
|
|
7a2e31 |
- rpmlua rpmgraph
|
|
|
7a2e31 |
+ rpmlua rpmgraph rpmqpack
|
|
|
5b17a5 |
)
|
|
|
7a2e31 |
install(TARGETS rpmdeps rpmuncompress DESTINATION ${RPM_CONFIGDIR})
|
|
|
5b17a5 |
|
|
|
7a2e31 |
--- tools/rpmqpack.c.orig 2024-02-09 10:36:43.300952115 +0000
|
|
|
7a2e31 |
+++ tools/rpmqpack.c 2024-02-09 10:36:43.300952115 +0000
|
|
Bernhard M. Wiedemann |
018f1b |
@@ -0,0 +1,60 @@
|
|
Bernhard M. Wiedemann |
1250f9 |
+#include <sys/types.h>
|
|
Bernhard M. Wiedemann |
1250f9 |
+#include <limits.h>
|
|
Bernhard M. Wiedemann |
1250f9 |
+#include <fcntl.h>
|
|
Bernhard M. Wiedemann |
1250f9 |
+#include <stdio.h>
|
|
Bernhard M. Wiedemann |
1250f9 |
+#include <stdlib.h>
|
|
Bernhard M. Wiedemann |
1250f9 |
+#include <string.h>
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
018f1b |
+#include <rpm/rpmts.h>
|
|
Bernhard M. Wiedemann |
018f1b |
+#include <rpm/rpmdb.h>
|
|
Bernhard M. Wiedemann |
018f1b |
+#include <rpm/rpmmacro.h>
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
1250f9 |
+int
|
|
Bernhard M. Wiedemann |
1250f9 |
+main(int argc, char **argv)
|
|
Bernhard M. Wiedemann |
1250f9 |
+{
|
|
Bernhard M. Wiedemann |
1250f9 |
+ int ret = 0;
|
|
Bernhard M. Wiedemann |
018f1b |
+ rpmts ts;
|
|
Bernhard M. Wiedemann |
1250f9 |
+
|
|
Bernhard M. Wiedemann |
018f1b |
+ rpmDefineMacro(NULL, "_dbpath /var/lib/rpm", 0);
|
|
Bernhard M. Wiedemann |
018f1b |
+ ts = rpmtsCreate();
|
|
Bernhard M. Wiedemann |
018f1b |
+ if (!ts)
|
|
Bernhard M. Wiedemann |
1250f9 |
+ {
|
|
Bernhard M. Wiedemann |
018f1b |
+ fprintf(stderr, "rpmtsCreate failed\n");
|
|
Bernhard M. Wiedemann |
1250f9 |
+ exit(1);
|
|
Bernhard M. Wiedemann |
1250f9 |
+ }
|
|
Bernhard M. Wiedemann |
018f1b |
+ if (rpmtsOpenDB(ts, O_RDONLY))
|
|
Bernhard M. Wiedemann |
1250f9 |
+ {
|
|
Bernhard M. Wiedemann |
018f1b |
+ perror("rpmtsOpenDB");
|
|
Bernhard M. Wiedemann |
1250f9 |
+ exit(1);
|
|
Bernhard M. Wiedemann |
1250f9 |
+ }
|
|
Bernhard M. Wiedemann |
018f1b |
+ if (argc <= 1)
|
|
Bernhard M. Wiedemann |
1250f9 |
+ {
|
|
Bernhard M. Wiedemann |
018f1b |
+ rpmdbIndexIterator ii;
|
|
Bernhard M. Wiedemann |
018f1b |
+ ii = rpmdbIndexIteratorInit(rpmtsGetRdb(ts), RPMDBI_NAME);
|
|
Bernhard M. Wiedemann |
018f1b |
+ if (ii)
|
|
Bernhard M. Wiedemann |
1250f9 |
+ {
|
|
Bernhard M. Wiedemann |
018f1b |
+ const void *key = 0;
|
|
Bernhard M. Wiedemann |
018f1b |
+ size_t keylen = 0;
|
|
Bernhard M. Wiedemann |
018f1b |
+ while ((rpmdbIndexIteratorNext(ii, &key, &keylen)) == 0)
|
|
Bernhard M. Wiedemann |
018f1b |
+ printf("%*.*s\n", (int)keylen, (int)keylen, (char *)key);
|
|
Bernhard M. Wiedemann |
1250f9 |
+ }
|
|
Bernhard M. Wiedemann |
018f1b |
+ rpmdbIndexIteratorFree(ii);
|
|
Bernhard M. Wiedemann |
1250f9 |
+ }
|
|
Bernhard M. Wiedemann |
1250f9 |
+ else
|
|
Bernhard M. Wiedemann |
1250f9 |
+ {
|
|
Bernhard M. Wiedemann |
1250f9 |
+ argc--;
|
|
Bernhard M. Wiedemann |
1250f9 |
+ while (argc--)
|
|
Bernhard M. Wiedemann |
1250f9 |
+ {
|
|
Bernhard M. Wiedemann |
018f1b |
+ rpmdbMatchIterator mi;
|
|
Bernhard M. Wiedemann |
1250f9 |
+ argv++;
|
|
Bernhard M. Wiedemann |
018f1b |
+ mi = rpmdbInitIterator(rpmtsGetRdb(ts), RPMDBI_NAME, (void *)*argv, strlen(*argv));
|
|
Bernhard M. Wiedemann |
018f1b |
+ if (mi && rpmdbGetIteratorCount(mi))
|
|
Bernhard M. Wiedemann |
1250f9 |
+ printf("%s\n", *argv);
|
|
Bernhard M. Wiedemann |
018f1b |
+ else
|
|
Bernhard M. Wiedemann |
1250f9 |
+ ret = 1;
|
|
Bernhard M. Wiedemann |
018f1b |
+ rpmdbFreeIterator(mi);
|
|
Bernhard M. Wiedemann |
018f1b |
+ }
|
|
Bernhard M. Wiedemann |
1250f9 |
+ }
|
|
Bernhard M. Wiedemann |
018f1b |
+ rpmtsFree(ts);
|
|
Bernhard M. Wiedemann |
1250f9 |
+ return ret;
|
|
Bernhard M. Wiedemann |
1250f9 |
+}
|