No empty .Rs/.Re
[netbsd-mini2440.git] / sys / arch / macppc / stand / ofwboot / hfs.c
blob097891e43b9ec0e4a8e85cb7bb5b4f1204a04f89
1 /* $NetBSD: hfs.c,v 1.2.22.3 2004/09/21 13:18:30 skrll Exp $ */
3 /*-
4 * Copyright (c) 2000 Tsubai Masanari. All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #include <sys/param.h>
30 #include <lib/libkern/libkern.h>
31 #include <lib/libsa/stand.h>
33 #include <openfirm.h>
34 #include <hfs.h>
36 static int OF_fd; /* XXX */
38 int
39 hfs_open(const char *path, struct open_file *f)
41 int chosen;
42 char bootpath[128], *cp;
44 if ((chosen = OF_finddevice("/chosen")) == -1)
45 return ENXIO;
46 memset(bootpath, 0, sizeof bootpath);
47 OF_getprop(chosen, "bootpath", bootpath, sizeof bootpath);
48 cp = strrchr(bootpath, ',');
49 if (cp == NULL)
50 return ENXIO;
52 strcpy(cp + 1, path);
53 OF_fd = OF_open(bootpath);
54 if (OF_fd == -1)
55 return ENOENT;
57 return 0;
60 int
61 hfs_close(struct open_file *f)
63 OF_close(OF_fd);
64 return 0;
67 int
68 hfs_read(struct open_file *f, void *start, size_t size, size_t *resid)
70 int len;
72 len = OF_read(OF_fd, start, size);
73 size -= len;
74 if (resid)
75 *resid = size;
76 return 0;
79 int
80 hfs_write(struct open_file *f, void *start, size_t size, size_t *resid)
82 printf("hfs_write\n");
83 return ENXIO;
86 off_t
87 hfs_seek(struct open_file *f, off_t offset, int where)
89 switch (where) {
90 case SEEK_SET:
91 return OF_seek(OF_fd, offset);
92 case SEEK_CUR:
93 case SEEK_END:
94 default:
95 return -1;
99 int
100 hfs_stat(struct open_file *f, struct stat *sb)
102 return 0;