[OpenBIOS] r630 - in trunk/openbios-devel: forth/debugging include/openbios modules

svn at openbios.org svn at openbios.org
Sun Nov 22 10:58:02 CET 2009


Author: laurent
Date: 2009-11-22 10:58:01 +0100 (Sun, 22 Nov 2009)
New Revision: 630

Modified:
   trunk/openbios-devel/forth/debugging/client.fs
   trunk/openbios-devel/include/openbios/fs.h
   trunk/openbios-devel/modules/filesystems.c
Log:
Implement command "dir <path>".
This is the generic command, it needs support from the filesystem 
packages.

Signed-off-by: Laurent Vivier <Laurent at vivier.eu>



Modified: trunk/openbios-devel/forth/debugging/client.fs
===================================================================
--- trunk/openbios-devel/forth/debugging/client.fs	2009-11-22 09:53:54 UTC (rev 629)
+++ trunk/openbios-devel/forth/debugging/client.fs	2009-11-22 09:58:01 UTC (rev 630)
@@ -307,6 +307,23 @@
   init-program
   ;
 
+: dir ( "{paths}<cr>" -- )
+  linefeed parse 2dup
+  open-dev dup 0= if
+    3drop
+    exit
+  then
+  dup >r
+  dup ihandle>phandle " dir" rot find-method ( xt 0|1 )
+  if
+    swap call-package
+  else
+    3drop
+    cr ." Cannot find dir for this package"
+  then
+  r> close-dev
+;
+
 : go    ( -- )
   state-valid @ not if exit then
   elf file-type @ = if

Modified: trunk/openbios-devel/include/openbios/fs.h
===================================================================
--- trunk/openbios-devel/include/openbios/fs.h	2009-11-22 09:53:54 UTC (rev 629)
+++ trunk/openbios-devel/include/openbios/fs.h	2009-11-22 09:58:01 UTC (rev 630)
@@ -42,6 +42,7 @@
 	int		(*read)( file_desc_t *file, void *buf, size_t count );
 	int		(*lseek)( file_desc_t *file, off_t offset, int whence );
 	char		*(*get_path)( file_desc_t *file, char *buf, int len );
+	void		(*dir)( file_desc_t *file );
 
         const char     	*(*get_fstype)( fs_ops_t *fs );
 };

Modified: trunk/openbios-devel/modules/filesystems.c
===================================================================
--- trunk/openbios-devel/modules/filesystems.c	2009-11-22 09:53:54 UTC (rev 629)
+++ trunk/openbios-devel/modules/filesystems.c	2009-11-22 09:58:01 UTC (rev 630)
@@ -295,6 +295,21 @@
 }
 
 static void
+files_dir( files_info_t *mi )
+{
+	fs_ops_t *fs = do_open( my_parent() );
+	char *path = pop_fstr_copy();
+
+	if (!path)
+		return;
+
+	if (fs->dir)
+		fs->dir(mi->file);
+
+	free(path);
+}
+
+static void
 files_initializer( files_info_t *dummy )
 {
 	fword("register-fs-package");
@@ -309,6 +324,7 @@
 	{ "seek",		files_seek 		},
 	{ "tell",		files_tell		},
 	{ "load",		files_load		},
+	{ "dir",		files_dir		},
 	{ "block-size",		files_block_size	},
 
 	/* special */




More information about the OpenBIOS mailing list