Merge branch 'master' of http://scm.trinitydesktop.org/scm/git/tdelibs
commit
70341737e1
@ -0,0 +1,17 @@
|
||||
#################################################
|
||||
#
|
||||
# (C) 2012 Timothy Pearson
|
||||
# kb9vqf (AT) pearsoncomputing.net
|
||||
#
|
||||
# Improvements and feedback are welcome
|
||||
#
|
||||
# This file is released under GPL >= 2
|
||||
#
|
||||
#################################################
|
||||
|
||||
|
||||
##### other data ################################
|
||||
|
||||
install( FILES
|
||||
pnp.ids
|
||||
DESTINATION ${DATA_INSTALL_DIR}/tdehwlib/pnpdev )
|
@ -0,0 +1,156 @@
|
||||
# The information provided in this PNP ID to friendly name mapping table was obtained from
|
||||
# multiple public sources, as well as this authoritative publicly accessible file:
|
||||
# ftp://ftpmicrosoftcom/developr/drg/plug-and-play/devidstxt
|
||||
#
|
||||
# This file is provided soley in the interest of cross platform compatibility
|
||||
# It only contains information on certain generic core system devices that cannot be looked up via another method
|
||||
# All marks are the property of their owners
|
||||
#
|
||||
# A typical PNP ID takes the form of PNPxxxx:yy
|
||||
#
|
||||
# Some additional information that may be useful for applications parsing PNP device ID strings:
|
||||
# PNP0xxx System devices
|
||||
# PNP8xxx Network adapters
|
||||
# PNPAxxx SCSI, proprietary CD adapters
|
||||
# PNPBxxx Sound, video capture, multimedia
|
||||
# PNPCxxx - PNPDxxx Modems
|
||||
#
|
||||
# The two digit code yy appears to be a PCI device type code followed by a subtype code and should be parsed as such
|
||||
|
||||
PNP0802 Microsoft® Sound System-compatible device
|
||||
|
||||
PNP0000 AT Interrupt Controller
|
||||
PNP0001 EISA Interrupt Controller
|
||||
PNP0002 MCA Interrupt Controller
|
||||
PNP0003 APIC
|
||||
PNP0004 Cyrix SLiC MP Interrupt Controller
|
||||
|
||||
PNP0100 AT Timer
|
||||
PNP0101 EISA Timer
|
||||
PNP0102 MCA Timer
|
||||
PNP0103 High Precision Event Timer
|
||||
|
||||
PNP0200 AT DMA Controller
|
||||
PNP0201 EISA DMA Controller
|
||||
PNP0202 MCA DMA Controller
|
||||
|
||||
PNP0300 IBM PC/XT keyboard controller (83-key)
|
||||
PNP0301 IBM PC/AT keyboard controller (86-key)
|
||||
PNP0302 IBM PC/XT keyboard controller (84-key)
|
||||
PNP0303 IBM Enhanced (101/102-key, PS/2 mouse support)
|
||||
PNP0304 Olivetti Keyboard (83-key)
|
||||
PNP0305 Olivetti Keyboard (102-key)
|
||||
PNP0306 Olivetti Keyboard (86-key)
|
||||
PNP0307 Microsoft® Windows(R) Keyboard
|
||||
PNP0308 General Input Device Emulation Interface (GIDEI) legacy
|
||||
PNP0309 Olivetti Keyboard (A101/102 key)
|
||||
PNP030A AT&T 302 keyboard
|
||||
PNP030B Reserved by Microsoft®
|
||||
PNP0320 Japanese 106-key keyboard A01
|
||||
PNP0321 Japanese 101-key keyboard
|
||||
PNP0322 Japanese AX keyboard
|
||||
PNP0323 Japanese 106-key keyboard 002/003
|
||||
PNP0324 Japanese 106-key keyboard 001
|
||||
PNP0325 Japanese Toshiba Desktop keyboard
|
||||
PNP0326 Japanese Toshiba Laptop keyboard
|
||||
PNP0327 Japanese Toshiba Notebook keyboard
|
||||
PNP0340 Korean 84-key keyboard
|
||||
PNP0341 Korean 86-key keyboard
|
||||
PNP0342 Korean Enhanced keyboard
|
||||
PNP0343 Korean Enhanced keyboard 101b
|
||||
PNP0343 Korean Enhanced keyboard 101c
|
||||
PNP0344 Korean Enhanced keyboard 103
|
||||
|
||||
PNP0400 Standard LPT Printer Port
|
||||
PNP0401 ECP Printer Port
|
||||
|
||||
PNP0500 Standard PC Serial Port
|
||||
PNP0501 16550A-compatible Serial Port
|
||||
PNP0502 Multiport Serial Device (non-intelligent 16550)
|
||||
PNP0510 Generic IRDA-compatible Device
|
||||
PNP0511 Generic IRDA-compatible Device
|
||||
|
||||
PNP0600 Generic ESDI/IDE/ATA Compatible Hard Disk Controller
|
||||
PNP0603 Generic IDE supporting Microsoft® Device Bay Specification
|
||||
PNP0700 PC Standard Floppy Disk Controller
|
||||
PNP0701 Microsoft® Device Bay Compatible Floppy Controller
|
||||
|
||||
PNP0802 Microsoft® Sound System compatible device
|
||||
|
||||
PNP0900 VGA Compatible Display Controller
|
||||
PNP09FF Plug and Play Monitor (VESA DDC)
|
||||
|
||||
PNP0A00 ISA Root Bus
|
||||
PNP0A01 EISA Root Bus
|
||||
PNP0A02 MCA Root Bus
|
||||
PNP0A03 PCI Root Bus
|
||||
PNP0A04 VESA/VL Bus
|
||||
PNP0A05 Generic ACPI Root Bus
|
||||
PNP0A06 Generic ACPI Extended-IO Root Bus (EIO Root Bus)
|
||||
PNP0A08 PCI Express Root Bus
|
||||
|
||||
PNP0800 AT-style Speaker
|
||||
PNP0B00 AT Real-Time Clock
|
||||
PNP0C00 Plug and Play BIOS
|
||||
PNP0C01 System Board
|
||||
PNP0C02 Plug and Play Motherboard Register Resource
|
||||
PNP0C03 Plug and Play BIOS Event Notification Interrupt
|
||||
PNP0C04 Math Coprocessor
|
||||
PNP0C05 APM BIOS
|
||||
PNP0C06 Early Plug and Play BIOS
|
||||
PNP0C07 Early Plug and Play BIOS
|
||||
PNP0C08 ACPI System Board
|
||||
PNP0C09 ACPI Embedded Controller
|
||||
PNP0C0A ACPI Control Method Battery
|
||||
PNP0C0B ACPI Fan
|
||||
PNP0C0C ACPI Power Button
|
||||
PNP0C0D ACPI Lid Switch
|
||||
PNP0C0E ACPI Sleep Button
|
||||
PNP0C0F PCI Interrupt Link
|
||||
PNP0C10 ACPI System Indicator
|
||||
PNP0C11 ACPI Thermal Zone
|
||||
PNP0C12 Device Bay Controller
|
||||
PNP0C13 Plug and Play BIOS
|
||||
|
||||
PNP0E00 Intel 82365-Compatible PCMCIA Controller
|
||||
PNP0E01 Cirrus Logic CL-PD6720 PCMCIA Controller
|
||||
PNP0E02 VLSI VL82C146 PCMCIA Controller
|
||||
PNP0E03 Intel 82365-compatible CardBus controller
|
||||
|
||||
PNP0F00 Microsoft® Bus Mouse
|
||||
PNP0F01 Microsoft® Serial Mouse
|
||||
PNP0F02 Microsoft® InPort Mouse
|
||||
PNP0F03 Microsoft® PS/2-style Mouse
|
||||
PNP0F04 Mouse Systems Mouse
|
||||
PNP0F05 Mouse Systems 3-Button Mouse
|
||||
PNP0F06 Genius Mouse
|
||||
PNP0F07 Genius Mouse
|
||||
PNP0F08 Logitech Serial Mouse
|
||||
PNP0F09 Microsoft® BallPoint Serial Mouse
|
||||
PNP0F0A Microsoft® Plug and Play Mouse
|
||||
PNP0F0B Microsoft® Plug and Play BallPoint Mouse
|
||||
PNP0F0C Microsoft®-compatible Serial Mouse
|
||||
PNP0F0D Microsoft®-compatible InPort-compatible Mouse
|
||||
PNP0F0E Microsoft®-compatible PS/2-style Mouse
|
||||
PNP0F0F Microsoft®-compatible Serial BallPoint-compatible Mouse
|
||||
PNP0F10 Texas Instruments QuickPort Mouse
|
||||
PNP0F11 Microsoft®-compatible Bus Mouse
|
||||
PNP0F12 Logitech PS/2-style Mouse
|
||||
PNP0F13 PS/2 Port for PS/2-style Mice
|
||||
PNP0F14 Microsoft® Kids Mouse
|
||||
PNP0F15 Logitech bus mouse
|
||||
PNP0F16 Logitech SWIFT device
|
||||
PNP0F17 Logitech-compatible serial mouse
|
||||
PNP0F18 Logitech-compatible bus mouse
|
||||
PNP0F19 Logitech-compatible PS/2-style Mouse
|
||||
PNP0F1A Logitech-compatible SWIFT Device
|
||||
PNP0F1B HP Omnibook Mouse
|
||||
PNP0F1C Compaq LTE Trackball PS/2-style Mouse
|
||||
PNP0F1D Compaq LTE Trackball Serial Mouse
|
||||
PNP0F1E Microsoft® Kids Trackball Mouse
|
||||
PNP0F1F Reserved by Microsoft® Input Device Group
|
||||
PNP0F20 Reserved by Microsoft® Input Device Group
|
||||
PNP0F21 Reserved by Microsoft® Input Device Group
|
||||
PNP0F22 Reserved by Microsoft® Input Device Group
|
||||
PNP0F23 Reserved by Microsoft® Input Device Group
|
||||
PNP0FFF Reserved by Microsoft® Systems
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,293 @@
|
||||
/* This file is part of the KDE libraries
|
||||
Copyright (C) 1998 Sven Radej <sven@lisa.exp.univie.ac.at>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License version 2 as published by the Free Software Foundation.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
#ifndef _KSIMPLEDIRWATCH_H
|
||||
#define _KSIMPLEDIRWATCH_H
|
||||
|
||||
#include <tqtimer.h>
|
||||
#include <tqdatetime.h>
|
||||
#include <tqmap.h>
|
||||
|
||||
#include <tdelibs_export.h>
|
||||
|
||||
#define kdirwatch KSimpleDirWatch::self()
|
||||
|
||||
class KSimpleDirWatchPrivate;
|
||||
|
||||
/**
|
||||
* KSimpleDirWatch is a basic copy of KDirWatch
|
||||
* but with the KIO linking requirement removed
|
||||
*
|
||||
* Watch directories and files for changes.
|
||||
* The watched directories or files don't have to exist yet.
|
||||
*
|
||||
* When a watched directory is changed, i.e. when files therein are
|
||||
* created or deleted, KSimpleDirWatch will emit the signal dirty().
|
||||
*
|
||||
* When a watched, but previously not existing directory gets created,
|
||||
* KSimpleDirWatch will emit the signal created().
|
||||
*
|
||||
* When a watched directory gets deleted, KSimpleDirWatch will emit the
|
||||
* signal deleted(). The directory is still watched for new
|
||||
* creation.
|
||||
*
|
||||
* When a watched file is changed, i.e. attributes changed or written
|
||||
* to, KSimpleDirWatch will emit the signal dirty().
|
||||
*
|
||||
* Scanning of particular directories or files can be stopped temporarily
|
||||
* and restarted. The whole class can be stopped and restarted.
|
||||
* Directories and files can be added/removed from the list in any state.
|
||||
*
|
||||
* The implementation uses the FAM service when available;
|
||||
* if FAM is not available, the DNOTIFY functionality is used on LINUX.
|
||||
* As a last resort, a regular polling for change of modification times
|
||||
* is done; the polling interval is a global config option:
|
||||
* DirWatch/PollInterval and DirWatch/NFSPollInterval for NFS mounted
|
||||
* directories.
|
||||
*
|
||||
* @see self()
|
||||
* @short Class for watching directory and file changes.
|
||||
* @author Sven Radej <sven@lisa.exp.univie.ac.at>
|
||||
*/
|
||||
class KIO_EXPORT KSimpleDirWatch : public TQObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* Scanning begins immediately when a dir/file watch
|
||||
* is added.
|
||||
* @param parent the parent of the TQObject (or 0 for parent-less KDataTools)
|
||||
* @param name the name of the TQObject, can be 0
|
||||
*/
|
||||
KSimpleDirWatch (TQObject* parent = 0, const char* name = 0);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* Stops scanning and cleans up.
|
||||
*/
|
||||
~KSimpleDirWatch();
|
||||
|
||||
/**
|
||||
* Adds a directory to be watched.
|
||||
*
|
||||
* The directory does not have to exist. When @p watchFiles is
|
||||
* false (the default), the signals dirty(), created(), deleted()
|
||||
* can be emitted, all for the watched directory.
|
||||
* When @p watchFiles is true, all files in the watched directory
|
||||
* are watched for changes, too. Thus, the signals dirty(),
|
||||
* created(), deleted() can be emitted.
|
||||
*
|
||||
* @param path the path to watch
|
||||
* @param watchFiles if true, the KSimpleDirWatch will also watch files - NOT IMPLEMENTED YET
|
||||
* @param recursive if true, all sub directories are also watched - NOT IMPLEMENTED YET
|
||||
*/
|
||||
void addDir(const TQString& path,
|
||||
bool watchFiles = false, bool recursive = false);
|
||||
|
||||
/**
|
||||
* Adds a file to be watched.
|
||||
* @param file the file to watch
|
||||
*/
|
||||
void addFile(const TQString& file);
|
||||
|
||||
/**
|
||||
* Returns the time the directory/file was last changed.
|
||||
* @param path the file to check
|
||||
* @return the date of the last modification
|
||||
*/
|
||||
TQDateTime ctime(const TQString& path);
|
||||
|
||||
/**
|
||||
* Removes a directory from the list of scanned directories.
|
||||
*
|
||||
* If specified path is not in the list this does nothing.
|
||||
* @param path the path of the dir to be removed from the list
|
||||
*/
|
||||
void removeDir(const TQString& path);
|
||||
|
||||
/**
|
||||
* Removes a file from the list of watched files.
|
||||
*
|
||||
* If specified path is not in the list this does nothing.
|
||||
* @param file the file to be removed from the list
|
||||
*/
|
||||
void removeFile(const TQString& file);
|
||||
|
||||
/**
|
||||
* Stops scanning the specified path.
|
||||
*
|
||||
* The @p path is not deleted from the interal just, it is just skipped.
|
||||
* Call this function when you perform an huge operation
|
||||
* on this directory (copy/move big files or many files). When finished,
|
||||
* call restartDirScan(path).
|
||||
*
|
||||
* @param path the path to skip
|
||||
* @return true if the @p path is being watched, otherwise false
|
||||
* @see restartDirScanning()
|
||||
*/
|
||||
bool stopDirScan(const TQString& path);
|
||||
|
||||
/**
|
||||
* Restarts scanning for specified path.
|
||||
*
|
||||
* Resets ctime. It doesn't notify
|
||||
* the change (by emitted a signal), since the ctime value is reset.
|
||||
*
|
||||
* Call it when you are finished with big operations on that path,
|
||||
* @em and when @em you have refreshed that path.
|
||||
*
|
||||
* @param path the path to restart scanning
|
||||
* @return true if the @p path is being watched, otherwise false
|
||||
* @see stopDirScanning()
|
||||
*/
|
||||
bool restartDirScan(const TQString& path);
|
||||
|
||||
/**
|
||||
* Starts scanning of all dirs in list.
|
||||
*
|
||||
* @param notify If true, all changed directories (since
|
||||
* stopScan() call) will be notified for refresh. If notify is
|
||||
* false, all ctimes will be reset (except those who are stopped,
|
||||
* but only if @p skippedToo is false) and changed dirs won't be
|
||||
* notified. You can start scanning even if the list is
|
||||
* empty. First call should be called with @p false or else all
|
||||
* directories
|
||||
* in list will be notified.
|
||||
* @param skippedToo if true, the skipped directoris (scanning of which was
|
||||
* stopped with stopDirScan() ) will be reset and notified
|
||||
* for change. Otherwise, stopped directories will continue to be
|
||||
* unnotified.
|
||||
*/
|
||||
void startScan( bool notify=false, bool skippedToo=false );
|
||||
|
||||
/**
|
||||
* Stops scanning of all directories in internal list.
|
||||
*
|
||||
* The timer is stopped, but the list is not cleared.
|
||||
*/
|
||||
void stopScan();
|
||||
|
||||
/**
|
||||
* Is scanning stopped?
|
||||
* After creation of a KSimpleDirWatch instance, this is false.
|
||||
* @return true when scanning stopped
|
||||
*/
|
||||
bool isStopped() { return _isStopped; }
|
||||
|
||||
/**
|
||||
* Check if a directory is being watched by this KSimpleDirWatch instance
|
||||
* @param path the directory to check
|
||||
* @return true if the directory is being watched
|
||||
*/
|
||||
bool contains( const TQString& path ) const;
|
||||
|
||||
/**
|
||||
* Dump statistic information about all KSimpleDirWatch instances.
|
||||
* This checks for consistency, too.
|
||||
*/
|
||||
static void statistics();
|
||||
|
||||
/**
|
||||
* Emits created().
|
||||
* @param path the path of the file or directory
|
||||
*/
|
||||
void setCreated( const TQString &path );
|
||||
/**
|
||||
* Emits dirty().
|
||||
* @param path the path of the file or directory
|
||||
*/
|
||||
void setDirty( const TQString &path );
|
||||
/**
|
||||
* Emits deleted().
|
||||
* @param path the path of the file or directory
|
||||
*/
|
||||
void setDeleted( const TQString &path );
|
||||
|
||||
enum Method { FAM, DNotify, Stat, INotify };
|
||||
/**
|
||||
* Returns the preferred internal method to
|
||||
* watch for changes.
|
||||
* @since 3.2
|
||||
*/
|
||||
Method internalMethod();
|
||||
|
||||
/**
|
||||
* The KSimpleDirWatch instance usually globally used in an application.
|
||||
* It is automatically deleted when the application exits.
|
||||
*
|
||||
* However, you can create an arbitrary number of KSimpleDirWatch instances
|
||||
* aside from this one - for those you have to take care of memory management.
|
||||
*
|
||||
* This function returns an instance of KSimpleDirWatch. If there is none, it
|
||||
* will be created.
|
||||
*
|
||||
* @return a KSimpleDirWatch instance
|
||||
*/
|
||||
static KSimpleDirWatch* self();
|
||||
/**
|
||||
* Returns true if there is an instance of KSimpleDirWatch.
|
||||
* @return true if there is an instance of KSimpleDirWatch.
|
||||
* @see KSimpleDirWatch::self()
|
||||
* @since 3.1
|
||||
*/
|
||||
static bool exists();
|
||||
|
||||
signals:
|
||||
|
||||
/**
|
||||
* Emitted when a watched object is changed.
|
||||
* For a directory this signal is emitted when files
|
||||
* therein are created or deleted.
|
||||
* For a file this signal is emitted when its size or attributes change.
|
||||
*
|
||||
* When you watch a directory, changes in the size or attributes of
|
||||
* contained files may or may not trigger this signal to be emitted
|
||||
* depending on which backend is used by KSimpleDirWatch.
|
||||
*
|
||||
* The new ctime is set before the signal is emitted.
|
||||
* @param path the path of the file or directory
|
||||
*/
|
||||
void dirty (const TQString &path);
|
||||
|
||||
/**
|
||||
* Emitted when a file or directory is created.
|
||||
* @param path the path of the file or directory
|
||||
*/
|
||||
void created (const TQString &path );
|
||||
|
||||
/**
|
||||
* Emitted when a file or directory is deleted.
|
||||
*
|
||||
* The object is still watched for new creation.
|
||||
* @param path the path of the file or directory
|
||||
*/
|
||||
void deleted (const TQString &path );
|
||||
|
||||
private:
|
||||
bool _isStopped;
|
||||
|
||||
KSimpleDirWatchPrivate *d;
|
||||
static KSimpleDirWatch* s_pSelf;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// vim: sw=3 et
|
@ -0,0 +1,161 @@
|
||||
/* Private Header for class of KSimpleDirWatchPrivate
|
||||
*
|
||||
* this separate header file is needed for TQMOC processing
|
||||
* because KSimpleDirWatchPrivate has signals and slots
|
||||
*
|
||||
* KSimpleDirWatch is a basic copy of KDirWatch
|
||||
* but with the KIO linking requirement removed
|
||||
*/
|
||||
|
||||
#ifndef _KSIMPLEDIRWATCH_P_H
|
||||
#define _KSIMPLEDIRWATCH_P_H
|
||||
|
||||
#ifdef HAVE_FAM
|
||||
#include <fam.h>
|
||||
#endif
|
||||
|
||||
#include <ctime>
|
||||
|
||||
#define invalid_ctime ((time_t)-1)
|
||||
|
||||
/* KSimpleDirWatchPrivate is a singleton and does the watching
|
||||
* for every KSimpleDirWatch instance in the application.
|
||||
*/
|
||||
class KSimpleDirWatchPrivate : public TQObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
enum entryStatus { Normal = 0, NonExistent };
|
||||
enum entryMode { UnknownMode = 0, StatMode, DNotifyMode, INotifyMode, FAMMode };
|
||||
enum { NoChange=0, Changed=1, Created=2, Deleted=4 };
|
||||
|
||||
struct Client {
|
||||
KSimpleDirWatch* instance;
|
||||
int count;
|
||||
// did the instance stop watching
|
||||
bool watchingStopped;
|
||||
// events blocked when stopped
|
||||
int pending;
|
||||
};
|
||||
|
||||
class Entry
|
||||
{
|
||||
public:
|
||||
// the last observed modification time
|
||||
time_t m_ctime;
|
||||
// the last observed link count
|
||||
int m_nlink;
|
||||
entryStatus m_status;
|
||||
entryMode m_mode;
|
||||
bool isDir;
|
||||
// instances interested in events
|
||||
TQPtrList<Client> m_clients;
|
||||
// nonexistent entries of this directory
|
||||
TQPtrList<Entry> m_entries;
|
||||
TQString path;
|
||||
|
||||
int msecLeft, freq;
|
||||
|
||||
void addClient(KSimpleDirWatch*);
|
||||
void removeClient(KSimpleDirWatch*);
|
||||
int clients();
|
||||
bool isValid() { return m_clients.count() || m_entries.count(); }
|
||||
|
||||
bool dirty;
|
||||
void propagate_dirty();
|
||||
|
||||
#ifdef HAVE_FAM
|
||||
FAMRequest fr;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DNOTIFY
|
||||
int dn_fd;
|
||||
#endif
|
||||
#ifdef HAVE_INOTIFY
|
||||
int wd;
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef TQMap<TQString,Entry> EntryMap;
|
||||
|
||||
KSimpleDirWatchPrivate();
|
||||
~KSimpleDirWatchPrivate();
|
||||
|
||||
void resetList (KSimpleDirWatch*,bool);
|
||||
void useFreq(Entry* e, int newFreq);
|
||||
void addEntry(KSimpleDirWatch*,const TQString&, Entry*, bool);
|
||||
void removeEntry(KSimpleDirWatch*,const TQString&, Entry*);
|
||||
bool stopEntryScan(KSimpleDirWatch*, Entry*);
|
||||
bool restartEntryScan(KSimpleDirWatch*, Entry*, bool );
|
||||
void stopScan(KSimpleDirWatch*);
|
||||
void startScan(KSimpleDirWatch*, bool, bool);
|
||||
|
||||
void removeEntries(KSimpleDirWatch*);
|
||||
void statistics();
|
||||
|
||||
Entry* entry(const TQString&);
|
||||
int scanEntry(Entry* e);
|
||||
void emitEvent(Entry* e, int event, const TQString &fileName = TQString::null);
|
||||
|
||||
// Memory management - delete when last KSimpleDirWatch gets deleted
|
||||
void ref() { m_ref++; }
|
||||
bool deref() { return ( --m_ref == 0 ); }
|
||||
|
||||
static bool isNoisyFile( const char *filename );
|
||||
|
||||
public slots:
|
||||
void slotRescan();
|
||||
void famEventReceived(); // for FAM
|
||||
void slotActivated(); // for DNOTIFY
|
||||
void slotRemoveDelayed();
|
||||
|
||||
public:
|
||||
TQTimer *timer;
|
||||
EntryMap m_mapEntries;
|
||||
|
||||
int freq;
|
||||
int statEntries;
|
||||
int m_nfsPollInterval, m_PollInterval;
|
||||
int m_ref;
|
||||
bool useStat(Entry*);
|
||||
|
||||
bool delayRemove;
|
||||
TQPtrList<Entry> removeList;
|
||||
|
||||
bool rescan_all;
|
||||
TQTimer rescan_timer;
|
||||
|
||||
#ifdef HAVE_FAM
|
||||
TQSocketNotifier *sn;
|
||||
FAMConnection fc;
|
||||
bool use_fam;
|
||||
|
||||
void checkFAMEvent(FAMEvent*);
|
||||
bool useFAM(Entry*);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_DNOTIFY) || defined(HAVE_INOTIFY)
|
||||
TQSocketNotifier *mSn;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DNOTIFY
|
||||
bool supports_dnotify;
|
||||
int mPipe[2];
|
||||
TQIntDict<Entry> fd_Entry;
|
||||
|
||||
static void dnotify_handler(int, siginfo_t *si, void *);
|
||||
static void dnotify_sigio_handler(int, siginfo_t *si, void *);
|
||||
bool useDNotify(Entry*);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_INOTIFY
|
||||
bool supports_inotify;
|
||||
int m_inotify_fd;
|
||||
|
||||
bool useINotify(Entry*);
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif // KSIMPLEDIRWATCH_P_H
|
||||
|
Loading…
Reference in new issue