Index: modules/update/update.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.api.php,v
retrieving revision 1.1
diff -u -p -r1.1 update.api.php
--- modules/update/update.api.php	25 Nov 2008 02:37:33 -0000	1.1
+++ modules/update/update.api.php	27 Apr 2009 01:46:23 -0000
@@ -12,6 +12,18 @@
  */
 
 /**
+ * Alter the list of projects before fetching data and comparing versions.
+ *
+ * @param $projects
+ *   Reference to an array of the projects installed on the system.
+ *
+ * @see update_get_projects()
+ */
+function hook_update_projects_alter(&$projects) {
+  _update_process_info_list($projects, my_custom_module_list(), 'module');
+}
+
+/**
  * Alter the information about available updates for projects.
  *
  * @param $projects
Index: modules/update/update.compare.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.compare.inc,v
retrieving revision 1.16
diff -u -p -r1.16 update.compare.inc
--- modules/update/update.compare.inc	22 Feb 2009 17:55:30 -0000	1.16
+++ modules/update/update.compare.inc	27 Apr 2009 01:46:24 -0000
@@ -29,6 +29,8 @@ function update_get_projects() {
       // Still empty, so we have to rebuild the cache.
       _update_process_info_list($projects, module_rebuild_cache(), 'module');
       _update_process_info_list($projects, system_theme_data(), 'theme');
+      // Allow other modules to alter projects before fetching and comparing.
+      drupal_alter('update_projects', $projects);
       // Set the projects array into the cache table.
       cache_set('update_project_projects', $projects, 'cache_update', REQUEST_TIME + 3600);
     }
