Diff for /embedtools/src/pceng.c between versions 1.1.2.3 and 1.1.2.12

version 1.1.2.3, 2011/07/22 14:20:24 version 1.1.2.12, 2012/04/05 12:22:44
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 49  SUCH DAMAGE. Line 49  SUCH DAMAGE.
   
 int Verbose, Kill;  int Verbose, Kill;
 extern char compiled[], compiledby[], compilehost[];  extern char compiled[], compiledby[], compilehost[];
sl_config cfg;cfg_root_t cfg;
 char szConf[MAXPATHLEN] = DEFAULT_PCENG_CFG;  char szConf[MAXPATHLEN] = DEFAULT_PCENG_CFG;
   
   
Line 58  Usage() Line 58  Usage()
 {  {
         printf( "-= PCEngines =- events managment tool\n"          printf( "-= PCEngines =- events managment tool\n"
                 "=== %s === %s@%s ===\n\n"                  "=== %s === %s@%s ===\n\n"
                "  Syntax: pceng [options]\n"                "  Syntax: pceng [options] [led_no[=<0|1>] ...]\n"
                 "\n"                  "\n"
                 "\t-v\t\tVerbose ...\n"                  "\t-v\t\tVerbose ...\n"
                "\t-b\t\tRun in batch mode ...\n"                "\t-D\t\tRun in background mode ...\n"
                 "\t-c <conf>\tConfig events file ...\n"                  "\t-c <conf>\tConfig events file ...\n"
                 "\n", compiled, compiledby, compilehost);                  "\n", compiled, compiledby, compilehost);
 }  }
Line 73  sigHand(int sig) Line 73  sigHand(int sig)
   
         switch (sig) {          switch (sig) {
                 case SIGHUP:                  case SIGHUP:
                        UnloadConfig(&cfg);                        cfgUnloadConfig(&cfg);
                        if (LoadConfig(szConf, &cfg)) {                        if (cfgLoadConfig(szConf, &cfg)) {
                                 syslog(LOG_ERR, "Error:: #%d - %s", cfg_GetErrno(), cfg_GetError());                                  syslog(LOG_ERR, "Error:: #%d - %s", cfg_GetErrno(), cfg_GetError());
                                 raise(SIGTERM);                                  raise(SIGTERM);
                         }                          }
Line 93  sigHand(int sig) Line 93  sigHand(int sig)
 int  int
 main(int argc, char **argv)  main(int argc, char **argv)
 {  {
        char ch;        char ch, ledno, *pos;
        int io, mode = 0;        int i, ret = 0, mode = 1;
         struct sigaction sact;          struct sigaction sact;
   #ifdef __FreeBSD__
           int io;
   #endif
   
        while ((ch = getopt(argc, argv, "vhbc:")) != -1)        while ((ch = getopt(argc, argv, "vhDc:")) != -1)
                 switch (ch) {                  switch (ch) {
                         case 'c':                          case 'c':
                                 strlcpy(szConf, optarg, sizeof szConf);                                  strlcpy(szConf, optarg, sizeof szConf);
                                 break;                                  break;
                        case 'b':                        case 'D':
                                mode = 1;                                mode = 0;
                                 break;                                  break;
                         case 'v':                          case 'v':
                                 Verbose++;                                  Verbose++;
Line 116  main(int argc, char **argv) Line 119  main(int argc, char **argv)
         argc -= optind;          argc -= optind;
         argv += optind;          argv += optind;
   
        openlog("pceng", LOG_CONS | LOG_PID, LOG_DAEMON);        if (!mode)
                 openlog("pceng", LOG_CONS | LOG_PID, LOG_DAEMON);
         else
                 openlog("pceng", LOG_CONS | LOG_PID | LOG_PERROR, LOG_USER);
   
        if (LoadConfig(szConf, &cfg)) {#ifdef __FreeBSD__
         io = open(_PATH_DEVIO, O_RDONLY);
         if (io == -1) {
                 printf("Error:: in open dev %s #%d - %s\n", _PATH_DEVIO, errno, strerror(errno));
                 ret = 2;
                 goto end;
         }
 #endif
 
         if (cfgLoadConfig(szConf, &cfg)) {
                 printf("Error:: #%d - %s\n", cfg_GetErrno(), cfg_GetError());                  printf("Error:: #%d - %s\n", cfg_GetErrno(), cfg_GetError());
                return 1;                ret = 1;
                 goto end;
         }          }
   
           if (argc) {
                   VERB(1) syslog(LOG_WARNING, "LED client ...");
                   for (i = 0; !ret && i < argc; pos = NULL, i++) {
                           if ((pos = strchr(argv[i], '='))) {
                                   *pos++ = 0;
                                   ledno = (char) strtol(argv[i], NULL, 0);
                                   ch = (char) strtol(pos, NULL, 0);
                           } else {
                                   ledno = (char) strtol(argv[i], NULL, 0);
                                   ch = -1;
                           }
                           ret = LED((u_char) ledno, (u_char) ch);
                           printf("%s:: LED#%d=%d\n", (ch == -1) ? "Get" : "Set", ledno, ret);
                   }
                   goto end;
           }
   
         sact.sa_handler = sigHand;          sact.sa_handler = sigHand;
         sigemptyset(&sact.sa_mask);          sigemptyset(&sact.sa_mask);
         sigaction(SIGHUP, &sact, NULL);          sigaction(SIGHUP, &sact, NULL);
         sigaction(SIGTERM, &sact, NULL);          sigaction(SIGTERM, &sact, NULL);
         sigaction(SIGCHLD, &sact, NULL);          sigaction(SIGCHLD, &sact, NULL);
   
         io = open(_PATH_DEVIO, O_RDWR);  
         if (io == -1) {  
                 printf("Error:: in open dev %s #%d - %s\n", _PATH_DEVIO, errno, strerror(errno));  
                 goto end;  
         }  
   
         if (!mode)          if (!mode)
                 switch (fork()) {                  switch (fork()) {
                         case -1:                          case -1:
                                 printf("Error:: #%d - %s\n", errno, strerror(errno));                                  printf("Error:: #%d - %s\n", errno, strerror(errno));
                                   ret = 1;
                                 goto end;                                  goto end;
                         case 0:                          case 0:
                                 VERB(1) printf("Welcome into darkness ...\n");                                  VERB(1) printf("Welcome into darkness ...\n");
Line 159  main(int argc, char **argv) Line 187  main(int argc, char **argv)
                                 goto end;                                  goto end;
                 }                  }
   
        Run(io);        ret = Run();
   
 end:  end:
           cfgUnloadConfig(&cfg);
   #ifdef __FreeBSD__
         if (io > 2)          if (io > 2)
                 close(io);                  close(io);
        UnloadConfig(&cfg);#endif
         closelog();          closelog();
        return 0;        return ret;
 }  }

Removed from v.1.1.2.3  
changed lines
  Added in v.1.1.2.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>