int decode_DIS_attrl(int sock, struct attrl **ppatt) { int hasresc; int i; unsigned int numpat; struct attrl *pat = 0; struct attrl *patprior = 0; int rc; numpat = disrui(sock, &rc); if (rc) return rc; for (i=0; i < numpat; ++i) { (void) disrui(sock, &rc); if (rc) break; pat = malloc(sizeof(struct attrl)); if (pat == 0) return DIS_NOMALLOC; pat->next = (struct attrl *)0; pat->name = (char *)0; pat->resource = (char *)0; pat->value = (char *)0; pat->name = disrst(sock, &rc); if (rc) break; hasresc = disrui(sock, &rc); if (rc) break; if (hasresc) { pat->resource = disrst(sock, &rc); if (rc) break; } pat->value = disrst(sock, &rc); if (rc) break; #ifdef NAS /* localmod 005 */ pat->op = (enum batch_op) disrui(sock, &rc); #else pat->op = disrui(sock, &rc); #endif /* localmod 005 */ if (rc) break; if (i == 0) { /* first one, link to passing in pointer */ *ppatt = pat; } else { patprior->next = pat; } patprior = pat; } if (rc) PBS_free_aopl((struct attropl *)pat); return rc; }
int decode_DIS_attropl(int sock, struct attropl **ppatt) { int hasresc; unsigned int i; unsigned int name_len; unsigned int numpat; struct attropl *pat = NULL; struct attropl *patprior = NULL; int rc; numpat = disrui(sock, &rc); if (rc) return rc; for (i = 0; i < numpat; ++i) { name_len = disrui(sock, &rc); /* name_len is unused here */ if (rc) break; pat = malloc(sizeof(struct attropl)); if (pat == 0) return DIS_NOMALLOC; pat->next = (struct attropl *)0; pat->name = (char *)0; pat->resource = (char *)0; pat->value = (char *)0; pat->name = disrst(sock, &rc); if (rc) break; hasresc = disrui(sock, &rc); if (rc) break; if (hasresc) { pat->resource = disrst(sock, &rc); if (rc) break; } pat->value = disrst(sock, &rc); if (rc) break; pat->op = (enum batch_op)disrui(sock, &rc); if (rc) break; if (i == 0) { /* first one, link to passing in pointer */ *ppatt = pat; } else { patprior->next = pat; } patprior = pat; } if (rc) PBS_free_aopl(pat); return rc; }