diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt
index bba1400e6e..6086711782 100644
--- a/TODO.FACTOR.txt
+++ b/TODO.FACTOR.txt
@@ -1,6 +1,3 @@
-- reader syntax for arrays, byte arrays, displaced aliens
-- out of memory error when printing global namespace
-- removing unneeded #label
- finish scrollbars
- fix up the min thumb size hack
@@ -54,6 +51,7 @@
+ compiler:
+- removing unneeded #label
- flushing optimization
- compile-byte/cell: instantiating aliens
- fix fixnum<< and /i overflow on PowerPC
@@ -71,6 +69,8 @@
+ kernel:
+- reader syntax for arrays, byte arrays, displaced aliens
+- out of memory error when printing global namespace
- first time hash/vector is grown, set size to something big
- merge timers with sleeping tasks
- what about tasks and timers between image restarts
diff --git a/doc/handbook.tex b/doc/handbook.tex
index 2e3a3486a1..7e0e249273 100644
--- a/doc/handbook.tex
+++ b/doc/handbook.tex
@@ -4392,7 +4392,6 @@ Key&Description\\
\ttindex{underline}&A boolean\\
\ttindex{presented}&If set, a presentation for this object is output\\
\ttindex{file}&If set, a hyperlink to that file is output\\
-\ttindex{icon}&If set, the icon named by this resource path is output\\
\end{tabular}
All keys are symbols in the \verb|styles| vocabulary.
diff --git a/library/bootstrap/boot-stage1.factor b/library/bootstrap/boot-stage1.factor
index 74ff9842ad..c82cdb2034 100644
--- a/library/bootstrap/boot-stage1.factor
+++ b/library/bootstrap/boot-stage1.factor
@@ -69,7 +69,6 @@ sequences io vectors words ;
"/library/io/string-streams.factor"
"/library/io/c-streams.factor"
"/library/io/files.factor"
- "/library/io/directories.factor"
"/library/io/binary.factor"
"/library/syntax/parse-words.factor"
diff --git a/library/httpd/default-responders.factor b/library/httpd/default-responders.factor
index 5ae7f92205..56ba5f4e23 100644
--- a/library/httpd/default-responders.factor
+++ b/library/httpd/default-responders.factor
@@ -10,19 +10,15 @@ test-responder ;
global [
{{ }} clone responders set
- ! Runs all unit tests and dumps result to the client. This uses
- ! a lot of server resources, so disable it on a busy server.
- [
- "test" "responder" set
- [ test-responder ] "get" set
- ] make-responder
-
! 404 error message pages are served by this guy
[
"404" "responder" set
[ drop no-such-responder ] "get" set
] make-responder
+ ! Servers Factor word definitions from the image.
+ "browser" [ browser-responder ] install-cont-responder
+
! Serves files from a directory stored in the "doc-root"
! variable. You can set the variable in the global namespace,
! or inside the responder.
@@ -34,15 +30,6 @@ global [
[ file-responder ] "head" set
] make-responder
- ! Serves Factor source code
- [
- "resource" "responder" set
- [ resource-responder ] "get" set
- ] make-responder
-
- ! Servers Factor word definitions from the image.
- "browser" [ browser-responder ] install-cont-responder
-
! The root directory is served by...
"file" set-default-responder
diff --git a/library/httpd/file-responder.factor b/library/httpd/file-responder.factor
index e909a28185..51dd0f8bfc 100644
--- a/library/httpd/file-responder.factor
+++ b/library/httpd/file-responder.factor
@@ -27,6 +27,18 @@ io strings ;
serve-static
] ifte ;
+: file-link. ( text path -- )
+ file swons unit format ;
+
+: file-type. ( path -- )
+ directory? "[DIR ] " "[FILE] " ? write ;
+
+: file. ( dir name -- )
+ tuck path+ [ file-type. ] keep file-link. ;
+
+: directory. ( dir -- )
+ dup directory [ file. terpri ] each-with ;
+
: list-directory ( directory -- )
serving-html
"method" get "head" = [
diff --git a/library/httpd/html.factor b/library/httpd/html.factor
index 8afe197d43..dceb67bbac 100644
--- a/library/httpd/html.factor
+++ b/library/httpd/html.factor
@@ -91,16 +91,6 @@ presentation sequences strings styles words ;
drop call
] ifte ;
-: icon-tag ( string style quot -- )
- over icon swap assoc dup [
-
- #! Ignore the quotation, since no further style
- #! can be applied
- 3drop
- ] [
- drop call
- ] ifte ;
-
TUPLE: html-stream ;
M: html-stream stream-write1 ( char stream -- )
@@ -112,10 +102,8 @@ M: html-stream stream-format ( str style stream -- )
[
[
[
- [
- [ drop chars>entities write ] span-tag
- ] file-link-tag
- ] icon-tag
+ [ drop chars>entities write ] span-tag
+ ] file-link-tag
] browser-link-tag
] with-wrapper ;
@@ -131,7 +119,6 @@ C: html-stream ( stream -- stream )
#! font-style
#! font-size
#! underline
- #! icon
#! file
#! word
#! vocab
diff --git a/library/httpd/load.factor b/library/httpd/load.factor
index 3d78266fc9..8cf325f27d 100644
--- a/library/httpd/load.factor
+++ b/library/httpd/load.factor
@@ -7,8 +7,6 @@ USING: kernel parser sequences io ;
"/library/httpd/responder.factor"
"/library/httpd/httpd.factor"
"/library/httpd/file-responder.factor"
- "/library/httpd/test-responder.factor"
- "/library/httpd/resource-responder.factor"
"/library/httpd/cont-responder.factor"
"/library/httpd/browser-responder.factor"
"/library/httpd/default-responders.factor"
diff --git a/library/httpd/resource-responder.factor b/library/httpd/resource-responder.factor
deleted file mode 100644
index fa5f94150a..0000000000
--- a/library/httpd/resource-responder.factor
+++ /dev/null
@@ -1,21 +0,0 @@
-! Copyright (C) 2004, 2005 Slava Pestov.
-! See http://factor.sf.net/license.txt for BSD license.
-IN: resource-responder
-USING: httpd kernel lists namespaces io ;
-
-: resource-response ( mime-type -- )
- "Content-Type" swons unit "200 OK" response terpri ;
-
-: serve-resource ( filename mime-type -- )
- dup mime-type resource-response "method" get "head" = [
- drop
- ] [
- stdio get stream-copy
- ] ifte ;
-
-: resource-responder ( filename -- )
- "resource-path" get [
- serve-resource
- ] [
- drop "404 resource-path not set" httpd-error
- ] ifte ;
diff --git a/library/httpd/test-responder.factor b/library/httpd/test-responder.factor
deleted file mode 100644
index fef5856c33..0000000000
--- a/library/httpd/test-responder.factor
+++ /dev/null
@@ -1,9 +0,0 @@
-! Copyright (C) 2004, 2005 Slava Pestov.
-! See http://factor.sf.net/license.txt for BSD license.
-IN: test-responder
-USING: html httpd kernel test ;
-
-: test-responder ( argument -- )
- drop
- serving-html
- "Factor Test Suite" [ all-tests ] simple-html-document ;
diff --git a/library/io/directories.factor b/library/io/directories.factor
deleted file mode 100644
index 6e3ad05e66..0000000000
--- a/library/io/directories.factor
+++ /dev/null
@@ -1,24 +0,0 @@
-! Copyright (C) 2004, 2005 Slava Pestov.
-! See http://factor.sf.net/license.txt for BSD license.
-IN: io
-USING: hashtables kernel lists namespaces presentation sequences
-strings styles ;
-
-! Hyperlinked directory listings.
-
-: dir-icon "/library/icons/Folder.png" ;
-: file-icon "/library/icons/File.png" ;
-: file-icon. directory? dir-icon file-icon ? write-icon ;
-
-: file-link. ( dir name -- )
- tuck path+ file swons unit format ;
-
-: file. ( dir name -- )
- #! If "doc-root" set, create links relative to it.
- 2dup path+ file-icon. " " write file-link. terpri ;
-
-: directory. ( dir -- )
- #! If "doc-root" set, create links relative to it.
- dup directory [
- dup [ "." ".." ] member? [ 2drop ] [ file. ] ifte
- ] each-with ;
diff --git a/library/io/files.factor b/library/io/files.factor
index 373e52c0b9..a4d8014d01 100644
--- a/library/io/files.factor
+++ b/library/io/files.factor
@@ -6,10 +6,16 @@ USING: kernel lists namespaces sequences strings ;
! Words for accessing filesystem meta-data.
: path+ ( path path -- path ) "/" swap append3 ;
+
: exists? ( file -- ? ) stat >boolean ;
+
: directory? ( file -- ? ) stat car ;
-: directory ( dir -- list ) (directory) string-sort ;
+
+: directory ( dir -- list )
+ (directory) { "." ".." } swap seq-diff string-sort ;
+
: file-length ( file -- length ) stat third ;
+
: file-extension ( filename -- extension )
"." split cdr dup [ peek ] when ;
diff --git a/library/io/stdio.factor b/library/io/stdio.factor
index 6e4842f12b..3f186edfa6 100644
--- a/library/io/stdio.factor
+++ b/library/io/stdio.factor
@@ -14,10 +14,6 @@ USING: errors generic kernel lists namespaces strings styles ;
: terpri ( -- ) stdio get stream-terpri ;
: close ( -- ) stdio get stream-close ;
-: write-icon ( resource -- )
- #! Write an icon. Eg, /library/icons/File.png
- icon swons unit "" swap format ;
-
: write-object ( string object -- )
presented swons unit format ;
diff --git a/library/styles.factor b/library/styles.factor
index 2b762cd34b..b279008e2e 100644
--- a/library/styles.factor
+++ b/library/styles.factor
@@ -27,7 +27,5 @@ SYMBOL: bold-italic
SYMBOL: underline
-SYMBOL: icon
-
SYMBOL: presented
SYMBOL: file