char *MGroupShow( mgcred_t *G, /* I */ char *SBuffer, /* O (optional) */ long *SBufSize, /* I */ long Mode) /* I */ { static char Line[MAX_MLINE]; char FlagLine[MAX_MLINE]; char QALLine[MAX_MLINE]; char QALChar; char GLLine[MAX_MLINE]; char *Head; char *BPtr; int BSpace; const char *FName = "MGroupShow"; DBG(3,fUI) DPrint("%s(%s,Buf,BufSize,%ld)\n", FName, (G != NULL) ? G->Name : "NULL", Mode); if (SBuffer != NULL) { BPtr = SBuffer; BSpace = *SBufSize; } else { BPtr = Line; BSpace = sizeof(Line); } BPtr[0] = '\0'; Head = BPtr; if (G == NULL) { /* build header */ /* NAME PRI FLAG QDEF QLST * PLST TRG LIMITS */ MUSNPrintF(&BPtr,&BSpace,"%-12s %8s %12s %12s %12s%s %20s %6s %7s\n\n", "Name", "Priority", "Flags", "QDef", "QOSList", "*", "PartitionList", "Target", "Limits"); } else { /* build job info line */ MUBMToString(G->F.JobFlags,MJobFlags,':',FlagLine,NONE); MUStrCpy(QALLine,MQOSBMToString(G->F.QAL),sizeof(QALLine)); if (G->F.QALType == qalAND) QALChar = '&'; else if (G->F.QALType == qalONLY) QALChar = '^'; else QALChar = ' '; MUStrCpy(GLLine, MCredShowAttrs(&G->L.AP,G->L.IP,NULL,NULL,NULL,&G->F,0,(1 << mcsLimits)),sizeof(GLLine)); /* NAME PRIO FLAG QDEF QLST * PLST FSTARG LIMITS */ MUSNPrintF(&BPtr,&BSpace,"%-12s %8ld %12s %12s %12s%c %20s %6.2lf %7s\n", G->Name, G->F.Priority, FlagLine, ((mqos_t *)G->F.QDef) != NULL ? ((mqos_t *)G->F.QDef)->Name : NONE, (QALLine[0] != '\0') ? QALLine : NONE, QALChar, (G->F.PAL[0] == 0) ? NONE : MUListAttrs(ePartition,G->F.PAL[0]), G->F.FSTarget, (GLLine[0] != '\0') ? GLLine : NONE); /* add group attributes */ if (G->L.APC != NULL) { int cindex; for (cindex = 0; cindex < MAX_MCLASS; cindex++) { if (G->L.APC[cindex].SLimit[mptMaxProc][0] > 0) { MUSNPrintF(&BPtr,&BSpace," MAXPROC[CLASS:%s]=%d,%d\n", MClass[cindex].Name, G->L.APC[cindex].SLimit[mptMaxProc][0], G->L.APC[cindex].HLimit[mptMaxProc][0]); } } /* END for (cindex) */ } /* END if (G->L.APC != NULL) */ if (G->L.APQ != NULL) { int cindex; for (cindex = 0; cindex < MAX_MQOS; cindex++) { if (G->L.APQ[cindex].SLimit[mptMaxProc][0] > 0) { MUSNPrintF(&BPtr,&BSpace," MAXPROC[QOS:%s]=%d,%d\n", MQOS[cindex].Name, G->L.APQ[cindex].SLimit[mptMaxProc][0], G->L.APQ[cindex].HLimit[mptMaxProc][0]); } } /* END for (cindex) */ } /* END if (G->L.APQ != NULL) */ if (Mode & (1 << mcmVerbose)) { char tmpLine[MAX_MLINE]; /* display additional attributes */ MCredConfigLShow( (void *)G, mxoGroup, TRUE, -1, tmpLine); if (tmpLine[0] != '\0') { MUSNPrintF(&BPtr,&BSpace," %s\n", tmpLine); } } /* END if (Mode == Verbose) */ } /* END else (G == NULL) */ return(Head); } /* END MGroupShow() */
char *MAcctShow( mgcred_t *A, /* I */ char *Buf, /* O */ long *BufSize, long Mode) { static char Line[MAX_MLINE]; char FlagLine[MAX_MLINE]; char QALLine[MAX_MLINE]; char QALChar; char ALLine[MAX_MLINE]; char *ptr; const char *FName = "MAcctShow"; DBG(3, fUI) DPrint("%s(%s,Buf,BufSize,%ld)\n", FName, (A != NULL) ? A->Name : "NULL", Mode); ptr = (Buf != NULL) ? Buf : Line; if (A == NULL) { /* build header */ /* NAME PRI FLAG QDEF QLST * PLST TRG LIMITS */ sprintf(ptr, "%-12s %8s %12s %12s %12s%s %20s %6s %7s\n\n", "Name", "Priority", "Flags", "QDef", "QOSList", "*", "PartitionList", "Target", "Limits"); } else { /* build job info line */ MUBMToString(A->F.JobFlags, MJobFlags, ':', FlagLine, NONE); MUStrCpy(QALLine, MQOSBMToString(A->F.QAL), sizeof(QALLine)); if (A->F.QALType == qalAND) QALChar = '&'; else if (A->F.QALType == qalONLY) QALChar = '^'; else QALChar = ' '; MUStrCpy(ALLine, MCredShowAttrs(&A->L.AP, A->L.IP, NULL, NULL, NULL, &A->F, 0, (1 << mcsLimits)), sizeof(ALLine)); /* NAME PRIO FLAG QDEF QLST * PLST FSTARG LIMITS */ sprintf( ptr, "%-12s %8ld %12s %12s %12s%c %20s %6.2lf %7s\n", A->Name, A->F.Priority, FlagLine, ((mqos_t *)A->F.QDef) != NULL ? ((mqos_t *)A->F.QDef)->Name : NONE, (QALLine[0] != '\0') ? QALLine : NONE, QALChar, (A->F.PAL[0] == 0) ? NONE : MUListAttrs(ePartition, A->F.PAL[0]), A->F.FSTarget, (ALLine[0] != '\0') ? ALLine : NONE); } /* END else (A == NULL) */ return (ptr); } /* END MAcctShow() */