[svn-upgrade] Integrating new upstream version, bti (012) upstream/012
authorgregor herrmann <gregoa@debian.org>
Sat, 24 Jan 2009 16:34:39 +0000 (16:34 -0000)
committergregor herrmann <gregoa@debian.org>
Sat, 24 Jan 2009 16:34:39 +0000 (16:34 -0000)
ChangeLog
Makefile
RELEASE-NOTES
bti-bashcompletion [new file with mode: 0644]
bti.1
bti.c
bti.example
bti.xml

index 9460863..a9f2830 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Summary of changes from v011 to v012
+============================================
+
+Amir Mohammad Saied (2):
+      Source parameter added
+      Add bash completion script
+
+Greg Kroah-Hartman (2):
+      add --logfile option
+      document the logfile option
+
+SanjayKumar J (1):
+      bti: incorrect version fix
+
+
 Summary of changes from v010 to v011
 ============================================
 Amir Mohammad Saied (1):
index 233782e..1d67ca8 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -16,7 +16,7 @@
 #
 #
 
-VERSION = 011
+VERSION = 012
 
 PROGRAM = bti
 
@@ -75,7 +75,7 @@ bti: %: $(HEADERS) $(GEN_HEADERS) $(CORE_OBJS)
        $(Q) $(CC) -c $(CFLAGS) $< -o $@
 
 
-bti_version.h:
+bti_version.h: Makefile
        $(E) "  GENHDR  " $@
        $(Q) echo "/* Generated by make. */" > $@
        $(Q) echo \#define BTI_VERSION  \"$(VERSION)\" >> $@
index 28c2521..463005e 100644 (file)
@@ -1,3 +1,9 @@
+bti 012
+=============
+Logfile support added to track status of tweets
+bash completion script added thanks to Amir Saied
+proper "application name" added thanks to Amir Saied
+
 bti 011
 =============
 Readline support thanks to Amir Saied
diff --git a/bti-bashcompletion b/bti-bashcompletion
new file mode 100644 (file)
index 0000000..fa155bc
--- /dev/null
@@ -0,0 +1,20 @@
+_bti()
+{
+       local cur prev
+       COMPREPLY=()
+       cur="${COMP_WORDS[COMP_CWORD]}"
+       prev="${COMP_WORDS[COMP_CWORD-1]}"
+       if [[ "${cur}" == -* ]] ; then
+               COMPREPLY=( $(compgen -W "-a -p -P -H -b -d -v -h --account \
+                       --password --proxy --host --bash --debug --version \
+                       --help" -- ${cur}) )
+       fi
+
+       if [[ "${prev}" == "--host" ]] ; then
+               COMPREPLY=( $(compgen -W "twitter identica" -- ${cur} ) )
+       fi
+
+       return 0
+}
+
+complete -F _bti bti
diff --git a/bti.1 b/bti.1
index 3fe86d9..f3237a7 100644 (file)
--- a/bti.1
+++ b/bti.1
@@ -171,7 +171,7 @@ bti \- send a tweet to twitter\&.com or identi\&.ca from the command line
 .SH "Synopsis"
 .fam C
 .HP \w'\fBbti\fR\ 'u
-\fBbti\fR [\fB\-\-account\ account\fR] [\fB\-\-password\ password\fR] [\fB\-\-host\ HOST_NAME\fR] [\fB\-\-proxy\ PROXY:PORT\fR] [\fB\-\-bash\fR] [\fB\-\-debug\fR] [\fB\-\-version\fR] [\fB\-\-help\fR]
+\fBbti\fR [\fB\-\-account\ account\fR] [\fB\-\-password\ password\fR] [\fB\-\-host\ HOST_NAME\fR] [\fB\-\-proxy\ PROXY:PORT\fR] [\fB\-\-logfile\ LOGFILE\fR] [\fB\-\-bash\fR] [\fB\-\-debug\fR] [\fB\-\-version\fR] [\fB\-\-help\fR]
 .fam
 .SH "DESCRIPTION"
 .PP
@@ -202,6 +202,11 @@ Specify a http proxy value\&. This is not a required option, and only needed by
 If \-\-proxy is not specified but the environment variable \'http_proxy\' is set the latter will be used\&.
 .RE
 .PP
+\fB\-\-logfile LOGFILE\fR
+.RS 4
+Specify a logfile for bti to write status messages to\&. LOGFILE is in relation to the user\'s home directory, not an absolute path to a file\&.
+.RE
+.PP
 \fB\-\-debug\fR
 .RS 4
 Print a whole bunch of debugging messages to stdout\&.
@@ -263,6 +268,11 @@ The host you want to use to send the message to\&. Valid options are either "twi
 The http proxy needed to send data out to the Internet\&.
 .RE
 .PP
+\fBlogfile\fR
+.RS 4
+The logfile name for bti to write what happened to\&. This file is relative to the user\'s home directory\&. If this file is not specified here or on the command line, no logging will be written to the disk\&.
+.RE
+.PP
 There is an example config file called
 \FCbti\&.example\F[]
 in the source tree that shows the structure of the file if you need an example to work off of\&.
diff --git a/bti.c b/bti.c
index 8370b2e..0ae103d 100644 (file)
--- a/bti.c
+++ b/bti.c
@@ -54,6 +54,7 @@ struct session {
        char *proxy;
        char *time;
        char *homedir;
+       char *logfile;
        int bash;
        enum host host;
 };
@@ -74,6 +75,7 @@ static void display_help(void)
        fprintf(stdout, "  --password password\n");
        fprintf(stdout, "  --proxy PROXY:PORT\n");
        fprintf(stdout, "  --host HOST\n");
+       fprintf(stdout, "  --logfile logfile\n");
        fprintf(stdout, "  --bash\n");
        fprintf(stdout, "  --debug\n");
        fprintf(stdout, "  --version\n");
@@ -222,6 +224,11 @@ static int send_tweet(struct session *session)
                     CURLFORM_COPYCONTENTS, session->tweet,
                     CURLFORM_END);
 
+       curl_formadd(&formpost, &lastptr,
+                    CURLFORM_COPYNAME, "source",
+                    CURLFORM_COPYCONTENTS, "bti",
+                    CURLFORM_END);
+
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
 
        switch (session->host) {
@@ -273,6 +280,7 @@ static void parse_configfile(struct session *session)
        char *password = NULL;
        char *host = NULL;
        char *proxy = NULL;
+       char *logfile = NULL;
        char *file;
 
        /* config file is ~/.bti  */
@@ -324,6 +332,11 @@ static void parse_configfile(struct session *session)
                        c += 6;
                        if (c[0] != '\0')
                                proxy = strdup(c);
+               } else if (!strncasecmp(c, "logfile", 7) &&
+                          (c[7] == '=')) {
+                       c += 8;
+                       if (c[0] != '\0')
+                               logfile = strdup(c);
                }
        } while (!feof(config_file));
 
@@ -343,6 +356,8 @@ static void parse_configfile(struct session *session)
                        free(session->proxy);
                session->proxy = proxy;
        }
+       if (logfile)
+               session->logfile = logfile;
 
        /* Free buffer and close file.  */
        free(line);
@@ -355,10 +370,14 @@ static void log_session(struct session *session, int retval)
        char *filename;
        char *host;
 
-       /* logfile is ~/.bti.log  */
-       filename = alloca(strlen(session->homedir) + 10);
+       /* Only log something if we have a log file set */
+       if (!session->logfile)
+               return;
+
+       filename = alloca(strlen(session->homedir) +
+                         strlen(session->logfile) + 3);
 
-       sprintf(filename, "%s/.bti.log", session->homedir);
+       sprintf(filename, "%s/%s", session->homedir, session->logfile);
 
        log_file = fopen(filename, "a+");
        if (log_file == NULL)
@@ -391,6 +410,7 @@ int main(int argc, char *argv[], char *envp[])
                { "password", 1, NULL, 'p' },
                { "host", 1, NULL, 'H' },
                { "proxy", 1, NULL, 'P' },
+               { "logfile", 1, NULL, 'L' },
                { "help", 0, NULL, 'h' },
                { "bash", 0, NULL, 'b' },
                { "version", 0, NULL, 'v' },
@@ -463,6 +483,12 @@ int main(int argc, char *argv[], char *envp[])
                        session->proxy = strdup(optarg);
                        dbg("proxy = %s\n", session->proxy);
                        break;
+               case 'L':
+                       if (session->logfile)
+                               free(session->logfile);
+                       session->logfile = strdup(optarg);
+                       dbg("logfile = %s\n", session->logfile);
+                       break;
                case 'H':
                        if (strcasecmp(optarg, "twitter") == 0)
                                session->host = HOST_TWITTER;
@@ -544,7 +570,7 @@ int main(int argc, char *argv[], char *envp[])
        if (retval && !session->bash)
                fprintf(stderr, "tweet failed\n");
 
-//     log_session(session, retval);
+       log_session(session, retval);
 exit:
        session_free(session);
        return retval;;
index 580a9f4..bc97329 100644 (file)
@@ -6,4 +6,5 @@
 account=twitmaster
 password=icanhascheezburger
 host=identica
+logfile=.bti.log
 #proxy=http://localhost:8080
diff --git a/bti.xml b/bti.xml
index 96f424a..1b20586 100644 (file)
--- a/bti.xml
+++ b/bti.xml
@@ -30,6 +30,7 @@
           <arg><option>--password password</option></arg>
           <arg><option>--host HOST_NAME</option></arg>
           <arg><option>--proxy PROXY:PORT</option></arg>
+          <arg><option>--logfile LOGFILE</option></arg>
           <arg><option>--bash</option></arg>
           <arg><option>--debug</option></arg>
           <arg><option>--version</option></arg>
               </para>
             </listitem>
           </varlistentry>
+          <varlistentry>
+            <term><option>--logfile LOGFILE</option></term>
+            <listitem>
+              <para>
+               Specify a logfile for bti to write status messages to.  LOGFILE
+               is in relation to the user's home directory, not an absolute
+               path to a file.
+              </para>
+            </listitem>
+          </varlistentry>
           <varlistentry>
             <term><option>--debug</option></term>
             <listitem>
                </para>
              </listitem>
            </varlistentry>
+           <varlistentry>
+             <term><option>logfile</option></term>
+             <listitem>
+               <para>
+                The logfile name for bti to write what happened to.
+                This file is relative to the user's home directory.  If this
+                file is not specified here or on the command line, no logging
+                will be written to the disk.
+               </para>
+             </listitem>
+           </varlistentry>
          </variablelist>
          <para>
            There is an example config file called