From c481e81e8acd446da21883d10b980aecf9e331ba Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Fri, 28 Jan 2011 07:20:50 +0000
Subject: [PATCH] #1019834 by bfroehle: Fixed No .info files reported on theme
 upload when zip created with certain programs

---
 modules/update/update.manager.inc | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/modules/update/update.manager.inc b/modules/update/update.manager.inc
index 4f55b1b5b34d..5bb12c4a49c5 100644
--- a/modules/update/update.manager.inc
+++ b/modules/update/update.manager.inc
@@ -644,8 +644,11 @@ function update_manager_install_form_submit($form, &$form_state) {
     form_set_error($field, t('Provided archive contains no files.'));
     return;
   }
-  // Unfortunately, we can only use the directory name for this. :(
-  $project = drupal_substr($files[0], 0, -1);
+
+  // Unfortunately, we can only use the directory name to determine the project
+  // name. Some archivers list the first file as the directory (i.e., MODULE/)
+  // and others list an actual file (i.e., MODULE/README.TXT).
+  $project = strtok($files[0], '/\\');
 
   $archive_errors = update_manager_archive_verify($project, $local_cache, $directory);
   if (!empty($archive_errors)) {
@@ -771,8 +774,12 @@ function update_manager_archive_extract($file, $directory) {
   // old files mixed with the new files (e.g. in cases where files were removed
   // from a later release).
   $files = $archiver->listContents();
-  // Unfortunately, we can only use the directory name for this. :(
-  $project = drupal_substr($files[0], 0, -1);
+
+  // Unfortunately, we can only use the directory name to determine the project
+  // name. Some archivers list the first file as the directory (i.e., MODULE/)
+  // and others list an actual file (i.e., MODULE/README.TXT).
+  $project = strtok($files[0], '/\\');
+
   $extract_location = $directory . '/' . $project;
   if (file_exists($extract_location)) {
     file_unmanaged_delete_recursive($extract_location);
-- 
GitLab