Index: user_import.module
===================================================================
--- user_import.module	(revision 3045)
+++ user_import.module	(working copy)
@@ -280,6 +280,21 @@
         );
         
     } 
+    
+    $form['file_settings'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('File Settings'),
+        '#collapsible' => TRUE,
+        '#description' => t("File column delimiter"),
+    );
+
+    $form['file_settings']['delimiter'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Delimiter'),
+        '#size' => 4,
+        '#default_value' => ',',
+        '#description' => t('The column delimiter for the file. Use t for tab. '),
+    );
  
     $form['next'] = array(
         '#type' => 'submit', 
@@ -945,9 +960,13 @@
 }
 
 // get first row of file
-function _user_import_file_row($filename, $handle) {
+function _user_import_file_row($filename, $handle, $delim) {
+  
+    // Handle folks who may list 'tab' as 't' or 'tab'
+    $delim = strtolower($delim) == 't' ? "\t" : $delim;
+    $delim = strtolower($delim) == 'tab' ? "\t" : $delim;
     
-    $data_row = @fgetcsv ($handle, 1000000, ",");
+    $data_row = @fgetcsv ($handle, 1000000, $delim);
     if (!$data_row) {
         form_set_error('file', t("Could not get data, the file '%filename' is either empty or has incompatible line endings.", array('%filename' => $filename)), 'error');
     }
@@ -987,6 +1006,11 @@
         '#value' => $import['filepath'],
     );
     
+    $form['delimiter'] = array(
+        '#type' => 'value',
+        '#value' => $import['delimiter'],
+    );
+    
     return;
 }
 
@@ -994,7 +1018,7 @@
 
   $collapsed = (empty($import['name'])) ? FALSE: TRUE;
   $handle = _user_import_file_open($form['filepath']['#value'], $form['filename']['#value']);
-  $data_row = _user_import_file_row($form['filename']['#value'], $handle);
+  $data_row = _user_import_file_row($form['filename']['#value'], $handle, $import['delimiter']);
   
   $fieldmatch_description = t("Match columns in CSV file to profile fields, leave as '----' if there is no match.");
   $fieldmatch_description .= '<br /><strong>' . t('Username') . ': </strong>' . t("The Username will be built from CSV columns in the order selected.");
@@ -1211,18 +1235,18 @@
     if ($settings['import_id']) {
     
         db_query("UPDATE {user_import} 
-            SET name = '%s', filename = '%s', oldfilename = '%s', filepath = '%s', pointer = %d, processed = %d, valid= %d, first_line_skip = %d, contact = %d, username_space = %d, send_email = %d, field_match = '%s', roles = '%s', options = '%s', setting = '%s' 
+            SET name = '%s', filename = '%s', oldfilename = '%s', filepath = '%s', delimiter = '%s', pointer = %d, processed = %d, valid= %d, first_line_skip = %d, contact = %d, username_space = %d, send_email = %d, field_match = '%s', roles = '%s', options = '%s', setting = '%s' 
             WHERE import_id = %d
-            ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting'], $settings['import_id']);
+            ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], $settings['delimiter'], $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting'], $settings['import_id']);
         
         // Save settings for new import
     } 
     else {
     
         db_query("INSERT INTO {user_import} 
-            (name, filename, oldfilename, filepath, started, pointer, processed, valid, first_line_skip, contact, username_space, send_email, field_match, roles, options, setting) 
-            VALUES ('%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s')
-            ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], time(), $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting']);
+            (name, filename, oldfilename, filepath, delimiter, started, pointer, processed, valid, first_line_skip, contact, username_space, send_email, field_match, roles, options, setting) 
+            VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s')
+            ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], $settings['delimiter'], time(), $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting']);
 
         switch ($GLOBALS['db_type']) {
           case 'mysql':
@@ -1343,6 +1367,8 @@
 function _user_import_process($settings) {  
 
     user_import_load_supported();
+    $delim = strtolower($settings['delimiter']) == 't' ? "\t" : $settings['delimiter'];
+    $delim = strtolower($settings['delimiter']) == 'tab' ? "\t" : $settings['delimiter'];
     $line_max = variable_get('user_import_line_max', 1000);
     $import_max = variable_get('user_import_max', 250);
     $field_match = _user_import_unconcatenate_field_match($settings['field_match']);
@@ -1358,7 +1384,7 @@
     // start count of imports on this cron run
     $send_counter = 0;
     
-    while ($data = fgetcsv($handle, $line_max, ',')) {
+    while ($data = fgetcsv($handle, $line_max, $delim)) {
     
         $errors = user_import_errors(FALSE, TRUE);
 
