summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2006-12-07 17:02:25 +0000
committerDries Buytaert <dries@buytaert.net>2006-12-07 17:02:25 +0000
commitf28aa5f3ecbd729b53894d7e091db0dab1368ddc (patch)
tree5068b84da3b5fb23fe8f27b19c253040ecd09a14 /includes
parent039453164e790bbebfb577732eb76c72caefb726 (diff)
downloadbrdo-f28aa5f3ecbd729b53894d7e091db0dab1368ddc.tar.gz
brdo-f28aa5f3ecbd729b53894d7e091db0dab1368ddc.tar.bz2
- Patch #92059 by Steven et al: added a memory check to garland/color.module.
Diffstat (limited to 'includes')
-rw-r--r--includes/common.inc21
-rw-r--r--includes/file.inc24
2 files changed, 23 insertions, 22 deletions
diff --git a/includes/common.inc b/includes/common.inc
index 6d4ece2c0..703ca698a 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -960,6 +960,27 @@ function format_plural($count, $singular, $plural) {
}
/**
+ * Parse a given byte count.
+ *
+ * @param $size
+ * The size expressed as a number of bytes with optional SI size and unit
+ * suffix (e.g. 2, 3K, 5MB, 10G).
+ * @return
+ * An integer representation of the size.
+ */
+function parse_size($size) {
+ $suffixes = array(
+ '' => 1,
+ 'k' => 1024,
+ 'm' => 1048576, // 1024 * 1024
+ 'g' => 1073741824, // 1024 * 1024 * 1024
+ );
+ if (preg_match('/([0-9]+)\s*(k|m|g)?(b?(ytes?)?)/i', $size, $match)) {
+ return $match[1] * $suffixes[drupal_strtolower($match[2])];
+ }
+}
+
+/**
* Generate a string representation for the given byte count.
*
* @param $size
diff --git a/includes/file.inc b/includes/file.inc
index 8df67ec65..a6702cac8 100644
--- a/includes/file.inc
+++ b/includes/file.inc
@@ -713,26 +713,6 @@ function file_directory_path() {
}
/**
- * Helper function for file_upload_max_size().
- */
-function _file_convert_to_mb($val){
- $val = trim($val);
- $last = strtolower($val[strlen($val) - 1]);
- switch ($last) {
- // The 'G' modifier is available since PHP 5.1.0
- case 'g':
- $size = $val * 1024;
- break;
- case 'k':
- $size = $val / 1024;
- break;
- default:
- $size = (int) $val;
- }
- return $size;
-}
-
-/**
* Determine the maximum file upload size by querying the PHP settings.
*
* @return
@@ -742,9 +722,9 @@ function file_upload_max_size() {
static $max_size = -1;
if ($max_size < 0) {
- $upload_max = _file_convert_to_mb(ini_get('upload_max_filesize'));
+ $upload_max = parse_size(ini_get('upload_max_filesize'));
// sanity check- a single upload should not be more than 50% the size limit of the total post
- $post_max = _file_convert_to_mb(ini_get('post_max_size')) / 2;
+ $post_max = parse_size(ini_get('post_max_size')) / 2;
$max_size = ($upload_max < $post_max) ? $upload_max : $post_max;
}
return $max_size;