:Kieren MacMillan wrote:
:> Hello, all you BSD hackers!
:> 
:> A major change to the "file-folder-desktop" metaphor is long overdue, 
:> and it seems to me that FreeBSD -- with Mac OS X as a large and growing 
:> "child" -- is the perfect place to start the revolution...  ;-)
:> 
:> If anyone has seen Scopeware (<http://www.scopeware.com>), you'll know 
:> the kind of thing I'm thinking of: a universal indexing system where 
:> *any* file of *any* type in *any* location would be cross-referenced 
:> (using metadata as well as content where possible) in one or more 
:> "filters" or "streams".
:> 
:> Is anybody working on such a fundamental change? If not, is there any 
:> interest in starting such a project? I'm not the world's most 
:> experienced programmer (mostly Java, some XML/XSLT, a little RealBASIC, 
:> etc.), but I'm a good project manager and technical writer, if that 
:> would help.
:> 
:> [n.b. Please cc my email address in any responses, as I'm not currently 
:> subscribed to the full mailing list.]
:> 
:> Best regards,
:> Kieren MacMillan.
:
:This sounds like the filesystem from BeOS.
:You might want to check out OpenBeOS. (http://www.openbeos.org/)
:Last time I checked, their attempt to rewrite the original BeOS 
:code under a free license had made some progress, especially the 
:filesystem part.
:
:--
:R

    How about an API like this:

    fd = fstrack(basedir, flags, timestamp);

        Return a descriptor which tracks changes described in <flags>
        that occur in the specified directory <basedir> or any sub-directory
        of that directory.  Start the reporting stream at timestamp
        <timestamp> (allows you to pick up where you left off), or 0
        to start reporting at the current time.

        flags:

                FSTRACK_CREATE  -       File creations
                FSTRACK_DELETE  -       File deletions
                FSTRACK_TRUNC   -       File truncations
                FSTRACK_UPDATE  -       File updates
                FSTRACK_CLOSE   -       File close() (last close() on file)

        Returns -1 and ELOSTQUEUE if data related to the specified
        timestamp has already been discarded by the kernel.

    n = read(fd, buf, sizeof(buf))

        Load as many tracking records as can be made to fit in the specified
        buffer.  If the buffer is too small to hold the next ready tracking
        record, return -1 and EBUFTOOSMALL, the call can be remade with a
        larger buffer.

        May return a consolidation record if the kernel was forced to
        throw away data due to a queue overflow.  A conslidation record
        is something like "One or more files in directory <blah> changed"
        instead of "File XXX in directory <blah> changed".

    Something like the above would be an incredibly powerful and capable
    tool.  It could be made to support kqueue() and select() as well.

    Any sort of indexing or tracking of this magnitude would really have
    to be a userland process, with support from a kernel mechanism.  The
    biggest problem with a kernel mechanism of this sort is going to be
    queue overruns (say someone does an 'rm -rf' on a large directory).

                                        -Matt
                                        Matthew Dillon 
                                        <[EMAIL PROTECTED]>

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to