Index: geshifilter.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/geshifilter/geshifilter.admin.inc,v
retrieving revision 1.25.4.1
diff -u -p -r1.25.4.1 geshifilter.admin.inc
--- geshifilter.admin.inc	8 Jan 2011 23:23:28 -0000	1.25.4.1
+++ geshifilter.admin.inc	11 Jan 2011 22:17:55 -0000
@@ -583,7 +583,7 @@ function _geshifilter_generate_languages
     // Build stylesheet.
     $stylesheet = _geshifilter_generate_languages_css_rules();
     // Save stylesheet.
-    $stylesheet_filename = file_directory_path() .'/geshifilter-languages.css';
+    $stylesheet_filename = _geshifilter_language_css_path();;
     $ret = file_save_data($stylesheet, $stylesheet_filename, FILE_EXISTS_REPLACE);
     if ($ret) {
       drupal_set_message(t('(Re)generated external CSS style sheet %file.', array('%file' => $ret)));
Index: geshifilter.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/geshifilter/geshifilter.module,v
retrieving revision 1.49.4.1
diff -u -p -r1.49.4.1 geshifilter.module
--- geshifilter.module	8 Jan 2011 23:23:28 -0000	1.49.4.1
+++ geshifilter.module	11 Jan 2011 22:17:55 -0000
@@ -152,7 +152,7 @@ function geshifilter_init() {
   // Since the filtered content is cached, it is not possible to know on which
   // pages the css file is actually needed. Thus it is included on all pages.
   if (variable_get('geshifilter_css_mode', GESHIFILTER_CSS_INLINE) == GESHIFILTER_CSS_CLASSES_AUTOMATIC) {
-    drupal_add_css(file_directory_path() .'/geshifilter-languages.css');
+    drupal_add_css(_geshifilter_language_css_path());
   }
   drupal_add_css(drupal_get_path('module', 'geshifilter') .'/geshifilter.css');
 }
@@ -280,8 +280,8 @@ function geshifilter_requirements($phase
  * @return boolean indicating if an automatically managed style sheet is possible
  */
 function _geshifilter_managed_external_stylesheet_possible() {
-  $directory = file_directory_path();
-  return is_dir($directory) && is_writable($directory) && (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) == FILE_DOWNLOADS_PUBLIC);
+  $directory = _geshifilter_language_css_path(TRUE);
+  return file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
 }
 
 /**
@@ -294,3 +294,9 @@ function geshifilter_generate_language_c
   print($output);
   exit();
 }
+
+
+function _geshifilter_language_css_path($dironly = FALSE) {
+  $directory = file_default_scheme() . '://geshi';
+  return $dironly ? $directory : $directory .'/geshifilter-languages.css';
+}
