Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

main.cpp

Go to the documentation of this file.
00001 
00002 #include "oqwsserver.h"
00003 
00004 #include <sys/types.h>
00005 #include <sys/stat.h>
00006 #include <fcntl.h>
00007 #include <unistd.h> 
00008 
00009 #include <syslog.h>
00010 #include <stdio.h>
00011 
00012 #define APPNAME "op-qws"
00013 
00014 void toSyslog(QtMsgType type, const char *msg)
00015 {
00016     int level = LOG_INFO;
00017     switch (type) {
00018         case QtDebugMsg:
00019             level = LOG_DEBUG;
00020             break;
00021         case QtWarningMsg:
00022             level = LOG_WARNING;
00023             break;
00024         case QtFatalMsg:
00025             level = LOG_ERR;
00026             break;
00027     }
00028     syslog (LOG_DAEMON | level, msg);
00029 }
00030 
00031 int daemon_init(void)
00032 {
00033     pid_t pid;
00034 
00035     if ((pid = fork()) < 0)
00036         return(-1);
00037     else if (pid != 0)
00038         exit(0);
00039 
00040     setsid();
00041 
00042     chdir("/"); 
00043 
00044     umask(0);
00045 
00046     fclose(stdout);
00047     fclose(stderr);
00048     fclose(stdin);
00049 
00050     return(0);
00051 }
00052 
00053 int main( int argc, char ** argv )
00054 {
00055     while (argc > 1) {
00056         if (strcmp(argv[--argc], "-d") == 0) {
00057             // daemonize
00058             openlog(APPNAME, 0, LOG_DAEMON);
00059             qInstallMsgHandler(toSyslog);
00060             if (daemon_init() != 0) {
00061                 fprintf(stderr, "%s: Error: Unable to daemonize\n", APPNAME);
00062                 return 1;
00063             }
00064         }
00065     }
00066 
00067     OQWSServer a(argc, argv, QApplication::GuiServer);
00068     return a.exec();
00069 }

Generated on Sat Nov 5 16:15:25 2005 for OPIE by  doxygen 1.4.2