root/headers/os/storage/SymLink.h
/*
 * Copyright 2002-2007 Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _SYM_LINK_H
#define _SYM_LINK_H


#include <Node.h>
#include <StorageDefs.h>


class BDirectory;
class BPath;

class BSymLink : public BNode {
public:
                                                                BSymLink();
                                                                BSymLink(const BSymLink& other);
                                                                BSymLink(const entry_ref* ref);
                                                                BSymLink(const BEntry* entry);
                                                                BSymLink(const char* path);
                                                                BSymLink(const BDirectory* dir,
                                                                         const char* path);
        virtual                                         ~BSymLink();

                        ssize_t                         ReadLink(char* buf, size_t size);

                        ssize_t                         MakeLinkedPath(const char* dirPath,
                                                                        BPath* path);
                        ssize_t                         MakeLinkedPath(const BDirectory* dir,
                                                                        BPath* path);

                        bool                            IsAbsolute();

private:
        virtual void                            _MissingSymLink1();
        virtual void                            _MissingSymLink2();
        virtual void                            _MissingSymLink3();
        virtual void                            _MissingSymLink4();
        virtual void                            _MissingSymLink5();
        virtual void                            _MissingSymLink6();

                        uint32                          _reservedData[4];
                        BEntry*                         fSecretEntry;

private:
                        int                                     get_fd() const;
};


#endif  // _SYM_LINK_H