* Began (but did not finish) applying GPL3+ declarations to each source file. This...
[citadel.git] / citadel / commands.c
index fb1b99b9b9ee5c9430a17c51021697e408732bc8..427887cbb67554bd5d4670856a953e74947907be 100644 (file)
@@ -4,6 +4,21 @@
  * This file contains functions which implement parts of the
  * text-mode user interface.
  *
+ * Copyright (c) 1987-2009 by the citadel.org team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
 #include "sysdep.h"
@@ -43,6 +58,7 @@
 #include <signal.h>
 #include <errno.h>
 #include <stdarg.h>
+#include <libcitadel.h>
 #include "citadel.h"
 #include "citadel_ipc.h"
 #include "commands.h"
@@ -50,7 +66,6 @@
 #include "citadel_decls.h"
 #include "routines.h"
 #include "routines2.h"
-#include "tools.h"
 #include "rooms.h"
 #include "client_chat.h"
 #include "citadel_dirs.h"
@@ -81,6 +96,7 @@ int rc_color_use_bg;
 int rc_prompt_control = 0;
 time_t rc_idle_threshold = (time_t)900;
 char rc_url_cmd[SIZ];
+char rc_open_cmd[SIZ];
 char rc_gotmail_cmd[SIZ];
 
 char *gl_string;
@@ -394,6 +410,7 @@ static int async_ka_enabled = 0;
 
 static void *ka_thread(void *arg)
 {
+#ifdef HAVE_BACKTRACE
        char threadName[256];
 
        // Set up our name
@@ -401,12 +418,14 @@ static void *ka_thread(void *arg)
 
        // Register for tracing
        eCrash_RegisterThread(threadName, 0);
-
+#endif
        really_do_keepalive();
        pthread_detach(ka_thr_handle);
        ka_thr_active = 0;
        
+#ifdef HAVE_BACKTRACE
        eCrash_UnregisterThread();
+#endif
        return NULL;
 }
 
@@ -769,6 +788,7 @@ void load_command_set(void)
        rc_ansi_color = 0;
        rc_color_use_bg = 0;
        strcpy(rc_url_cmd, "");
+       strcpy(rc_open_cmd, "");
        strcpy(rc_gotmail_cmd, "");
 #ifdef HAVE_OPENSSL
        rc_encrypt = RC_DEFAULT;
@@ -905,6 +925,9 @@ void load_command_set(void)
                if (!strncasecmp(buf, "urlcmd=", 7))
                        strcpy(rc_url_cmd, &buf[7]);
 
+               if (!strncasecmp(buf, "opencmd=", 7))
+                       strcpy(rc_open_cmd, &buf[8]);
+
                if (!strncasecmp(buf, "gotmailcmd=", 11))
                        strcpy(rc_gotmail_cmd, &buf[11]);
 
@@ -1561,7 +1584,7 @@ void look_for_ansi(void)
        struct timeval tv;
        char abuf[512];
        time_t now;
-       int a;
+       int a, rv;
 
        if (rc_ansi_color == 0) {
                enable_color = 0;
@@ -1586,7 +1609,7 @@ void look_for_ansi(void)
                        select(1, &rfds, NULL, NULL, &tv);
                        if (FD_ISSET(0, &rfds)) {
                                abuf[strlen(abuf) + 1] = 0;
-                               read(0, &abuf[strlen(abuf)], 1);
+                               rv = read(0, &abuf[strlen(abuf)], 1);
                        }
                } while (FD_ISSET(0, &rfds));
 
@@ -1637,7 +1660,7 @@ char keymenu(char *menuprompt, char *menustring) {
        choices = num_tokens(menustring, '|');
 
        if (menuprompt != NULL) do_prompt = 1;
-       if (menuprompt != NULL) if (IsEmptyStr(menuprompt)) do_prompt = 0;
+       if ((menuprompt != NULL) && (IsEmptyStr(menuprompt))) do_prompt = 0;
 
        while (1) {
                if (display_prompt) {