]> ToastFreeware Gitweb - gregoa/bti.git/blobdiff - bti.c
Support for replying to notices
[gregoa/bti.git] / bti.c
diff --git a/bti.c b/bti.c
index 3987deca28ad6fa7ea2bbed7e40f577bd7f8bc94..ae32c377d89d97f6398d8c434ef9aa0f12cbd3da 100644 (file)
--- a/bti.c
+++ b/bti.c
@@ -83,6 +83,7 @@ struct session {
        char *hosturl;
        char *hostname;
        char *configfile;
+       char *replyto;
        int bash;
        int interactive;
        int shrink_urls;
@@ -118,6 +119,7 @@ static void display_help(void)
        fprintf(stdout, "  --host HOST\n");
        fprintf(stdout, "  --logfile logfile\n");
        fprintf(stdout, "  --config configfile\n");
+       fprintf(stdout, "  --replyto ID\n");
        fprintf(stdout, "  --shrink-urls\n");
        fprintf(stdout, "  --page PAGENUMBER\n");
        fprintf(stdout, "  --bash\n");
@@ -243,6 +245,7 @@ static void session_free(struct session *session)
 {
        if (!session)
                return;
+       free(session->replyto);
        free(session->password);
        free(session->account);
        free(session->tweet);
@@ -467,6 +470,12 @@ static int send_request(struct session *session)
                             CURLFORM_COPYCONTENTS, "bti",
                             CURLFORM_END);
 
+               if (session->replyto)
+                       curl_formadd(&formpost, &lastptr,
+                                    CURLFORM_COPYNAME, "in_reply_to_status_id",
+                                    CURLFORM_COPYCONTENTS, session->replyto,
+                                    CURLFORM_END);
+
                curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
                slist = curl_slist_append(slist, "Expect:");
                curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
@@ -1066,6 +1075,7 @@ int main(int argc, char *argv[], char *envp[])
                { "page", 1, NULL, 'g' },
                { "version", 0, NULL, 'v' },
                { "config", 1, NULL, 'c' },
+               { "replyto", 1, NULL, 'r' },
                { }
        };
        struct session *session;
@@ -1114,7 +1124,7 @@ int main(int argc, char *argv[], char *envp[])
        parse_configfile(session);
 
        while (1) {
-               option = getopt_long_only(argc, argv, "dp:P:H:a:A:u:c:hg:G:snVv",
+               option = getopt_long_only(argc, argv, "dp:P:H:a:A:u:c:hg:G:sr:nVv",
                                          options, NULL);
                if (option == -1)
                        break;
@@ -1136,6 +1146,10 @@ int main(int argc, char *argv[], char *envp[])
                        dbg("page = %d\n", page_nr);
                        session->page = page_nr;
                        break;
+               case 'r':
+                       session->replyto = strdup(optarg);
+                       dbg("in_reply_to_status_id = %s\n", session->replyto);
+                       break;
                case 'p':
                        if (session->password)
                                free(session->password);