int MAcctLoadCP( mgcred_t *AS, char *Buf) { char tmpHeader[MAX_MNAME]; char AName[MAX_MNAME]; char *ptr; mgcred_t *A; long CkTime; mxml_t *E = NULL; const char *FName = "MAcctLoadCP"; DBG(4, fCKPT) DPrint("%s(AS,%s)\n", FName, (Buf != NULL) ? Buf : "NULL"); if (Buf == NULL) return (FAILURE); /* FORMAT: <HEADER> <GID> <CKTIME> <GSTRING> */ /* load CP header */ sscanf(Buf, "%s %s %ld", tmpHeader, AName, &CkTime); if (((long)MSched.Time - CkTime) > MCP.CPExpirationTime) return (SUCCESS); if (AS == NULL) { if (MAcctAdd(AName, &A) != SUCCESS) { DBG(5, fCKPT) DPrint("ALERT: cannot load CP account '%s'\n", AName); return (FAILURE); } } else { A = AS; } if ((ptr = strchr(Buf, '<')) == NULL) { return (FAILURE); } MXMLFromString(&E, ptr, NULL, NULL); MOFromXML((void *)A, mxoAcct, E); MXMLDestroyE(&E); return (SUCCESS); } /* END MAcctLoadCP() */
int MGroupLoadCP( mgcred_t *GS, /* I */ char *Buf) /* O */ { char tmpHeader[MAX_MNAME]; char GName[MAX_MNAME]; char *ptr; mgcred_t *G; long CkTime; mxml_t *E = NULL; const char *FName = "MGroupLoadCP"; DBG(4,fCKPT) DPrint("%s(GS,%s)\n", FName, (Buf != NULL) ? Buf : "NULL"); if (Buf == NULL) { return(FAILURE); } /* FORMAT: <HEADER> <GID> <CKTIME> <GSTRING> */ /* load CP header */ sscanf(Buf,"%s %s %ld", tmpHeader, GName, &CkTime); if (((long)MSched.Time - CkTime) > MCP.CPExpirationTime) { return(SUCCESS); } if (GS == NULL) { if (MGroupAdd(GName,&G) != SUCCESS) { DBG(5,fCKPT) DPrint("ALERT: cannot load CP group '%s'\n", GName); return(FAILURE); } } else { G = GS; } if ((ptr = strchr(Buf,'<')) == NULL) { return(FAILURE); } MXMLFromString(&E,ptr,NULL,NULL); MOFromXML((void *)G,mxoGroup,E); MXMLDestroyE(&E); return(SUCCESS); } /* END MGroupLoadCP() */
int MClassLoadCP( mclass_t *CS, char *Buf) { char tmpHeader[MAX_MNAME]; char CName[MAX_MNAME]; char *ptr; mclass_t *C; long CkTime; mxml_t *E = NULL; const char *FName = "MClassLoadCP"; DBG(4,fCKPT) DPrint("%s(CS,%s)\n", FName, (Buf != NULL) ? Buf : "NULL"); if (Buf == NULL) { return(FAILURE); } /* FORMAT: <HEADER> <GID> <CKTIME> <GSTRING> */ /* load CP header */ sscanf(Buf,"%s %s %ld", tmpHeader, CName, &CkTime); if (((long)MSched.Time - CkTime) > MCP.CPExpirationTime) { return(SUCCESS); } if (CS == NULL) { if (MClassAdd(CName,&C) != SUCCESS) { DBG(5,fCKPT) DPrint("ALERT: cannot load CP class '%s'\n", CName); return(FAILURE); } } else { C = CS; } if ((ptr = strchr(Buf,'<')) == NULL) { return(FAILURE); } MXMLCreateE(&E,(char *)MXO[mxoClass]); MXMLFromString(&E,ptr,NULL,NULL); MOFromXML((void *)C,mxoClass,E); MXMLDestroyE(&E); return(SUCCESS); } /* END MClassLoadCP() */