add .gz and .bz2 to .gitignore
[gregoa/bti.git] / bti.c
diff --git a/bti.c b/bti.c
index 11ba091211e7ed548428512eb613e0fe2df6c33a..1c5a85633a2e61c802ee15970fc9fed9cbc7d080 100644 (file)
--- a/bti.c
+++ b/bti.c
@@ -299,8 +299,13 @@ int main(int argc, char *argv[], char *envp[])
                { }
        };
        struct session *session;
+       pid_t child;
+       char *tweet;
        int retval;
        int option;
+       char *home = getenv("HOME");
+       char *pwd = getenv("PWD");
+       char *dir;
 
        session = session_alloc();
        if (!session) {
@@ -354,7 +359,22 @@ int main(int argc, char *argv[], char *envp[])
                session->password = get_string_from_stdin();
        }
 
-       session->tweet = get_string_from_stdin();
+       if (strcmp(pwd, home) == 0)
+               dir = "~";
+       else {
+               dir = strrchr(pwd, '/');
+               if (dir)
+                       dir++;
+               else
+                       dir = "?";
+       }
+
+       /* Add the "PWD $ " to the start of the tweet to show it is
+        * coming from a shell */
+       tweet = get_string_from_stdin();
+       session->tweet = zalloc(strlen(tweet) + strlen(dir) + 10);
+       sprintf(session->tweet, "%s $ %s", dir, tweet);
+       free(tweet);
 
        if (strlen(session->tweet) == 0) {
                dbg("no tweet?\n");
@@ -365,6 +385,15 @@ int main(int argc, char *argv[], char *envp[])
        dbg("password = %s\n", session->password);
        dbg("tweet = %s\n", session->tweet);
 
+       /* 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);
+       }
+
        retval = send_tweet(session);
        if (retval) {
                fprintf(stderr, "tweet failed\n");