Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / sys / iopen.c
1 /*
2 * Copyright 2000, International Business Machines Corporation and others.
3 * All Rights Reserved.
4 *
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
8 */
9
10 #include <afsconfig.h>
11 #include <afs/param.h>
12
13 #include <roken.h>
14
15 #ifdef AFS_HPUX_ENV
16 #include <sys/mknod.h>
17 #endif
18
19 #include "afssyscalls.h"
20
21 #include "AFS_component_version_number.c"
22
23 void
24 Usage(void)
25 {
26 printf("Usage: iopen <partition> <inode>\n");
27 printf
28 ("iopen opens file by inode, then tries to read it, printing it to stdout.\n");
29 exit(1);
30 }
31
32 main(argc, argv)
33 char **argv;
34 {
35 char *part;
36 char buf[5];
37 int fd, n;
38 struct stat status;
39 Inode ino;
40
41 if (argc != 3)
42 Usage();
43
44 part = argv[1];
45 #ifdef AFS_64BIT_IOPS_ENV
46 ino = strtoull(argv[2], NULL, 10);
47 #else
48 ino = atoi(argv[2]);
49 #endif
50
51 if (stat(part, &status) == -1) {
52 perror("stat");
53 exit(1);
54 }
55 printf("ino=%" AFS_INT64_FMT "\n", ino);
56 printf("About to iopen(dev=(%d,%d), inode=%s, mode=%d\n",
57 major(status.st_dev), minor(status.st_dev), PrintInode(NULL, ino),
58 O_RDONLY);
59 fflush(stdout);
60 fd = IOPEN(status.st_dev, ino, O_RDONLY);
61 if (fd == -1) {
62 perror("iopen");
63 exit(1);
64 }
65 printf("iopen successful, fd=%d\n", fd);
66 while ((n = read(fd, buf, 5)) > 0)
67 write(1, buf, n);
68 if (n < 0)
69 perror("read");
70 exit(0);
71 }