00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 const char *XrdFrmXfrMainCVSID = "$Id: XrdFrmXfrMain.cc 35287 2010-09-14 21:19:35Z ganis $";
00014
00015
00016
00017
00018
00019
00020 static const char *XrdFrmOpts = ":bc:dfhk:l:n:Tv";
00021 static const char *XrdFrmUsage =
00022
00023 " [-b] [-c <cfgfn>] [-d] [-f] [-k {num | sz{k|m|g}] [-l <lfile>] [-n name] [-T] [-v]\n";
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 #include <unistd.h>
00053 #include <ctype.h>
00054 #include <errno.h>
00055 #include <signal.h>
00056 #include <stdlib.h>
00057 #include <string.h>
00058 #include <strings.h>
00059 #include <stdio.h>
00060 #include <sys/param.h>
00061
00062 #include "XrdFrm/XrdFrmConfig.hh"
00063 #include "XrdFrm/XrdFrmTrace.hh"
00064 #include "XrdFrm/XrdFrmXfrAgent.hh"
00065 #include "XrdFrm/XrdFrmXfrDaemon.hh"
00066 #include "XrdSys/XrdSysError.hh"
00067 #include "XrdSys/XrdSysHeaders.hh"
00068 #include "XrdSys/XrdSysLogger.hh"
00069 #include "XrdSys/XrdSysPthread.hh"
00070
00071 using namespace XrdFrm;
00072
00073
00074
00075
00076
00077 XrdFrmConfig XrdFrm::Config(XrdFrmConfig::ssXfr,
00078 XrdFrmOpts, XrdFrmUsage);
00079
00080
00081
00082 XrdOucTrace *XrdXrootdTrace;
00083 XrdSysError XrdLog(0, "");
00084 XrdOucTrace XrdTrace(&Say);
00085
00086
00087
00088
00089
00090 int main(int argc, char *argv[])
00091 {
00092 XrdSysLogger Logger;
00093 extern int mainConfig();
00094 sigset_t myset;
00095 char *pP;
00096
00097
00098
00099 signal(SIGPIPE, SIG_IGN);
00100 sigemptyset(&myset);
00101 sigaddset(&myset, SIGPIPE);
00102 sigaddset(&myset, SIGCHLD);
00103 pthread_sigmask(SIG_BLOCK, &myset, NULL);
00104
00105
00106
00107 if (sizeof(long) > 4) XrdSysThread::setStackSize((size_t)1048576);
00108 else XrdSysThread::setStackSize((size_t)786432);
00109
00110
00111
00112 if (!(pP = rindex(argv[0], '/'))) pP = argv[0];
00113 else pP++;
00114 if (strcmp("frm_xfrd", pP)) Config.isAgent = 1;
00115
00116
00117
00118 Say.logger(&Logger);
00119 XrdLog.logger(&Logger);
00120 if (!Config.Configure(argc, argv, &mainConfig)) exit(4);
00121
00122
00123
00124 XrdXrootdTrace = new XrdOucTrace(&Say);
00125
00126
00127
00128 exit(Config.isAgent ? XrdFrmXfrAgent::Start() : XrdFrmXfrDaemon::Start());
00129 }
00130
00131
00132
00133
00134
00135 int mainConfig()
00136 {
00137
00138
00139 return (Config.isAgent ? 0 : !XrdFrmXfrDaemon::Init());
00140 }