[OpenBIOS] [commit] r818 - trunk/openbios-devel/fs/hfs
repository service
svn at openbios.org
Sun Jul 11 21:40:18 CEST 2010
Author: mcayland
Date: Sun Jul 11 21:40:18 2010
New Revision: 818
URL: http://tracker.coreboot.org/trac/openbios/changeset/818
Log:
Fix bug in dir path parsing on HFS filesystems.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>
Modified:
trunk/openbios-devel/fs/hfs/hfs_fs.c
Modified: trunk/openbios-devel/fs/hfs/hfs_fs.c
==============================================================================
--- trunk/openbios-devel/fs/hfs/hfs_fs.c Sun Jul 11 20:57:19 2010 (r817)
+++ trunk/openbios-devel/fs/hfs/hfs_fs.c Sun Jul 11 21:40:18 2010 (r818)
@@ -492,8 +492,7 @@
hfsvol *volume;
hfscommon *common;
hfsdirent ent;
- const char *s;
- char buf[256], *tmppath;
+ int i;
int fd;
ihandle_t ih = POP();
@@ -512,36 +511,12 @@
common = malloc(sizeof(hfscommon));
- if (strcmp(path, "\\") == 0) {
- common->dir = hfs_opendir(volume, ":");
- } else {
- if (path[strlen(path) - 1] == '\\') {
- path[strlen(path) - 1] = 0;
- }
-
- tmppath = path;
- for( tmppath-- ;; ) {
- int n;
-
- s = ++tmppath;
- tmppath = strchr(s, '\\');
- if( !tmppath || !tmppath[1])
- break;
- n = MIN( sizeof(buf)-1, (path-s) );
- if( !n )
- continue;
-
- strncpy( buf, s, n );
- buf[n] = 0;
- if( hfs_chdir(volume, buf) ) {
- free(common);
- free(path);
- return;
- }
- }
+ /* HFS paths are colon separated, not backslash separated */
+ for (i = 0; i < strlen(path); i++)
+ if (path[i] == '\\')
+ path[i] = ':';
- common->dir = hfs_opendir(volume, s);
- }
+ common->dir = hfs_opendir(volume, path);
forth_printf("\n");
while( !hfs_readdir(common->dir, &ent) ) {
More information about the OpenBIOS
mailing list