diff options
| author | 2023-02-11 00:35:52 +0100 | |
|---|---|---|
| committer | 2023-02-11 00:35:52 +0100 | |
| commit | c50f53a7c2aa1744396ffa5c48e6c99c82c27c79 (patch) | |
| tree | b3f319ba34d45e16de3fe8c5ab0cf66198689fc0 | |
| parent | 39701a4c3377603f826ad7fe61fbe27d6c126004 (diff) | |
| download | ideviceinstaller-c50f53a7c2aa1744396ffa5c48e6c99c82c27c79.tar.gz ideviceinstaller-c50f53a7c2aa1744396ffa5c48e6c99c82c27c79.tar.bz2 | |
Add -b, --bundle-identifier command line switch to allow querying for bundle identifier
| -rw-r--r-- | man/ideviceinstaller.1 | 3 | ||||
| -rw-r--r-- | src/ideviceinstaller.c | 22 | 
2 files changed, 24 insertions, 1 deletions
| diff --git a/man/ideviceinstaller.1 b/man/ideviceinstaller.1 index 8d2a01d..8ede2db 100644 --- a/man/ideviceinstaller.1 +++ b/man/ideviceinstaller.1 @@ -31,6 +31,9 @@ list apps installed on the device.  .RS  .B Additional options:  .TP +\-b <bundleID> +Only query for given bundle identifier (can be passed multiple times) +.TP  \-o list_user  list user apps only (apps installed by the user)  .B This is the default. diff --git a/src/ideviceinstaller.c b/src/ideviceinstaller.c index 69ccf29..d80f04d 100644 --- a/src/ideviceinstaller.c +++ b/src/ideviceinstaller.c @@ -120,6 +120,7 @@ int command_completed = 0;  int ignore_events = 0;  int err_occurred = 0;  int notified = 0; +plist_t bundle_ids = NULL;  static void print_apps_header()  { @@ -400,6 +401,8 @@ static void print_usage(int argc, char **argv)  		"  -u, --udid UDID\tTarget specific device by UDID.\n"  		"  -n, --network\t\tConnect to network device.\n"  		"  -l, --list-apps\tList apps, possible options:\n" +                "       -b, --bundle-identifier\tOnly query for given bundle identifier\n" +                "           (can be passed multiple times)\n"  		"       -o list_user\t- list user apps only (this is the default)\n"  		"       -o list_system\t- list system apps only\n"  		"       -o list_all\t- list all types of apps\n" @@ -448,12 +451,13 @@ static void parse_opts(int argc, char **argv)  		{ "notify-wait", no_argument, NULL, 'w' },  		{ "debug", no_argument, NULL, 'd' },  		{ "version", no_argument, NULL, 'v' }, +		{ "bundle-identifier", required_argument, NULL, 'b' },  		{ NULL, 0, NULL, 0 }  	};  	int c;  	while (1) { -		c = getopt_long(argc, argv, "hU:li:u:g:La:r:R:o:nwdv", longopts, +		c = getopt_long(argc, argv, "hU:li:u:g:La:r:R:o:nwdvb:", longopts,  						(int *) 0);  		if (c == -1) {  			break; @@ -493,6 +497,17 @@ static void parse_opts(int argc, char **argv)  		case 'n':  			use_network = 1;  			break; +		case 'b': +			if (!*optarg) { +				printf("ERROR: bundle identifier must not be empty!\n"); +				print_usage(argc, argv); +				exit(2); +			} +			if (bundle_ids == NULL) { +				bundle_ids = plist_new_array(); +			} +			plist_array_append_item(bundle_ids, plist_new_string(optarg)); +			break;  		case 'l':  			cmd = CMD_LIST_APPS;  			break; @@ -776,6 +791,10 @@ run_again:  			free(opts);  		} +		if (bundle_ids) { +			plist_dict_set_item(client_opts, "BundleIDs", plist_copy(bundle_ids)); +		} +  		if (!xml_mode) {  			instproxy_client_options_set_return_attributes(client_opts,  				"CFBundleIdentifier", @@ -1499,6 +1518,7 @@ leave_cleanup:  	free(appid);  	free(options);  	free(bundleidentifier); +	plist_free(bundle_ids);  	if (err_occurred && !res) {  		res = 128; | 
