diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index 44593cef0af04a6fd2a775c044b57fa94d57d1e9..a8379b3d3385f245d00185466e22a65f683a6679 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -33,6 +33,7 @@ dlenev@build.mysql.com
 dlenev@jabberwock.localdomain
 dlenev@mysql.com
 ejonore@mc03.ndb.mysql.com
+georg@beethoven.local
 gerberb@ou800.zenez.com
 gluh@gluh.(none)
 gluh@gluh.mysql.r18.ru
diff --git a/include/mysql.h b/include/mysql.h
index 537467336f8d4eb05f6933f36d518a23d0fa0070..51540a7d89fc4c8f842b45dc19aebe2d38dc4270 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -188,10 +188,11 @@ struct st_mysql_options {
   my_bool secure_auth;
 
   /* function pointers for local infile support */
-  int (*local_infile_init)(void **, const char *);
+  int (*local_infile_init)(void **, const char *, void *);
   int (*local_infile_read)(void *, char *, unsigned int);
   void (*local_infile_end)(void *);
   int (*local_infile_error)(void *, char *, unsigned int);
+  void *local_infile_userdata;
 };
 
 enum mysql_status 
@@ -397,12 +398,14 @@ my_bool		STDCALL mysql_slave_send_query(MYSQL *mysql, const char *q,
 
 void
 mysql_set_local_infile_handler(MYSQL *mysql,
-                               int (*local_infile_init)(void **, const char *),
+                               int (*local_infile_init)(void **, const char *,
+                            void *),
                                int (*local_infile_read)(void *, char *,
 							unsigned int),
                                void (*local_infile_end)(void *),
                                int (*local_infile_error)(void *, char*,
-							 unsigned int));
+							 unsigned int),
+                               void *);
 
 void
 mysql_set_local_infile_default(MYSQL *mysql);
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 4ecc1bd05841cc8c27834d76a9900defe85b4d84..a467b7fc9fd59a9b16a306ddb193d16f776e5e8e 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -831,7 +831,8 @@ my_bool handle_local_infile(MYSQL *mysql, const char *net_filename)
   }
 
   /* initialize local infile (open file, usually) */
-  if ((*options->local_infile_init)(&li_ptr, net_filename))
+  if ((*options->local_infile_init)(&li_ptr, net_filename,
+    options->local_infile_userdata))
   {
     my_net_write(net,"",0);		/* Server needs one packet */
     net_flush(net);
@@ -915,7 +916,8 @@ typedef struct st_default_local_infile
     1	error
 */
 
-static int default_local_infile_init(void **ptr, const char *filename)
+static int default_local_infile_init(void **ptr, const char *filename,
+             void *userdata __attribute__ ((unused)))
 {
   default_local_infile_data *data;
   char tmp_name[FN_REFLEN];
@@ -1025,15 +1027,18 @@ default_local_infile_error(void *ptr, char *error_msg, uint error_msg_len)
 
 void
 mysql_set_local_infile_handler(MYSQL *mysql,
-                               int (*local_infile_init)(void **, const char *),
+                               int (*local_infile_init)(void **, const char *,
+                               void *),
                                int (*local_infile_read)(void *, char *, uint),
                                void (*local_infile_end)(void *),
-                               int (*local_infile_error)(void *, char *, uint))
+                               int (*local_infile_error)(void *, char *, uint),
+                               void *userdata)
 {
   mysql->options.local_infile_init=  local_infile_init;
   mysql->options.local_infile_read=  local_infile_read;
   mysql->options.local_infile_end=   local_infile_end;
   mysql->options.local_infile_error= local_infile_error;
+  mysql->options.local_infile_userdata = userdata;
 }