expand the tweet size, it was only taking 100 chars
[gregoa/bti.git] / bti.c
diff --git a/bti.c b/bti.c
index 039d20f..c9b4880 100644 (file)
--- a/bti.c
+++ b/bti.c
@@ -44,7 +44,7 @@ struct session {
        char *password;
        char *account;
        char *tweet;
-       int quiet;
+       int bash;
 };
 
 struct bti_curl_buffer {
@@ -62,21 +62,26 @@ static void display_help(void)
        fprintf(stdout, "  --account accountname\n");
        fprintf(stdout, "  --password password\n");
        fprintf(stdout, "  --bash\n");
-       fprintf(stdout, "  --quiet\n");
        fprintf(stdout, "  --debug\n");
+       fprintf(stdout, "  --version\n");
        fprintf(stdout, "  --help\n");
 }
 
+static void display_version(void)
+{
+       fprintf(stdout, "bti - version %s\n", BTI_VERSION);
+}
+
 static char *get_string_from_stdin(void)
 {
        char *temp;
        char *string;
 
-       string = zalloc(100);
+       string = zalloc(1000);
        if (!string)
                return NULL;
 
-       if (!fgets(string, 99, stdin))
+       if (!fgets(string, 999, stdin))
                return NULL;
        temp = strchr(string, '\n');
        *temp = '\0';
@@ -214,8 +219,8 @@ static int send_tweet(struct session *session)
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
        res = curl_easy_perform(curl);
-       if (res) {
-               printf("error(%d) trying to send tweet\n", res);
+       if (res && !session->bash) {
+               fprintf(stderr, "error(%d) trying to send tweet\n", res);
                return -EINVAL;
        }
 
@@ -293,9 +298,9 @@ int main(int argc, char *argv[], char *envp[])
                { "debug", 0, NULL, 'd' },
                { "account", 1, NULL, 'a' },
                { "password", 1, NULL, 'p' },
-               { "bash", 1, NULL, 'b' },
                { "help", 0, NULL, 'h' },
-               { "quiet", 0, NULL, 'q' },
+               { "bash", 0, NULL, 'b' },
+               { "version", 0, NULL, 'v' },
                { }
        };
        struct session *session;
@@ -303,7 +308,11 @@ int main(int argc, char *argv[], char *envp[])
        char *tweet;
        int retval;
        int option;
-
+#if 0
+       char *home = getenv("HOME");
+       char *pwd = getenv("PWD");
+       char *dir;
+#endif
        session = session_alloc();
        if (!session) {
                fprintf(stderr, "no more memory...\n");
@@ -334,12 +343,15 @@ int main(int argc, char *argv[], char *envp[])
                        session->password = strdup(optarg);
                        dbg("password = %s\n", session->password);
                        break;
-               case 'q':
-                       session->quiet = 1;
+               case 'b':
+                       session->bash= 1;
                        break;
                case 'h':
                        display_help();
                        goto exit;
+               case 'v':
+                       display_version();
+                       goto exit;
                default:
                        display_help();
                        goto exit;
@@ -355,19 +367,36 @@ int main(int argc, char *argv[], char *envp[])
                fprintf(stdout, "Enter twitter password: ");
                session->password = get_string_from_stdin();
        }
-
-       /* Add the "$ " to the start of the tweet to show it's coming from
-        * a shell */
+#if 0
+       /* get the current working directory basename */
+       if (strcmp(pwd, home) == 0)
+               dir = "~";
+       else {
+               dir = strrchr(pwd, '/');
+               if (dir)
+                       dir++;
+               else
+                       dir = "?";
+       }
+#endif
        tweet = get_string_from_stdin();
-       session->tweet = zalloc(strlen(tweet) + 10);
-       sprintf(session->tweet, "$ %s", tweet);
-       free(tweet);
-
-       if (strlen(session->tweet) == 0) {
+       if (strlen(tweet) == 0) {
                dbg("no tweet?\n");
                return -1;
        }
 
+//     session->tweet = zalloc(strlen(tweet) + strlen(dir) + 10);
+       session->tweet = zalloc(strlen(tweet) + 10);
+
+       /* if --bash is specified, add the "PWD $ " to
+        * the start of the tweet. */
+       if (session->bash)
+//             sprintf(session->tweet, "%s $ %s", dir, tweet);
+               sprintf(session->tweet, "$ %s", tweet);
+       else
+               sprintf(session->tweet, "%s", tweet);
+       free(tweet);
+
        dbg("account = %s\n", session->account);
        dbg("password = %s\n", session->password);
        dbg("tweet = %s\n", session->tweet);
@@ -375,14 +404,16 @@ int main(int argc, char *argv[], char *envp[])
        /* fork ourself so that the main shell can get on
         * with it's life as we try to connect and handle everything
         */
-       child = fork();
-       if (child) {
-               dbg("child is %d\n", child);
-               exit(0);
+       if (session->bash) {
+               child = fork();
+                       if (child) {
+                       dbg("child is %d\n", child);
+                       exit(0);
+               }
        }
 
        retval = send_tweet(session);
-       if (retval) {
+       if (retval && !session->bash) {
                fprintf(stderr, "tweet failed\n");
                return -1;
        }