From d9a9f38e870f24c4bc148ed58333abaedad81f05 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 31 May 2001 14:07:17 +0300 Subject: Removed compiler warnings. Added preliminary handling of symlinks in MyISAM. When using myisamchk to check tables with --force, don't repair tables that are marked as 'not closed' if they are ok. Change fn_format() to use my_real_path and my_symlink include/myisam.h: Added handling of symlinks myisam/ft_boolean_search.c: cleanup myisam/ft_dump.c: cleanup myisam/mi_check.c: Added handling of symlinks. When using check and --force, don't repair tables that are marked as 'not closed' if they are ok. myisam/mi_create.c: Added handling of symlinks. myisam/mi_dbug.c: Added handling of symlinks. myisam/mi_info.c: Added handling of symlinks. myisam/mi_open.c: Added handling of symlinks. myisam/mi_search.c: cleanup myisam/myisamchk.c: Added handling of symlinks. myisam/myisamdef.h: Added handling of symlinks. myisam/myisamlog.c: Fixed bug when using new trees myisam/myisampack.c: cleanup mysys/mf_cache.c: cleanup mysys/mf_format.c: Change to use my_real_path and my_symlink mysys/my_alloc.c: cleanup BitKeeper/etc/ignore: Added libmysqld/sql_command libmysqld/backup_dir libmysqld/simple-test to the ignore list BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- mysys/mf_cache.c | 3 ++- mysys/mf_format.c | 29 +++++------------------ mysys/my_alloc.c | 69 +++++++++++++++++++++++++------------------------------ 3 files changed, 39 insertions(+), 62 deletions(-) (limited to 'mysys') diff --git a/mysys/mf_cache.c b/mysys/mf_cache.c index ff29926ac50..4b8fc6fed17 100644 --- a/mysys/mf_cache.c +++ b/mysys/mf_cache.c @@ -28,7 +28,8 @@ this, just remember the file name for later removal */ -static my_bool cache_remove_open_tmp(IO_CACHE *cache, const char *name) +static my_bool cache_remove_open_tmp(IO_CACHE *cache __attribute__((unused)), + const char *name) { #if O_TEMPORARY == 0 #if !defined(CANT_DELETE_OPEN_FILES) diff --git a/mysys/mf_format.c b/mysys/mf_format.c index c4425806e01..216608fdee5 100644 --- a/mysys/mf_format.c +++ b/mysys/mf_format.c @@ -17,10 +17,6 @@ #include "mysys_priv.h" #include -#ifdef HAVE_REALPATH -#include -#include -#endif /* format a filename with replace of library and extension */ /* params to and name may be identicall */ @@ -33,21 +29,12 @@ /* 32 Resolve filename to full path */ /* 64 Return NULL if too long path */ -#ifdef SCO -#define BUFF_LEN 4097 -#else -#ifdef MAXPATHLEN -#define BUFF_LEN MAXPATHLEN -#else -#define BUFF_LEN FN_LEN -#endif -#endif my_string fn_format(my_string to, const char *name, const char *dsk, const char *form, int flag) { reg1 uint length; - char dev[FN_REFLEN], buff[BUFF_LEN], *pos, *startpos; + char dev[FN_REFLEN], buff[FN_REFLEN], *pos, *startpos; const char *ext; DBUG_ENTER("fn_format"); DBUG_PRINT("enter",("name: %s dsk: %s form: %s flag: %d", @@ -109,18 +96,14 @@ my_string fn_format(my_string to, const char *name, const char *dsk, #endif (void) strmov(pos,ext); /* Don't convert extension */ } - /* Purify gives a lot of UMR errors when using realpath */ -#if defined(HAVE_REALPATH) && !defined(HAVE_purify) && !defined(HAVE_BROKEN_REALPATH) if (flag & 16) { - struct stat stat_buff; - if (flag & 32 || (!lstat(to,&stat_buff) && S_ISLNK(stat_buff.st_mode))) - { - if (realpath(to,buff)) - strmake(to,buff,FN_REFLEN-1); - } + strmov(buff,to); + my_symlink(to, buff, MYF(flag & 32 ? 0 : MY_RESOLVE_LINK)); } -#endif + else if (flag & 32) + my_realpath(to, to, MYF(flag & 32 ? 0 : MY_RESOLVE_LINK)); + DBUG_RETURN (to); } /* fn_format */ diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index b82ff965dfb..ffbed381226 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -100,41 +100,34 @@ gptr alloc_root(MEM_ROOT *mem_root,unsigned int Size) #endif } +/* Mark all data in blocks free for reusage */ + static inline void mark_blocks_free(MEM_ROOT* root) { - reg1 USED_MEM *next,*last = 0; + reg1 USED_MEM *next; + reg2 USED_MEM **last; - /* iterate through (partially) free blocks, mark them fully free */ - for(next = root->free; next; next = next->next ) - { - last = next; - next->left = next->size - ALIGN_SIZE(sizeof(USED_MEM)); - } - /* if free block list was not empty, point the next of the - last free block to the beginning of the used list */ - next = root->used; /* a little optimization to avoid dereferencing root - twice - we will shortly start iterating through used - list */ - if(last) - last->next = next; - else /* if free list is empty, just point it to the current used*/ - root->free = next; - - /* now go through the current used list, and mark each block - as fully free. Note that because of our optimization, we do not - need to initialize next here - see above - */ - for(;next; next = next->next) - next->left = next->size - ALIGN_SIZE(sizeof(USED_MEM)); - - /* Now everything is set - we just need to indicate that nothing is used - anymore - */ - root->used = 0; + /* iterate through (partially) free blocks, mark them free */ + last= &root->free; + for (next= root->free; next; next= *(last= &next->next)) + next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM)); + + /* Combine the free and the used list */ + *last= next=root->used; + + /* now go through the used blocks and mark them free */ + for (; next; next= next->next) + next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM)); + + /* Now everything is set; Indicate that nothing is used anymore */ + root->used= 0; } - /* deallocate everything used by alloc_root or just move - used blocks to free list if called with MY_USED_TO_FREE */ + +/* + Deallocate everything used by alloc_root or just move + used blocks to free list if called with MY_USED_TO_FREE +*/ void free_root(MEM_ROOT *root, myf MyFlags) { @@ -143,23 +136,23 @@ void free_root(MEM_ROOT *root, myf MyFlags) if (!root) DBUG_VOID_RETURN; /* purecov: inspected */ - if(MyFlags & MY_MARK_BLOCKS_FREE) - { - mark_blocks_free(root); - DBUG_VOID_RETURN; - } + if (MyFlags & MY_MARK_BLOCKS_FREE) + { + mark_blocks_free(root); + DBUG_VOID_RETURN; + } if (!(MyFlags & MY_KEEP_PREALLOC)) root->pre_alloc=0; - for ( next=root->used; next ;) + for (next=root->used; next ;) { old=next; next= next->next ; if (old != root->pre_alloc) my_free((gptr) old,MYF(0)); } - for (next= root->free ; next ; ) + for (next=root->free ; next ;) { - old=next; next= next->next ; + old=next; next= next->next; if (old != root->pre_alloc) my_free((gptr) old,MYF(0)); } -- cgit v1.2.1