diff --git a/Doc/lib/libfileinput.tex b/Doc/lib/libfileinput.tex
index cd20f99..b6186dc 100644
--- a/Doc/lib/libfileinput.tex
+++ b/Doc/lib/libfileinput.tex
@@ -62,6 +62,12 @@
   line has been read, returns \code{None}.
 \end{funcdesc}
 
+\begin{funcdesc}{fileno}{}
+  Return the integer ``file descriptor'' for the current file. When no
+  file is opened (before the first line and between files), returns
+  \code{-1}.
+\end{funcdesc}
+
 \begin{funcdesc}{lineno}{}
   Return the cumulative line number of the line that has just been
   read.  Before the first line has been read, returns \code{0}.  After
@@ -107,10 +113,11 @@
 \begin{classdesc}{FileInput}{\optional{files\optional{,
                              inplace\optional{, backup}}}}
   Class \class{FileInput} is the implementation; its methods
-  \method{filename()}, \method{lineno()}, \method{fileline()},
-  \method{isfirstline()}, \method{isstdin()}, \method{nextfile()} and
-  \method{close()} correspond to the functions of the same name in the
-  module.  In addition it has a \method{readline()} method which
+  \method{filename()}, \method{fileno()}, \method{lineno()},
+  \method{fileline()}, \method{isfirstline()}, \method{isstdin()},
+  \method{nextfile()} and \method{close()} correspond to the functions
+  of the same name in the module.
+  In addition it has a \method{readline()} method which
   returns the next input line, and a \method{__getitem__()} method
   which implements the sequence behavior.  The sequence must be
   accessed in strictly sequential order; random access and
diff --git a/Lib/fileinput.py b/Lib/fileinput.py
index 5c06627..692eeea 100644
--- a/Lib/fileinput.py
+++ b/Lib/fileinput.py
@@ -73,7 +73,6 @@
 
 - optional getopt argument processing
 - specify open mode ('r' or 'rb')
-- fileno()
 - isatty()
 - read(), read(size), even readlines()
 
@@ -153,6 +152,15 @@
         raise RuntimeError, "no active input()"
     return _state.filelineno()
 
+def fileno():
+    """
+    Return the file number of the current file. When no file is currently
+    opened, returns -1.
+    """
+    if not _state:
+        raise RuntimeError, "no active input()"
+    return _state.fileno()
+
 def isfirstline():
     """
     Returns true the line just read is the first line of its file,
@@ -175,8 +183,9 @@
     """class FileInput([files[, inplace[, backup]]])
 
     Class FileInput is the implementation of the module; its methods
-    filename(), lineno(), fileline(), isfirstline(), isstdin(), nextfile()
-    and close() correspond to the functions of the same name in the module.
+    filename(), lineno(), fileline(), isfirstline(), isstdin(), fileno(),
+    nextfile() and close() correspond to the functions of the same name
+    in the module.
     In addition it has a readline() method which returns the next
     input line, and a __getitem__() method which implements the
     sequence behavior. The sequence must be accessed in strictly
@@ -334,6 +343,15 @@
     def filelineno(self):
         return self._filelineno
 
+    def fileno(self):
+        if self._file:
+            try:
+                return self._file.fileno()
+            except ValueError:
+                return -1
+        else:
+            return -1
+
     def isfirstline(self):
         return self._filelineno == 1
 
diff --git a/Lib/test/test_fileinput.py b/Lib/test/test_fileinput.py
index 285573c..be4cb8e 100644
--- a/Lib/test/test_fileinput.py
+++ b/Lib/test/test_fileinput.py
@@ -167,3 +167,19 @@
     verify(lines == ["A\n", "B"])
 finally:
     remove_tempfiles(t1)
+
+if verbose:
+    print "16. fileno()"
+try:
+    t1 = writeTmp(1, ["A\nB"])
+    t2 = writeTmp(2, ["C\nD"])
+    fi = FileInput(files=(t1, t2))
+    verify(fi.fileno() == -1)
+    line = fi.next()
+    verify(fi.fileno() != -1)
+    fi.nextfile()
+    verify(fi.fileno() == -1)
+    line = list(fi)
+    verify(fi.fileno() == -1)
+finally:
+    remove_tempfiles(t1, t2)
diff --git a/Misc/NEWS b/Misc/NEWS
index 95d13ba..2ef3424 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -366,6 +366,9 @@
 Library
 -------
 
+- Patch #1215184: fileinput now has a fileno() function for getting the
+  current file number.
+
 - Patch #1349274: gettext.install() now optionally installs additional
   translation functions other than _() in the builtin namespace.
 
