コード例 #1
0
ファイル: lib.xdrres.c プロジェクト: ReiAyanamiQH/jhlava
bool_t 
xdr_resSetenv (XDR *xdrs, struct resSetenv *envp, struct LSFHeader *hdr)
{
    char *sp;
    int i, nenv;

    if (xdrs->x_op == XDR_ENCODE)
	for (nenv=0; envp->env[nenv]; nenv++);

    if (!xdr_int(xdrs, &nenv))
	return(FALSE);

    if (xdrs->x_op == XDR_DECODE) {
	if ((envp->env = (char **) calloc(nenv + 1, sizeof(char *))) == NULL)
	    return (FALSE);
    }
    
    for (i=0; i<nenv; i++) {
	if (xdrs->x_op == XDR_DECODE) {
	    if (!xdr_var_string(xdrs, &envp->env[i])) {
		while (i--)
		    free(envp->env[i]);
		free(envp->env);
		return (FALSE);
	    }
	} else { 
	    sp = envp->env[i]; 

            
            if (strncmp(sp, "DISPLAY=", 8) == 0) {
                sp = chDisplay_(sp);
            }

	    if (!xdr_var_string(xdrs, &sp))
		return (FALSE);
	}
    }
    
    if (xdrs->x_op == XDR_DECODE)
	envp->env[nenv] = NULL;

    return (TRUE);
} 
コード例 #2
0
ファイル: daemons.xdr.c プロジェクト: alescc/openlava
bool_t 
xdr_sbdPackage1 (XDR *xdrs, struct sbdPackage *sbdPackage, struct LSFHeader *hdr)
{
    static char      fname[] = "xdr_sbdPackage1";
    int i;

    
    if (!(xdr_int(xdrs, &sbdPackage->uJobLimit))) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname, 
	          "xdr_int", "uJobLimit");
        return(FALSE);
    }

    if (!(xdr_int(xdrs, &sbdPackage->rusageUpdateRate) &&
          xdr_int(xdrs, &sbdPackage->rusageUpdatePercent)))
        return(FALSE);

    
    if (!xdr_int(xdrs, &sbdPackage->jobTerminateInterval)) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname, 
		"xdr_int", "jobTerminateInterval");
	return (FALSE); 
    }

	
    
    if (xdrs->x_op == XDR_ENCODE || (xdrs->x_op != XDR_FREE)) {

        if (!xdr_int(xdrs, &sbdPackage->nAdmins))
            return FALSE;

        if (xdrs->x_op == XDR_DECODE && sbdPackage->nAdmins > 0) {
            sbdPackage->admins
               = (char **) calloc (sbdPackage->nAdmins, sizeof (char *));
            if (sbdPackage->admins == NULL) {
                sbdPackage->nAdmins = 0;
                return (FALSE);
            }
        }
        for (i = 0; i < sbdPackage->nAdmins; i++) {
            if (!xdr_var_string (xdrs, &sbdPackage->admins[i]))
                return (FALSE);
        }
    } 
    
    if (xdrs->x_op == XDR_FREE) {
        for (i = 0; i < sbdPackage->nAdmins; i++) {
	    FREEUP(sbdPackage->admins[i]);
        }
	FREEUP(sbdPackage->admins);
    }

    return(TRUE);
} 
コード例 #3
0
ファイル: daemons.xdr.c プロジェクト: alescc/openlava
bool_t 
xdr_jobSig (XDR *xdrs, struct jobSig *jobSig, struct LSFHeader *hdr)
{
    static char *actCmd = NULL;
    int jobArrId, jobArrElemId;
    int newJobArrId, newJobArrElemId;

    jobArrId = jobArrElemId = newJobArrId = newJobArrElemId = 0;

    if (xdrs->x_op == XDR_DECODE) 
	FREEUP (actCmd);
    if (xdrs->x_op == XDR_ENCODE) {
	jobId64To32(jobSig->jobId, &jobArrId, &jobArrElemId);
    }
    if (!(xdr_int(xdrs,&jobArrId) &&
	  xdr_int(xdrs,&(jobSig->sigValue)) &&
	  xdr_time_t(xdrs, (time_t *) &(jobSig->chkPeriod)) &&	  
	  xdr_int(xdrs, &(jobSig->actFlags)) &&
          xdr_int(xdrs,&(jobSig->reasons)) &&
          xdr_int(xdrs,&(jobSig->subReasons))))
        return (FALSE);
    if (!xdr_var_string(xdrs, &jobSig->actCmd))
	return (FALSE);
    if (xdrs->x_op == XDR_DECODE)
	actCmd = jobSig->actCmd;   

    if (!xdr_int(xdrs, &jobArrElemId)) {
        return (FALSE);
    }

    if (xdrs->x_op == XDR_DECODE) {
	jobId32To64(&jobSig->jobId,jobArrId,jobArrElemId);
    }
    if (xdrs->x_op == XDR_ENCODE) {
	jobId64To32(jobSig->newJobId, &newJobArrId, &newJobArrElemId);	
    }
    if (!xdr_int(xdrs,&newJobArrId)) {
        return (FALSE);
    }

    if (!xdr_int(xdrs, &newJobArrElemId)) {
        return (FALSE);
    }

    if (xdrs->x_op == XDR_DECODE) {
	jobId32To64(&jobSig->newJobId,newJobArrId,newJobArrElemId);
    }
    return (TRUE);
} 
コード例 #4
0
ファイル: daemons.xdr.c プロジェクト: alescc/openlava
bool_t 
xdr_statusReq (XDR *xdrs, struct statusReq *statusReq, struct LSFHeader *hdr)
{
    int i;
    int jobArrId, jobArrElemId;

    if (xdrs->x_op == XDR_FREE) {
        for(i=0; i < statusReq->numExecHosts; i++)
            FREEUP(statusReq->execHosts[i]);
        if (statusReq->numExecHosts > 0)
            FREEUP(statusReq->execHosts);
        statusReq->numExecHosts = 0;
        FREEUP (statusReq->execHome);
        FREEUP (statusReq->execCwd);
        FREEUP (statusReq->queuePreCmd);
        FREEUP (statusReq->queuePostCmd);
        FREEUP (statusReq->execUsername);
        if (statusReq->runRusage.npids > 0)
            FREEUP (statusReq->runRusage.pidInfo);
        if (statusReq->runRusage.npgids > 0)
            FREEUP (statusReq->runRusage.pgid);
        return(TRUE);
    }

    if (xdrs->x_op == XDR_ENCODE) {
	jobId64To32(statusReq->jobId, &jobArrId, &jobArrElemId);
    }
    if (!(xdr_int(xdrs,&jobArrId) &&
	  xdr_int(xdrs,&statusReq->jobPid) &&
	  xdr_int(xdrs,&statusReq->jobPGid) &&
	  xdr_int(xdrs,&statusReq->actPid) &&	  	  
	  xdr_int(xdrs,&statusReq->seq)        &&
	  xdr_int(xdrs, &statusReq->newStatus) &&
	  xdr_int(xdrs,&statusReq->reason) &&
	  xdr_int(xdrs,&statusReq->subreasons) &&	  
	  xdr_int(xdrs, (int *) &statusReq->sbdReply)))
        return (FALSE);

    
    if (!xdr_arrayElement(xdrs, (char *) &statusReq->lsfRusage, hdr,
			  xdr_lsfRusage))
        return (FALSE);

    if (!(xdr_int(xdrs, &statusReq->execUid) &&
          xdr_int(xdrs, &statusReq->numExecHosts)))
        return(FALSE);
    if (xdrs->x_op == XDR_DECODE) {
        if (statusReq->numExecHosts > 0) {
            statusReq->execHosts = (char **) calloc(statusReq->numExecHosts,
                                     sizeof(char *));
            if (!statusReq->execHosts)
                return(FALSE);
        }
    }
    if (!xdr_array_string(xdrs, statusReq->execHosts, MAXHOSTNAMELEN,
                                                      statusReq->numExecHosts))
        return(FALSE);
    if (!(xdr_int(xdrs, &statusReq->exitStatus) &&
          xdr_var_string(xdrs, &statusReq->execHome) &&
	  xdr_var_string(xdrs, &statusReq->execUsername) &&
	  xdr_var_string(xdrs, &statusReq->execCwd) &&
	  xdr_var_string(xdrs, &statusReq->queuePreCmd) &&
	  xdr_var_string(xdrs, &statusReq->queuePostCmd)))
	return(FALSE);


    if (!xdr_int(xdrs, &statusReq->msgId))
        return (FALSE);


    
    if (!(xdr_jRusage(xdrs, &(statusReq->runRusage), hdr)))
        return (FALSE);

    if (!(xdr_int(xdrs, &(statusReq->sigValue)) &&
         xdr_int(xdrs, &(statusReq->actStatus))))
        return(FALSE);

    if (!xdr_int(xdrs, &jobArrElemId)) {
        return (FALSE);
    }

    if (xdrs->x_op == XDR_DECODE) {
	jobId32To64(&statusReq->jobId,jobArrId,jobArrElemId);
    }  
  
    return(TRUE);
} 
コード例 #5
0
ファイル: daemons.xdr.c プロジェクト: alescc/openlava
bool_t 
xdr_jobSpecs (XDR *xdrs, struct jobSpecs *jobSpecs, struct LSFHeader *hdr)
{
    static char fname[] = "xdr_jobSpecs";
    char *sp[15];
    char *pTemp;
    int i, nLimits;
    int jobArrId, jobArrElemId;
    LS_LONG_INT tmpJobId;

    if (xdrs->x_op == XDR_DECODE) {
        
        jobSpecs->numToHosts = 0;
        jobSpecs->toHosts = NULL;
        jobSpecs->nxf = 0;
        jobSpecs->xf  = NULL;
        jobSpecs->numEnv = 0;
        jobSpecs->env  = NULL;
        jobSpecs->eexec.len = 0;
        jobSpecs->eexec.data = NULL;
        jobSpecs->loginShell = NULL;
        jobSpecs->schedHostType= NULL;
        jobSpecs->execHosts = NULL;
    }

    if (xdrs->x_op == XDR_FREE) {
        
        for(i=0; i < jobSpecs->numToHosts; i++) {
            FREEUP(jobSpecs->toHosts[i]);
        }
        FREEUP(jobSpecs->toHosts);
    
        for(i=0; i < jobSpecs->numEnv; i++)
            FREEUP(jobSpecs->env[i]);
        FREEUP(jobSpecs->env);

        FREEUP(jobSpecs->xf);
        FREEUP(jobSpecs->loginShell);
        FREEUP(jobSpecs->schedHostType);
        FREEUP(jobSpecs->execHosts);
        if (!xdr_thresholds(xdrs, jobSpecs) ||
            !xdr_lenData(xdrs, &jobSpecs->eexec))
            return(FALSE);
        return(TRUE);
    }

    if (xdrs->x_op == XDR_ENCODE) {
	jobId64To32(jobSpecs->jobId, &jobArrId, &jobArrElemId);
    }
    if (!xdr_int(xdrs, &jobArrId)) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname, "xdr_int", "jobId");
        return(FALSE);
    }

    if (!(xdr_int(xdrs, &jobSpecs->userId) &&
	  xdr_int(xdrs, &jobSpecs->options) &&
	  xdr_short(xdrs, &jobSpecs->nice) &&
	  xdr_int(xdrs, &jobSpecs->priority) &&
	  xdr_int(xdrs, &jobSpecs->chkSig) &&	  
	  xdr_int(xdrs, &jobSpecs->actPid) &&
	  xdr_time_t(xdrs, &jobSpecs->chkPeriod) &&
	  xdr_time_t(xdrs, &jobSpecs->migThresh) &&
	  xdr_time_t(xdrs, &jobSpecs->lastSSuspTime) &&	  
	  xdr_float(xdrs, &jobSpecs->lastCpuTime))) {
	ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname, 
	    "xdr_int", "userId");
        return(FALSE);
    }

    nLimits = LSF_RLIM_NLIMITS;
    tmpJobId = jobArrId;
    if (!xdr_int(xdrs, &nLimits)) {
	ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, 
		  lsb_jobid2str(tmpJobId), 
		  "xdr_int", "nLimits");
	return(FALSE);
    }

    
    for (i = 0; i < nLimits && i < LSF_RLIM_NLIMITS; i++) {
	if(!xdr_lsfLimit(xdrs, &jobSpecs->lsfLimits[i], hdr)) { 
	    ls_syslog(LOG_ERR, I18N_JOB_FAIL_S, fname, 
		      lsb_jobid2str(tmpJobId), 
		      "xdr_lsfLimit");
	    return(FALSE);
	}
    }

    if (nLimits > LSF_RLIM_NLIMITS) {
	
	for (i=LSF_RLIM_NLIMITS; i<nLimits; i++) {
	    struct lsfLimit lsfLimit;
	    if (!xdr_lsfLimit(xdrs, &lsfLimit, hdr)) {
	        ls_syslog(LOG_ERR, I18N_JOB_FAIL_S, fname, 
			  lsb_jobid2str(tmpJobId), 
			  "xdr_lsfLimit");
		return(FALSE);
	    }
	}
    }

    if (!(xdr_int(xdrs, &jobSpecs->jStatus)      &&
          xdr_int(xdrs, &jobSpecs->reasons)      &&
          xdr_int(xdrs, &jobSpecs->subreasons)   &&	  
          xdr_time_t(xdrs, &jobSpecs->termTime)  &&
          xdr_time_t(xdrs, &jobSpecs->startTime) &&
          xdr_int(xdrs, &jobSpecs->runTime) &&
	  xdr_time_t(xdrs, &jobSpecs->submitTime) &&
          xdr_int(xdrs, &jobSpecs->jobPid)       &&
          xdr_int(xdrs, &jobSpecs->jobPGid)      &&
          xdr_int(xdrs, &jobSpecs->restartPid)   &&
	  xdr_int(xdrs, &jobSpecs->sigValue)     &&
          xdr_int(xdrs, &jobSpecs->umask)         &&
          xdr_int(xdrs, &jobSpecs->jAttrib)))  {
	ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, lsb_jobid2str(tmpJobId), 
	    "xdr_int", "jStatus");
	return(FALSE);
    }

    sp[0] = jobSpecs->jobFile;
    sp[1] = jobSpecs->inFile;
    sp[2] = jobSpecs->outFile;
    sp[3] = jobSpecs->errFile;
    sp[4] = jobSpecs->chkpntDir;
    sp[5] = jobSpecs->cwd;
    sp[6] = jobSpecs->subHomeDir;
    sp[7] = jobSpecs->command;
    sp[8] = jobSpecs->jobName;
    sp[9] = jobSpecs->preExecCmd;
    sp[10] = jobSpecs->fromHost;
    sp[11] = jobSpecs->resReq;

    if (xdrs->x_op == XDR_DECODE)
        for (i = 0; i < 11; i++)
            sp[i][0] = '\0';
    if (!(xdr_string(xdrs, &sp[0], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[1], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[2], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[3], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[4], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[5], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[6], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[7], MAXLINELEN) &&
          xdr_string(xdrs, &sp[8], MAXLINELEN) &&
          xdr_string(xdrs, &sp[9], MAXLINELEN) &&
          xdr_string(xdrs, &sp[10], MAXHOSTNAMELEN))) { 
	ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, 
		  lsb_jobid2str(tmpJobId), 
		  "xdr_int", "jobFile");
        return(FALSE);
    }
     if (xdrs->x_op == XDR_DECODE)
         sp[11][0] = '\0';
     if (!xdr_string(xdrs, &sp[11], MAXLINELEN)) {
         ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, 
		   lsb_jobid2str(tmpJobId),
                   "xdr_int", "jobFile");
         return(FALSE);
     }

    sp[12] = jobSpecs->queue;
    sp[13] = jobSpecs->windows;
    sp[14] = jobSpecs->userName;

    if (xdrs->x_op == XDR_DECODE)
        for (i = 12; i < 15; i++)
            sp[i][0] = '\0';

    if (!(xdr_string(xdrs, &sp[12], MAXFILENAMELEN) &&
          xdr_string(xdrs, &sp[13], MAXLINELEN) &&
          xdr_string(xdrs, &sp[14], MAX_LSB_NAME_LEN))) {
        ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, lsb_jobid2str(tmpJobId),
            "xdr_int", "jobFile");
        return(FALSE);
    }

    

    if (!xdr_int(xdrs, &jobSpecs->numToHosts)) {
	ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, lsb_jobid2str(tmpJobId), 
	    "xdr_int", "numToHosts");
	return(FALSE);
    }

    if (xdrs->x_op == XDR_DECODE && jobSpecs->numToHosts) {
        jobSpecs->toHosts = (char **) my_calloc(jobSpecs->numToHosts, 
                                      sizeof (char *), fname);
    }

    for (i = 0; i < jobSpecs->numToHosts; i++) {
        if (!xdr_var_string(xdrs, &jobSpecs->toHosts[i])) {
	    ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, 
		      lsb_jobid2str(tmpJobId), 
		      "xdr_var_string", "toHosts");
	    return(FALSE);
	}
    }

    
    if (!xdr_thresholds(xdrs, jobSpecs))
	ls_syslog(LOG_ERR, I18N_JOB_FAIL_S, fname, 
		  lsb_jobid2str(tmpJobId), 
		  "xdr_thresholds");

    
    if (!xdr_int(xdrs, &jobSpecs->nxf)) {
	ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, 
		  lsb_jobid2str(tmpJobId), 
		  "xdr_int", "nxf");
        return(FALSE);
    }

    if (xdrs->x_op == XDR_DECODE && jobSpecs->nxf > 0) {
	jobSpecs->xf = (struct xFile *) my_calloc(jobSpecs->nxf, 
                                        sizeof(struct xFile), fname);
    }

    for (i = 0; i < jobSpecs->nxf; i++) {
	if (!xdr_arrayElement(xdrs, (char *) &(jobSpecs->xf[i]),
			      hdr, xdr_xFile)) {
	    ls_syslog(LOG_ERR, I18N_JOB_FAIL_S_S, fname, 
		      lsb_jobid2str(tmpJobId), 
		      "xdr_arrayElement", "xf");
	    return(FALSE);
	}
    }

    sp[0] = jobSpecs->mailUser;
    sp[1] = jobSpecs->clusterName;
    sp[2] = jobSpecs->projectName;
    sp[3] = jobSpecs->preCmd;
    sp[4] = jobSpecs->postCmd;
    sp[5] = jobSpecs->execCwd;
    sp[6] = jobSpecs->execHome;
    sp[7] = jobSpecs->requeueEValues;

    if (xdrs->x_op == XDR_DECODE) {
        for(i=0; i < 8; i++)
            sp[i][0]= '\0';
    }

    if (!(xdr_string(xdrs, &sp[0], MAXLINELEN) &&
          xdr_string(xdrs, &sp[1], MAX_LSB_NAME_LEN) &&
	  xdr_string(xdrs, &sp[2], MAX_LSB_NAME_LEN) &&
	  xdr_string(xdrs, &sp[3], MAXLINELEN) &&
	  xdr_string(xdrs, &sp[4], MAXLINELEN) &&
	  xdr_string(xdrs, &sp[5], MAXFILENAMELEN) &&
	  xdr_string(xdrs, &sp[6], MAXFILENAMELEN) &&
	  xdr_string(xdrs, &sp[7], MAXLINELEN) &&
          xdr_int(xdrs, &jobSpecs->execUid)  &&
          xdr_int(xdrs, &jobSpecs->maxNumProcessors)  &&
          xdr_int(xdrs, &jobSpecs->numEnv)))
            return(FALSE);

    if (xdrs->x_op == XDR_DECODE && jobSpecs->numEnv) {
        jobSpecs->env = (char **) my_calloc(jobSpecs->numEnv, 
					  sizeof (char *), fname);
    }
	
    for (i = 0; i < jobSpecs->numEnv; i++) {
        if (!xdr_var_string(xdrs, &jobSpecs->env[i]))
                return(FALSE);
    }

    
    if (!xdr_lenData(xdrs, &jobSpecs->eexec)) 
        return (FALSE);


    if (!xdr_int(xdrs, &jobSpecs->niosPort))
        return (FALSE);
    sp[0] = jobSpecs->resumeCond;
    sp[1] = jobSpecs->stopCond;
    sp[2] = jobSpecs->suspendActCmd;
    sp[3] = jobSpecs->resumeActCmd;
    sp[4] = jobSpecs->terminateActCmd;

    if (xdrs->x_op == XDR_DECODE) {
        sp[0][0] = '\0';
        sp[1][0] = '\0';
    }
    if (!(xdr_string(xdrs, &sp[0],  MAXLINELEN)) ||
        !(xdr_string(xdrs, &sp[1],  MAXLINELEN)))
        return (FALSE);


    if (xdrs->x_op == XDR_DECODE) {
        for ( i = 2; i < 5; i++)
            sp[i][0] = '\0';
    }

    for ( i = 2; i < 5; i++)
        if (!(xdr_string(xdrs, &sp[i], MAXLINELEN)))
            return(FALSE);
    
    
    for (i = 0; i <LSB_SIG_NUM; i++)
        if (!(xdr_int(xdrs, &jobSpecs->sigMap[i])))
            return(FALSE);

    if (!(xdr_int(xdrs, &jobSpecs->actValue)))
        return (FALSE); 

    if (!xdr_var_string(xdrs, &jobSpecs->loginShell)) 
        return (FALSE);

    if (!xdr_var_string(xdrs, &jobSpecs->schedHostType)) 
        return (FALSE);

    if (!xdr_var_string(xdrs, &jobSpecs->execHosts)) 
        return (FALSE);

    
    if (!xdr_int(xdrs, &jobSpecs->options2)) {
        return(FALSE);
    }

    
    pTemp = jobSpecs->jobSpoolDir;
    if(!( xdr_string(xdrs, &pTemp, MAXPATHLEN))) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname,
                  "xdr_string", "jobSpoolDir");
        return(FALSE);
    }

    if (!(xdr_int(xdrs, &jobArrElemId))) {
	return (FALSE);
    }

    if (xdrs->x_op == XDR_DECODE) {
	jobId32To64(&jobSpecs->jobId,jobArrId,jobArrElemId);
    }    

    sp[0] = jobSpecs->inFileSpool;
    sp[1] = jobSpecs->commandSpool;

    if (!(xdr_string(xdrs, &sp[0], MAXFILENAMELEN))) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname, 
		       "xdr_string", "inFileSpool"); 
        return (FALSE);
    }
    if (!(xdr_string(xdrs, &sp[1], MAXFILENAMELEN))) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname,
			"xdr_string", "commandSpool");
        return (FALSE);
    }

    if (!(xdr_int(xdrs, &jobSpecs->userPriority))) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname, "xdr_int", 
		       "userPriority");
        return (FALSE);
    }

    sp[0] = jobSpecs->execUsername;
    if (!(xdr_string(xdrs, &sp[0], MAX_LSB_NAME_LEN))) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname,
			"xdr_string", "execUsername");
        return (FALSE);
    }

    sp[0] = jobSpecs->prepostUsername;
    if (!(xdr_string(xdrs, &sp[0], MAX_LSB_NAME_LEN))) {
	ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL, fname,
			"xdr_string", "prepostUsername");
	return (FALSE);
    }
    
    return(TRUE);

} 
コード例 #6
0
ファイル: sbd.xdr.c プロジェクト: ReiAyanamiQH/jhlava
bool_t
xdr_jobCard (XDR *xdrs, struct jobCard *jCard, struct LSFHeader *hdr)
{
    static char   fname[]="xdr_jobCard()";
    char          *sp1;

    if (xdrs->x_op == XDR_FREE) {
        FREEUP(jCard->actCmd);
        FREEUP(jCard->exitFile);
        if (!xdr_jobSpecs(xdrs, &jCard->jobSpecs, hdr))
            return(FALSE);
        return(TRUE);
    }
    
    sp1 = jCard->execUsername;
    if (! xdr_int(xdrs, (int *)&jCard->execGid)  
        || !xdr_int(xdrs, &jCard->notReported) 
        || !xdr_time_t(xdrs, &jCard->windEdge) 
        || !xdr_char(xdrs, &jCard->active) 
        || !xdr_char(xdrs, &jCard->timeExpire) 
        || !xdr_char(xdrs, &jCard->missing) 
        || !xdr_char(xdrs, &jCard->mbdRestarted) 
        || !xdr_time_t(xdrs, &jCard->windWarnTime) 
        || !xdr_int(xdrs, &jCard->runTime) 
        || !xdr_int(xdrs, &jCard->w_status) 
        || !xdr_float(xdrs, &jCard->cpuTime) 
        || !xdr_time_t(xdrs, &jCard->lastChkpntTime) 
        || !xdr_int(xdrs, &jCard->migCnt) 
        || !xdr_int(xdrs, &jCard->cleanupPid) 
        || !xdr_int(xdrs, &jCard->execJobFlag)) {
        ls_syslog(LOG_ERR, I18N_FUNC_FAIL, fname, "xdr");
        return(FALSE);
    }

    if (! xdr_time_t(xdrs, &jCard->lastStatusMbdTime)) {
	return(FALSE);
    }
    
    if (xdrs->x_op == XDR_DECODE) {
        sp1[0] = '\0';
    }

    if (!xdr_string(xdrs, &sp1, MAX_LSB_NAME_LEN)) {
        ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL_M, fname, 
                  "xdr_string", "execUserName");
        return(FALSE);
    }
    
    if (! xdr_int(xdrs, &jCard->actReasons) 
        || !xdr_int(xdrs, &jCard->actSubReasons)) {
        ls_syslog(LOG_ERR, I18N_FUNC_FAIL, fname, "xdr");
        return(FALSE);
    }
    
    if (! xdr_var_string(xdrs, &jCard->actCmd) 
        || !xdr_var_string(xdrs, &jCard->exitFile) 
        || !xdr_var_string(xdrs, &jCard->clusterName))
        return(FALSE);

    if (!xdr_arrayElement(xdrs, 
                          (char *)&jCard->jobSpecs, 
                          hdr,
                          xdr_jobSpecs)) {
        ls_syslog(LOG_ERR, I18N_FUNC_FAIL, fname, "xdr_jobSpecs");
        return(FALSE);
    }
  
    if (!xdr_int(xdrs, &jCard->servSocket))
        return(FALSE);

    if (! xdr_int(xdrs, &jCard->maxRusage.mem) 
        || !xdr_int(xdrs, &jCard->maxRusage.swap)
        || !xdr_int(xdrs, &jCard->maxRusage.utime)
        || !xdr_int(xdrs, &jCard->maxRusage.stime) 
        || !xdr_int(xdrs, &jCard->maxRusage.npids)) {
        ls_syslog(LOG_ERR, I18N_FUNC_FAIL, fname, "xdr_int jRusage");
        return(FALSE);
    }
    
    if (!xdr_int(xdrs, (int *)&jCard->actFlags)) {
    	ls_syslog(LOG_ERR, I18N_FUNC_FAIL, fname, "xdr_actFlags");
        return(FALSE);
    }

    return(TRUE);
} 
コード例 #7
0
ファイル: lib.xdrres.c プロジェクト: ReiAyanamiQH/jhlava
bool_t 
xdr_resCmdBill (XDR *xdrs, struct resCmdBill *cmd, struct LSFHeader *hdr)
{
    char *sp;
    int i, argc, nlimits;

    if (!(xdr_portno(xdrs, &cmd->retport) &&
	  xdr_int(xdrs, &cmd->rpid) &&
	  xdr_int(xdrs, &cmd->filemask) &&
	  xdr_int(xdrs, &cmd->priority) &&
	  xdr_int(xdrs, &cmd->options)))
	return (FALSE);

    sp = cmd->cwd;
    if (xdrs->x_op == XDR_DECODE)
	sp[0] = '\0';

    if (!xdr_string(xdrs, &sp, MAXPATHLEN))
	return (FALSE);

    if (xdrs->x_op == XDR_ENCODE)
	for (argc=0; cmd->argv[argc]; argc++);
    
    if (!xdr_int(xdrs, &argc))
	return (FALSE);
    
    if (xdrs->x_op == XDR_DECODE) {
	if ((cmd->argv = (char **) calloc(argc + 1, sizeof(char *))) == NULL)
	    return (FALSE);
    }
	
    for (i=0; i<argc; i++) {
	if (!xdr_var_string(xdrs, &(cmd->argv[i]))) {
            if (xdrs->x_op == XDR_DECODE) {
		while (i--)
		    free(cmd->argv[i]);
		free(cmd->argv);
	    }
	    return (FALSE);
	}
    }

    if (xdrs->x_op == XDR_DECODE)
	cmd->argv[argc] = NULL;
    else
	nlimits = LSF_RLIM_NLIMITS;

    if (!xdr_int(xdrs, &nlimits)) {
	if (xdrs->x_op == XDR_DECODE)
	    goto DecodeQuit;
	else
	    return (FALSE);
    }

    
    
    if (xdrs->x_op == XDR_DECODE)
	nlimits = (nlimits < LSF_RLIM_NLIMITS) ? nlimits : LSF_RLIM_NLIMITS;

    for (i=0; i<nlimits; i++) {
	if (!xdr_arrayElement(xdrs, (char *) &(cmd->lsfLimits[i]), hdr,
			      xdr_lsfLimit)) {
	    if (xdrs->x_op == XDR_DECODE)
		goto DecodeQuit;
	    else
		return (FALSE);
	}
    }

    return (TRUE);
    
  DecodeQuit:
    for (i=0; i<argc; i++)
	free(cmd->argv[i]);
    free(cmd->argv);
    return (FALSE);
}