return str;
}
-void ppa_to_html(const char *owner, const char *ppa)
+void ppa_to_html(const char *owner, const char *ppa, const char *package_status)
{
struct binary_package_publishing_history **list;
char *archive_url = get_archive_url(owner, ppa);
char *addcolumns_str;
char *data_str;
- list = get_binary_package_publishing_history_list(archive_url);
+ list = get_binary_package_publishing_history_list(archive_url,
+ package_status);
free(archive_url);
if (!list) {
#include "lp.h"
-void ppa_to_html(const char *owner, const char *ppa);
+void ppa_to_html(const char *owner,
+ const char *ppa,
+ const char *package_status);
#endif
#include "ppastats.h"
#define QUERY_GET_PUBLISHED_BINARIES \
- "?ws.op=getPublishedBinaries&status=Published"
+ "?ws.op=getPublishedBinaries"
#define QUERY_GET_DOWNLOAD_COUNT "?ws.op=getDownloadCount"
#define QUERY_GET_DAILY_DOWNLOAD_TOTALS \
"?ws.op=getDailyDownloadTotals"
}
struct binary_package_publishing_history * *
-get_binary_package_publishing_history_list(const char *archive_url)
+get_binary_package_publishing_history_list(const char *archive_url,
+ const char *package_status)
{
char *url = malloc(strlen(archive_url)+
strlen(QUERY_GET_PUBLISHED_BINARIES)+
+ strlen("&status=")+
+ 9+
1);
json_object *o;
struct binary_package_publishing_history **result;
strcpy(url, archive_url);
strcat(url, QUERY_GET_PUBLISHED_BINARIES);
+
+ if (package_status) {
+ strcat(url, "&status=");
+ strcat(url, package_status);
+ }
+
o = get_json_object(url);
free(url);
#include "lp.h"
struct binary_package_publishing_history * *
-get_binary_package_publishing_history_list(const char *archive_url);
+get_binary_package_publishing_history_list(const char *archive_url,
+ const char *package_status);
int get_download_count(const char *archive_url);
int debug;
static const char *program_name;
-static void display_published_binaries(const char *owner, const char *ppa)
+static void display_published_binaries(const char *owner,
+ const char *ppa,
+ const char *package_status)
{
struct ppa_stats *ppastats;
struct package_stats **packages;
struct distro_stats **distros;
struct arch_stats **archs;
- ppastats = create_ppa_stats(owner, ppa);
+ ppastats = create_ppa_stats(owner, ppa, package_status);
packages = ppastats->packages;
while (packages && *packages) {
struct package_stats *p = *packages;
{"help", no_argument, 0, 'h'},
{"html", no_argument, 0, 't'},
{"debug", no_argument, 0, 'd'},
+ {"status", required_argument, 0, 's'},
{0, 0, 0, 0}
};
char *owner, *ppa;
int optc;
int output_html = 0;
+ char *package_status = NULL;
int cmdok = 1;
program_name = argv[0];
- while ((optc = getopt_long(argc, argv, "vhtd", long_options,
+ while ((optc = getopt_long(argc, argv, "vhtds:", long_options,
NULL)) != -1) {
switch (optc) {
case 't':
case 'v':
print_version();
exit(EXIT_SUCCESS);
+ case 's':
+ if (optarg)
+ package_status = strdup(optarg);
+ break;
default:
cmdok = 0;
break;
ppa = argv[optind+1];
if (output_html)
- ppa_to_html(owner, ppa);
+ ppa_to_html(owner, ppa, package_status);
else
- display_published_binaries(owner, ppa);
+ display_published_binaries(owner, ppa, package_status);
/* for valgrind.... */
+ free(package_status);
lp_ws_cleanup();
cache_cleanup();
}
-struct ppa_stats *create_ppa_stats(const char *owner, const char *ppa)
+struct ppa_stats *
+create_ppa_stats(const char *owner,
+ const char *ppa,
+ const char *package_status)
{
struct ppa_stats *ppastats;
struct binary_package_publishing_history **history;
int count;
ppa_url = get_archive_url(owner, ppa);
- history = get_binary_package_publishing_history_list(ppa_url);
+ history = get_binary_package_publishing_history_list(ppa_url,
+ package_status);
free(ppa_url);
if (!history) {
struct daily_download_total *daily_download_totals;
};
-struct ppa_stats *create_ppa_stats(const char *owner, const char *ppa);
+struct ppa_stats *create_ppa_stats(const char *owner,
+ const char *ppa,
+ const char *package_status);
void ppa_stats_free(struct ppa_stats *ppastats);
#endif