#include "display.h"
-#ifdef PR_REMEMBER_TIMES
-
# include <time.h>
strftime(buffer, 32, "%m/%d %H:%M:%S", tm);
return buffer;
}
-#endif
#define host(a) (hostOrder ? (a) : ntohl(a))
fprintf(f, "%*s", indent, "");
fprintf(f, "Entry at %d: flags 0x%x, id %di, next %d.\n", ea,
host(e->flags), host(e->id), host(e->next));
-#ifdef PR_REMEMBER_TIMES
fprintf(f, "%*s", indent, "");
fprintf(f, "c:%s ", pr_TimeToString(host(e->createTime)));
fprintf(f, "a:%s ", pr_TimeToString(host(e->addTime)));
fprintf(f, "r:%s ", pr_TimeToString(host(e->removeTime)));
fprintf(f, "n:%s\n", pr_TimeToString(host(e->changeTime)));
-#endif
if (host(e->flags) & PRCONT)
PrintEntries(f, hostOrder, indent, e, COSIZE);
else { /* regular entry */
#define PRP_GROUP_DEFAULT (PRP_STATUS_ANY | PRP_MEMBER_ANY)
#define PRP_USER_DEFAULT (PRP_STATUS_ANY)
-#define PR_REMEMBER_TIMES 1
-
struct prentry {
afs_int32 flags; /* random flags */
afs_int32 id; /* user or group id */
afs_int32 cellid; /* A foreign users's repsenting group */
afs_int32 next; /* next block same entry (or freelist) */
-#ifdef PR_REMEMBER_TIMES
afs_uint32 createTime, addTime, removeTime, changeTime;
afs_int32 reserved[1];
-#else
- afs_int32 reserved[5];
-#endif
afs_int32 entries[PRSIZE]; /* groups a user is a member of (or list of members */
afs_int32 nextID; /* id hash table next pointer */
afs_int32 nextName; /* name has table next ptr */
afs_int32 id; /* user or group id */
afs_int32 cellid; /* reserved for cellID */
afs_int32 next; /* next block same entry (or freelist) */
-#ifdef PR_REMEMBER_TIMES
afs_uint32 createTime, addTime, removeTime, changeTime;
afs_int32 reserved[1];
-#else
- afs_int32 reserved[5];
-#endif
afs_int32 entries[PRSIZE]; /* groups a user is a member of (or list of members */
afs_int32 nextID; /* id hash table next pointer */
afs_int32 nextName; /* name has table next ptr */
newEntry = AllocBlock(at);
if (!newEntry)
return PRDBFAIL;
-#ifdef PR_REMEMBER_TIMES
tentry.createTime = time(0);
-#endif
if (flag & PRGRP) {
tentry.flags = PRGRP;
code = pr_ReadEntry(at, 0, temp, &tentry);
if (code != 0)
return code;
-#ifdef PR_REMEMBER_TIMES
tentry.removeTime = time(0);
-#endif
for (i = 0; i < PRSIZE; i++) {
if (tentry.entries[i] == aid) {
tentry.entries[i] = PRBADID;
code = pr_ReadEntry(at, 0, temp, &tentry);
if (code != 0)
return code;
-#ifdef PR_REMEMBER_TIMES
tentry.removeTime = time(NULL);
-#endif
tentryg = (struct prentryg *)&tentry;
for (i = 0; i < SGSIZE; i++) {
if (tentryg->supergroup[i] == aid) {
if (entry->id == aid)
return PRINCONSISTENT;
-#ifdef PR_REMEMBER_TIMES
entry->addTime = time(0);
-#endif
for (i = 0; i < PRSIZE; i++) {
if (entry->entries[i] == aid)
return PRIDEXIST;
if (entry->id == aid)
return PRINCONSISTENT;
-#ifdef PR_REMEMBER_TIMES
entry->addTime = time(NULL);
-#endif
entryg = (struct prentryg *)entry;
for (i = 0; i < SGSIZE; i++) {
if (entryg->supergroup[i] == aid)
if (tentry.owner != cid && !IsAMemberOf(at, cid, SYSADMINID)
&& !IsAMemberOf(at, cid, tentry.owner) && !pr_noAuth)
return PRPERM;
-#ifdef PR_REMEMBER_TIMES
tentry.changeTime = time(0);
-#endif
/* we're actually trying to change the id */
if (newid && (newid != aid)) {
nentry.sibling = htonl(tentry->sibling);
nentry.child = htonl(tentry->child);
strncpy(nentry.name, tentry->name, PR_MAXNAMELEN);
-#ifdef PR_REMEMBER_TIMES
nentry.createTime = htonl(tentry->createTime);
nentry.addTime = htonl(tentry->addTime);
nentry.removeTime = htonl(tentry->removeTime);
nentry.changeTime = htonl(tentry->changeTime);
-#endif
for (i = 0; i < PRSIZE; i++)
nentry.entries[i] = htonl(tentry->entries[i]);
tentry = &nentry;
tentry->sibling = ntohl(nentry.sibling);
tentry->child = ntohl(nentry.child);
strncpy(tentry->name, nentry.name, PR_MAXNAMELEN);
-#ifdef PR_REMEMBER_TIMES
tentry->createTime = ntohl(nentry.createTime);
tentry->addTime = ntohl(nentry.addTime);
tentry->removeTime = ntohl(nentry.removeTime);
tentry->changeTime = ntohl(nentry.changeTime);
-#endif
for (i = 0; i < PRSIZE; i++)
tentry->entries[i] = ntohl(nentry.entries[i]);
return (code);