add --page to bti-bashcompletion
[gregoa/bti.git] / bti.c
diff --git a/bti.c b/bti.c
index 71a2d81f838d15211a2ecb60289d860f90bd690a..6fffef5c4d46aed7b80d2cfe785d69d74228aafd 100644 (file)
--- a/bti.c
+++ b/bti.c
@@ -75,6 +75,7 @@ struct session {
        int bash;
        int shrink_urls;
        int dry_run;
        int bash;
        int shrink_urls;
        int dry_run;
+       int page;
        enum host host;
        enum action action;
 };
        enum host host;
        enum action action;
 };
@@ -102,6 +103,7 @@ static void display_help(void)
        fprintf(stdout, "  --host HOST\n");
        fprintf(stdout, "  --logfile logfile\n");
        fprintf(stdout, "  --shrink-urls\n");
        fprintf(stdout, "  --host HOST\n");
        fprintf(stdout, "  --logfile logfile\n");
        fprintf(stdout, "  --shrink-urls\n");
+       fprintf(stdout, "  --page PAGENUMBER\n");
        fprintf(stdout, "  --bash\n");
        fprintf(stdout, "  --debug\n");
        fprintf(stdout, "  --version\n");
        fprintf(stdout, "  --bash\n");
        fprintf(stdout, "  --debug\n");
        fprintf(stdout, "  --version\n");
@@ -349,12 +351,12 @@ static int send_request(struct session *session)
                         session->account, session->password);
                switch (session->host) {
                case HOST_TWITTER:
                         session->account, session->password);
                switch (session->host) {
                case HOST_TWITTER:
-                       curl_easy_setopt(curl, CURLOPT_URL,
-                                        twitter_friends_url);
+                       sprintf(user_url, "%s?page=%d", twitter_friends_url, session->page);
+                       curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                case HOST_IDENTICA:
                        break;
                case HOST_IDENTICA:
-                       curl_easy_setopt(curl, CURLOPT_URL,
-                                        identica_friends_url);
+                       sprintf(user_url, "%s?page=%d", identica_friends_url, session->page);
+                       curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                }
                curl_easy_setopt(curl, CURLOPT_USERPWD, user_password);
                        break;
                }
                curl_easy_setopt(curl, CURLOPT_USERPWD, user_password);
@@ -363,13 +365,11 @@ static int send_request(struct session *session)
        case ACTION_USER:
                switch (session->host) {
                case HOST_TWITTER:
        case ACTION_USER:
                switch (session->host) {
                case HOST_TWITTER:
-                       sprintf(user_url, "%s%s.xml", twitter_user_url,
-                               session->user);
+                       sprintf(user_url, "%s%s.xml?page=%d", twitter_user_url, session->user, session->page);
                        curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                case HOST_IDENTICA:
                        curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                case HOST_IDENTICA:
-                       sprintf(user_url, "%s%s.xml", identica_user_url,
-                               session->user);
+                       sprintf(user_url, "%s%s.xml?page=%d", identica_user_url, session->user, session->page);
                        curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                }
                        curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                }
@@ -380,12 +380,12 @@ static int send_request(struct session *session)
                         session->account, session->password);
                switch (session->host) {
                case HOST_TWITTER:
                         session->account, session->password);
                switch (session->host) {
                case HOST_TWITTER:
-                       curl_easy_setopt(curl, CURLOPT_URL,
-                                        twitter_replies_url);
+                       sprintf(user_url, "%s?page=%d", twitter_replies_url, session->page);
+                       curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                case HOST_IDENTICA:
                        break;
                case HOST_IDENTICA:
-                       curl_easy_setopt(curl, CURLOPT_URL,
-                                        identica_replies_url);
+                       sprintf(user_url, "%s?page=%d", identica_replies_url, session->page);
+                       curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                }
                curl_easy_setopt(curl, CURLOPT_USERPWD, user_password);
                        break;
                }
                curl_easy_setopt(curl, CURLOPT_USERPWD, user_password);
@@ -394,12 +394,12 @@ static int send_request(struct session *session)
        case ACTION_PUBLIC:
                switch (session->host) {
                case HOST_TWITTER:
        case ACTION_PUBLIC:
                switch (session->host) {
                case HOST_TWITTER:
-                       curl_easy_setopt(curl, CURLOPT_URL,
-                                        twitter_public_url);
+                       sprintf(user_url, "%s?page=%d", twitter_public_url, session->page);
+                       curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                case HOST_IDENTICA:
                        break;
                case HOST_IDENTICA:
-                       curl_easy_setopt(curl, CURLOPT_URL,
-                                        identica_public_url);
+                       sprintf(user_url, "%s?page=%d", identica_public_url, session->page);
+                       curl_easy_setopt(curl, CURLOPT_URL, user_url);
                        break;
                }
 
                        break;
                }
 
@@ -921,6 +921,7 @@ int main(int argc, char *argv[], char *envp[])
                { "help", 0, NULL, 'h' },
                { "bash", 0, NULL, 'b' },
                { "dry-run", 0, NULL, 'n' },
                { "help", 0, NULL, 'h' },
                { "bash", 0, NULL, 'b' },
                { "dry-run", 0, NULL, 'n' },
+               { "page", 1, NULL, 'g' },
                { "version", 0, NULL, 'v' },
                { }
        };
                { "version", 0, NULL, 'v' },
                { }
        };
@@ -931,6 +932,7 @@ int main(int argc, char *argv[], char *envp[])
        int option;
        char *http_proxy;
        time_t t;
        int option;
        char *http_proxy;
        time_t t;
+       int page_nr;
 
        debug = 0;
        rl_bind_key('\t', rl_insert);
 
        debug = 0;
        rl_bind_key('\t', rl_insert);
@@ -963,7 +965,7 @@ int main(int argc, char *argv[], char *envp[])
        parse_configfile(session);
 
        while (1) {
        parse_configfile(session);
 
        while (1) {
-               option = getopt_long_only(argc, argv, "dqe:p:P:H:a:A:u:h",
+               option = getopt_long_only(argc, argv, "dqe:p:P:H:a:A:u:hg:",
                                          options, NULL);
                if (option == -1)
                        break;
                                          options, NULL);
                if (option == -1)
                        break;
@@ -977,6 +979,11 @@ int main(int argc, char *argv[], char *envp[])
                        session->account = strdup(optarg);
                        dbg("account = %s\n", session->account);
                        break;
                        session->account = strdup(optarg);
                        dbg("account = %s\n", session->account);
                        break;
+               case 'g':
+                       page_nr = atoi(optarg);
+                       dbg("page = %d\n", page_nr);
+                       session->page = page_nr;
+                       break;
                case 'p':
                        if (session->password)
                                free(session->password);
                case 'p':
                        if (session->password)
                                free(session->password);
@@ -1087,6 +1094,8 @@ int main(int argc, char *argv[], char *envp[])
        if (!session->user)
                session->user = strdup(session->account);
 
        if (!session->user)
                session->user = strdup(session->account);
 
+       if (session->page == 0)
+               session->page = 1;
        dbg("account = %s\n", session->account);
        dbg("password = %s\n", session->password);
        dbg("host = %d\n", session->host);
        dbg("account = %s\n", session->account);
        dbg("password = %s\n", session->password);
        dbg("host = %d\n", session->host);