node * PyParser_ParseStringObject(const char *s, PyObject *filename, grammar *g, int start, perrdetail *err_ret, int *flags) { struct tok_state *tok; int exec_input = start == file_input; if (initerr(err_ret, filename) < 0) return NULL; if (*flags & PyPARSE_IGNORE_COOKIE) tok = PyTokenizer_FromUTF8(s, exec_input); else tok = PyTokenizer_FromString(s, exec_input); if (tok == NULL) { err_ret->error = PyErr_Occurred() ? E_DECODE : E_NOMEM; return NULL; } #ifndef PGEN Py_INCREF(err_ret->filename); tok->filename = err_ret->filename; #endif return parsetok(tok, g, start, err_ret, flags); }
node * PyParser_ParseFileFlagsEx(FILE *fp, const char *filename, const char *enc, grammar *g, int start, char *ps1, char *ps2, perrdetail *err_ret, int *flags) { struct tok_state *tok; initerr(err_ret, filename); if ((tok = PyTokenizer_FromFile(fp, (char *)enc, ps1, ps2)) == NULL) { err_ret->error = E_NOMEM; return NULL; } tok->filename = filename; return parsetok(tok, g, start, err_ret, flags); }
node * PyParser_ParseFileObject(FILE *fp, PyObject *filename, const char *enc, grammar *g, int start, const char *ps1, const char *ps2, perrdetail *err_ret, int *flags) { struct tok_state *tok; if (initerr(err_ret, filename) < 0) return NULL; if ((tok = PyTokenizer_FromFile(fp, enc, ps1, ps2)) == NULL) { err_ret->error = E_NOMEM; return NULL; } #ifndef PGEN Py_INCREF(err_ret->filename); tok->filename = err_ret->filename; #endif return parsetok(tok, g, start, err_ret, flags); }
node * PyParser_ParseFileFlagsEx(FILE *fp, const char *filename, grammar *g, int start, char *ps1, char *ps2, perrdetail *err_ret, int *flags) { struct tok_state *tok; initerr(err_ret, filename); if ((tok = PyTokenizer_FromFile(fp, ps1, ps2)) == NULL) { err_ret->error = E_NOMEM; return NULL; } tok->filename = filename; if (Py_TabcheckFlag || Py_VerboseFlag) { tok->altwarning = (filename != NULL); if (Py_TabcheckFlag >= 2) tok->alterror++; } return parsetok(tok, g, start, err_ret, flags); }
node * PyParser_ParseStringFlagsFilenameEx(const char *s, const char *filename, grammar *g, int start, perrdetail *err_ret, int *flags) { struct tok_state *tok; int exec_input = start == file_input; initerr(err_ret, filename); if (*flags & PyPARSE_IGNORE_COOKIE) tok = PyTokenizer_FromUTF8(s, exec_input); else tok = PyTokenizer_FromString(s, exec_input); if (tok == NULL) { err_ret->error = PyErr_Occurred() ? E_DECODE : E_NOMEM; return NULL; } tok->filename = filename ? filename : "<string>"; return parsetok(tok, g, start, err_ret, flags); }
node * PyParser_ParseStringFlagsFilenameEx(const char *s, const char *filename, grammar *g, int start, perrdetail *err_ret, int *flags) { struct tok_state *tok; initerr(err_ret, filename); if ((tok = PyTokenizer_FromString(s)) == NULL) { err_ret->error = PyErr_Occurred() ? E_DECODE : E_NOMEM; return NULL; } tok->filename = filename ? filename : "<string>"; if (Py_TabcheckFlag || Py_VerboseFlag) { tok->altwarning = (tok->filename != NULL); if (Py_TabcheckFlag >= 2) tok->alterror++; } return parsetok(tok, g, start, err_ret, flags); }
int main(int argc, char *argv[]) { int get_creds = 1; int fg = 0; int verbosity = 0; int opt; int must_srv_mds = 0, must_srv_oss = 0, must_srv_mgs = 0; char *progname; while ((opt = getopt(argc, argv, "fnvmogksz")) != -1) { switch (opt) { case 'f': fg = 1; break; case 'n': get_creds = 0; break; case 'v': verbosity++; break; case 'm': get_creds = 1; must_srv_mds = 1; break; case 'o': get_creds = 1; must_srv_oss = 1; break; case 'g': get_creds = 1; must_srv_mgs = 1; break; case 'k': krb_enabled = 1; break; case 'h': usage(stdout, argv[0]); break; case 's': #ifdef HAVE_OPENSSL_SSK sk_enabled = 1; #else fprintf(stderr, "error: request for SSK but service " "support not enabled\n"); usage(stderr, argv[0]); #endif break; case 'z': null_enabled = 1; break; default: usage(stderr, argv[0]); break; } } if ((progname = strrchr(argv[0], '/'))) progname++; else progname = argv[0]; if (!sk_enabled && !krb_enabled && !null_enabled) { #if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(3, 0, 53, 0) fprintf(stderr, "warning: no -k, -s, or -z option given, " "assume -k for backward compatibility\n"); krb_enabled = 1; #else fprintf(stderr, "error: need one of -k, -s, or -z options\n"); usage(stderr, argv[0]); #endif } initerr(progname, verbosity, fg); /* For kerberos use gss mechanisms but ignore for sk and null */ if (krb_enabled) { if (gssd_check_mechs()) { printerr(0, "ERROR: problem with gssapi library\n"); exit(1); } if (gssd_get_local_realm()) { printerr(0, "ERROR: Can't get Local Kerberos realm\n"); exit(1); } if (get_creds && gssd_prepare_creds(must_srv_mgs, must_srv_mds, must_srv_oss)) { printerr(0, "unable to obtain root (machine) " "credentials\n"); printerr(0, "do you have a keytab entry for " "<lustre_xxs>/<your.host>@<YOUR.REALM> in " "/etc/krb5.keytab?\n"); exit(1); } } if (!fg) mydaemon(0, 0); /* * XXX: There is risk of memory leak for missing call * cleanup_mapping() for SIGKILL and SIGSTOP. */ signal(SIGINT, sig_die); signal(SIGTERM, sig_die); signal(SIGHUP, sig_hup); if (!fg) release_parent(); gssd_init_unique(GSSD_SVC); svcgssd_run(); cleanup_mapping(); printerr(0, "gssd_run returned!\n"); abort(); }
static const char *loadHRESULT(const char *message, HRESULT hr) { return initerr(message, L"HRESULT", (DWORD) hr); }
static const char *loadLastError(const char *message) { return initerr(message, L"GetLastError() ==", GetLastError()); }
int main(int argc, char *argv[]) { int fg = 0; int verbosity = 0; int opt; extern char *optarg; char *progname; while ((opt = getopt(argc, argv, "fvrmMp:k:d:")) != -1) { switch (opt) { case 'f': fg = 1; break; case 'M': use_memcache = 1; break; case 'v': verbosity++; break; case 'p': strlcpy(pipefs_dir, optarg, sizeof(pipefs_dir)); if (pipefs_dir[sizeof(pipefs_dir)-1] != '\0') errx(1, "pipefs path name too long"); break; case 'k': strlcpy(keytabfile, optarg, sizeof(keytabfile)); if (keytabfile[sizeof(keytabfile)-1] != '\0') errx(1, "keytab path name too long"); break; case 'd': strlcpy(ccachedir, optarg, sizeof(ccachedir)); if (ccachedir[sizeof(ccachedir)-1] != '\0') errx(1, "ccachedir path name too long"); break; default: usage(argv[0]); break; } } if ((progname = strrchr(argv[0], '/'))) progname++; else progname = argv[0]; initerr(progname, verbosity, fg); if (gssd_check_mechs() != 0) errx(1, "Problem with gssapi library"); if (gssd_get_local_realm()) errx(1, "get local realm"); if (!fg && daemon(0, 0) < 0) errx(1, "fork"); /* This should be checked _after_ daemon(), because we need to own * the undo-able semaphore by this process */ gssd_init_unique(GSSD_CLI); /* Process keytab file and get machine credentials. This will modify * disk status so do it after we are sure we are the only instance */ if (gssd_refresh_krb5_machine_creds()) return -1; signal(SIGINT, sig_die); signal(SIGTERM, sig_die); signal(SIGHUP, sig_hup); #if 0 /* Determine Kerberos information from the kernel */ gssd_obtain_kernel_krb5_info(); #endif lgssd_init_mutexs(); printerr(0, "lgssd initialized and ready to serve\n"); lgssd_run(); lgssd_cleanup(); printerr(0, "lgssd exiting\n"); return 0; }
void LUA_SIM_EXT_KUKA_LBR_IIWA_START(SLuaCallBack* p) { // the callback function of the new Lua command ("simExtSkeleton_getSensorData") // return Lua Table or arrays containing position, torque, torque minus motor force, timestamp, FRI state try { if (!kukaPluginPG) { BOOST_LOG_TRIVIAL(info) << "Starting KUKA LBR iiwa plugin connection to Kuka iiwa\n"; CLuaFunctionData data; if (data.readDataFromLua(p,inArgs_KUKA_LBR_IIWA_START,inArgs_KUKA_LBR_IIWA_START[0],LUA_KUKA_LBR_IIWA_START_COMMAND)) { std::vector<CLuaFunctionDataItem>* inData=data.getInDataPtr(); std::vector<std::string> JointHandles; for (size_t i=0;i<inData->at(0).stringData.size();i++) { JointHandles.push_back(std::string(inData->at(0).stringData[i].c_str())); } std::string RobotTipHandle (inData->at(1 ).stringData[0]); std::string RobotTargetHandle (inData->at(2 ).stringData[0]); std::string RobotTargetBaseHandle (inData->at(3 ).stringData[0]); std::string RobotModel (inData->at(4 ).stringData[0]); std::string LocalZMQAddress (inData->at(5 ).stringData[0]); std::string RemoteZMQAddress (inData->at(6 ).stringData[0]); std::string LocalHostKukaKoniUDPAddress (inData->at(7 ).stringData[0]); std::string LocalHostKukaKoniUDPPort (inData->at(8 ).stringData[0]); std::string RemoteHostKukaKoniUDPAddress (inData->at(9 ).stringData[0]); std::string RemoteHostKukaKoniUDPPort (inData->at(10).stringData[0]); std::string KukaCommandMode (inData->at(11).stringData[0]); std::string KukaMonitorMode (inData->at(12).stringData[0]); std::string IKGroupName (inData->at(13).stringData[0]); kukaPluginPG=std::make_shared<grl::vrep::KukaVrepPlugin>( std::make_tuple( JointHandles , RobotTipHandle , RobotTargetHandle , RobotTargetBaseHandle , RobotModel , LocalZMQAddress , RemoteZMQAddress , LocalHostKukaKoniUDPAddress , LocalHostKukaKoniUDPPort , RemoteHostKukaKoniUDPAddress , RemoteHostKukaKoniUDPPort , KukaCommandMode , KukaMonitorMode , IKGroupName ) ); kukaPluginPG->construct(); } else { /// @todo report an error? // use default params kukaPluginPG=std::make_shared<grl::vrep::KukaVrepPlugin>(); kukaPluginPG->construct(); } } } catch (const boost::exception& e){ // log the error and print it to the screen, don't release the exception std::string initerr("v_repExtKukaLBRiiwa plugin encountered the following error and will disable itself:\n" + boost::diagnostic_information(e)); simAddStatusbarMessage( initerr.c_str()); BOOST_LOG_TRIVIAL(error) << initerr; kukaPluginPG.reset(); } catch (const std::exception& e){ // log the error and print it to the screen, don't release the exception std::string initerr("v_repExtKukaLBRiiwa plugin encountered the following error and will disable itself:\n" + boost::diagnostic_information(e)); simAddStatusbarMessage( initerr.c_str()); BOOST_LOG_TRIVIAL(error) << initerr; kukaPluginPG.reset(); } catch (...){ // log the error and print it to the screen, don't release the exception std::string initerr("v_repExtKukaLBRiiwa plugin encountered an unknown error and will disable itself. Please debug this issue! file and line:" + std::string(__FILE__) + " " + boost::lexical_cast<std::string>(__LINE__) + "\n"); simAddStatusbarMessage( initerr.c_str()); BOOST_LOG_TRIVIAL(error) << initerr; kukaPluginPG.reset(); } }
// This is the plugin messaging routine (i.e. V-REP calls this function very often, with various messages): VREP_DLLEXPORT void* v_repMessage(int message,int* auxiliaryData,void* customData,int* replyData) { // This is called quite often. Just watch out for messages/events you want to handle // Keep following 5 lines at the beginning and unchanged: static bool refreshDlgFlag=true; int errorModeSaved; simGetIntegerParameter(sim_intparam_error_report_mode,&errorModeSaved); simSetIntegerParameter(sim_intparam_error_report_mode,sim_api_errormessage_ignore); void* retVal=NULL; // Here we can intercept many messages from V-REP (actually callbacks). Only the most important messages are listed here. // For a complete list of messages that you can intercept/react with, search for "sim_message_eventcallback"-type constants // in the V-REP user manual. if (message==sim_message_eventcallback_refreshdialogs) refreshDlgFlag=true; // V-REP dialogs were refreshed. Maybe a good idea to refresh this plugin's dialog too if (message==sim_message_eventcallback_menuitemselected) { // A custom menu bar entry was selected.. // here you could make a plugin's main dialog visible/invisible } if (message==sim_message_eventcallback_instancepass) { // This message is sent each time the scene was rendered (well, shortly after) (very often) // It is important to always correctly react to events in V-REP. This message is the most convenient way to do so: int flags=auxiliaryData[0]; bool sceneContentChanged=((flags&(1+2+4+8+16+32+64+256))!=0); // object erased, created, model or scene loaded, und/redo called, instance switched, or object scaled since last sim_message_eventcallback_instancepass message bool instanceSwitched=((flags&64)!=0); if (instanceSwitched) { // React to an instance switch here!! } if (sceneContentChanged) { // we actualize plugin objects for changes in the scene refreshDlgFlag=true; // always a good idea to trigger a refresh of this plugin's dialog here } //... ////////////// // PUT MAIN CODE HERE ///////////// if (simGetSimulationState() != sim_simulation_advancing_abouttostop) //checks if the simulation is still running { //if(kukaPluginPG) BOOST_LOG_TRIVIAL(info) << "current simulation time:" << simGetSimulationTime() << std::endl; // gets simulation time point } // make sure it is "right" (what does that mean?) // find the v-rep C functions to do the following: //////////////////////////////////////////////////// // Use handles that were found at the "start" of this simulation running // next few Lines get the joint angles, torque, etc from the simulation if (kukaPluginPG)// && kukaPluginPG->allHandlesSet == true // allHandlesSet now handled internally { try { // run one loop synchronizing the arm and plugin kukaPluginPG->run_one(); } catch (const boost::exception& e){ // log the error and print it to the screen, don't release the exception std::string initerr("v_repExtKukaLBRiiwa plugin encountered the following error and will disable itself:\n" + boost::diagnostic_information(e)); simAddStatusbarMessage( initerr.c_str()); BOOST_LOG_TRIVIAL(error) << initerr; kukaPluginPG.reset(); } catch (const std::exception& e){ // log the error and print it to the screen, don't release the exception std::string initerr("v_repExtKukaLBRiiwa plugin encountered the following error and will disable itself:\n" + boost::diagnostic_information(e)); simAddStatusbarMessage( initerr.c_str()); BOOST_LOG_TRIVIAL(error) << initerr; kukaPluginPG.reset(); } catch (...){ // log the error and print it to the screen, don't release the exception std::string initerr("v_repExtKukaLBRiiwa plugin encountered an unknown error and will disable itself. Please debug this issue! file and line:" + std::string(__FILE__) + " " + boost::lexical_cast<std::string>(__LINE__) + "\n"); simAddStatusbarMessage( initerr.c_str()); BOOST_LOG_TRIVIAL(error) << initerr; kukaPluginPG.reset(); } } } if (message==sim_message_eventcallback_mainscriptabouttobecalled) { // The main script is about to be run (only called while a simulation is running (and not paused!)) } if (message==sim_message_eventcallback_simulationabouttostart) { // Simulation is about to start ///////////////////////// // PUT OBJECT STARTUP CODE HERE //////////////////// // get the handles to all the objects, joints, etc that we need ///////////////////// // simGetObjectHandle // try { // BOOST_LOG_TRIVIAL(info) << "Starting KUKA LBR iiwa plugin connection to Kuka iiwa\n"; // kukaPluginPG = std::make_shared<grl::KukaVrepPlugin>(); // kukaPluginPG->construct(); // //kukaPluginPG->run_one(); // for debugging purposes only // //kukaPluginPG.reset(); // for debugging purposes only // } catch (boost::exception& e){ // // log the error and print it to the screen, don't release the exception // std::string initerr("v_repExtKukaLBRiiwa plugin initialization error:\n" + boost::diagnostic_information(e)); // simAddStatusbarMessage( initerr.c_str()); // BOOST_LOG_TRIVIAL(error) << initerr; // } } if (message==sim_message_eventcallback_simulationended) { // Simulation just ended ///////////////////////// // PUT OBJECT RESET CODE HERE // close out as necessary //////////////////// BOOST_LOG_TRIVIAL(info) << "Ending KUKA LBR iiwa plugin connection to Kuka iiwa\n"; kukaPluginPG.reset(); } if (message==sim_message_eventcallback_moduleopen) { // A script called simOpenModule (by default the main script). Is only called during simulation. if ( (customData==NULL)||(_stricmp("PluginSkeleton",(char*)customData)==0) ) // is the command also meant for this plugin? { // we arrive here only at the beginning of a simulation } } if (message==sim_message_eventcallback_modulehandle) { // A script called simHandleModule (by default the main script). Is only called during simulation. if ( (customData==NULL)||(_stricmp("PluginSkeleton",(char*)customData)==0) ) // is the command also meant for this plugin? { // we arrive here only while a simulation is running } } if (message==sim_message_eventcallback_moduleclose) { // A script called simCloseModule (by default the main script). Is only called during simulation. if ( (customData==NULL)||(_stricmp("PluginSkeleton",(char*)customData)==0) ) // is the command also meant for this plugin? { // we arrive here only at the end of a simulation } } if (message==sim_message_eventcallback_instanceswitch) { // Here the user switched the scene. React to this message in a similar way as you would react to a full // scene content change. In this plugin example, we react to an instance switch by reacting to the // sim_message_eventcallback_instancepass message and checking the bit 6 (64) of the auxiliaryData[0] // (see here above) } if (message==sim_message_eventcallback_broadcast) { // Here we have a plugin that is broadcasting data (the broadcaster will also receive this data!) } if (message==sim_message_eventcallback_scenesave) { // The scene is about to be saved. If required do some processing here (e.g. add custom scene data to be serialized with the scene) } // You can add many more messages to handle here if ((message==sim_message_eventcallback_guipass)&&refreshDlgFlag) { // handle refresh of the plugin's dialogs // ... refreshDlgFlag=false; } // Keep following unchanged: simSetIntegerParameter(sim_intparam_error_report_mode,errorModeSaved); // restore previous settings return(retVal); }
int main(int argc, char *argv[]) { int fg = 0; int verbosity = 0; int rpc_verbosity = 0; int opt; int i; extern char *optarg; char *progname; memset(ccachesearch, 0, sizeof(ccachesearch)); while ((opt = getopt(argc, argv, "fvrmnMp:k:d:t:R:")) != -1) { switch (opt) { case 'f': fg = 1; break; case 'm': /* Accept but ignore this. Now the default. */ break; case 'M': use_memcache = 1; break; case 'n': root_uses_machine_creds = 0; break; case 'v': verbosity++; break; case 'r': rpc_verbosity++; break; case 'p': strmaxcpy(pipefs_dir, optarg, sizeof(pipefs_dir)); if (pipefs_dir[sizeof(pipefs_dir)-1] != '\0') errx(1, "pipefs path name too long"); break; case 'k': strmaxcpy(keytabfile, optarg, sizeof(keytabfile)); if (keytabfile[sizeof(keytabfile)-1] != '\0') errx(1, "keytab path name too long"); break; case 'd': strmaxcpy(ccachedir, optarg, sizeof(ccachedir)); if (ccachedir[sizeof(ccachedir)-1] != '\0') errx(1, "ccachedir path name too long"); break; case 't': context_timeout = atoi(optarg); break; case 'R': preferred_realm = strdup(optarg); break; default: usage(argv[0]); break; } } i = 0; ccachesearch[i++] = strtok(ccachedir, ":"); do { ccachesearch[i++] = strtok(NULL, ":"); } while (ccachesearch[i-1] != NULL && i < GSSD_MAX_CCACHE_SEARCH); if (preferred_realm == NULL) gssd_k5_get_default_realm(&preferred_realm); if ((progname = strrchr(argv[0], '/'))) progname++; else progname = argv[0]; initerr(progname, verbosity, fg); #ifdef HAVE_AUTHGSS_SET_DEBUG_LEVEL if (verbosity && rpc_verbosity == 0) rpc_verbosity = verbosity; authgss_set_debug_level(rpc_verbosity); #else if (rpc_verbosity > 0) printerr(0, "Warning: rpcsec_gss library does not " "support setting debug level\n"); #endif if (gssd_check_mechs() != 0) errx(1, "Problem with gssapi library"); if (!fg && daemon(0, 0) < 0) errx(1, "fork"); signal(SIGINT, sig_die); signal(SIGTERM, sig_die); signal(SIGHUP, sig_hup); gssd_run(); printerr(0, "gssd_run returned!\n"); abort(); }
int main(int argc, char *argv[]) { int get_creds = 1; int fg = 0; int verbosity = 0; int rpc_verbosity = 0; int idmap_verbosity = 0; int opt, status; extern char *optarg; char *progname; char *principal = NULL; while ((opt = getopt(argc, argv, "fivrnp:")) != -1) { switch (opt) { case 'f': fg = 1; break; case 'i': idmap_verbosity++; break; case 'n': get_creds = 0; break; case 'v': verbosity++; break; case 'r': rpc_verbosity++; break; case 'p': principal = optarg; break; default: usage(argv[0]); break; } } if ((progname = strrchr(argv[0], '/'))) progname++; else progname = argv[0]; initerr(progname, verbosity, fg); #ifdef HAVE_AUTHGSS_SET_DEBUG_LEVEL if (verbosity && rpc_verbosity == 0) rpc_verbosity = verbosity; authgss_set_debug_level(rpc_verbosity); #elif HAVE_LIBTIRPC_SET_DEBUG /* * Only set the libtirpc debug level if explicitly requested via -r... * svcgssd is chatty enough as it is. */ if (rpc_verbosity > 0) libtirpc_set_debug(progname, rpc_verbosity, fg); #else if (rpc_verbosity > 0) printerr(0, "Warning: rpcsec_gss library does not " "support setting debug level\n"); #endif #ifdef HAVE_NFS4_SET_DEBUG if (verbosity && idmap_verbosity == 0) idmap_verbosity = verbosity; nfs4_set_debug(idmap_verbosity, NULL); #else if (idmap_verbosity > 0) printerr(0, "Warning: your nfsidmap library does not " "support setting debug level\n"); #endif if (gssd_check_mechs() != 0) { printerr(0, "ERROR: Problem with gssapi library\n"); exit(1); } daemon_init(fg); signal(SIGINT, sig_die); signal(SIGTERM, sig_die); signal(SIGHUP, sig_hup); if (get_creds) { if (principal) status = gssd_acquire_cred(principal, ((const gss_OID)GSS_C_NT_USER_NAME)); else status = gssd_acquire_cred(GSSD_SERVICE_NAME, (const gss_OID)GSS_C_NT_HOSTBASED_SERVICE); if (status == FALSE) { printerr(0, "unable to obtain root (machine) credentials\n"); printerr(0, "do you have a keytab entry for " "nfs/<your.host>@<YOUR.REALM> in " "/etc/krb5.keytab?\n"); exit(1); } } else { status = gssd_acquire_cred(NULL, (const gss_OID)GSS_C_NT_HOSTBASED_SERVICE); if (status == FALSE) { printerr(0, "unable to obtain nameless credentials\n"); exit(1); } } daemon_ready(); nfs4_init_name_mapping(NULL); /* XXX: should only do this once */ gssd_run(); printerr(0, "gssd_run returned!\n"); abort(); }
const char *uiInit(uiInitOptions *o) { STARTUPINFOW si; const char *ce; HICON hDefaultIcon; HCURSOR hDefaultCursor; NONCLIENTMETRICSW ncm; INITCOMMONCONTROLSEX icc; HRESULT hr; options = *o; initAlloc(); nCmdShow = SW_SHOWDEFAULT; GetStartupInfoW(&si); if ((si.dwFlags & STARTF_USESHOWWINDOW) != 0) nCmdShow = si.wShowWindow; SetProcessDPIAware(); hDefaultIcon = LoadIconW(NULL, IDI_APPLICATION); if (hDefaultIcon == NULL) return ieLastErr("loading default icon for window classes"); hDefaultCursor = LoadCursorW(NULL, IDC_ARROW); if (hDefaultCursor == NULL) return ieLastErr("loading default cursor for window classes"); ce = initUtilWindow(hDefaultIcon, hDefaultCursor); if (ce != NULL) return initerr(ce, L"GetLastError() ==", GetLastError()); if (registerWindowClass(hDefaultIcon, hDefaultCursor) == 0) return ieLastErr("registering uiWindow window class"); ZeroMemory(&ncm, sizeof (NONCLIENTMETRICSW)); ncm.cbSize = sizeof (NONCLIENTMETRICSW); if (SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof (NONCLIENTMETRICSW), &ncm, sizeof (NONCLIENTMETRICSW)) == 0) return ieLastErr("getting default fonts"); hMessageFont = CreateFontIndirectW(&(ncm.lfMessageFont)); if (hMessageFont == NULL) return ieLastErr("loading default messagebox font; this is the default UI font"); if (initContainer(hDefaultIcon, hDefaultCursor) == 0) return ieLastErr("initializing uiWindowsMakeContainer() window class"); hollowBrush = (HBRUSH) GetStockObject(HOLLOW_BRUSH); if (hollowBrush == NULL) return ieLastErr("getting hollow brush"); ZeroMemory(&icc, sizeof (INITCOMMONCONTROLSEX)); icc.dwSize = sizeof (INITCOMMONCONTROLSEX); icc.dwICC = wantedICCClasses; if (InitCommonControlsEx(&icc) == 0) return ieLastErr("initializing Common Controls"); hr = CoInitialize(NULL); if (hr != S_OK && hr != S_FALSE) return ieHRESULT("initializing COM", hr); // LONGTERM initialize COM security // LONGTERM (windows vista) turn off COM exception handling hr = initDraw(); if (hr != S_OK) return ieHRESULT("initializing Direct2D", hr); hr = initDrawText(); if (hr != S_OK) return ieHRESULT("initializing DirectWrite", hr); if (registerAreaClass(hDefaultIcon, hDefaultCursor) == 0) return ieLastErr("registering uiArea window class"); if (registerMessageFilter() == 0) return ieLastErr("registering libui message filter"); if (registerD2DScratchClass(hDefaultIcon, hDefaultCursor) == 0) return ieLastErr("initializing D2D scratch window class"); return NULL; }
int main(int argc, char *argv[]) { int fg = 0; int verbosity = 0; int rpc_verbosity = 0; int opt; extern char *optarg; char *progname; while ((opt = getopt(argc, argv, "fvrmp:k:d:")) != -1) { switch (opt) { case 'f': fg = 1; break; case 'm': /* Accept but ignore this. Now the default. */ break; case 'v': verbosity++; break; case 'r': rpc_verbosity++; break; case 'p': strncpy(pipefsdir, optarg, sizeof(pipefsdir)); if (pipefsdir[sizeof(pipefsdir)-1] != '\0') errx(1, "pipefs path name too long"); break; case 'k': strncpy(keytabfile, optarg, sizeof(keytabfile)); if (keytabfile[sizeof(keytabfile)-1] != '\0') errx(1, "keytab path name too long"); break; case 'd': strncpy(ccachedir, optarg, sizeof(ccachedir)); if (ccachedir[sizeof(ccachedir-1)] != '\0') errx(1, "ccachedir path name too long"); break; default: usage(argv[0]); break; } } strncat(pipefsdir + strlen(pipefsdir), "/" GSSD_SERVICE_NAME, sizeof(pipefsdir)-strlen(pipefsdir)); if (pipefsdir[sizeof(pipefsdir)-1] != '\0') errx(1, "pipefs path name too long"); if ((progname = strrchr(argv[0], '/'))) progname++; else progname = argv[0]; initerr(progname, verbosity, fg); #ifdef HAVE_AUTHGSS_SET_DEBUG_LEVEL authgss_set_debug_level(rpc_verbosity); #else if (rpc_verbosity > 0) printerr(0, "Warning: rpcsec_gss library does not " "support setting debug level\n"); #endif if (gssd_check_mechs() != 0) errx(1, "Problem with gssapi library"); if (!fg && daemon(0, 0) < 0) errx(1, "fork"); signal(SIGINT, sig_die); signal(SIGTERM, sig_die); signal(SIGHUP, sig_hup); /* Process keytab file and get machine credentials */ gssd_refresh_krb5_machine_creds(); gssd_run(); printerr(0, "gssd_run returned!\n"); abort(); }