don't make expression evaluator allocate a memory buffer for each result
[asterisk/asterisk.git] / utils / astman.c
index 6fa6b81..e6af191 100755 (executable)
@@ -7,11 +7,11 @@
  
 #include <newt.h>
 #include <stdio.h>
-#include <sys/socket.h>
 #include <sys/time.h>
 #include <netdb.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
+#include <sys/socket.h>
 #include <sys/select.h>
 #include <fcntl.h>
 #include <string.h>
 #include <unistd.h>
 #include <stdlib.h>
 
-#include <asterisk/md5.h>
-#include <asterisk/manager.h>
+#include "asterisk/md5.h"
+#include "asterisk/manager.h"
+
+#undef gethostbyname
 
 #define MAX_HEADERS 80
 #define MAX_LEN 256
 
+/*
+ * 2005.05.27 - different versions of newt define the type of the buffer
+ * for the 5th argument to newtEntry() as char ** or const char ** . To 
+ * let the code compile cleanly with -Werror, we cast it to void * through 
+ * _NEWT_CAST.
+ */
+#define _NEWT_CAST (void *)
+
 static struct ast_mansession {
        struct sockaddr_in sin;
        int fd;
@@ -43,6 +53,17 @@ static struct ast_chan {
        struct ast_chan *next;
 } *chans;
 
+/* dummy functions to be compatible with the Asterisk core for md5.c */
+void ast_register_file_version(const char *file, const char *version);
+void ast_register_file_version(const char *file, const char *version)
+{
+}
+
+void ast_unregister_file_version(const char *file);
+void ast_unregister_file_version(const char *file)
+{
+}
+
 static struct ast_chan *find_chan(char *name)
 {
        struct ast_chan *prev = NULL, *chan = chans;
@@ -170,13 +191,14 @@ static struct event {
        { "Status", event_status },
        { "Link", event_ignore },
        { "Unlink", event_ignore },
+       { "StatusComplete", event_ignore }
 };
 
 static int process_message(struct ast_mansession *s, struct message *m)
 {
        int x;
-       char event[80];
-       strncpy(event, get_header(m, "Event"), sizeof(event));
+       char event[80] = "";
+       strncpy(event, get_header(m, "Event"), sizeof(event) - 1);
        if (!strlen(event)) {
                fprintf(stderr, "Missing event in request");
                return 0;
@@ -383,14 +405,14 @@ static int show_doing(char *title, char *tmp)
        return 0;
 }
 
-static int hide_doing()
+static int hide_doing(void)
 {
        newtPopWindow();
        newtFormDestroy(showform);
        return 0;
 }
 
-static void try_status()
+static void try_status(void)
 {
        struct message *m;
        manager_action("Status", "");
@@ -427,13 +449,13 @@ static int get_user_input(char *msg, char *buf, int buflen)
        newtComponent ok;
        newtComponent cancel;
        newtComponent inpfield;
-       char *input;
+       const char *input;
        int res = -1;
        struct newtExitStruct es;
 
        newtCenteredWindow(60,7, msg);
 
-       inpfield = newtEntry(5, 2, "", 50, &input, 0);
+       inpfield = newtEntry(5, 2, "", 50, _NEWT_CAST &input, 0);
        ok = newtButton(22, 3, "OK");
        cancel = newtButton(32, 3, "Cancel");
        form = newtForm(NULL, NULL, 0);
@@ -550,8 +572,8 @@ static int login(char *hostname)
        newtComponent label;
        newtComponent ulabel;
        newtComponent plabel;
-       char *user;
-       char *pass;
+       const char *user;
+       const char *pass;
        struct message *m;
        struct newtExitStruct es;
        char tmp[55];
@@ -583,7 +605,7 @@ static int login(char *hostname)
        session.sin.sin_port = htons(DEFAULT_MANAGER_PORT);
        memcpy(&session.sin.sin_addr, hp->h_addr, sizeof(session.sin.sin_addr));
 
-       if (connect(session.fd, &session.sin, sizeof(session.sin))) {
+       if (connect(session.fd,(struct sockaddr*)&session.sin, sizeof(session.sin))) {
                snprintf(tmp, sizeof(tmp), "%s failed: %s\n", hostname, strerror(errno));
                show_message("Connect Failed", tmp);
                return -1;
@@ -600,8 +622,8 @@ static int login(char *hostname)
        ulabel = newtLabel(4,2,"Username:");
        plabel = newtLabel(4,3,"Password:");
        
-       username = newtEntry(14, 2, "", 20, &user, 0);
-       password = newtEntry(14, 3, "", 20, &pass, NEWT_FLAG_HIDDEN);
+       username = newtEntry(14, 2, "", 20, _NEWT_CAST &user, 0);
+       password = newtEntry(14, 3, "", 20, _NEWT_CAST &pass, NEWT_FLAG_HIDDEN);
        
        form = newtForm(NULL, NULL, 0);
        newtFormAddComponents(form, username, password, login, cancel, label, ulabel, plabel,NULL);