2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #include <afsconfig.h>
11 #include <afs/param.h>
17 #include <sys/types.h>
21 #include <netinet/in.h>
28 #ifdef PR_REMEMBER_TIMES
34 pr_TimeToString(time_t clock)
37 static char buffer[32];
38 static int this_year = 0;
41 return "time-not-set ";
45 this_year = tm->tm_year;
47 tm = localtime(&clock);
48 if (tm->tm_year != this_year)
49 strftime(buffer, 32, "%m/%d/%Y %H:%M:%S", tm);
51 strftime(buffer, 32, "%m/%d %H:%M:%S", tm);
56 #define host(a) (hostOrder ? (a) : ntohl(a))
59 PrintEntries(FILE *f, int hostOrder, int indent, struct prentry *e, int n)
65 for (i = 0; i < n; i++) {
66 if (e->entries[i] == 0)
70 fprintf(f, "%*sids ", indent, "");
71 else if (newline == 0)
72 fprintf(f, "%*s", indent + 4, "");
74 if (host(e->entries[i]) == PRBADID)
77 fprintf(f, "%6d", host(e->entries[i]));
90 pr_PrintEntry(FILE *f, int hostOrder, afs_int32 ea, struct prentry *e, int indent)
95 fprintf(f, "cellid == %d\n", host(e->cellid));
96 for (i = 0; i < sizeof(e->reserved) / sizeof(e->reserved[0]); i++)
98 fprintf(f, "reserved field [%d] not zero: %d\n", i,
99 host(e->reserved[i]));
101 fprintf(f, "%*s", indent, "");
102 fprintf(f, "Entry at %d: flags 0x%x, id %di, next %d.\n", ea,
103 host(e->flags), host(e->id), host(e->next));
104 #ifdef PR_REMEMBER_TIMES
105 fprintf(f, "%*s", indent, "");
106 fprintf(f, "c:%s ", pr_TimeToString(host(e->createTime)));
107 fprintf(f, "a:%s ", pr_TimeToString(host(e->addTime)));
108 fprintf(f, "r:%s ", pr_TimeToString(host(e->removeTime)));
109 fprintf(f, "n:%s\n", pr_TimeToString(host(e->changeTime)));
111 if (host(e->flags) & PRCONT)
112 PrintEntries(f, hostOrder, indent, e, COSIZE);
113 else { /* regular entry */
114 PrintEntries(f, hostOrder, indent, e, PRSIZE);
115 fprintf(f, "%*s", indent, "");
116 fprintf(f, "hash (id %d name %d). Owner %di, creator %di\n",
117 host(e->nextID), host(e->nextName), host(e->owner),
119 fprintf(f, "%*s", indent, "");
120 #if defined(SUPERGROUPS)
121 fprintf(f, "quota groups %d, foreign users %d. Mem: %d, cntsg: %d\n",
122 host(e->ngroups), host(e->nusers), host(e->count),
125 fprintf(f, "quota groups %d, foreign users %d. Mem: %d, inst: %d\n",
126 host(e->ngroups), host(e->nusers), host(e->count),
129 fprintf(f, "%*s", indent, "");
130 #if defined(SUPERGROUPS)
131 fprintf(f, "Owned chain %d, next owned %d, nextsg %d, sg (%d %d).\n",
132 host(e->owned), host(e->nextOwned), host(e->parent),
133 host(e->sibling), host(e->child));
135 fprintf(f, "Owned chain %d, next owned %d, inst ptrs(%d %d %d).\n",
136 host(e->owned), host(e->nextOwned), host(e->parent),
137 host(e->sibling), host(e->child));
139 fprintf(f, "%*s", indent, "");
140 if (strlen(e->name) >= PR_MAXNAMELEN)
141 fprintf(f, "NAME TOO LONG: ");
142 fprintf(f, "Name is '%.*s'\n", PR_MAXNAMELEN, e->name);