Merge with 5.1
Fixed a couple of compilation failures that was not detected before merge.
This commit is contained in:
commit
2e75dda33e
@ -106,7 +106,7 @@ sql_src=log_event.h mysql_priv.h rpl_constants.h \
|
|||||||
log_event.cc my_decimal.h my_decimal.cc \
|
log_event.cc my_decimal.h my_decimal.cc \
|
||||||
log_event_old.h log_event_old.cc \
|
log_event_old.h log_event_old.cc \
|
||||||
rpl_record_old.h rpl_record_old.cc
|
rpl_record_old.h rpl_record_old.cc
|
||||||
strings_src=decimal.c
|
strings_src=decimal.c strings_def.h
|
||||||
|
|
||||||
link_sources:
|
link_sources:
|
||||||
for f in $(sql_src) ; do \
|
for f in $(sql_src) ; do \
|
||||||
|
@ -126,7 +126,7 @@ extern void _db_flush_();
|
|||||||
#define DBUG_END() _db_end_ ()
|
#define DBUG_END() _db_end_ ()
|
||||||
#define DBUG_LOCK_FILE _db_lock_file_()
|
#define DBUG_LOCK_FILE _db_lock_file_()
|
||||||
#define DBUG_UNLOCK_FILE _db_unlock_file_()
|
#define DBUG_UNLOCK_FILE _db_unlock_file_()
|
||||||
#define DBUG_ASSERT(A) assert(A)
|
#define DBUG_ASSERT(A) do { _db_flush_(); assert(A); } while(0)
|
||||||
#define DBUG_EXPLAIN(buf,len) _db_explain_(0, (buf),(len))
|
#define DBUG_EXPLAIN(buf,len) _db_explain_(0, (buf),(len))
|
||||||
#define DBUG_EXPLAIN_INITIAL(buf,len) _db_explain_init_((buf),(len))
|
#define DBUG_EXPLAIN_INITIAL(buf,len) _db_explain_init_((buf),(len))
|
||||||
#define DEBUGGER_OFF do { _dbug_on_= 0; } while(0)
|
#define DEBUGGER_OFF do { _dbug_on_= 0; } while(0)
|
||||||
|
@ -41,7 +41,7 @@ link_sources:
|
|||||||
ms=`echo $(mysysobjects) | sed "s;\.lo;.c;g"`; \
|
ms=`echo $(mysysobjects) | sed "s;\.lo;.c;g"`; \
|
||||||
vs=`echo $(vio_objects) | sed "s;\.lo;.c;g"`; \
|
vs=`echo $(vio_objects) | sed "s;\.lo;.c;g"`; \
|
||||||
scs=`echo $(sql_cmn_objects) | sed "s;\.lo;.c;g"`; \
|
scs=`echo $(sql_cmn_objects) | sed "s;\.lo;.c;g"`; \
|
||||||
for f in $$ss; do \
|
for f in $$ss $(mystringsheaders); do \
|
||||||
rm -f $$f; \
|
rm -f $$f; \
|
||||||
@LN_CP_F@ $(top_srcdir)/strings/$$f $$f; \
|
@LN_CP_F@ $(top_srcdir)/strings/$$f $$f; \
|
||||||
done; \
|
done; \
|
||||||
|
@ -50,6 +50,7 @@ mystringsobjects = strmov.lo strxmov.lo strxnmov.lo strnmov.lo \
|
|||||||
strmov_overlapp.lo
|
strmov_overlapp.lo
|
||||||
|
|
||||||
mystringsextra= strto.c
|
mystringsextra= strto.c
|
||||||
|
mystringsheaders= strings_def.h
|
||||||
dbugobjects = dbug.lo # IT IS IN SAFEMALLOC.C sanity.lo
|
dbugobjects = dbug.lo # IT IS IN SAFEMALLOC.C sanity.lo
|
||||||
mysysheaders = mysys_priv.h my_static.h
|
mysysheaders = mysys_priv.h my_static.h
|
||||||
vioheaders = vio_priv.h
|
vioheaders = vio_priv.h
|
||||||
|
@ -235,7 +235,8 @@ my_bool _ma_bitmap_init(MARIA_SHARE *share, File file)
|
|||||||
The +1 is to add the bitmap page, as this doesn't have to be covered
|
The +1 is to add the bitmap page, as this doesn't have to be covered
|
||||||
*/
|
*/
|
||||||
bitmap->pages_covered= aligned_bit_blocks * 16 + 1;
|
bitmap->pages_covered= aligned_bit_blocks * 16 + 1;
|
||||||
bitmap->flush_all_requested= 0;
|
bitmap->flush_all_requested= bitmap->waiting_for_flush_all_requested=
|
||||||
|
bitmap->waiting_for_non_flushable= 0;
|
||||||
bitmap->non_flushable= 0;
|
bitmap->non_flushable= 0;
|
||||||
|
|
||||||
/* Update size for bits */
|
/* Update size for bits */
|
||||||
@ -365,6 +366,7 @@ filter_flush_bitmap_pages(enum pagecache_page_type type
|
|||||||
my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
|
my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
|
||||||
{
|
{
|
||||||
my_bool res= 0;
|
my_bool res= 0;
|
||||||
|
uint send_signal= 0;
|
||||||
MARIA_FILE_BITMAP *bitmap= &share->bitmap;
|
MARIA_FILE_BITMAP *bitmap= &share->bitmap;
|
||||||
DBUG_ENTER("_ma_bitmap_flush_all");
|
DBUG_ENTER("_ma_bitmap_flush_all");
|
||||||
|
|
||||||
@ -374,7 +376,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
|
|||||||
uint len= my_sprintf(buff,
|
uint len= my_sprintf(buff,
|
||||||
(buff, "bitmap_flush: fd: %d id: %u "
|
(buff, "bitmap_flush: fd: %d id: %u "
|
||||||
"changed: %d changed_not_flushed: %d "
|
"changed: %d changed_not_flushed: %d "
|
||||||
"flush_all_requsted: %d",
|
"flush_all_requested: %d",
|
||||||
share->bitmap.file.file,
|
share->bitmap.file.file,
|
||||||
share->id,
|
share->id,
|
||||||
bitmap->changed,
|
bitmap->changed,
|
||||||
@ -389,6 +391,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
|
|||||||
if (bitmap->changed || bitmap->changed_not_flushed)
|
if (bitmap->changed || bitmap->changed_not_flushed)
|
||||||
{
|
{
|
||||||
bitmap->flush_all_requested++;
|
bitmap->flush_all_requested++;
|
||||||
|
bitmap->waiting_for_non_flushable++;
|
||||||
#ifndef WRONG_BITMAP_FLUSH
|
#ifndef WRONG_BITMAP_FLUSH
|
||||||
while (bitmap->non_flushable > 0)
|
while (bitmap->non_flushable > 0)
|
||||||
{
|
{
|
||||||
@ -396,6 +399,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
|
|||||||
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
|
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
bitmap->waiting_for_non_flushable--;
|
||||||
#ifdef EXTRA_DEBUG_BITMAP
|
#ifdef EXTRA_DEBUG_BITMAP
|
||||||
{
|
{
|
||||||
char tmp[MAX_BITMAP_INFO_LENGTH];
|
char tmp[MAX_BITMAP_INFO_LENGTH];
|
||||||
@ -440,10 +444,12 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
|
|||||||
become false, wake them up.
|
become false, wake them up.
|
||||||
*/
|
*/
|
||||||
DBUG_PRINT("info", ("bitmap flusher waking up others"));
|
DBUG_PRINT("info", ("bitmap flusher waking up others"));
|
||||||
if (bitmap->flush_all_requested)
|
send_signal= (bitmap->waiting_for_flush_all_requested |
|
||||||
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
bitmap->waiting_for_non_flushable);
|
||||||
}
|
}
|
||||||
pthread_mutex_unlock(&bitmap->bitmap_lock);
|
pthread_mutex_unlock(&bitmap->bitmap_lock);
|
||||||
|
if (send_signal)
|
||||||
|
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
||||||
DBUG_RETURN(res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,11 +479,13 @@ void _ma_bitmap_lock(MARIA_SHARE *share)
|
|||||||
|
|
||||||
pthread_mutex_lock(&bitmap->bitmap_lock);
|
pthread_mutex_lock(&bitmap->bitmap_lock);
|
||||||
bitmap->flush_all_requested++;
|
bitmap->flush_all_requested++;
|
||||||
|
bitmap->waiting_for_non_flushable++;
|
||||||
while (bitmap->non_flushable)
|
while (bitmap->non_flushable)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("waiting for bitmap to be flushable"));
|
DBUG_PRINT("info", ("waiting for bitmap to be flushable"));
|
||||||
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
|
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
|
||||||
}
|
}
|
||||||
|
bitmap->waiting_for_non_flushable--;
|
||||||
/*
|
/*
|
||||||
Ensure that _ma_bitmap_flush_all() and _ma_bitmap_lock() are blocked.
|
Ensure that _ma_bitmap_flush_all() and _ma_bitmap_lock() are blocked.
|
||||||
ma_bitmap_flushable() is blocked thanks to 'flush_all_requested'.
|
ma_bitmap_flushable() is blocked thanks to 'flush_all_requested'.
|
||||||
@ -497,6 +505,7 @@ void _ma_bitmap_lock(MARIA_SHARE *share)
|
|||||||
void _ma_bitmap_unlock(MARIA_SHARE *share)
|
void _ma_bitmap_unlock(MARIA_SHARE *share)
|
||||||
{
|
{
|
||||||
MARIA_FILE_BITMAP *bitmap= &share->bitmap;
|
MARIA_FILE_BITMAP *bitmap= &share->bitmap;
|
||||||
|
uint send_signal;
|
||||||
DBUG_ENTER("_ma_bitmap_unlock");
|
DBUG_ENTER("_ma_bitmap_unlock");
|
||||||
|
|
||||||
if (!share->now_transactional)
|
if (!share->now_transactional)
|
||||||
@ -504,10 +513,12 @@ void _ma_bitmap_unlock(MARIA_SHARE *share)
|
|||||||
DBUG_ASSERT(bitmap->flush_all_requested > 0 && bitmap->non_flushable == 1);
|
DBUG_ASSERT(bitmap->flush_all_requested > 0 && bitmap->non_flushable == 1);
|
||||||
|
|
||||||
pthread_mutex_lock(&bitmap->bitmap_lock);
|
pthread_mutex_lock(&bitmap->bitmap_lock);
|
||||||
bitmap->flush_all_requested--;
|
|
||||||
bitmap->non_flushable= 0;
|
bitmap->non_flushable= 0;
|
||||||
|
send_signal= bitmap->waiting_for_non_flushable;
|
||||||
|
if (!--bitmap->flush_all_requested)
|
||||||
|
send_signal|= bitmap->waiting_for_flush_all_requested;
|
||||||
pthread_mutex_unlock(&bitmap->bitmap_lock);
|
pthread_mutex_unlock(&bitmap->bitmap_lock);
|
||||||
if (bitmap->flush_all_requested > 0)
|
if (send_signal)
|
||||||
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@ -2334,7 +2345,7 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
|
|||||||
the bitmap's mutex.
|
the bitmap's mutex.
|
||||||
*/
|
*/
|
||||||
_ma_bitmap_unpin_all(share);
|
_ma_bitmap_unpin_all(share);
|
||||||
if (unlikely(bitmap->flush_all_requested))
|
if (unlikely(bitmap->waiting_for_non_flushable))
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("bitmap flushable waking up flusher"));
|
DBUG_PRINT("info", ("bitmap flushable waking up flusher"));
|
||||||
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
||||||
@ -2347,6 +2358,8 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
|
|||||||
}
|
}
|
||||||
DBUG_ASSERT(non_flushable_inc == 1);
|
DBUG_ASSERT(non_flushable_inc == 1);
|
||||||
DBUG_ASSERT(info->non_flushable_state == 0);
|
DBUG_ASSERT(info->non_flushable_state == 0);
|
||||||
|
|
||||||
|
bitmap->waiting_for_flush_all_requested++;
|
||||||
while (unlikely(bitmap->flush_all_requested))
|
while (unlikely(bitmap->flush_all_requested))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -2363,6 +2376,7 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
|
|||||||
DBUG_PRINT("info", ("waiting for bitmap flusher"));
|
DBUG_PRINT("info", ("waiting for bitmap flusher"));
|
||||||
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
|
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
|
||||||
}
|
}
|
||||||
|
bitmap->waiting_for_flush_all_requested--;
|
||||||
bitmap->non_flushable++;
|
bitmap->non_flushable++;
|
||||||
DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable));
|
DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable));
|
||||||
pthread_mutex_unlock(&bitmap->bitmap_lock);
|
pthread_mutex_unlock(&bitmap->bitmap_lock);
|
||||||
@ -2490,7 +2504,7 @@ my_bool _ma_bitmap_release_unused(MARIA_HA *info, MARIA_BITMAP_BLOCKS *blocks)
|
|||||||
if (--bitmap->non_flushable == 0)
|
if (--bitmap->non_flushable == 0)
|
||||||
{
|
{
|
||||||
_ma_bitmap_unpin_all(info->s);
|
_ma_bitmap_unpin_all(info->s);
|
||||||
if (unlikely(bitmap->flush_all_requested))
|
if (unlikely(bitmap->waiting_for_non_flushable))
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("bitmap flushable waking up flusher"));
|
DBUG_PRINT("info", ("bitmap flushable waking up flusher"));
|
||||||
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
pthread_cond_broadcast(&bitmap->bitmap_cond);
|
||||||
|
@ -3922,8 +3922,11 @@ static my_bool _ma_update_at_original_place(MARIA_HA *info,
|
|||||||
goto err;
|
goto err;
|
||||||
block= blocks->block;
|
block= blocks->block;
|
||||||
block->empty_space= row_pos.empty_space;
|
block->empty_space= row_pos.empty_space;
|
||||||
block->org_bitmap_value= _ma_free_size_to_head_pattern(&share->bitmap,
|
block->org_bitmap_value=
|
||||||
org_empty_size);
|
_ma_free_size_to_head_pattern(&share->bitmap,
|
||||||
|
(enough_free_entries_on_page(share, buff) ?
|
||||||
|
org_empty_size : 0));
|
||||||
|
|
||||||
DBUG_ASSERT(block->org_bitmap_value ==
|
DBUG_ASSERT(block->org_bitmap_value ==
|
||||||
_ma_bitmap_get_page_bits(info, &info->s->bitmap, page));
|
_ma_bitmap_get_page_bits(info, &info->s->bitmap, page));
|
||||||
block->used|= BLOCKUSED_USE_ORG_BITMAP;
|
block->used|= BLOCKUSED_USE_ORG_BITMAP;
|
||||||
|
@ -113,7 +113,7 @@
|
|||||||
(uint)((B)->hash_link ? \
|
(uint)((B)->hash_link ? \
|
||||||
(B)->hash_link->requests : \
|
(B)->hash_link->requests : \
|
||||||
0), \
|
0), \
|
||||||
block->wlocks, block->rlocks, block->rlocks_queue, \
|
(B)->wlocks, (B)->rlocks, (B)->rlocks_queue, \
|
||||||
(uint)(B)->pins, (uint)(B)->status, \
|
(uint)(B)->pins, (uint)(B)->status, \
|
||||||
page_cache_page_type_str[(B)->type]))
|
page_cache_page_type_str[(B)->type]))
|
||||||
|
|
||||||
@ -153,8 +153,20 @@ struct st_pagecache_hash_link
|
|||||||
/* simple states of a block */
|
/* simple states of a block */
|
||||||
#define PCBLOCK_ERROR 1 /* an error occurred when performing disk i/o */
|
#define PCBLOCK_ERROR 1 /* an error occurred when performing disk i/o */
|
||||||
#define PCBLOCK_READ 2 /* the is page in the block buffer */
|
#define PCBLOCK_READ 2 /* the is page in the block buffer */
|
||||||
#define PCBLOCK_IN_SWITCH 4 /* block is preparing to read new page */
|
|
||||||
#define PCBLOCK_REASSIGNED 8 /* block does not accept requests for old page */
|
/*
|
||||||
|
A tread is reading the data to the page. The page is not yet ready
|
||||||
|
to be used.
|
||||||
|
*/
|
||||||
|
#define PCBLOCK_IN_SWITCH 4
|
||||||
|
/*
|
||||||
|
Block does not accept new requests for old page that would cause
|
||||||
|
the page to be pinned or written to.
|
||||||
|
(Reads that copies the block can still continue).
|
||||||
|
This state happens when another thread is waiting for readers to finish
|
||||||
|
to read/write new data to the block.
|
||||||
|
*/
|
||||||
|
#define PCBLOCK_REASSIGNED 8
|
||||||
#define PCBLOCK_IN_FLUSH 16 /* block is in flush operation */
|
#define PCBLOCK_IN_FLUSH 16 /* block is in flush operation */
|
||||||
#define PCBLOCK_CHANGED 32 /* block buffer contains a dirty page */
|
#define PCBLOCK_CHANGED 32 /* block buffer contains a dirty page */
|
||||||
#define PCBLOCK_DIRECT_W 64 /* possible direct write to the block */
|
#define PCBLOCK_DIRECT_W 64 /* possible direct write to the block */
|
||||||
@ -1807,7 +1819,9 @@ restart:
|
|||||||
pageno number of the page in the file
|
pageno number of the page in the file
|
||||||
init_hits_left how initialize the block counter for the page
|
init_hits_left how initialize the block counter for the page
|
||||||
wrmode <-> get for writing
|
wrmode <-> get for writing
|
||||||
reg_req Register request to thye page
|
block_is_copied 1 if block will be copied from page cache under
|
||||||
|
the pagelock mutex.
|
||||||
|
reg_req Register request to the page
|
||||||
page_st out {PAGE_READ,PAGE_TO_BE_READ,PAGE_WAIT_TO_BE_READ}
|
page_st out {PAGE_READ,PAGE_TO_BE_READ,PAGE_WAIT_TO_BE_READ}
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
@ -1836,6 +1850,7 @@ static PAGECACHE_BLOCK_LINK *find_block(PAGECACHE *pagecache,
|
|||||||
pgcache_page_no_t pageno,
|
pgcache_page_no_t pageno,
|
||||||
int init_hits_left,
|
int init_hits_left,
|
||||||
my_bool wrmode,
|
my_bool wrmode,
|
||||||
|
my_bool block_is_copied,
|
||||||
my_bool reg_req,
|
my_bool reg_req,
|
||||||
int *page_st)
|
int *page_st)
|
||||||
{
|
{
|
||||||
@ -1941,7 +1956,7 @@ restart:
|
|||||||
Only reading requests can proceed until the old dirty page is flushed,
|
Only reading requests can proceed until the old dirty page is flushed,
|
||||||
all others are to be suspended, then resubmitted
|
all others are to be suspended, then resubmitted
|
||||||
*/
|
*/
|
||||||
if (!wrmode && !(block->status & PCBLOCK_REASSIGNED))
|
if (!wrmode && block_is_copied && !(block->status & PCBLOCK_REASSIGNED))
|
||||||
{
|
{
|
||||||
if (reg_req)
|
if (reg_req)
|
||||||
reg_requests(pagecache, block, 1);
|
reg_requests(pagecache, block, 1);
|
||||||
@ -2135,7 +2150,7 @@ restart:
|
|||||||
(my_bool)(block->hash_link ? 1 : 0));
|
(my_bool)(block->hash_link ? 1 : 0));
|
||||||
PCBLOCK_INFO(block);
|
PCBLOCK_INFO(block);
|
||||||
block->status= error ? PCBLOCK_ERROR : 0;
|
block->status= error ? PCBLOCK_ERROR : 0;
|
||||||
block->error= (int16) my_errno;
|
block->error= error ? (int16) my_errno : 0;
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
block->type= PAGECACHE_EMPTY_PAGE;
|
block->type= PAGECACHE_EMPTY_PAGE;
|
||||||
if (error)
|
if (error)
|
||||||
@ -2536,22 +2551,13 @@ static my_bool make_lock_and_pin(PAGECACHE *pagecache,
|
|||||||
my_bool any)
|
my_bool any)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("make_lock_and_pin");
|
DBUG_ENTER("make_lock_and_pin");
|
||||||
|
DBUG_PRINT("enter", ("block: 0x%lx (%u) lock: %s pin: %s any %d",
|
||||||
DBUG_PRINT("enter", ("block: 0x%lx", (ulong)block));
|
|
||||||
#ifndef DBUG_OFF
|
|
||||||
if (block)
|
|
||||||
{
|
|
||||||
DBUG_PRINT("enter", ("block: 0x%lx (%u) wrlocks: %u rdlocks: %u "
|
|
||||||
"rdlocks_q: %u pins: %u lock: %s pin: %s any %d",
|
|
||||||
(ulong)block, PCBLOCK_NUMBER(pagecache, block),
|
(ulong)block, PCBLOCK_NUMBER(pagecache, block),
|
||||||
block->wlocks, block->rlocks, block->rlocks_queue,
|
|
||||||
block->pins,
|
|
||||||
page_cache_page_lock_str[lock],
|
page_cache_page_lock_str[lock],
|
||||||
page_cache_page_pin_str[pin], (int)any));
|
page_cache_page_pin_str[pin], (int)any));
|
||||||
PCBLOCK_INFO(block);
|
PCBLOCK_INFO(block);
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
DBUG_ASSERT(block);
|
||||||
DBUG_ASSERT(!any ||
|
DBUG_ASSERT(!any ||
|
||||||
((lock == PAGECACHE_LOCK_LEFT_UNLOCKED) &&
|
((lock == PAGECACHE_LOCK_LEFT_UNLOCKED) &&
|
||||||
(pin == PAGECACHE_UNPIN)));
|
(pin == PAGECACHE_UNPIN)));
|
||||||
@ -2619,17 +2625,13 @@ static my_bool make_lock_and_pin(PAGECACHE *pagecache,
|
|||||||
DBUG_ASSERT(0); /* Never should happened */
|
DBUG_ASSERT(0); /* Never should happened */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DBUG_OFF
|
|
||||||
if (block)
|
|
||||||
PCBLOCK_INFO(block);
|
PCBLOCK_INFO(block);
|
||||||
#endif
|
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
retry:
|
retry:
|
||||||
DBUG_PRINT("INFO", ("Retry block 0x%lx", (ulong)block));
|
DBUG_PRINT("INFO", ("Retry block 0x%lx", (ulong)block));
|
||||||
PCBLOCK_INFO(block);
|
PCBLOCK_INFO(block);
|
||||||
DBUG_ASSERT(block->hash_link->requests > 0);
|
DBUG_ASSERT(block->hash_link->requests > 0);
|
||||||
block->hash_link->requests--;
|
block->hash_link->requests--;
|
||||||
PCBLOCK_INFO(block);
|
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2661,7 +2663,6 @@ static void read_block(PAGECACHE *pagecache,
|
|||||||
PAGECACHE_BLOCK_LINK *block,
|
PAGECACHE_BLOCK_LINK *block,
|
||||||
my_bool primary)
|
my_bool primary)
|
||||||
{
|
{
|
||||||
|
|
||||||
DBUG_ENTER("read_block");
|
DBUG_ENTER("read_block");
|
||||||
DBUG_PRINT("enter", ("read block: 0x%lx primary: %d",
|
DBUG_PRINT("enter", ("read block: 0x%lx primary: %d",
|
||||||
(ulong)block, primary));
|
(ulong)block, primary));
|
||||||
@ -2823,8 +2824,7 @@ void pagecache_unlock(PAGECACHE *pagecache,
|
|||||||
page_cache_page_pin_str[pin]));
|
page_cache_page_pin_str[pin]));
|
||||||
/* we do not allow any lock/pin increasing here */
|
/* we do not allow any lock/pin increasing here */
|
||||||
DBUG_ASSERT(pin != PAGECACHE_PIN);
|
DBUG_ASSERT(pin != PAGECACHE_PIN);
|
||||||
DBUG_ASSERT(lock != PAGECACHE_LOCK_READ);
|
DBUG_ASSERT(lock != PAGECACHE_LOCK_READ && lock != PAGECACHE_LOCK_WRITE);
|
||||||
DBUG_ASSERT(lock != PAGECACHE_LOCK_WRITE);
|
|
||||||
|
|
||||||
pagecache_pthread_mutex_lock(&pagecache->cache_lock);
|
pagecache_pthread_mutex_lock(&pagecache->cache_lock);
|
||||||
/*
|
/*
|
||||||
@ -2835,7 +2835,7 @@ void pagecache_unlock(PAGECACHE *pagecache,
|
|||||||
|
|
||||||
inc_counter_for_resize_op(pagecache);
|
inc_counter_for_resize_op(pagecache);
|
||||||
/* See NOTE for pagecache_unlock about registering requests */
|
/* See NOTE for pagecache_unlock about registering requests */
|
||||||
block= find_block(pagecache, file, pageno, 0, 0,
|
block= find_block(pagecache, file, pageno, 0, 0, 0,
|
||||||
pin == PAGECACHE_PIN_LEFT_UNPINNED, &page_st);
|
pin == PAGECACHE_PIN_LEFT_UNPINNED, &page_st);
|
||||||
PCBLOCK_INFO(block);
|
PCBLOCK_INFO(block);
|
||||||
DBUG_ASSERT(block != 0 && page_st == PAGE_READ);
|
DBUG_ASSERT(block != 0 && page_st == PAGE_READ);
|
||||||
@ -2924,7 +2924,7 @@ void pagecache_unpin(PAGECACHE *pagecache,
|
|||||||
|
|
||||||
inc_counter_for_resize_op(pagecache);
|
inc_counter_for_resize_op(pagecache);
|
||||||
/* See NOTE for pagecache_unlock about registering requests */
|
/* See NOTE for pagecache_unlock about registering requests */
|
||||||
block= find_block(pagecache, file, pageno, 0, 0, 0, &page_st);
|
block= find_block(pagecache, file, pageno, 0, 0, 0, 0, &page_st);
|
||||||
DBUG_ASSERT(block != 0);
|
DBUG_ASSERT(block != 0);
|
||||||
DBUG_ASSERT(page_st == PAGE_READ);
|
DBUG_ASSERT(page_st == PAGE_READ);
|
||||||
/* we can't unpin such page without unlock */
|
/* we can't unpin such page without unlock */
|
||||||
@ -3367,7 +3367,7 @@ restart:
|
|||||||
/* See NOTE for pagecache_unlock about registering requests. */
|
/* See NOTE for pagecache_unlock about registering requests. */
|
||||||
reg_request= ((new_pin == PAGECACHE_PIN_LEFT_UNPINNED) ||
|
reg_request= ((new_pin == PAGECACHE_PIN_LEFT_UNPINNED) ||
|
||||||
(new_pin == PAGECACHE_PIN));
|
(new_pin == PAGECACHE_PIN));
|
||||||
block= find_block(pagecache, file, pageno, level,
|
block= find_block(pagecache, file, pageno, level, buff != 0,
|
||||||
lock == PAGECACHE_LOCK_WRITE,
|
lock == PAGECACHE_LOCK_WRITE,
|
||||||
reg_request, &page_st);
|
reg_request, &page_st);
|
||||||
DBUG_PRINT("info", ("Block type: %s current type %s",
|
DBUG_PRINT("info", ("Block type: %s current type %s",
|
||||||
@ -3785,7 +3785,6 @@ restart:
|
|||||||
/* See NOTE for pagecache_unlock about registering requests. */
|
/* See NOTE for pagecache_unlock about registering requests. */
|
||||||
if (pin == PAGECACHE_PIN)
|
if (pin == PAGECACHE_PIN)
|
||||||
reg_requests(pagecache, block, 1);
|
reg_requests(pagecache, block, 1);
|
||||||
DBUG_ASSERT(block != 0);
|
|
||||||
if (make_lock_and_pin(pagecache, block, lock, pin, FALSE))
|
if (make_lock_and_pin(pagecache, block, lock, pin, FALSE))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -3964,7 +3963,7 @@ restart:
|
|||||||
reg_request= ((pin == PAGECACHE_PIN_LEFT_UNPINNED) ||
|
reg_request= ((pin == PAGECACHE_PIN_LEFT_UNPINNED) ||
|
||||||
(pin == PAGECACHE_PIN));
|
(pin == PAGECACHE_PIN));
|
||||||
block= find_block(pagecache, file, pageno, level,
|
block= find_block(pagecache, file, pageno, level,
|
||||||
TRUE,
|
TRUE, FALSE,
|
||||||
reg_request, &page_st);
|
reg_request, &page_st);
|
||||||
if (!block)
|
if (!block)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (C) 2006, 2007 MySQL AB
|
/* Copyright (C) 2006, 2007 MySQL AB
|
||||||
Copyright (C) 2010 Monty Program Ab
|
Copyright (C) 2010-2011 Monty Program Ab
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -1292,6 +1292,21 @@ prototype_redo_exec_hook(FILE_ID)
|
|||||||
{
|
{
|
||||||
tprint(tracef, " Closing table '%s'\n", info->s->open_file_name.str);
|
tprint(tracef, " Closing table '%s'\n", info->s->open_file_name.str);
|
||||||
prepare_table_for_close(info, rec->lsn);
|
prepare_table_for_close(info, rec->lsn);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Ensure that open count is 1 on close. This is needed as the
|
||||||
|
table may initially had an open_count > 0 when we initially
|
||||||
|
opened it as the server may have crashed without closing it
|
||||||
|
properly. As we now have applied all redo's for the table up to
|
||||||
|
now, we know the table is ok, so it's safe to reset the open
|
||||||
|
count to 0.
|
||||||
|
*/
|
||||||
|
if (info->s->state.open_count != 0 && info->s->reopen == 1)
|
||||||
|
{
|
||||||
|
/* let ma_close() mark the table properly closed */
|
||||||
|
info->s->state.open_count= 1;
|
||||||
|
info->s->global_changed= 1;
|
||||||
|
}
|
||||||
if (maria_close(info))
|
if (maria_close(info))
|
||||||
{
|
{
|
||||||
eprint(tracef, "Failed to close table");
|
eprint(tracef, "Failed to close table");
|
||||||
@ -3412,7 +3427,7 @@ static int close_all_tables(void)
|
|||||||
*/
|
*/
|
||||||
if (info->s->state.open_count != 0)
|
if (info->s->state.open_count != 0)
|
||||||
{
|
{
|
||||||
/* let ma_close() mark the table properly closed */
|
/* let maria_close() mark the table properly closed */
|
||||||
info->s->state.open_count= 1;
|
info->s->state.open_count= 1;
|
||||||
info->s->global_changed= 1;
|
info->s->global_changed= 1;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ static CHARSET_INFO *set_collation;
|
|||||||
static int stopwords_inited= 0;
|
static int stopwords_inited= 0;
|
||||||
static MY_TMPDIR maria_chk_tmpdir;
|
static MY_TMPDIR maria_chk_tmpdir;
|
||||||
static my_bool opt_transaction_logging, opt_debug, opt_require_control_file;
|
static my_bool opt_transaction_logging, opt_debug, opt_require_control_file;
|
||||||
static my_bool opt_warning_for_wrong_transid;
|
static my_bool opt_warning_for_wrong_transid, opt_update_state;
|
||||||
|
|
||||||
static const char *type_names[]=
|
static const char *type_names[]=
|
||||||
{
|
{
|
||||||
@ -348,7 +348,8 @@ static struct my_option my_long_options[] =
|
|||||||
"Mark tables as crashed if any errors were found and clean if check didn't "
|
"Mark tables as crashed if any errors were found and clean if check didn't "
|
||||||
"find any errors. This allows one to get rid of warnings like 'table not "
|
"find any errors. This allows one to get rid of warnings like 'table not "
|
||||||
"properly closed'",
|
"properly closed'",
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
&opt_update_state, &opt_update_state, 0, GET_BOOL, NO_ARG,
|
||||||
|
1, 0, 0, 0, 0, 0},
|
||||||
{"unpack", 'u',
|
{"unpack", 'u',
|
||||||
"Unpack file packed with maria_pack.",
|
"Unpack file packed with maria_pack.",
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
@ -483,8 +484,12 @@ static void usage(void)
|
|||||||
-i, --information Print statistics information about table that is checked.\n\
|
-i, --information Print statistics information about table that is checked.\n\
|
||||||
-m, --medium-check Faster than extend-check, but only finds 99.99% of\n\
|
-m, --medium-check Faster than extend-check, but only finds 99.99% of\n\
|
||||||
all errors. Should be good enough for most cases.\n\
|
all errors. Should be good enough for most cases.\n\
|
||||||
|
-T, --read-only Don't mark table as checked.\n\
|
||||||
-U, --update-state Mark tables as crashed if you find any errors.\n\
|
-U, --update-state Mark tables as crashed if you find any errors.\n\
|
||||||
-T, --read-only Don't mark table as checked.\n");
|
--warning-for-wrong-transaction-id\n\
|
||||||
|
Give a warning if we find a transaction id in the table that is bigger\n\
|
||||||
|
than what exists in the control file. Use --skip-... to disable warning\n\
|
||||||
|
");
|
||||||
|
|
||||||
puts("\
|
puts("\
|
||||||
Recover (repair)/ options (When using '--recover' or '--safe-recover'):\n\
|
Recover (repair)/ options (When using '--recover' or '--safe-recover'):\n\
|
||||||
@ -856,6 +861,7 @@ static void get_options(register int *argc,register char ***argv)
|
|||||||
default_argv= *argv;
|
default_argv= *argv;
|
||||||
if (isatty(fileno(stdout)))
|
if (isatty(fileno(stdout)))
|
||||||
check_param.testflag|=T_WRITE_LOOP;
|
check_param.testflag|=T_WRITE_LOOP;
|
||||||
|
check_param.testflag= T_UPDATE_STATE;
|
||||||
|
|
||||||
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
||||||
exit(ho_error);
|
exit(ho_error);
|
||||||
@ -1326,13 +1332,18 @@ static int maria_chk(HA_CHECK *param, char *filename)
|
|||||||
(my_bool) !test(param->testflag & T_AUTO_INC));
|
(my_bool) !test(param->testflag & T_AUTO_INC));
|
||||||
|
|
||||||
if (info->update & HA_STATE_CHANGED && ! (param->testflag & T_READONLY))
|
if (info->update & HA_STATE_CHANGED && ! (param->testflag & T_READONLY))
|
||||||
|
{
|
||||||
error|=maria_update_state_info(param, info,
|
error|=maria_update_state_info(param, info,
|
||||||
UPDATE_OPEN_COUNT |
|
UPDATE_OPEN_COUNT |
|
||||||
(((param->testflag & T_REP_ANY) ?
|
(((param->testflag &
|
||||||
|
(T_REP_ANY | T_UPDATE_STATE)) ?
|
||||||
UPDATE_TIME : 0) |
|
UPDATE_TIME : 0) |
|
||||||
(state_updated ? UPDATE_STAT : 0) |
|
(state_updated ? UPDATE_STAT : 0) |
|
||||||
((param->testflag & T_SORT_RECORDS) ?
|
((param->testflag & T_SORT_RECORDS) ?
|
||||||
UPDATE_SORT : 0)));
|
UPDATE_SORT : 0)));
|
||||||
|
if (!(param->testflag & T_SILENT))
|
||||||
|
printf("State updated\n");
|
||||||
|
}
|
||||||
info->update&= ~HA_STATE_CHANGED;
|
info->update&= ~HA_STATE_CHANGED;
|
||||||
_ma_reenable_logging_for_table(info, FALSE);
|
_ma_reenable_logging_for_table(info, FALSE);
|
||||||
maria_lock_database(info, F_UNLCK);
|
maria_lock_database(info, F_UNLCK);
|
||||||
@ -1438,7 +1449,7 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name)
|
|||||||
if (share->state.check_time)
|
if (share->state.check_time)
|
||||||
{
|
{
|
||||||
get_date(buff,1,share->state.check_time);
|
get_date(buff,1,share->state.check_time);
|
||||||
printf("Recover time: %s\n",buff);
|
printf("Check/recover time: %s\n",buff);
|
||||||
}
|
}
|
||||||
if (share->base.born_transactional)
|
if (share->base.born_transactional)
|
||||||
{
|
{
|
||||||
|
@ -249,7 +249,9 @@ typedef struct st_maria_file_bitmap
|
|||||||
my_bool changed; /* 1 if page needs to be written */
|
my_bool changed; /* 1 if page needs to be written */
|
||||||
my_bool changed_not_flushed; /* 1 if some bitmap is not flushed */
|
my_bool changed_not_flushed; /* 1 if some bitmap is not flushed */
|
||||||
uint flush_all_requested; /**< If _ma_bitmap_flush_all waiting */
|
uint flush_all_requested; /**< If _ma_bitmap_flush_all waiting */
|
||||||
|
uint waiting_for_flush_all_requested; /* If someone is waiting for above */
|
||||||
uint non_flushable; /**< 0 if bitmap and log are in sync */
|
uint non_flushable; /**< 0 if bitmap and log are in sync */
|
||||||
|
uint waiting_for_non_flushable; /* If someone is waiting for above */
|
||||||
PAGECACHE_FILE file; /* datafile where bitmap is stored */
|
PAGECACHE_FILE file; /* datafile where bitmap is stored */
|
||||||
|
|
||||||
#ifdef THREAD
|
#ifdef THREAD
|
||||||
|
@ -23,8 +23,7 @@
|
|||||||
src in a buffer with tot_length bytes.
|
src in a buffer with tot_length bytes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
void bchange(register uchar *dst, size_t old_length, register const uchar *src,
|
void bchange(register uchar *dst, size_t old_length, register const uchar *src,
|
||||||
size_t new_length, size_t tot_length)
|
size_t new_length, size_t tot_length)
|
||||||
|
@ -21,8 +21,7 @@
|
|||||||
comparing a shorter string with bcmp.
|
comparing a shorter string with bcmp.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_valgrind
|
#ifdef HAVE_valgrind
|
||||||
#undef bcmp
|
#undef bcmp
|
||||||
|
@ -29,8 +29,7 @@
|
|||||||
code is presented for your interest and amusement.
|
code is presented for your interest and amusement.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#if !defined(bfill) && !defined(HAVE_BFILL)
|
#if !defined(bfill) && !defined(HAVE_BFILL)
|
||||||
|
|
||||||
|
@ -36,8 +36,7 @@
|
|||||||
code is presented for your interest and amusement.
|
code is presented for your interest and amusement.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#if !defined(HAVE_BMOVE) && !defined(bmove)
|
#if !defined(HAVE_BMOVE) && !defined(bmove)
|
||||||
|
|
||||||
|
@ -25,8 +25,7 @@
|
|||||||
fastest way to move a mutiple of 512 byte.
|
fastest way to move a mutiple of 512 byte.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#ifndef bmove512
|
#ifndef bmove512
|
||||||
|
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
"src-len" to the destination "dst-len" counting downwards.
|
"src-len" to the destination "dst-len" counting downwards.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#if defined(MC68000) && defined(DS90)
|
#if defined(MC68000) && defined(DS90)
|
||||||
|
|
||||||
|
@ -13,8 +13,7 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_string.h>
|
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <my_xml.h>
|
#include <my_xml.h>
|
||||||
@ -250,7 +249,7 @@ static void
|
|||||||
fprint_copyright(FILE *file)
|
fprint_copyright(FILE *file)
|
||||||
{
|
{
|
||||||
fprintf(file,
|
fprintf(file,
|
||||||
"/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.\n"
|
"/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems Inc., 2010-2011 Monty Program Ab\n"
|
||||||
"\n"
|
"\n"
|
||||||
" This program is free software; you can redistribute it and/or modify\n"
|
" This program is free software; you can redistribute it and/or modify\n"
|
||||||
" it under the terms of the GNU General Public License as published by\n"
|
" it under the terms of the GNU General Public License as published by\n"
|
||||||
|
@ -26,9 +26,8 @@
|
|||||||
* .configure. mbmaxlen_big5=2
|
* .configure. mbmaxlen_big5=2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_big5
|
#ifdef HAVE_CHARSET_big5
|
||||||
|
|
||||||
|
@ -18,9 +18,8 @@
|
|||||||
/* This file is for binary pseudo charset, created by bar@mysql.com */
|
/* This file is for binary pseudo charset, created by bar@mysql.com */
|
||||||
|
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
static uchar ctype_bin[]=
|
static uchar ctype_bin[]=
|
||||||
{
|
{
|
||||||
|
@ -16,9 +16,8 @@
|
|||||||
/* This file is for cp932 charaset (Windows Japanese),
|
/* This file is for cp932 charaset (Windows Japanese),
|
||||||
and created based on ctype-sjis.c file */
|
and created based on ctype-sjis.c file */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_cp932
|
#ifdef HAVE_CHARSET_cp932
|
||||||
|
|
||||||
|
@ -65,9 +65,8 @@
|
|||||||
|
|
||||||
#ifdef REAL_MYSQL
|
#ifdef REAL_MYSQL
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -427,8 +426,7 @@ static my_bool my_like_range_czech(CHARSET_INFO *cs __attribute__((unused)),
|
|||||||
*
|
*
|
||||||
* definition table reworked by Jaromir Dolecek <dolecek@ics.muni.cz>
|
* definition table reworked by Jaromir Dolecek <dolecek@ics.muni.cz>
|
||||||
*/
|
*/
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
static uchar NEAR ctype_czech[257] = {
|
static uchar NEAR ctype_czech[257] = {
|
||||||
0,
|
0,
|
||||||
|
@ -25,9 +25,8 @@
|
|||||||
* .configure. mbmaxlen_euc_kr=2
|
* .configure. mbmaxlen_euc_kr=2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_euckr
|
#ifdef HAVE_CHARSET_euckr
|
||||||
|
|
||||||
|
@ -26,9 +26,8 @@ ctype-ujis.c file.
|
|||||||
* .configure. mbmaxlen_eucjpms=3
|
* .configure. mbmaxlen_eucjpms=3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_eucjpms
|
#ifdef HAVE_CHARSET_eucjpms
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_dec8
|
#ifdef HAVE_CHARSET_dec8
|
||||||
|
@ -23,9 +23,8 @@
|
|||||||
* .configure. mbmaxlen_gb2312=2
|
* .configure. mbmaxlen_gb2312=2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_gb2312
|
#ifdef HAVE_CHARSET_gb2312
|
||||||
|
|
||||||
|
@ -26,9 +26,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_gbk
|
#ifdef HAVE_CHARSET_gbk
|
||||||
|
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
static uchar ctype_latin1[] = {
|
static uchar ctype_latin1[] = {
|
||||||
0,
|
0,
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_ctype.h"
|
#include <m_ctype.h>
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#ifdef USE_MB
|
#ifdef USE_MB
|
||||||
|
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
#include "my_sys.h" /* Needed for MY_ERRNO_ERANGE */
|
#include "my_sys.h" /* Needed for MY_ERRNO_ERANGE */
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
@ -16,9 +16,8 @@
|
|||||||
/* This file is for Shift JIS charset, and created by tommy@valley.ne.jp.
|
/* This file is for Shift JIS charset, and created by tommy@valley.ne.jp.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_sjis
|
#ifdef HAVE_CHARSET_sjis
|
||||||
|
|
||||||
|
@ -47,11 +47,10 @@
|
|||||||
* .configure. strxfrm_multiply_tis620=4
|
* .configure. strxfrm_multiply_tis620=4
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <my_sys.h>
|
#include <m_ctype.h>
|
||||||
#include "m_string.h"
|
|
||||||
#include "m_ctype.h"
|
|
||||||
#include "t_ctype.h"
|
#include "t_ctype.h"
|
||||||
|
#include <my_sys.h>
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_tis620
|
#ifdef HAVE_CHARSET_tis620
|
||||||
|
|
||||||
|
@ -32,10 +32,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define MY_UCA_CNT_FLAG_SIZE 4096
|
#define MY_UCA_CNT_FLAG_SIZE 4096
|
||||||
#define MY_UCA_CNT_FLAG_MASK 4095
|
#define MY_UCA_CNT_FLAG_MASK 4095
|
||||||
|
@ -17,11 +17,9 @@
|
|||||||
|
|
||||||
/* UCS2 support. Written by Alexander Barkov <bar@mysql.com> */
|
/* UCS2 support. Written by Alexander Barkov <bar@mysql.com> */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
|
#include <m_ctype.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include "m_string.h"
|
|
||||||
#include "m_ctype.h"
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,9 +25,8 @@
|
|||||||
* .configure. mbmaxlen_ujis=3
|
* .configure. mbmaxlen_ujis=3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET_ujis
|
#ifdef HAVE_CHARSET_ujis
|
||||||
|
|
||||||
|
@ -18,10 +18,8 @@
|
|||||||
/* UTF8 according RFC 2279 */
|
/* UTF8 according RFC 2279 */
|
||||||
/* Written by Alexander Barkov <bar@udm.net> */
|
/* Written by Alexander Barkov <bar@udm.net> */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#ifndef EILSEQ
|
#ifndef EILSEQ
|
||||||
#define EILSEQ ENOENT
|
#define EILSEQ ENOENT
|
||||||
|
@ -39,9 +39,8 @@
|
|||||||
#define REAL_MYSQL
|
#define REAL_MYSQL
|
||||||
#ifdef REAL_MYSQL
|
#ifdef REAL_MYSQL
|
||||||
|
|
||||||
#include "my_global.h"
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -13,13 +13,9 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include <my_xml.h>
|
#include <my_xml.h>
|
||||||
#ifndef SCO
|
|
||||||
#include <m_string.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -99,11 +99,10 @@
|
|||||||
implementation-defined.
|
implementation-defined.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include <myisampack.h>
|
#include <myisampack.h>
|
||||||
#include <my_sys.h> /* for my_alloca */
|
#include <my_sys.h> /* for my_alloca */
|
||||||
#include <m_string.h>
|
|
||||||
#include <decimal.h>
|
#include <decimal.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -20,10 +20,9 @@
|
|||||||
#undef DBUG_OFF
|
#undef DBUG_OFF
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
uchar NEAR to_upper[256];
|
uchar NEAR to_upper[256];
|
||||||
uchar NEAR to_lower[256],NEAR sort_order[256];
|
uchar NEAR to_lower[256],NEAR sort_order[256];
|
||||||
|
@ -13,8 +13,7 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
_dig_vec arrays are public because they are used in several outer places.
|
_dig_vec arrays are public because they are used in several outer places.
|
||||||
|
@ -21,8 +21,7 @@
|
|||||||
A empty t is allways a prefix.
|
A empty t is allways a prefix.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
int is_prefix(register const char *s, register const char *t)
|
int is_prefix(register const char *s, register const char *t)
|
||||||
{
|
{
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
char *llstr(longlong value,char *buff)
|
char *llstr(longlong value,char *buff)
|
||||||
{
|
{
|
||||||
|
@ -37,8 +37,7 @@
|
|||||||
itoa assumes that 10 -base numbers are allways signed and other arn't.
|
itoa assumes that 10 -base numbers are allways signed and other arn't.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#if defined(HAVE_LONG_LONG) && !defined(longlong2str) && !defined(HAVE_LONGLONG2STR)
|
#if defined(HAVE_LONG_LONG) && !defined(longlong2str) && !defined(HAVE_LONGLONG2STR)
|
||||||
|
|
||||||
|
@ -20,8 +20,7 @@
|
|||||||
_dig_vector in a portable manner.
|
_dig_vector in a portable manner.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
extern char *longlong2str_with_dig_vector(longlong val,char *dst,int radix,
|
extern char *longlong2str_with_dig_vector(longlong val,char *dst,int radix,
|
||||||
const char *dig_vector);
|
const char *dig_vector);
|
||||||
|
@ -21,9 +21,8 @@
|
|||||||
frequently.
|
frequently.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
|
|
||||||
char *my_strchr(CHARSET_INFO *cs, const char *str, const char *end,
|
char *my_strchr(CHARSET_INFO *cs, const char *str, const char *end,
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <my_sys.h> /* Needed for MY_ERRNO_ERANGE */
|
#include <my_sys.h> /* Needed for MY_ERRNO_ERANGE */
|
||||||
#include <m_string.h>
|
|
||||||
|
|
||||||
#undef ULONGLONG_MAX
|
#undef ULONGLONG_MAX
|
||||||
/*
|
/*
|
||||||
|
@ -13,10 +13,9 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_string.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Limited snprintf() implementations
|
Limited snprintf() implementations
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
the pattern counted from the begining of the string.
|
the pattern counted from the begining of the string.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
size_t r_strinstr(reg1 const char * str, size_t from, reg4 const char * search)
|
size_t r_strinstr(reg1 const char * str, size_t from, reg4 const char * search)
|
||||||
{
|
{
|
||||||
|
@ -37,9 +37,8 @@
|
|||||||
call has no problems.
|
call has no problems.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
#include "my_sys.h" /* defines errno */
|
#include "my_sys.h" /* defines errno */
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
@ -13,8 +13,7 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_string.h>
|
|
||||||
|
|
||||||
static void *my_str_malloc_default(size_t size)
|
static void *my_str_malloc_default(size_t size)
|
||||||
{
|
{
|
||||||
|
@ -15,9 +15,8 @@
|
|||||||
|
|
||||||
/* Test of all stringfunktions that is coded in assembler */
|
/* Test of all stringfunktions that is coded in assembler */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#define F_LEN 8
|
#define F_LEN 8
|
||||||
#define F_CHAR 'A'
|
#define F_CHAR 'A'
|
||||||
@ -50,10 +49,10 @@ int main(void)
|
|||||||
errors=tests=0;
|
errors=tests=0;
|
||||||
init_strings();
|
init_strings();
|
||||||
|
|
||||||
test_arg("bcmp(from,to,5)",(long) my_test(bcmp(from,to,5)),1L);
|
test_arg("bcmp(from,to,5)",(long) my_test(bcmp((uchar*) from, (uchar*) to,5)),1L);
|
||||||
test_arg("bcmp(from,from,5)",(long) bcmp(from,from,5),0L);
|
test_arg("bcmp(from,from,5)",(long) bcmp((uchar*) from, (uchar*) from,5),0L);
|
||||||
|
|
||||||
test_arg("bcmp(from,to,0)",(long) bcmp(from,to,0),0L);
|
test_arg("bcmp(from,to,0)",(long) bcmp((uchar*) from, (uchar*) to,0),0L);
|
||||||
test_arg("strend(from)",(long) strend(from),(long) from+F_LEN);
|
test_arg("strend(from)",(long) strend(from),(long) from+F_LEN);
|
||||||
test_arg("strchr(v1,'M')",(long) strchr(v1,'M'),(long) v1);
|
test_arg("strchr(v1,'M')",(long) strchr(v1,'M'),(long) v1);
|
||||||
test_arg("strchr(v1,'y')",(long) strchr(v1,'y'),(long) v1+4);
|
test_arg("strchr(v1,'y')",(long) strchr(v1,'y'),(long) v1+4);
|
||||||
@ -90,10 +89,10 @@ int main(void)
|
|||||||
test_strarg("bmove(to,from,4)",(bmove(to,from,4),0L),INT_MAX32,4,F_CHAR,
|
test_strarg("bmove(to,from,4)",(bmove(to,from,4),0L),INT_MAX32,4,F_CHAR,
|
||||||
0,0);
|
0,0);
|
||||||
test_strarg("bmove(to,from,0)",(bmove(to,from,0),0L),INT_MAX32,0,0);
|
test_strarg("bmove(to,from,0)",(bmove(to,from,0),0L),INT_MAX32,0,0);
|
||||||
test_strarg("bmove_upp(to+6,from+6,3)",(bmove_upp(to+6,from+6,3),0L),INT_MAX32,
|
test_strarg("bmove_upp(to+6,from+6,3)",(bmove_upp((uchar*) to+6, (uchar*) from+6,3),0L),INT_MAX32,
|
||||||
3,T_CHAR,3,F_CHAR,0,0);
|
3,T_CHAR,3,F_CHAR,0,0);
|
||||||
test_strarg("bmove_upp(to,from,0)",(bmove_upp(to,from,0),0L),INT_MAX32,0,0);
|
test_strarg("bmove_upp(to,from,0)",(bmove_upp((uchar*) to, (uchar*) from,0),0L),INT_MAX32,0,0);
|
||||||
test_strarg("bmove_align(to,from,8)",(bmove_align(to,from,8),0L),INT_MAX32,
|
test_strarg("bmove_align(to,from,8)",(bmove_align((uchar*) to, (uchar*) from,8),0L),INT_MAX32,
|
||||||
8,F_CHAR,0,0);
|
8,F_CHAR,0,0);
|
||||||
test_strarg("strappend(to,3,' ')",(strappend(to,3,' '),0L),INT_MAX32,
|
test_strarg("strappend(to,3,' ')",(strappend(to,3,' '),0L),INT_MAX32,
|
||||||
3,T_CHAR,1,0,T_LEN-4,T_CHAR,1,0,0,0);
|
3,T_CHAR,1,0,T_LEN-4,T_CHAR,1,0,0,0);
|
||||||
@ -124,7 +123,7 @@ int main(void)
|
|||||||
test_strarg("strxnmov(to,2,\"!!\",NullS)",strxnmov(to,2,"!!","xx",NullS),to+2,2,'!',0,0,0);
|
test_strarg("strxnmov(to,2,\"!!\",NullS)",strxnmov(to,2,"!!","xx",NullS),to+2,2,'!',0,0,0);
|
||||||
test_strarg("strxnmov(to,2,\"!\",\"x\",\"y\",NullS)",strxnmov(to,2,"!","x","y",NullS),to+2,1,'!',1,'x',0,0,0);
|
test_strarg("strxnmov(to,2,\"!\",\"x\",\"y\",NullS)",strxnmov(to,2,"!","x","y",NullS),to+2,1,'!',1,'x',0,0,0);
|
||||||
|
|
||||||
test_strarg("bchange(to,2,from,4,6)",(bchange(to,2,from,4,6),0L),INT_MAX32,
|
test_strarg("bchange(to,2,from,4,6)",(bchange((uchar*) to,2,(uchar*) from,4,6),0L),INT_MAX32,
|
||||||
4,F_CHAR,2,T_CHAR,0,0);
|
4,F_CHAR,2,T_CHAR,0,0);
|
||||||
|
|
||||||
printf("tests: %d errors: %d\n",tests,errors);
|
printf("tests: %d errors: %d\n",tests,errors);
|
||||||
@ -233,7 +232,7 @@ int compare_buff(const char *message, char * b1, char * b2, int length,
|
|||||||
{
|
{
|
||||||
int i,error=0;
|
int i,error=0;
|
||||||
|
|
||||||
if (bcmp(b1,b2,length))
|
if (bcmp((uchar*) b1, (uchar*) b2, length))
|
||||||
{
|
{
|
||||||
errors++;
|
errors++;
|
||||||
printf("func: '%s' Buffers differ\nIs: ",message);
|
printf("func: '%s' Buffers differ\nIs: ",message);
|
||||||
@ -259,19 +258,19 @@ int compare_buff(const char *message, char * b1, char * b2, int length,
|
|||||||
return error;
|
return error;
|
||||||
} /* compare_buff */
|
} /* compare_buff */
|
||||||
|
|
||||||
/* These are here to be loaded and examined */
|
/* These are here to be loaded and examined in debugger */
|
||||||
|
|
||||||
extern void dummy_functions(void);
|
extern void dummy_functions(void);
|
||||||
|
|
||||||
void dummy_functions(void)
|
void dummy_functions(void)
|
||||||
{
|
{
|
||||||
VOID(memchr(from,'a',5));
|
(void) memchr(from,'a',5);
|
||||||
VOID(memcmp(from,to,5));
|
(void) memcmp(from,to,5);
|
||||||
VOID(memcpy(from,to,5));
|
(void) memcpy(from,to,5);
|
||||||
VOID(memset(from,' ',5));
|
(void) memset(from,' ',5);
|
||||||
VOID(strcmp(from,to));
|
(void) strcmp(from,to);
|
||||||
VOID(strcpy(from,to));
|
(void) strcpy(from,to);
|
||||||
VOID(strstr(from,to));
|
(void) strstr(from,to);
|
||||||
VOID(strrchr(from,'a'));
|
(void) strrchr(from,'a');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,7 @@
|
|||||||
trunked. The des+len character is allways set to NULL.
|
trunked. The des+len character is allways set to NULL.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
|
|
||||||
void strappend(register char *s, size_t len, pchar fill)
|
void strappend(register char *s, size_t len, pchar fill)
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
occurs, or a pointer to the end-null of s if c does not occur in s.
|
occurs, or a pointer to the end-null of s if c does not occur in s.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#if defined(MC68000) && defined(DS90)
|
#if defined(MC68000) && defined(DS90)
|
||||||
|
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
char * strcont(reg1 const char *str,reg2 const char *set)
|
char * strcont(reg1 const char *str,reg2 const char *set)
|
||||||
{
|
{
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
Beware: the asm version works only if strlen(s) < 65535.
|
Beware: the asm version works only if strlen(s) < 65535.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#if VaxAsm
|
#if VaxAsm
|
||||||
|
|
||||||
|
@ -23,8 +23,7 @@
|
|||||||
strfill() returns pointer to dest+len;
|
strfill() returns pointer to dest+len;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
char * strfill(char *s, size_t len, pchar fill)
|
char * strfill(char *s, size_t len, pchar fill)
|
||||||
{
|
{
|
||||||
|
31
strings/strings_def.h
Normal file
31
strings/strings_def.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright (C) 2011 Monty Program Ab
|
||||||
|
|
||||||
|
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; version 2 of the License.
|
||||||
|
|
||||||
|
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
|
/* This file is to be include first in all files in the string directory */
|
||||||
|
|
||||||
|
#include <my_global.h> /* Define standar vars */
|
||||||
|
#include "m_string.h" /* Exernal defintions of string functions */
|
||||||
|
|
||||||
|
/*
|
||||||
|
We can't use the original DBUG_ASSERT() (which includes _db_flush())
|
||||||
|
in the strings library as libdbug is compiled after the the strings
|
||||||
|
library and we don't want to have strings depending on libdbug which
|
||||||
|
depends on mysys and strings.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(DBUG_OFF)
|
||||||
|
#undef DBUG_ASSERT
|
||||||
|
#define DBUG_ASSERT(A) assert(A)
|
||||||
|
#endif
|
@ -25,8 +25,7 @@
|
|||||||
char is 1.
|
char is 1.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
size_t strinstr(reg1 const char *str,reg4 const char *search)
|
size_t strinstr(reg1 const char *str,reg4 const char *search)
|
||||||
{
|
{
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
strmake() returns pointer to closing null
|
strmake() returns pointer to closing null
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
char *strmake(register char *dst, register const char *src, size_t length)
|
char *strmake(register char *dst, register const char *src, size_t length)
|
||||||
{
|
{
|
||||||
|
@ -21,8 +21,7 @@
|
|||||||
into dst, which seems useful.
|
into dst, which seems useful.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#ifndef strmov
|
#ifndef strmov
|
||||||
|
|
||||||
|
@ -13,8 +13,7 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
/* A trivial implementation */
|
/* A trivial implementation */
|
||||||
char *strmov_overlapp(char *dst, const char *src)
|
char *strmov_overlapp(char *dst, const char *src)
|
||||||
|
@ -20,8 +20,7 @@
|
|||||||
strnlen(s, len) returns the length of s or len if s is longer than len.
|
strnlen(s, len) returns the length of s or len if s is longer than len.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#ifndef HAVE_STRNLEN
|
#ifndef HAVE_STRNLEN
|
||||||
|
|
||||||
|
@ -20,8 +20,7 @@
|
|||||||
truncated.
|
truncated.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
char *strnmov(register char *dst, register const char *src, size_t n)
|
char *strnmov(register char *dst, register const char *src, size_t n)
|
||||||
{
|
{
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
#ifndef HAVE_STRSTR
|
#ifndef HAVE_STRSTR
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
/* see 'strtoll.c' and 'strtoull.c' for the reasons */
|
/* see 'strtoll.c' and 'strtoull.c' for the reasons */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "m_ctype.h"
|
#include <m_ctype.h>
|
||||||
#include "my_sys.h" /* defines errno */
|
#include "my_sys.h" /* defines errno */
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "my_base.h" /* Includes errno.h + EOVERFLOW */
|
#include "my_base.h" /* Includes errno.h + EOVERFLOW */
|
||||||
#include "m_ctype.h"
|
#include <m_ctype.h>
|
||||||
#ifdef HAVE_IEEEFP_H
|
#ifdef HAVE_IEEEFP_H
|
||||||
#include <ieeefp.h>
|
#include <ieeefp.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -20,8 +20,7 @@
|
|||||||
functions, especially they handle tricks for Tru64 where 'long' is
|
functions, especially they handle tricks for Tru64 where 'long' is
|
||||||
64 bit already and our 'longlong' is just a 'long'.
|
64 bit already and our 'longlong' is just a 'long'.
|
||||||
*/
|
*/
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_string.h>
|
|
||||||
|
|
||||||
#if !defined(MSDOS) && !defined(HAVE_STRTOL) && !defined(__WIN__)
|
#if !defined(MSDOS) && !defined(HAVE_STRTOL) && !defined(__WIN__)
|
||||||
#include "strto.c"
|
#include "strto.c"
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
for 'strtoll()' but no implementation, see "6.1 New C99 library functions"
|
for 'strtoll()' but no implementation, see "6.1 New C99 library functions"
|
||||||
in file '/usr/share/doclib/cc.dtk/release_notes.txt'.
|
in file '/usr/share/doclib/cc.dtk/release_notes.txt'.
|
||||||
*/
|
*/
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_string.h>
|
|
||||||
|
|
||||||
#if !defined(HAVE_STRTOLL) && defined(HAVE_LONG_LONG)
|
#if !defined(HAVE_STRTOLL) && defined(HAVE_LONG_LONG)
|
||||||
#define USE_LONGLONG
|
#define USE_LONGLONG
|
||||||
|
@ -20,8 +20,7 @@
|
|||||||
functions, especially they handle tricks for Tru64 where 'long' is
|
functions, especially they handle tricks for Tru64 where 'long' is
|
||||||
64 bit already and our 'longlong' is just a 'long'.
|
64 bit already and our 'longlong' is just a 'long'.
|
||||||
*/
|
*/
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_string.h>
|
|
||||||
|
|
||||||
#if !defined(MSDOS) && !defined(HAVE_STRTOUL)
|
#if !defined(MSDOS) && !defined(HAVE_STRTOUL)
|
||||||
#define USE_UNSIGNED
|
#define USE_UNSIGNED
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
for 'strtoull()' but no implementation, see "6.1 New C99 library functions"
|
for 'strtoull()' but no implementation, see "6.1 New C99 library functions"
|
||||||
in file '/usr/share/doclib/cc.dtk/release_notes.txt'.
|
in file '/usr/share/doclib/cc.dtk/release_notes.txt'.
|
||||||
*/
|
*/
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <m_string.h>
|
|
||||||
|
|
||||||
#if !defined(HAVE_STRTOULL) && defined(HAVE_LONG_LONG)
|
#if !defined(HAVE_STRTOULL) && defined(HAVE_LONG_LONG)
|
||||||
#define USE_UNSIGNED
|
#define USE_UNSIGNED
|
||||||
|
@ -30,8 +30,7 @@
|
|||||||
character pointer, or not the same bit pattern as NullS.
|
character pointer, or not the same bit pattern as NullS.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
|
|
||||||
char *strxmov(char *dst,const char *src, ...)
|
char *strxmov(char *dst,const char *src, ...)
|
||||||
{
|
{
|
||||||
|
@ -35,8 +35,7 @@
|
|||||||
if total-string-length >= length then dst[length] will be set to \0
|
if total-string-length >= length then dst[length] will be set to \0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
char *strxnmov(char *dst, size_t len, const char *src, ...)
|
char *strxnmov(char *dst, size_t len, const char *src, ...)
|
||||||
|
@ -13,15 +13,8 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||||
|
|
||||||
/*
|
#include "strings_def.h"
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
*/
|
|
||||||
#include <my_global.h>
|
|
||||||
#include <m_string.h>
|
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include "m_ctype.h"
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct my_ctype_name_st
|
typedef struct my_ctype_name_st
|
||||||
@ -204,7 +197,7 @@ int main(int ac, char ** av)
|
|||||||
int charnum=0;
|
int charnum=0;
|
||||||
int num=0;
|
int num=0;
|
||||||
|
|
||||||
printf("static unsigned char uctype_page%02X[256]=\n{\n",plane);
|
printf("static unsigned char uctype_page%02X[256]=\n{\n", (uint) plane);
|
||||||
|
|
||||||
for(charnum=0;charnum<256;charnum++)
|
for(charnum=0;charnum<256;charnum++)
|
||||||
{
|
{
|
||||||
@ -231,7 +224,7 @@ int main(int ac, char ** av)
|
|||||||
{
|
{
|
||||||
char plane_name[128]="NULL";
|
char plane_name[128]="NULL";
|
||||||
if(uctype[plane].ctype){
|
if(uctype[plane].ctype){
|
||||||
sprintf(plane_name,"uctype_page%02X",plane);
|
sprintf(plane_name,"uctype_page%02X",(uint) plane);
|
||||||
}
|
}
|
||||||
printf("\t{%d,%s}%s\n",uctype[plane].pctype,plane_name,plane<255?",":"");
|
printf("\t{%d,%s}%s\n",uctype[plane].pctype,plane_name,plane<255?",":"");
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
/* Do udiv and urem if machine dosn't have it */
|
/* Do udiv and urem if machine dosn't have it */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include "strings_def.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
unsigned long udiv(long unsigned int a, long unsigned int b)
|
unsigned long udiv(long unsigned int a, long unsigned int b)
|
||||||
|
@ -13,8 +13,7 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include "my_global.h"
|
#include "strings_def.h"
|
||||||
#include "m_string.h"
|
|
||||||
#include "my_xml.h"
|
#include "my_xml.h"
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user