Пример #1
0
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() */
Пример #2
0
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() */
Пример #3
0
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() */