" --retweet ID\n"
" --shrink-urls\n"
" --page PAGENUMBER\n"
+ " --column COLUMNWIDTH\n"
" --bash\n"
" --background\n"
" --debug\n"
exit(1);
if (name != NULL)
fprintf(stdout, "%s", name);
- if (!fgets(string, 999, stdin))
+ if (!fgets(string, 999, stdin)) {
+ free(string);
return NULL;
+ }
temp = strchr(string, '\n');
if (temp)
*temp = '\0';
static const char twitter_request_token_uri[] = "http://twitter.com/oauth/request_token";
static const char twitter_access_token_uri[] = "http://twitter.com/oauth/access_token";
static const char twitter_authorize_uri[] = "http://twitter.com/oauth/authorize?oauth_token=";
-static const char identica_request_token_uri[] = "http://identi.ca/api/oauth/request_token?oauth_callback=oob";
-static const char identica_access_token_uri[] = "http://identi.ca/api/oauth/access_token";
-static const char identica_authorize_uri[] = "http://identi.ca/api/oauth/authorize?oauth_token=";
+static const char identica_request_token_uri[] = "https://identi.ca/api/oauth/request_token?oauth_callback=oob";
+static const char identica_access_token_uri[] = "https://identi.ca/api/oauth/access_token";
+static const char identica_authorize_uri[] = "https://identi.ca/api/oauth/authorize?oauth_token=";
static const char user_uri[] = "/user_timeline/";
static const char update_uri[] = "/update.xml";
xmlChar *id, xmlChar *created, xmlChar *text)
{
if (session->verbose)
- printf("[%s] {%s} (%.16s) %s\n", user, id, created, text);
+ printf("[%*s] {%s} (%.16s) %s\n", -session->column_output, user,
+ id, created, text);
else
- printf("[%s] %s\n", user, text);
+ printf("[%*s] %s\n", -session->column_output, user, text);
}
static void parse_statuses(struct session *session,
curl_buf->session = session;
curl = curl_init();
- if (!curl)
+ if (!curl) {
+ bti_curl_buffer_free(curl_buf);
return -EINVAL;
+ }
if (!session->hosturl)
session->hosturl = strdup(twitter_host);
if (res) {
fprintf(stderr, "error(%d) trying to "
"perform operation\n", res);
+ curl_easy_cleanup(curl);
+ if (session->action == ACTION_UPDATE)
+ curl_formfree(formpost);
+ bti_curl_buffer_free(curl_buf);
return -EINVAL;
}
curl_buf->length,
"response.xml", NULL,
XML_PARSE_NOERROR);
- if (doc == NULL)
+ if (doc == NULL) {
+ curl_easy_cleanup(curl);
+ if (session->action == ACTION_UPDATE)
+ curl_formfree(formpost);
+ bti_curl_buffer_free(curl_buf);
return -EINVAL;
+ }
current = xmlDocGetRootElement(doc);
if (current == NULL) {
fprintf(stderr, "empty document\n");
xmlFreeDoc(doc);
+ curl_easy_cleanup(curl);
+ if (session->action == ACTION_UPDATE)
+ curl_formfree(formpost);
+ bti_curl_buffer_free(curl_buf);
return -EINVAL;
}
if (xmlStrcmp(current->name, (const xmlChar *)"status")) {
fprintf(stderr, "unexpected document type\n");
xmlFreeDoc(doc);
+ curl_easy_cleanup(curl);
+ if (session->action == ACTION_UPDATE)
+ curl_formfree(formpost);
+ bti_curl_buffer_free(curl_buf);
return -EINVAL;
}
if (!string)
return NULL;
- if (!fgets(string, 999, stdin))
+ if (!fgets(string, 999, stdin)) {
+ free(string);
return NULL;
+ }
temp = strchr(string, '\n');
if (temp)
*temp = '\0';
{ "background", 0, NULL, 'B' },
{ "dry-run", 0, NULL, 'n' },
{ "page", 1, NULL, 'g' },
+ { "column", 1, NULL, 'o' },
{ "version", 0, NULL, 'v' },
{ "config", 1, NULL, 'c' },
{ "replyto", 1, NULL, 'r' },
while (1) {
option = getopt_long_only(argc, argv,
- "dp:P:H:a:A:u:c:hg:G:sr:nVvw:",
+ "dp:P:H:a:A:u:c:hg:o:G:sr:nVvw:",
options, NULL);
if (option == -1)
break;
dbg("page = %d\n", page_nr);
session->page = page_nr;
break;
+ case 'o':
+ session->column_output = atoi(optarg);
+ dbg("column_output = %d\n", session->column_output);
+ break;
case 'r':
session->replyto = strdup(optarg);
dbg("in_reply_to_status_id = %s\n", session->replyto);