backup
[lcr.git] / main.c
diff --git a/main.c b/main.c
index c97e69d..d0c39e1 100644 (file)
--- a/main.c
+++ b/main.c
@@ -66,7 +66,7 @@ int last_debug = 0;
 int debug_newline = 1;
 int nooutput = 0;
 
-static void debug(const char *function, int line, char *prefix, char *buffer)
+void debug(const char *function, int line, char *prefix, char *buffer)
 {
        /* if we have a new debug count, we add a mark */
        if (last_debug != debug_count)
@@ -169,7 +169,7 @@ void sighandler(int sigset)
                        schedp.sched_priority = 0;
                        sched_setscheduler(0, SCHED_OTHER, &schedp);
                }
-               fprintf(stderr, "PBX: Signal received: %d\n", sigset);
+               fprintf(stderr, "LCR: Signal received: %d\n", sigset);
                PERROR("Signal received: %d\n", sigset);
        }
 }
@@ -178,18 +178,8 @@ void sighandler(int sigset)
 /*
  * the main
  */
-#ifdef VOIP
-#define ARGC (args.GetCount()+1)
-#define ARGV(a) (args[a-1])
-void PBXMain::Main(void)
-{
-       PArgList &args = GetArguments();
-#else
-#define ARGC (argc)
-#define ARGV(a) (argv[a])
 int main(int argc, char *argv[])
 {
-#endif
        int                     ret = -1;
        int                     lockfd = -1; /* file lock */
        struct message          *message;
@@ -210,6 +200,7 @@ int main(int argc, char *argv[])
 #endif
        int                     idletime = 0, idlecheck = 0;
        char                    debug_log[128];
+       char                    tracetext[256];
 
        /* current time */
        GET_NOW();
@@ -218,20 +209,20 @@ int main(int argc, char *argv[])
        printf("\n** %s  Version %s\n\n", NAME, VERSION_STRING);
 
        /* show options */
-       if (ARGC <= 1)
+       if (argc <= 1)
        {
                usage:
                printf("\n");
-               printf("Usage: pbx (query | start | fork | rules | route)\n");
+               printf("Usage: lcr (query | start | fork | rules | route)\n");
                printf("query     = Show available isdn ports.\n");
-               printf("start     = Run pbx normally, abort with CTRL+C.\n");
+               printf("start     = Run lcr normally, abort with CTRL+C.\n");
                printf("fork      = Do daemon fork and run as background process.\n");
                printf("interface = Get help of available interface syntax.\n");
                printf("rules     = Get help of available routing rule syntax.\n");
                printf("rules [action] = Get individual help for given action.\n");
 //             printf("route = Show current routing as it is parsed.\n");
                printf("\n");
-               ret = 0;
+               ret = 999;
                goto free;
        }
 
@@ -266,7 +257,7 @@ int main(int argc, char *argv[])
        created_mutexe = 1;
 
        /* show interface */
-       if (!(strcasecmp(ARGV(1),"interface")))
+       if (!(strcasecmp(argv[1],"interface")))
        {
                doc_interface();
                ret = 0;
@@ -274,18 +265,18 @@ int main(int argc, char *argv[])
        }
 
        /* show rules */
-       if (!(strcasecmp(ARGV(1),"rules")))
+       if (!(strcasecmp(argv[1],"rules")))
        {
-               if (ARGC <= 2)
+               if (argc <= 2)
                        doc_rules(NULL);
                else
-                       doc_rules(ARGV(2));
+                       doc_rules(argv[2]);
                ret = 0;
                goto free;
        }
 
        /* query available isdn ports */
-       if (!(strcasecmp(ARGV(1),"query")))
+       if (!(strcasecmp(argv[1],"query")))
        {
                mISDN_port_info();
                ret = 0;
@@ -327,7 +318,7 @@ int main(int argc, char *argv[])
 
 #if 0
        /* query available isdn ports */
-       if (!(strcasecmp(ARGV(1),"route")))
+       if (!(strcasecmp(argv[1],"route")))
        {
                ruleset_debug(ruleset_first);
                ret = 0;
@@ -336,7 +327,7 @@ int main(int argc, char *argv[])
 #endif
 
        /* do fork in special cases */
-       if (!(strcasecmp(ARGV(1),"fork")))
+       if (!(strcasecmp(argv[1],"fork")))
        {
                pid_t pid;
 
@@ -365,27 +356,27 @@ int main(int argc, char *argv[])
                }
                if (pid != 0)
                {
-                       printf("PBX: Starting daemon.\n");
+                       printf("LCR: Starting daemon.\n");
                        exit(0);
                }
                nooutput = 1;
        } else
        /* if not start */
-       if (!!strcasecmp(ARGV(1),"start"))
+       if (!!strcasecmp(argv[1],"start"))
        {
                goto usage;
        }
 
        /* create lock and lock! */
-       if ((lockfd = open("/var/run/pbx.lock", O_CREAT, 0)) < 0)
+       if ((lockfd = open("/var/run/lcr.lock", O_CREAT, 0)) < 0)
        {
-               fprintf(stderr, "Cannot create lock file: /var/run/pbx.lock\n");
+               fprintf(stderr, "Cannot create lock file: /var/run/lcr.lock\n");
                goto free;
        }
        if (flock(lockfd, LOCK_EX|LOCK_NB) < 0)
        {
                if (errno == EWOULDBLOCK)
-                       fprintf(stderr, "PBX: Another PBX process is running. Please kill the other one.\n");
+                       fprintf(stderr, "LCR: Another LCR process is running. Please kill the other one.\n");
                else    fprintf(stderr, "Locking process failed: errno=%d\n", errno);
                goto free;
        }
@@ -417,7 +408,6 @@ int main(int argc, char *argv[])
        }
        relink_interfaces();
        interface_first = interface_newlist;
-       free_interfaces(interface_newlist);
        interface_newlist = NULL;
        
        /* locking memory paging */
@@ -469,7 +459,10 @@ int main(int argc, char *argv[])
        created_signal = 1;
 
        /*** main loop ***/
-       printf("%s %s started, waiting for calls...\n", NAME, VERSION_STRING);
+       SPRINT(tracetext, "%s %s started, waiting for calls...", NAME, VERSION_STRING);
+       start_trace(0, NULL, NULL, NULL, 0, 0, 0, tracetext);
+       printf("%s\n", tracetext);
+       end_trace();
        GET_NOW();
 #ifdef DEBUG_DURATION
        start_d = now_d;
@@ -693,7 +686,7 @@ BUDETECT
                        idletime += 4000;
                }
        }
-       printf("PBX terminated\n");
+       printf("LCR terminated\n");
        ret=0;
 
        /* free all */
@@ -793,6 +786,10 @@ free:
 #define MEMCHECK(a, b) \
        if (b) \
        { \
+               SPRINT(tracetext, a, NAME); \
+               start_trace(0, NULL, NULL, NULL, 0, 0, 0, tracetext); \
+               if (ret) add_trace("blocks", NULL, "%d", b); \
+               end_trace(); \
                printf("\n******************************\n\007"); \
                printf("\nERROR: %d %s\n", b, a); \
                printf("\n******************************\n"); \
@@ -810,13 +807,15 @@ free:
        MEMCHECK("file handler(s) left",fhuse)
 
        /* take me out */
+       if (ret == 999)
+               exit(0);
+       SPRINT(tracetext, "%s exit", NAME);
+       printf("%s\n", tracetext);
+       start_trace(0, NULL, NULL, NULL, 0, 0, 0, tracetext);
        if (ret)
-               printf("PBX: Exit (code %d)\n", ret);
-#ifdef VOIP
-       return;
-#else
+               add_trace("error", NULL, "%d", ret);
+       end_trace();
        return(ret);
-#endif
 }