? files
Index: database/database.mysql
===================================================================
RCS file: /cvs/drupal/drupal/database/database.mysql,v
retrieving revision 1.199
diff -u -r1.199 database.mysql
--- database/database.mysql	18 Sep 2005 17:08:44 -0000	1.199
+++ database/database.mysql	21 Sep 2005 15:45:32 -0000
@@ -247,6 +247,7 @@
   nid int(10) unsigned NOT NULL default '0',
   vid int(10) unsigned NOT NULL default '0',
   filename varchar(255) NOT NULL default '',
+  filedescription varchar(255) NOT NULL default '',
   filepath varchar(255) NOT NULL default '',
   filemime varchar(255) NOT NULL default '',
   filesize int(10) unsigned NOT NULL default '0',
Index: database/database.pgsql
===================================================================
RCS file: /cvs/drupal/drupal/database/database.pgsql,v
retrieving revision 1.138
diff -u -r1.138 database.pgsql
--- database/database.pgsql	18 Sep 2005 17:08:44 -0000	1.138
+++ database/database.pgsql	21 Sep 2005 15:45:32 -0000
@@ -242,6 +242,7 @@
   fid SERIAL,
   nid integer NOT NULL default '0',
   vid integer NOT NULL default '0',
+  filedescription varchar(255) NOT NULL default '',
   filename varchar(255) NOT NULL default '',
   filepath varchar(255) NOT NULL default '',
   filemime varchar(255) NOT NULL default '',
Index: database/updates.inc
===================================================================
RCS file: /cvs/drupal/drupal/database/updates.inc,v
retrieving revision 1.135
diff -u -r1.135 updates.inc
--- database/updates.inc	18 Sep 2005 17:08:44 -0000	1.135
+++ database/updates.inc	21 Sep 2005 15:45:32 -0000
@@ -67,7 +67,8 @@
   "2005-08-15" => "update_145",
   "2005-08-25" => "update_146",
   "2005-09-07" => "update_147",
-  "2005-09-18" => "update_148"
+  "2005-09-18" => "update_148",
+  "2005-09-18" => "update_149"
 );
 
 function update_110() {
@@ -833,6 +834,22 @@
   return $ret;
 }
 
+function update_149() {
+  $ret = array();
+
+  switch ($GLOBALS['db_type']) {
+    case 'pgsql':
+    case 'mysql':
+    case 'mysqli':
+      $ret[] = update_sql("ALTER TABLE {files} ADD COLUMN filedescription VARCHAR(255) NOT NULL DEFAULT ''");
+      break;
+    default:
+      break;
+  }
+
+  return $ret;
+}
+
 function update_sql($sql) {
   $edit = $_POST["edit"];
   $result = db_query($sql);
Index: modules/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload.module,v
retrieving revision 1.51
diff -u -r1.51 upload.module
--- modules/upload.module	2 Sep 2005 02:11:41 -0000	1.51
+++ modules/upload.module	21 Sep 2005 15:45:32 -0000
@@ -152,6 +152,7 @@
             $node->files[$file->source] = $file;
             $node->files[$key]->list = $node->list[$key];
             $node->files[$key]->remove = $node->remove[$key];
+            $node->files[$key]->filedescription = $node->filedescription[$key];
             if ($file->source) {
               $filesize += $file->filesize;
             }
@@ -244,7 +245,7 @@
         foreach ($node->files as $file) {
           if ($file->list) {
             $rows[] = array(
-              '<a href="'. check_url(($file->fid ? file_create_url($file->filepath) : url(file_create_filename($file->filename, file_create_path())))) .'">'. check_plain($file->filename) .'</a>',
+              '<a href="'. check_url(($file->fid ? file_create_url($file->filepath) : url(file_create_filename($file->filename, file_create_path())))) .'">'. check_plain((!empty($file->filedescription)) ? $file->filedescription : $file->filename) .'</a>',
               format_size($file->filesize)
             );
             // We save the list of files still in preview for later
@@ -342,8 +343,8 @@
       // Insert new files:
       if ($file = file_save_upload($file, $file->filename)) {
         $fid = db_next_id('{files}_fid');
-        db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d)",
-                 $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key]);
+        db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, filedescription) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, '%s')",
+                 $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $file->filedescription);
       }
     }
   }
@@ -360,15 +361,15 @@
   }
   foreach ((array)$node->list as $key => $value) {
     if (!$node->remove[$key]) {
-      db_query('UPDATE {files} SET list = %d WHERE fid = %d AND vid = %d', $node->list[$key], $key, $node->vid);
+      db_query('UPDATE {files} SET list = %d, filedescription = \'%s\' WHERE fid = %d AND vid = %d', $node->list[$key], $node->filedescription[$key], $key, $node->vid);
     }
   }
   if ($node->old_vid) {
     foreach ((array)$node->remove as $key => $remove) {
       if (!$remove) {
         $file = db_fetch_object(db_query('SELECT * FROM {files} WHERE vid = %d AND fid = %d', $node->old_vid, $key));
-        db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d)",
-                 $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list);
+        db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, filedescription) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, '%s')",
+                 $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list, $file->filedescription);
       }
     }
   }
@@ -393,7 +394,7 @@
 }
 
 function _upload_form($node) {
-  $header = array(t('Delete'), t('List'), t('Url'), t('Size'));
+  $header = array(t('Delete'), t('List'), t('Url'), t('Description'), t('Size'));
   $rows = array();
   $output = '';
 
@@ -403,6 +404,7 @@
         form_checkbox('', "remove][$key", 1, $file->remove),
         form_checkbox('', "list][$key", 1, $file->list),
         $file->filename ."<br /><small>". file_create_url(($file->fid ? $file->filepath : file_create_filename($file->filename, file_create_path()))) ."</small>",
+        form_textfield('', "filedescription][$key", (!empty($file->filedescription) ? $file->filedescription : $file->filename), 30, 256),
         format_size($file->filesize)
       );
     }
