@@ -103,7 +103,7 @@ main(int argc, char **argv)
103103 struct xferstat xfer ;
104104 const char * version , * rootdir = NULL , * confdir = NULL ;
105105 char pkgname [XBPS_NAME_SIZE ], * filename ;
106- int flags = 0 , c , rv = 0 ;
106+ int flags = 0 , c , rv = 0 , i = 0 ;
107107 const struct option longopts [] = {
108108 { NULL , 0 , NULL , 0 }
109109 };
@@ -160,59 +160,76 @@ main(int argc, char **argv)
160160 }
161161
162162 if (strcmp (argv [0 ], "version" ) == 0 ) {
163- /* Prints version of an installed package */
164- if (argc != 2 )
163+ /* Prints version of installed packages */
164+ if (argc < 2 )
165165 usage ();
166166
167- if ((((dict = xbps_pkgdb_get_pkg (& xh , argv [1 ])) == NULL )) &&
168- (((dict = xbps_pkgdb_get_virtualpkg (& xh , argv [1 ])) == NULL )))
169- exit (EXIT_FAILURE );
170-
171- xbps_dictionary_get_cstring_nocopy (dict , "pkgver" , & version );
172- printf ("%s\n" , xbps_pkg_version (version ));
167+ for (i = 1 ; i < argc ; i ++ ) {
168+ if ((((dict = xbps_pkgdb_get_pkg (& xh , argv [i ])) == NULL )) &&
169+ (((dict = xbps_pkgdb_get_virtualpkg (& xh , argv [i ])) == NULL ))) {
170+ xbps_error_printf ("Could not find package '%s'\n" , argv [i ])
171+ rv = 1 ;
172+ } else {
173+ xbps_dictionary_get_cstring_nocopy (dict , "pkgver" , & version );
174+ printf ("%s\n" , xbps_pkg_version (version ));
175+ }
176+ }
173177 } else if (strcmp (argv [0 ], "real-version" ) == 0 ) {
174- /* Prints version of an installed real package , not virtual */
175- if (argc != 2 )
178+ /* Prints version of installed real packages , not virtual */
179+ if (argc < 2 )
176180 usage ();
177181
178- if ((dict = xbps_pkgdb_get_pkg (& xh , argv [1 ])) == NULL )
179- exit (EXIT_FAILURE );
180-
181- xbps_dictionary_get_cstring_nocopy (dict , "pkgver" , & version );
182- printf ("%s\n" , xbps_pkg_version (version ));
182+ for (i = 1 ; i < argc ; i ++ ) {
183+ if ((dict = xbps_pkgdb_get_pkg (& xh , argv [i ])) == NULL ) {
184+ xbps_error_printf ("Could not find package '%s'\n" , argv [i ])
185+ rv = 1 ;
186+ } else {
187+ xbps_dictionary_get_cstring_nocopy (dict , "pkgver" , & version );
188+ printf ("%s\n" , xbps_pkg_version (version ));
189+ }
190+ }
183191 } else if (strcmp (argv [0 ], "getpkgversion" ) == 0 ) {
184192 /* Returns the version of a pkg string */
185- if (argc != 2 )
193+ if (argc < 2 )
186194 usage ();
187195
188- version = xbps_pkg_version (argv [1 ]);
189- if (version == NULL ) {
190- fprintf (stderr ,
191- "Invalid string, expected <string>-<version>_<revision>\n" );
192- exit (EXIT_FAILURE );
196+ for (i = 1 ; i < argc ; i ++ ) {
197+ version = xbps_pkg_version (argv [i ]);
198+ if (version == NULL ) {
199+ xbps_error_printf (
200+ "Invalid string '%s', expected <string>-<version>_<revision>\n" , argv [i ]);
201+ rv = 1 ;
202+ } else {
203+ printf ("%s\n" , version );
204+ }
193205 }
194- printf ("%s\n" , version );
195206 } else if (strcmp (argv [0 ], "getpkgname" ) == 0 ) {
196207 /* Returns the name of a pkg string */
197- if (argc != 2 )
208+ if (argc < 2 )
198209 usage ();
199210
200- if (!xbps_pkg_name (pkgname , sizeof (pkgname ), argv [1 ])) {
201- fprintf (stderr ,
202- "Invalid string, expected <string>-<version>_<revision>\n" );
203- exit (EXIT_FAILURE );
211+ for (i = 1 ; i < argc ; i ++ ) {
212+ if (!xbps_pkg_name (pkgname , sizeof (pkgname ), argv [i ])) {
213+ fprintf (stderr ,
214+ "Invalid string '%s', expected <string>-<version>_<revision>\n" , argv [i ]);
215+ rv = 1 ;
216+ } else {
217+ printf ("%s\n" , pkgname );
218+ }
204219 }
205- printf ("%s\n" , pkgname );
206220 } else if (strcmp (argv [0 ], "getpkgrevision" ) == 0 ) {
207221 /* Returns the revision of a pkg string */
208- if (argc != 2 )
222+ if (argc < 2 )
209223 usage ();
210224
211- version = xbps_pkg_revision (argv [1 ]);
212- if (version == NULL )
213- exit (EXIT_SUCCESS );
214-
215- printf ("%s\n" , version );
225+ for (i = 1 ; i < argc ; i ++ ) {
226+ version = xbps_pkg_revision (argv [1 ]);
227+ if (version == NULL ) {
228+ rv = 1 ;
229+ } else {
230+ printf ("%s\n" , version );
231+ }
232+ }
216233 } else if (strcmp (argv [0 ], "getpkgdepname" ) == 0 ) {
217234 /* Returns the pkgname of a dependency */
218235 if (argc != 2 )
0 commit comments