mirror of
https://github.com/obarthel/amiga-smbfs.git
synced 2025-12-08 14:58:35 +00:00
Added more diagnostic output and debug functionality, e.g. regarding how many directory caches are currently being used. Long name directory scanning is a bit more paranoid when retrying a scan operation which might have been triggered by the server connection getting dropped. Added the new READONLY option (why stop at 47 options when you can have 48?) which makes the file system read-only by default and does not require you to use the "Lock" shell command to achieve the same effect. Note that the shell "Lock" command cannot be used to turn the read-only mode off again. Added support for the smb:// URI scheme, which means that instead of using "smbfs username=barney password=secret domain=workgroup //nas:445/share" you can now use "smbfs smb://workgroup;barney:secret@nas:445/share" instead. It is a bit shorter than the alternative and has an advantage in allowing you to reuse smb:// URLs which you know work well on other systems.
78 lines
2.6 KiB
C
78 lines
2.6 KiB
C
/*
|
|
* :ts=4
|
|
*
|
|
* SMB file system wrapper for AmigaOS, using the AmiTCP V3 API
|
|
*
|
|
* Copyright (C) 2000-2019 by Olaf 'Olsen' Barthel <obarthel -at- gmx -dot- net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#ifndef _SPLAY_H
|
|
#define _SPLAY_H
|
|
|
|
/****************************************************************************/
|
|
|
|
/* This enables the use of splay trees for faster validation of
|
|
* file and lock pointers, and for faster lookup of file, directory
|
|
* and path names.
|
|
*/
|
|
#define USE_SPLAY_TREE
|
|
|
|
/****************************************************************************/
|
|
|
|
#if defined(USE_SPLAY_TREE)
|
|
|
|
/****************************************************************************/
|
|
|
|
typedef void * splay_key_t;
|
|
|
|
/****************************************************************************/
|
|
|
|
typedef int (*splay_key_compare_t)(const splay_key_t a, const splay_key_t b);
|
|
|
|
/****************************************************************************/
|
|
|
|
struct splay_node
|
|
{
|
|
struct splay_node * sn_left; /* Left child */
|
|
struct splay_node * sn_right; /* Right child */
|
|
splay_key_t sn_key; /* Unique identifier */
|
|
struct splay_node * sn_next; /* For duplicates */
|
|
APTR sn_userdata; /* For embedding */
|
|
};
|
|
|
|
struct splay_tree
|
|
{
|
|
struct splay_node * st_root;
|
|
splay_key_compare_t st_compare;
|
|
BOOL st_allow_duplicates;
|
|
};
|
|
|
|
/****************************************************************************/
|
|
|
|
BOOL splay_tree_add(struct splay_tree *tree, struct splay_node *new_node);
|
|
struct splay_node *splay_tree_remove(struct splay_tree *tree, struct splay_node * this_node, const splay_key_t key);
|
|
struct splay_node *splay_tree_find(struct splay_tree *tree, const splay_key_t key);
|
|
void splay_tree_init(struct splay_tree *tree, splay_key_compare_t compare);
|
|
|
|
/****************************************************************************/
|
|
|
|
#endif /* USE_SPLAY_TREE */
|
|
|
|
/****************************************************************************/
|
|
|
|
#endif /* _SPLAY_H */
|