--- pathfilter.module	2008-02-20 05:56:53.000000000 +1000
+++ pathfilter.module	2009-03-09 21:00:00.000000000 +0000
@@ -64,8 +64,15 @@
         // returned, once any necessary substitutions have taken place.
         case 'process':
           $absolute = (variable_get('pathfilter_link_type', 'absolute') == 'absolute' ? 'TRUE' : 'FALSE');
-          return preg_replace('/"internal:([^"#\?]+)\??([^"#]+)?#?([^"]+)?"/e',
-              "'\"'. url('$1', array('query' => '$2' ? '$2' : NULL, 'fragment' => '$3' ? '$3' : NULL, 'absolute' => ". $absolute .")) .'\"'", $text);
+          $patterns = array();
+          $replacement = array();
+          // internal links pattern
+          $patterns[] = '/"internal:([^"#\?]+)\??([^"#]+)?#?([^"]+)?"/e';
+          $replacement[] = "'\"'. url('$1', array('query' => '$2' ? '$2' : NULL, 'fragment' => '$3' ? '$3' : NULL, 'absolute' => ". $absolute .")) .'\"'";
+          // file links pattern
+          $patterns[] = '/"files:([\w\/.-]+)"/e';
+          $replacement[] = "'\"'. url(file_create_url('/$1'), array('absolute' => ". $absolute .")) .'\"'";
+          return preg_replace($patterns, $replacement, $text);
         // Filter settings for pathfilter.
         case 'settings':
           return _pathfilter_settings();