diff --git a/src/ChangeLog b/src/ChangeLog
index bc2d7573..9b5aa8a5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+	* getopt.c: Add definitions of getopt_long and getopt_long_only.
+
 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
 
 	* config.h.in: Renamed DEBUG to ENABLE_DEBUG.  ENABLE_DEBUG is, I
diff --git a/src/getopt.c b/src/getopt.c
index d176d3e7..46cc07cc 100644
--- a/src/getopt.c
+++ b/src/getopt.c
@@ -974,6 +974,33 @@ getopt (argc, argv, optstring)
 			   0);
 }
 
+int
+getopt_long (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
+}
+
 #endif	/* Not ELIDE_CODE.  */
 
 #ifdef TEST