-rw-r--r-- | src/iiid.cc | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/iiid.cc b/src/iiid.cc new file mode 100644 index 0000000..6c23790 --- a/dev/null +++ b/src/iiid.cc @@ -0,0 +1,86 @@ +#include <syslog.h> +#include <getopt.h> +#include <iostream> +#include <cassert> +#include <stdexcept> +#include "eyetil.h" +#include "eyefiworker.h" + +#include "config.h" + +#include "eyefi.nsmap" + +#define PHEADER \ + PACKAGE " Version " VERSION "\n" \ + "Copyright (c) 2009 Klever Group" + +int main(int argc,char **argv) try { + + int port = 59278; + + while(true) { + static struct option opts[] = { + { "help", no_argument, 0, 'h' }, + { "usage", no_argument, 0, 'h' }, + { "version", no_argument, 0, 'V' }, + { "license", no_argument, 0, 'L' }, + { "port", required_argument, 0, 'p' }, + { NULL, 0, 0, 0 } + }; + int c = getopt_long(argc,argv,"hVLp:",opts,NULL); + if(c==-1) break; + switch(c) { + case 'h': + std::cerr << PHEADER << std::endl << std::endl + << " " << argv[0] << " [options]" << std::endl + << std::endl << + " -h, --help,\n" + " --usage display this text\n" + " -V, --version display version information\n" + " -L, --license show license\n" + " -p <port>, --port=<port> port to listen to\n" + " (you're not likely to ever need it)\n" + << std::endl << std::endl; + exit(0); + break; + case 'V': + std::cerr << VERSION << std::endl; + exit(0); + break; + case 'L': + extern const char *COPYING; + std::cerr << COPYING << std::endl; + exit(0); + break; + case 'p': + port = strtol(optarg,0,0); + if(errno) { + std::cerr << "Failed to parse port number" << std::endl; + exit(1); + } + break; + default: + std::cerr << "Huh?" << std::endl; + exit(1); + break; + } + } + + const char *ident = rindex(*argv,'/'); + if(ident) + ++ident; + else + ident = *argv; + openlog(ident,LOG_PERROR|LOG_PID,LOG_DAEMON); + syslog(LOG_INFO,"Starting iii eye-fi manager"); + + eyefiworker().run(port); + + closelog(); + return 0; +} catch(std::exception& e) { + syslog(LOG_CRIT,"Exiting iii daemon, because of error condition"); + syslog(LOG_CRIT,"Exception: %s",e.what()); + return 1; +} + |