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>
16 #include <afs/afsutil.h>
26 cmdproc(struct cmd_syndesc
*as
, void * arock
)
34 if (as
->parms
[0].items
) {
35 dbmfile
= as
->parms
[0].items
->data
;
37 kdb
= dbm_open(dbmfile
, O_RDONLY
, KALOG_DB_MODE
);
42 if (!(ti
= as
->parms
[1].items
)) {
43 printf("Printing all entries found in %s\n", dbmfile
);
44 for (key
= dbm_firstkey(kdb
); key
.dptr
;
45 key
= afs_dbm_nextkey(kdb
, key
), cnt
++) {
46 if (as
->parms
[2].items
) {
47 data
= dbm_fetch(kdb
, key
);
49 fprintf(stderr
, "%s: no entry exists\n", (char *)key
.dptr
);
52 if (data
.dsize
!= sizeof(kalog_elt
)) {
53 fprintf(stderr
, "%s: data came out corrupt\n",
57 memcpy(&rdata
, data
.dptr
, sizeof(kalog_elt
));
58 if (! as
->parms
[3].items
) {
60 hostName
= hostutil_GetNameByINet(rdata
.host
);
61 printf("%s: last operation from host %s at %s",
62 (char *)key
.dptr
, hostName
,
63 ctime(&rdata
.last_use
));
67 hostIP
= afs_inet_ntoa_r(rdata
.host
, hoststr
);
68 printf("%s: last operation from host %s at %s",
69 (char *)key
.dptr
, hostIP
,
70 ctime(&rdata
.last_use
));
73 printf("\t%s\n", (char *)key
.dptr
);
76 printf("%d entries were found\n", cnt
);
78 for (; ti
; ti
= ti
->next
) {
79 key
.dsize
= strlen(ti
->data
) + 1;
81 data
= dbm_fetch(kdb
, key
);
83 fprintf(stderr
, "%s: no entry exists\n", ti
->data
);
86 if (data
.dsize
!= sizeof(kalog_elt
)) {
87 fprintf(stderr
, "%s: data came out corrupt\n", ti
->data
);
90 memcpy(&rdata
, data
.dptr
, sizeof(kalog_elt
));
91 printf("%s: last operation from host %x at %s", ti
->data
,
92 rdata
.host
, ctime(&rdata
.last_use
));
100 #include "AFS_component_version_number.c"
103 main(int argc
, char **argv
)
105 struct cmd_syndesc
*ts
;
109 if (asprintf(&dbmfile_help
, "dbmfile to use (default %s)",
110 AFSDIR_SERVER_KALOGDB_FILEPATH
) < 0)
111 dbmfile_help
= "dbmfile to use";
112 dbmfile
= AFSDIR_SERVER_KALOGDB_FILEPATH
;
113 ts
= cmd_CreateSyntax(NULL
, cmdproc
, NULL
, 0, "Dump contents of dbm database");
114 cmd_AddParm(ts
, "-dbmfile", CMD_SINGLE
, CMD_OPTIONAL
, dbmfile_help
);
115 cmd_AddParm(ts
, "-key", CMD_SINGLE
, CMD_OPTIONAL
,
116 "extract entries that match specified key");
117 cmd_AddParm(ts
, "-long", CMD_FLAG
, CMD_OPTIONAL
, "print long info for each entry");
118 cmd_AddParm(ts
, "-numeric", CMD_FLAG
, CMD_OPTIONAL
, "addresses only");
119 code
= cmd_Dispatch(argc
, argv
);
124 #include "AFS_component_version_number.c"
129 printf("kdb not supported\n");