#include <afsconfig.h>
#include <afs/param.h>
+#include <roken.h>
-#ifdef AFS_NT40_ENV
-#include <fcntl.h>
-#include <windows.h>
-#else
-#include <sys/file.h>
-#endif
-#include <stdio.h>
-#include <errno.h>
+#include <afs/dir.h>
+#include <afs/opr.h>
long fidCounter = 0;
-typedef struct dirhandle {
+typedef struct DirHandle {
int fd;
int uniq;
} dirhandle;
int Uniq;
-void
+static void OpenDir(char *name, dirhandle *dir);
+static void CreateDir(char *name, dirhandle *dir);
+
+static void
Usage(void)
{
printf("Usage: dtest <command [args]>, where command is one of:\n");
exit(1);
}
-main(argc, argv)
- char **argv;
-{
- DInit(600);
- argc--;
- argv++;
-
- if (argc == 0)
- Usage();
-
- switch ((*argv++)[1]) {
- case 'l':
- ListDir(*argv);
- break;
- case 'c':
- CheckDir(*argv);
- break;
- case 's':
- SalvageDir(*argv, argv[1]);
- break;
- case 'f':
- CRTest(*argv, argv[1], atoi(argv[2]));
- break;
- case 'd':
- DelTest(*argv, argv[1]);
- break;
- case 'r':
- LookupDir(*argv, argv[1]);
- break;
- case 'a':
- AddEntry(*argv, argv[1]);
- break;
- default:
- Usage();
- }
- exit(0);
-}
-
-LookupDir(dname, ename)
- char *dname, *ename;
+static void
+LookupDir(char *dname, char *ename)
{
dirhandle dir;
- long fid[3], code;
+ afs_int32 fid[3];
+ int code;
OpenDir(dname, &dir);
- code = Lookup(&dir, ename, fid);
+ code = afs_dir_Lookup(&dir, ename, fid);
if (code)
printf("lookup code %d\n", code);
else {
DFlush();
}
-AddEntry(dname, ename)
- char *dname, *ename;
+static void
+AddEntry(char *dname, char *ename)
{
dirhandle dir;
- long fid[3], code;
+ afs_int32 fid[3];
+ int code;
fid[1] = fidCounter++;
fid[2] = 3;
OpenDir(dname, &dir);
- code = Create(&dir, ename, fid);
+ code = afs_dir_Create(&dir, ename, fid);
if (code)
printf("create code %d\n", code);
DFlush();
}
-ListDir(name)
- char *name;
+static int
+ListEntry(void * handle, char *name, afs_int32 vnode, afs_int32 unique)
{
- extern ListEntry();
- dirhandle dir;
- OpenDir(name, &dir);
- EnumerateDir(&dir, ListEntry, 0);
+ printf("%s\t%ld\t%ld\n", name, afs_printable_int32_ld(vnode),
+ afs_printable_int32_ld(unique));
+
+ return 0;
}
-ListEntry(handle, name, vnode, unique)
- long handle, vnode, unique;
- char *name;
+static void
+ListDir(char *name)
{
- printf("%s\t%d\t%d\n", name, vnode, unique);
+ dirhandle dir;
+ OpenDir(name, &dir);
+ afs_dir_EnumerateDir(&dir, ListEntry, 0);
}
-CheckDir(name)
- char *name;
+static void
+CheckDir(char *name)
{
dirhandle dir;
OpenDir(name, &dir);
printf("Directory bad\n");
}
-SalvageDir(iname, oname)
- char *iname, *oname;
+static void
+SalvageDir(char *iname, char *oname)
{
dirhandle in, out;
- long myFid[3], parentFid[3];
+ afs_int32 myFid[3], parentFid[3];
+
OpenDir(iname, &in);
- if (Lookup(in, ".", myFid) || Lookup(in, "..", parentFid)) {
+ if (afs_dir_Lookup(&in, ".", myFid) ||
+ afs_dir_Lookup(&in, "..", parentFid)) {
printf("Lookup of \".\" and/or \"..\" failed: ");
printf("%d %d %d %d\n", myFid[1], myFid[2], parentFid[1],
parentFid[2]);
DFlush();
}
-DelTest(dname, ename)
- char *dname;
- char *ename;
+static void
+DelTest(char *dname, char *ename)
{
dirhandle dir;
- long code;
+ int code;
OpenDir(dname, &dir);
- code = Delete(&dir, ename);
+ code = afs_dir_Delete(&dir, ename);
if (code)
printf("delete code is %d\n", code);
DFlush();
}
-CRTest(dname, ename, count)
- char *dname;
- char *ename;
- int count;
+static void
+CRTest(char *dname, char *ename, int count)
{
char tbuffer[200];
- long i, code;
- long fid[3];
+ int i;
+ afs_int32 fid[3];
dirhandle dir;
+ int code;
CreateDir(dname, &dir);
memset(fid, 0, sizeof(fid));
- MakeDir(&dir, fid, fid);
+ afs_dir_MakeDir(&dir, fid, fid);
for (i = 0; i < count; i++) {
sprintf(tbuffer, "%s%d", ename, i);
fid[1] = fidCounter++;
fid[2] = count;
- code = Create(&dir, tbuffer, &fid);
+ code = afs_dir_Create(&dir, tbuffer, &fid);
if (i % 100 == 0) {
printf("#");
fflush(stdout);
}
if (code) {
printf("code for '%s' is %d\n", tbuffer, code);
- return;
+ break;
}
}
DFlush();
}
-OpenDir(name, dir)
- char *name;
- dirhandle *dir;
+static void
+OpenDir(char *name, dirhandle *dir)
{
dir->fd = open(name, O_RDWR, 0666);
if (dir->fd == -1) {
dir->uniq = ++Uniq;
}
-CreateDir(name, dir)
- char *name;
- dirhandle *dir;
+static void
+CreateDir(char *name, dirhandle *dir)
{
dir->fd = open(name, O_CREAT | O_RDWR | O_TRUNC, 0666);
dir->uniq = ++Uniq;
}
}
-ReallyRead(dir, block, data)
- dirhandle *dir;
- int block;
- char *data;
+int
+ReallyRead(dirhandle *dir, int block, char *data)
{
int code;
if (lseek(dir->fd, block * PAGESIZE, 0) == -1)
return 0;
}
-ReallyWrite(dir, block, data)
- dirhandle *dir;
- int block;
- char *data;
+int
+ReallyWrite(dirhandle *dir, int block, char *data)
{
int code;
if (lseek(dir->fd, block * PAGESIZE, 0) == -1)
return 0;
}
-FidZap(dir)
- dirhandle *dir;
+void
+FidZap(dirhandle *dir)
{
dir->fd = -1;
}
-int
-FidZero(afid)
- long *afid;
+void
+FidZero(afs_int32 *afid)
{
*afid = 0;
}
-FidEq(dir1, dir2)
- dirhandle *dir1, *dir2;
+int
+FidEq(dirhandle *dir1, dirhandle *dir2)
{
return (dir1->uniq == dir2->uniq);
}
int
-FidVolEq(afid, bfid)
- long *afid, *bfid;
+FidVolEq(afs_int32 *afid, afs_int32 *bfid)
{
return 1;
}
-FidCpy(todir, fromdir)
- dirhandle *todir, *fromdir;
+void
+FidCpy(dirhandle *todir, dirhandle *fromdir)
{
*todir = *fromdir;
}
-Die(msg)
- char *msg;
+void
+Die(const char *msg)
{
printf("Something died with this message: %s\n", msg);
+ opr_abort();
+}
+
+void
+Log(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vprintf(fmt, ap);
+ va_end(ap);
}
-Log(a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+int
+main(int argc, char **argv)
{
- printf(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
+ DInit(600);
+ argc--;
+ argv++;
+
+ if (argc == 0)
+ Usage();
+
+ switch ((*argv++)[1]) {
+ case 'l':
+ ListDir(*argv);
+ break;
+ case 'c':
+ CheckDir(*argv);
+ break;
+ case 's':
+ SalvageDir(*argv, argv[1]);
+ break;
+ case 'f':
+ CRTest(*argv, argv[1], atoi(argv[2]));
+ break;
+ case 'd':
+ DelTest(*argv, argv[1]);
+ break;
+ case 'r':
+ LookupDir(*argv, argv[1]);
+ break;
+ case 'a':
+ AddEntry(*argv, argv[1]);
+ break;
+ default:
+ Usage();
+ }
+ exit(0);
}