Only in drupal/modules/file/: CVS
diff -uP drupal/modules/file/file.admin.inc drupal-7.x-dev/modules/file/file.admin.inc
--- drupal/modules/file/file.admin.inc	1970-01-01 01:00:00.000000000 +0100
+++ drupal-7.x-dev/modules/file/file.admin.inc	2010-02-04 20:03:30.000000000 +0100
@@ -0,0 +1,180 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Admin page callbacks for the file role upload settings.
+ */
+
+function file_role_upload_list() {
+  $header = array(
+    t('Role ID'),
+    t('Role'),
+    t('Upload file extensions'),
+    array('data' => t('Operations'), 'colspan' => 2),
+  );
+  $rows = array();
+
+  $default = array(
+    (object) array('rid' => -1, 'name' => 'user 1', 'extensions' => file_upload_extensions_user_1()),
+    (object) array('rid' => 0, 'name' => 'default', 'extensions' => file_upload_extensions_default()),
+  );
+ 
+  $roles = db_query('SELECT rid, name FROM {role}')->fetchAll();
+  // Stuff defaults in front
+  $roles = array_merge($default, $roles);
+ 
+  foreach ($roles as $role) {
+    if ($role->rid > 0) {
+      // Explicitly tell value is not set
+      $extensions = variable_get("upload_extensions_" . $role->rid, '- ' . t('default') . ' -');
+    }
+    else {
+    	$extensions = $role->extensions;
+    }
+    $rows[] = array(
+      $role->rid,
+      check_plain($role->name),
+      check_plain($extensions),
+      l(t('Edit'), 'admin/config/file_role_upload/edit/' . $role->rid),
+      l(t('Delete'), 'admin/config/file_role_upload/delete/' . $role->rid),
+    );
+  }
+
+  if (!$rows) {
+    $rows[] = array(array(
+      'data' => t('No roles available.'),
+      'colspan' => 5,
+    ));
+  }
+
+  return theme('table', array('header' => $header, 'rows' => $rows));
+}
+
+/**
+ * Category edit page.
+ */
+function file_role_upload_edit_form($form, &$form_state, $rid) {
+  $args=func_get_args();
+
+  $rid = isset($form_state['values']['rid']) ? $form_state['values']['rid'] : $rid;
+  
+  $var_name = _file_role_extensions_var_name($rid);
+  if ($rid==0) {
+    $current = file_upload_extensions_default();
+  }
+  else if ($rid==-1) {
+  	$current = file_upload_extensions_user_1();  	
+  }
+  else {
+    $current = variable_get("upload_extensions_" . $rid, file_upload_extensions_default());
+  }
+ 
+  $form['file_extensions'] = array(
+    '#type' => 'textfield',
+    '#title' => t('File extensions'),
+    '#maxlength' => 255,
+    '#default_value' => $current,
+    '#description' => t("Example: 'jpg jpeg gif png txt html doc xls pdf ppt pps odt ods odp'."),
+    '#required' => TRUE,
+  );
+  $form['rid'] = array(
+    '#type' => 'value',
+    '#value' => $rid,
+  );
+ 
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save'),
+  );
+
+  return $form;
+}
+
+function file_role_upload_edit_form_validate($form, &$form_state) {
+  $exts= explode(' ', $form_state['values']['file_extensions']);
+  foreach ($exts as $ext) {
+    //TODO: how to check?
+  }
+  $form_state['values']['file_extensions'] = implode(' ', $exts);
+}
+
+/**
+ * Process the file role upload extensions edit page form submission.
+ */
+function file_role_upload_edit_form_submit($form, &$form_state) {
+  $rid = $form_state['values']['rid'];
+  $exts = $form_state['values']['file_extensions'];
+ 
+  $var_name = _file_role_extensions_var_name($rid);
+  variable_set( $var_name, $exts);
+
+  drupal_set_message(t('Upload file extensions for %role has been saved.', array('%role' => _file_role_name($rid))));
+
+  $form_state['redirect'] = 'admin/config/file_role_upload/list';
+}
+
+/**
+ * Form builder for deleting a extensions settings.
+ */
+function file_role_upload_delete_form($form, &$form_state, $rid) {
+  $form['file_extensions_rid'] = array(
+    '#type' => 'value',
+    '#value' => $rid,
+  );
+
+  return confirm_form(
+    $form,
+    t('Are you sure you want to delete file extensions for %rid?', array('%rid' => _file_role_name($rid))),
+    'admin/config/file_role_upload/list',
+    t('This action cannot be undone.'),
+    t('Delete'),
+    t('Cancel')
+  );
+}
+
+/**
+ * Submit handler for the file upload extensions form.
+ */
+function file_role_upload_delete_form_submit($form, &$form_state) {
+  $rid = $form['file_extensions_rid']['#value'];
+
+  $var_name = _file_role_extensions_var_name($rid);
+  variable_del($var_name);
+  
+  if ($rid==0) {
+    variable_set($var_name, file_upload_extensions_default());
+  }
+  else if ($rid==-1) {
+    variable_set($var_name, file_upload_extensions_user_1());
+  }
+  
+  drupal_set_message(t('File upload extensions for %role has been deleted.', array('%role' => _file_role_name($rid))));
+  watchdog('file', 'File upload extensions for %role has been deleted.', array('%role' => _file_role_name($rid)), WATCHDOG_NOTICE);
+
+  $form_state['redirect'] = 'admin/config/file_role_upload/list';
+}
+
+function _file_role_name($rid) {
+	if ($rid==0) {
+		return t('Default values');
+	}
+	else if ($rid==-1) {
+		return t('user 1');
+	}
+	$role = db_query('SELECT name FROM {role} WHERE rid=:rid', array(':rid' => $rid))->fetchAssoc();
+	return t($role['name']);
+}
+
+function _file_role_extensions_var_name($rid) {
+	if ($rid > 0) {
+    return "upload_extensions_" .$rid;
+  }
+  else if ($rid==0) {
+    return 'upload_extensions_default';
+  }
+  else if ($rid==-1) {
+    return 'upload_extensions_user_1';
+  }
+}
\ No newline at end of file
diff -uP drupal/modules/file/file.info drupal-7.x-dev/modules/file/file.info
--- drupal/modules/file/file.info	2009-08-29 14:52:32.000000000 +0200
+++ drupal-7.x-dev/modules/file/file.info	2010-02-04 13:04:56.000000000 +0100
@@ -8,3 +8,10 @@
 files[] = file.field.inc
 files[] = file.install
 files[] = tests/file.test
+
+; Information added by drupal.org packaging script on 2010-02-04
+version = "7.x-dev"
+core = "7.x"
+project = "drupal"
+datestamp = "1265285096"
+
diff -uP drupal/modules/file/file.module drupal-7.x-dev/modules/file/file.module
--- drupal/modules/file/file.module	2010-01-28 14:56:25.000000000 +0100
+++ drupal-7.x-dev/modules/file/file.module	2010-02-04 20:01:59.000000000 +0100
@@ -49,10 +49,60 @@
     'access arguments' => array('access content'),
     'type' => MENU_CALLBACK,
   );
+  
+  $items['admin/config/file_role_upload'] = array(
+    'title' => 'File upload settings',
+    'description' => 'Set the extension per role.',
+    'access arguments' => array('administer site'),
+    'file' => 'file.admin.inc',
+  );
+
+  $items['admin/config/file_role_upload/list'] = array(
+    'title' => 'File upload extensions',
+    'description' => 'Set the extension per role.',
+    'page callback' => 'file_role_upload_list',
+    'access arguments' => array('administer site'),
+    'file' => 'file.admin.inc',
+  );
+  $items['admin/config/file_role_upload/edit/%'] = array(
+    'title' => 'Edit role upload settings',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('file_role_upload_edit_form', 4),
+    'type' => MENU_CALLBACK,
+    'access arguments' => array('administer site'),
+    'file' => 'file.admin.inc',
+  );
+  $items['admin/config/file_role_upload/delete/%'] = array(
+    'title' => 'Delete role upload settings',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('file_role_upload_delete_form', 4),
+    'type' => MENU_CALLBACK,
+    'access arguments' => array('administer site'),
+    'file' => 'file.admin.inc',
+  );
 
   return $items;
 }
 
+function file_upload_extensions_default() {
+  return variable_get('upload_extensions_default', 'jpg jpeg gif png txt html doc xls pdf ppt pps odt ods odp'); 
+}
+
+function file_upload_extensions_user_1() {
+  return variable_get('upload_extensions_user_1', 'zip tgz tar gz bz2'); 
+}
+
+function file_upload_allowed_extensions($account) {
+	$extensions = '';
+  foreach ($account->roles as $rid => $name) {
+    $extensions .= ' ' . variable_get("upload_extensions_$rid", file_upload_extensions_default());
+  }
+  if ($account->uid==1) {
+  	$extensions .= ' ' . file_upload_extensions_user_1();
+  }
+  return $extensions;
+}
+
 /**
  * Implements hook_element_info().
  *
Common subdirectories: drupal/modules/file/icons and drupal-7.x-dev/modules/file/icons
Common subdirectories: drupal/modules/file/tests and drupal-7.x-dev/modules/file/tests
