--- a/src/internfile/internfile.h
+++ b/src/internfile/internfile.h
@@ -1,14 +1,31 @@
 #ifndef _INTERNFILE_H_INCLUDED_
 #define _INTERNFILE_H_INCLUDED_
-/* @(#$Id: internfile.h,v 1.2 2005-02-09 12:07:29 dockes Exp $  (C) 2004 J.F.Dockes */
+/* @(#$Id: internfile.h,v 1.3 2005-03-25 09:40:27 dockes Exp $  (C) 2004 J.F.Dockes */
 
 #include <string>
 
 #include "rclconfig.h"
 #include "rcldb.h"
 
+class MimeHandler;
+
 /// Turn external file into internal representation, according to mime type etc
-extern bool internfile(const std::string &fn, RclConfig *config, 
-		       Rcl::Doc& doc, const string& tdir);
+class FileInterner {
+    string fn;
+    RclConfig *config;
+    const string &tdir;
+    MimeHandler *handler;
+    string tfile;
+    string mime;
+
+    void tmpcleanup();
+
+ public:
+    FileInterner(const std::string &f, RclConfig *cnf, const string& td);
+    ~FileInterner();
+
+    enum Status {FIError, FIDone, FIAgain};
+    Status internfile(Rcl::Doc& doc, string &ipath);
+};
 
 #endif /* _INTERNFILE_H_INCLUDED_ */