@@ -284,60 +284,69 @@ repo_show_pkg_info(struct xbps_handle *xhp,
284284int
285285cat_file (struct xbps_handle * xhp , const char * pkg , const char * file )
286286{
287+ char bfile [PATH_MAX ];
287288 xbps_dictionary_t pkgd ;
288- char * url ;
289289 int rv ;
290290
291291 pkgd = xbps_pkgdb_get_pkg (xhp , pkg );
292292 if (pkgd == NULL )
293293 return errno ;
294294
295- url = xbps_repository_pkg_path (xhp , pkgd );
296- if (url == NULL )
297- return EINVAL ;
295+ rv = xbps_pkg_path_or_url (xhp , bfile , sizeof (bfile ), pkgd );
296+ if (rv < 0 ) {
297+ xbps_error_printf ("could not get package path: %s\n" , strerror (- rv ));
298+ return - rv ;
299+ }
298300
299- xbps_dbg_printf ("matched pkg at %s\n" , url );
300- rv = xbps_archive_fetch_file_into_fd (url , file , STDOUT_FILENO );
301- free (url );
302- return rv ;
301+ return xbps_archive_fetch_file_into_fd (bfile , file , STDOUT_FILENO );
303302}
304303
305304int
306305repo_cat_file (struct xbps_handle * xhp , const char * pkg , const char * file )
307306{
307+ char bfile [PATH_MAX ];
308308 xbps_dictionary_t pkgd ;
309- char * url ;
310309 int rv ;
311310
312311 pkgd = xbps_rpool_get_pkg (xhp , pkg );
313312 if (pkgd == NULL )
314313 return errno ;
315314
316- url = xbps_repository_pkg_path (xhp , pkgd );
317- if (url == NULL )
318- return EINVAL ;
315+ rv = xbps_pkg_path_or_url (xhp , bfile , sizeof (bfile ), pkgd );
316+ if (rv < 0 ) {
317+ xbps_error_printf ("could not get package path: %s\n" , strerror (- rv ));
318+ return - rv ;
319+ }
319320
320- xbps_dbg_printf ("matched pkg at %s\n" , url );
321- rv = xbps_archive_fetch_file_into_fd (url , file , STDOUT_FILENO );
322- free (url );
323- return rv ;
321+ return xbps_archive_fetch_file_into_fd (bfile , file , STDOUT_FILENO );
324322}
325323
326324int
327325repo_show_pkg_files (struct xbps_handle * xhp , const char * pkg )
328326{
329- xbps_dictionary_t pkgd ;
327+ char bfile [PATH_MAX ];
328+ xbps_dictionary_t pkgd , filesd ;
330329 int rv ;
331330
332- pkgd = xbps_rpool_get_pkg_plist (xhp , pkg , "/files.plist" );
333- if (pkgd == NULL ) {
331+ pkgd = xbps_rpool_get_pkg (xhp , pkg );
332+ if (pkgd == NULL )
333+ return errno ;
334+
335+ rv = xbps_pkg_path_or_url (xhp , bfile , sizeof (bfile ), pkgd );
336+ if (rv < 0 ) {
337+ xbps_error_printf ("could not get package path: %s\n" , strerror (- rv ));
338+ return - rv ;
339+ }
340+
341+ filesd = xbps_archive_fetch_plist (bfile , "/files.plist" );
342+ if (filesd == NULL ) {
334343 if (errno != ENOTSUP && errno != ENOENT ) {
335344 xbps_error_printf ("Unexpected error: %s\n" , strerror (errno ));
336345 }
337346 return errno ;
338347 }
339348
340- rv = show_pkg_files (pkgd );
341- xbps_object_release (pkgd );
349+ rv = show_pkg_files (filesd );
350+ xbps_object_release (filesd );
342351 return rv ;
343352}
0 commit comments