diff --git a/ChangeLog b/ChangeLog
index 40484d6..3217304 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Jan  3 13:57:21 PST 2005 Aleksey Sanin <aleksey@aleksey.com>
+
+	* Added GetLineNumber and GetColumnNumber functions for xmlReader
+
 Sun Jan  2 17:51:18 HKT 2005 William Brack <wbrack@mmm.com.hk>
 
 	Re-examined the problems of configuring a "minimal" library.
diff --git a/include/libxml/xmlreader.h b/include/libxml/xmlreader.h
index 6d00594..6c4c447 100644
--- a/include/libxml/xmlreader.h
+++ b/include/libxml/xmlreader.h
@@ -243,6 +243,13 @@
 						 int prop);
 XMLPUBFUN xmlNodePtr XMLCALL	
 		    xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
+
+XMLPUBFUN int XMLCALL
+            xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
+
+XMLPUBFUN int XMLCALL
+            xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
+
 XMLPUBFUN xmlNodePtr XMLCALL	
 		    xmlTextReaderPreserve	(xmlTextReaderPtr reader);
 #ifdef LIBXML_PATTERN_ENABLED
diff --git a/xmlreader.c b/xmlreader.c
index 20aee7e..0f0e0e0 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -3570,6 +3570,40 @@
 }
 
 /**
+ * xmlTextReaderGetParserLineNumber:
+ * @ctx: the user data (XML reader context)
+ *
+ * Provide the line number of the current parsing point.
+ *
+ * Returns an int
+ */
+int
+xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader)
+{
+    if ((reader == NULL) || (reader->ctxt == NULL) || (reader->ctxt->input == NULL)) {
+        return(0);
+    }
+    return(reader->ctxt->input->line);
+}
+
+/**
+ * xmlTextReaderGetParserColumnNumber:
+ * @ctx: the user data (XML reader context)
+ *
+ * Provide the column number of the current parsing point.
+ *
+ * Returns an int
+ */
+int
+xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader)
+{
+    if ((reader == NULL) || (reader->ctxt == NULL) || (reader->ctxt->input == NULL)) {
+        return(0);
+    }
+    return(reader->ctxt->input->col);
+}
+
+/**
  * xmlTextReaderCurrentNode:
  * @reader:  the xmlTextReaderPtr used
  *
