00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __kio_man_h__
00021 #define __kio_man_h__
00022
00023
00024 #include <tqstring.h>
00025 #include <tqcstring.h>
00026 #include <tqstringlist.h>
00027 #include <tqdict.h>
00028 #include <tqbuffer.h>
00029
00030
00031 #include <kio/global.h>
00032 #include <kio/slavebase.h>
00033
00034
00035 class MANProtocol : public TQObject, public KIO::SlaveBase
00036 {
00037 Q_OBJECT
00038
00039 public:
00040
00041 MANProtocol(const TQCString &pool_socket, const TQCString &app_socket);
00042 virtual ~MANProtocol();
00043
00044 virtual void get(const KURL& url);
00045 virtual void stat(const KURL& url);
00046
00047 virtual void mimetype(const KURL &url);
00048 virtual void listDir(const KURL &url);
00049
00050 void outputError(const TQString& errmsg);
00051 void outputMatchingPages(const TQStringList &matchingPages);
00052
00053 void showMainIndex();
00054 void showIndex(const TQString& section);
00055
00056
00057 void output(const char *insert);
00058 char *readManPage(const char *filename);
00059
00060 static MANProtocol *self();
00061
00062 private slots:
00063 void slotGetStdOutput(KProcess*, char*, int);
00064 void slotGetStdOutputUtf8(KProcess*, char*, int);
00065
00066 private:
00067 void checkManPaths();
00068 TQStringList manDirectories();
00069 TQMap<TQString, TQString> buildIndexMap(const TQString& section);
00070 bool addWhatIs(TQMap<TQString, TQString>& i, const TQString& f, const TQString& mark);
00071 void parseWhatIs( TQMap<TQString, TQString> &i, TQTextStream &t, const TQString &mark );
00072 TQStringList findPages(const TQString& section,
00073 const TQString &title,
00074 bool full_path = true);
00075
00076 void addToBuffer(const char *buffer, int buflen);
00077 TQString pageName(const TQString& page) const;
00078 TQStringList buildSectionList(const TQStringList& dirs) const;
00079 void constructPath(TQStringList& constr_path, TQStringList constr_catmanpath);
00080 private:
00081 static MANProtocol *_self;
00082 TQCString lastdir;
00083
00084 void findManPagesInSection(const TQString &dir, const TQString &title, bool full_path, TQStringList &list);
00085 TQStringList m_manpath;
00086 TQStringList m_mandbpath;
00087 TQStringList section_names;
00088
00089 TQString myStdStream;
00090 TQString mySgml2RoffPath;
00091 void getProgramPath();
00092
00093 TQCString m_htmlPath;
00094 TQCString m_cssPath;
00095 TQBuffer m_outputBuffer;
00096 TQString m_manCSSFile;
00097 };
00098
00099
00100 #endif