--- filefield.token.inc	2009-10-01 07:40:59.000000000 -0500
+++ allowmulti_filefield.token.inc	2009-10-01 07:39:59.000000000 -0500
@@ -24,6 +24,7 @@ function filefield_token_list($type = 'a
     $tokens['file']['filefield-view']               = t('Fully formatted HTML file tag');
     $tokens['file']['filefield-onlyname']           = t('File name without extension');
     $tokens['file']['filefield-extension']          = t('File extension');
+    $tokens['file']['filefield-NAME-x']             = t('For multiple files, all the token above are available, and specify the 0-based index in question.');
     return $tokens;
   }
 }
@@ -35,31 +36,67 @@ function filefield_token_list($type = 'a
  */
 function filefield_token_values($type, $object = NULL) {
   if ($type == 'field') {
-    $item = $object[0];
-    $tokens['filefield-fid']                = $item['fid'];
-    $tokens['filefield-description']        = isset($item['data']['description']) ? $item['data']['description'] : '';
-    $tokens['filefield-filename']           = $item['filename'];
-    $tokens['filefield-filepath']           = $item['filepath'];
-    $tokens['filefield-filemime']           = $item['filemime'];
-    $tokens['filefield-filesize']           = $item['filesize'];
-    $tokens['filefield-filesize_formatted'] = format_size($item['filesize']);
-    $tokens['filefield-view']               = $item['view'];
-    $double_extensions = array('tar.gz', 'tar.bz2');
-    foreach ($double_extensions as $ext) {
-      $length = strlen($ext) + 1;
-      $filename = drupal_strtolower($item['filename']);
-      $pos = strrpos($filename, '.'. $ext);
-      if ($pos !== FALSE && strlen($filename) - $pos == $length) {
-        $tokens['filefield-onlyname']  = substr($item['filename'], 0, $pos);
-        $tokens['filefield-extension'] = $ext;
-        break;
+    if (count($object) == 0) {
+      $item = $object[0];
+  
+      $tokens['filefield-fid']                = $item['fid'];
+      $tokens['filefield-description']        = isset($item['data']['description']) ? $item['data']['description'] : '';
+      $tokens['filefield-filename']           = $item['filename'];
+      $tokens['filefield-filepath']           = $item['filepath'];
+      $tokens['filefield-filemime']           = $item['filemime'];
+      $tokens['filefield-filesize']           = $item['filesize'];
+      $tokens['filefield-filesize_formatted'] = format_size($item['filesize']);
+      $tokens['filefield-view']               = $item['view'];
+      $double_extensions = array('tar.gz', 'tar.bz2');
+      foreach ($double_extensions as $ext) {
+        $length = strlen($ext) + 1;
+        $filename = drupal_strtolower($item['filename']);
+        $pos = strrpos($filename, '.'. $ext);
+        if ($pos !== FALSE && strlen($filename) - $pos == $length) {
+          $tokens['filefield-onlyname']  = substr($item['filename'], 0, $pos);
+          $tokens['filefield-extension'] = $ext;
+          break;
+        }
+      }
+      if (!isset($tokens['filefield-extension'])) {
+        $info = pathinfo($item['filename']);
+        $tokens['filefield-onlyname'] = $info['filename'];
+        $tokens['filefield-extension'] = $info['extension'];
       }
     }
-    if (!isset($tokens['filefield-extension'])) {
-      $info = pathinfo($item['filename']);
-      $tokens['filefield-onlyname'] = $info['filename'];
-      $tokens['filefield-extension'] = $info['extension'];
+    /** let's generate a token for each item of the index **/
+    if (count($object) > 1) {
+      $index = 0;
+      foreach($object as $item) {
+        $tokens['filefield-fid-'.$index]                = $item['fid'];
+        $tokens['filefield-description-'.$index]        = isset($item['data']['description']) ? $item['data']['description'] : '';
+        $tokens['filefield-filename-'.$index]           = $item['filename'];
+        $tokens['filefield-filepath-'.$index]           = $item['filepath'];
+        $tokens['filefield-filemime-'.$index]           = $item['filemime'];
+        $tokens['filefield-filesize-'.$index]           = $item['filesize'];
+        $tokens['filefield-filesize_formatted-'.$index] = format_size($item['filesize']);
+        $tokens['filefield-view-'.$index]               = $item['view'];
+        $double_extensions = array('tar.gz', 'tar.bz2');
+        foreach ($double_extensions as $ext) {
+          $length = strlen($ext) + 1;
+          $filename = drupal_strtolower($item['filename']);
+          $pos = strrpos($filename, '.'. $ext);
+          if ($pos !== FALSE && strlen($filename) - $pos == $length) {
+            $tokens['filefield-onlyname-'.$index]  = substr($item['filename'], 0, $pos);
+            $tokens['filefield-extension-'.$index] = $ext;
+            break;
+          }
+        }
+        if (!isset($tokens['filefield-extension'])) {
+          $info = pathinfo($item['filename']);
+          $tokens['filefield-onlyname-'.$index] = $info['filename'];
+          $tokens['filefield-extension-'.$index] = $info['extension'];
+        }
+  
+        $index++;
+      }
     }
+    
     return $tokens;  
   }
 }
