X-Git-Url: https://git.toastfreeware.priv.at/gregoa/bti.git/blobdiff_plain/98f4be35b40eb9385a219971f47ea2617ccce684..02de77283931c1c9a258abf7d4a5d51ab248ad30:/bti.c diff --git a/bti.c b/bti.c index d612efc..db9cadc 100644 --- a/bti.c +++ b/bti.c @@ -75,6 +75,7 @@ static void display_help(void) " --retweet ID\n" " --shrink-urls\n" " --page PAGENUMBER\n" + " --column COLUMNWIDTH\n" " --bash\n" " --background\n" " --debug\n" @@ -268,6 +269,9 @@ static const char replies_uri[] = "/replies.xml"; static const char retweet_uri[] = "/retweet/"; static const char group_uri[] = "/../statusnet/groups/timeline/"; +static const char config_default[] = "/etc/bti"; +static const char config_user_default[] = ".bti"; + static CURL *curl_init(void) { CURL *curl; @@ -288,9 +292,10 @@ static void bti_output_line(struct session *session, xmlChar *user, 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, @@ -1145,6 +1150,7 @@ int main(int argc, char *argv[], char *envp[]) { "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' }, @@ -1158,6 +1164,8 @@ int main(int argc, char *argv[], char *envp[]) int retval = 0; int option; char *http_proxy; + char *home; + const char *config_file; time_t t; int page_nr; @@ -1174,12 +1182,23 @@ int main(int argc, char *argv[], char *envp[]) session->time = strdup(ctime(&t)); session->time[strlen(session->time)-1] = 0x00; - /* Get the home directory so we can try to find a config file */ - session->homedir = strdup(getenv("HOME")); + /* + * Get the home directory so we can try to find a config file. + * If we have no home dir set up, look in /etc/bti + */ + home = getenv("HOME"); + if (home) { + /* We have a home dir, so this might be a user */ + session->homedir = strdup(home); + config_file = config_user_default; + } else { + session->homedir = strdup(""); + config_file = config_default; + } /* set up a default config file location (traditionally ~/.bti) */ - session->configfile = zalloc(strlen(session->homedir) + 7); - sprintf(session->configfile, "%s/.bti", session->homedir); + session->configfile = zalloc(strlen(session->homedir) + strlen(config_file) + 7); + sprintf(session->configfile, "%s/%s", session->homedir, config_file); /* Set environment variables first, before reading command line options * or config file values. */ @@ -1195,7 +1214,7 @@ int main(int argc, char *argv[], char *envp[]) 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; @@ -1217,6 +1236,10 @@ int main(int argc, char *argv[], char *envp[]) 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);