diff options
author | unknown <monty@hundin.mysql.fi> | 2001-10-08 04:58:07 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-10-08 04:58:07 +0300 |
commit | cef1d752497f81229788e56abaf7fa62c1ab31a9 (patch) | |
tree | f8a3cf3164d5a5550378074ac8d3bf4afe105683 /mysys/mf_format.c | |
parent | bd7b4aaa7dac716bb6d54b3d1dd355f78b68f0f2 (diff) | |
download | mariadb-git-cef1d752497f81229788e56abaf7fa62c1ab31a9.tar.gz |
Updated manual about embedded version.
Speed up column-completion in 'mysql'
Don't use ISAM if HAVE_ISAM is not defined
A lot of fixes for the embedded version. All libraries are now included in libmysqld.a
Changed arguments to convert_dirname() to make it more general.
Renamed files in the 'merge' directory to all use a common prefix.
Don't compile both assembler and C functions on x86
BitKeeper/deleted/.del-mf_pack2.c~f07795bbcf57be7:
Delete: mysys/mf_pack2.c
Docs/manual.texi:
Updated chapter about embedded version
acinclude.m4:
Fix for using BDB and InnoDB with embedded
client/completion_hash.cc:
Speed up memory allocation
client/completion_hash.h:
Speed up memory allocation
client/mysql.cc:
Speed up memory allocation
client/mysqldump.c:
Fix to use now convert_dirname
client/mysqltest.c:
Fixed memory allocation bugs.
Added --basedir=#, --compress=#, --server-arg, --server-file.
Fixes for embedded version
Changed silent mode to -s instead of -q
include/my_global.h:
Update to use HAVE_ISAM
include/my_sys.h:
Cleanup of fn_format()
include/mysql.h:
Prepare FIELD struct for 4.1
include/mysql_embed.h:
Don't use ISAM in embedded version
innobase/include/srv0srv.h:
Make InnoDB startup/shutdown silent in embedded version
innobase/log/log0log.c:
Make InnoDB startup/shutdown silent in embedded version
innobase/srv/srv0srv.c:
Make InnoDB startup/shutdown silent in embedded version
innobase/srv/srv0start.c:
Make InnoDB startup/shutdown silent in embedded version
isam/isamlog.c:
new convert_dirname
libmysql/libmysql.c:
Prepare for 4.1
libmysqld/Makefile.am:
Changed to create one libmysqld.a file that includes all other libraries.
libmysqld/examples/Makefile.am:
Changed to use new libmysqld.a
libmysqld/examples/test-run:
Lot's of fixes to get new mysqltest with embedded MySQL to work.
libmysqld/lib_sql.cc:
Changed type of arguments for mysql_server_init() to make code more portable.
libmysqld/libmysqld.c:
Cleanup
merge/Makefile.am:
Rename to use common prefix.
merge/mrg_close.c:
Rename to use common prefix.
merge/mrg_create.c:
Rename to use common prefix.
merge/mrg_def.h:
Rename to use common prefix.
merge/mrg_delete.c:
Rename to use common prefix.
merge/mrg_extra.c:
Rename to use common prefix.
merge/mrg_info.c:
Rename to use common prefix.
merge/mrg_locking.c:
Rename to use common prefix.
merge/mrg_open.c:
Rename to use common prefix.
merge/mrg_panic.c:
Rename to use common prefix.
merge/mrg_rrnd.c:
Rename to use common prefix.
merge/mrg_rsame.c:
Rename to use common prefix.
merge/mrg_static.c:
Rename to use common prefix.
merge/mrg_update.c:
Rename to use common prefix.
myisam/myisamlog.c:
Use new convert_dirname
myisammrg/Makefile.am:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_close.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_create.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_def.h:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_delete.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_extra.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_info.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_locking.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_open.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_panic.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_queue.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_rfirst.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_rkey.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_rlast.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_rnext.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_rprev.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_rrnd.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_rsame.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_static.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_update.c:
Renamed mymrgdef.h -> myrg_def.h
myisammrg/myrg_write.c:
Renamed mymrgdef.h -> myrg_def.h
mysql-test/include/master-slave.inc:
Use short filenames for sockets (portability problem on Mac OS X)
mysql-test/mysql-test-run.sh:
cleanup
mysql-test/r/auto_increment.result:
Cleanup of tests for embedded version
mysql-test/r/func_system.result:
Cleanup of tests for embedded version
mysql-test/r/isam.result:
Cleanup of tests for embedded version
mysql-test/r/lock.result:
Cleanup of tests for embedded version
mysql-test/r/show_check.result:
Cleanup of tests for embedded version
mysql-test/t/auto_increment.test:
Cleanup of tests for embedded version
mysql-test/t/backup.test:
Cleanup of tests for embedded version
mysql-test/t/count_distinct2-master.opt:
Cleanup of tests for embedded version
mysql-test/t/count_distinct2.test:
Cleanup of tests for embedded version
mysql-test/t/create.test:
Cleanup of tests for embedded version
mysql-test/t/flush.test:
Cleanup of tests for embedded version
mysql-test/t/func_system.test:
Cleanup of tests for embedded version
mysql-test/t/isam.test:
Cleanup of tests for embedded version
mysql-test/t/kill.test:
Cleanup of tests for embedded version
mysql-test/t/lock.test:
Cleanup of tests for embedded version
mysql-test/t/order_fill_sortbuf-master.opt:
Cleanup of tests for embedded version
mysql-test/t/rpl000015.test:
Use short filenames for sockets (portability problem on Mac OS X)
mysql-test/t/rpl000016.test:
Use short filenames for sockets (portability problem on Mac OS X)
mysql-test/t/rpl000017.test:
Use short filenames for sockets (portability problem on Mac OS X)
mysql-test/t/rpl000018.test:
Use short filenames for sockets (portability problem on Mac OS X)
mysql-test/t/show_check.test:
Move ISAM specific tests to isam.test
mysql-test/t/status.test:
Cleanup of tests for embedded version
mysql-test/t/tablelock.test:
Cleanup
mysys/Makefile.am:
Removed not used mf_pack2.c
mysys/charset.c:
new convert_dirname
mysys/default.c:
new convert_dirname
mysys/mf_dirname.c:
Changed convert_dirname() to be more general
mysys/mf_format.c:
Changed bit flags to fn_format() to defines.
Added handling of relative filenames
BitKeeper/etc/ignore:
Added libmysqld/examples/test-gdbinit scripts/mysql_explain_log to the ignore list
mysys/mf_pack.c:
new convert_dirname
mysys/mf_tempfile.c:
new convert_dirname
scripts/Makefile.am:
Adde mysql_explain_log
scripts/mysql_config.sh:
Added support of --libmysqld-libs
sql/Makefile.am:
Fix to use 'innodb_system_libs'
sql/ha_innobase.cc:
Make InnoDB startup/shutdown silent in embedded version
sql/ha_isam.cc:
Added handling of HAVE_ISAM
sql/ha_isammrg.cc:
Added handling of HAVE_ISAM
sql/ha_myisam.cc:
Handle relative paths; Needed to support BACKUP TABLE in embedded version
sql/ha_myisammrg.cc:
Rename of filenames
sql/handler.cc:
Added handling of HAVE_ISAM
sql/item_func.cc:
Fix for ecc (Intel Compiler)
sql/mysql_priv.h:
Added global variable 'mysql_embedded'
sql/mysqld.cc:
Use HAVE_ISAM
sql/sql_parse.cc:
Use new convert_dirname
sql/sql_select.cc:
Fix for ecc (Intel Compiler)
sql/sql_table.cc:
Added handling of relative filenames
strings/Makefile.am:
Don't compile both assembler and C functions on x86
strings/bchange.c:
cleanup
Diffstat (limited to 'mysys/mf_format.c')
-rw-r--r-- | mysys/mf_format.c | 75 |
1 files changed, 42 insertions, 33 deletions
diff --git a/mysys/mf_format.c b/mysys/mf_format.c index 5063d6ca831..d7d2af608e8 100644 --- a/mysys/mf_format.c +++ b/mysys/mf_format.c @@ -18,64 +18,68 @@ #include "mysys_priv.h" #include <m_string.h> - /* format a filename with replace of library and extension */ - /* params to and name may be identicall */ - /* function doesn't change name if name != to */ - /* Flag may be: 1 replace filenames library with 'dsk' */ - /* 2 replace extension with 'form' */ - /* 4 Unpack filename (replace ~ with home) */ - /* 8 Pack filename as short as possibly */ - /* 16 Resolve symbolic links for filename */ - /* 32 Resolve filename to full path */ - /* 64 Return NULL if too long path */ + /* + Formats a filename with possible replace of directory of extension + Function can handle the case where 'to' == 'name' + For a description of the flag values, consult my_sys.h + The arguments should be in unix format. + */ -my_string fn_format(my_string to, const char *name, const char *dsk, - const char *form, int flag) +my_string fn_format(my_string to, const char *name, const char *dir, + const char *extension, uint flag) { reg1 uint length; 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", - name,dsk,form,flag)); + DBUG_PRINT("enter",("name: %s dir: %s extension: %s flag: %d", + name,dir,extension,flag)); - /* Kopiera & skippa enheten */ + /* Copy and skip directory */ name+=(length=dirname_part(dev,(startpos=(my_string) name))); - if (length == 0 || flag & 1) + if (length == 0 || (flag & MY_REPLACE_DIR)) + { + /* Use given directory */ + convert_dirname(dev,dir,NullS); /* Fix to this OS */ + } + else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(name)) { - (void) strmake(dev,dsk, sizeof(dev) - 2); - /* Use given directory */ - convert_dirname(dev); /* Fix to this OS */ + /* Put 'dir' before the given path */ + strmake(buff,dev,sizeof(buff)-1); + pos=convert_dirname(dev,dir,NullS); + strmake(pos,buff,sizeof(buff)-1- (int) (pos-dev)); } - if (flag & 8) + + if (flag & MY_PACK_FILENAME) pack_dirname(dev,dev); /* Put in ./.. and ~/.. */ - if (flag & 4) + if (flag & MY_UNPACK_FILENAME) (void) unpack_dirname(dev,dev); /* Replace ~/.. with dir */ - if ((pos=(char*)strchr(name,FN_EXTCHAR)) != NullS) + if ((pos= (char*) strchr(name,FN_EXTCHAR)) != NullS) { - if ((flag & 2) == 0) /* Skall vi byta extension ? */ + if ((flag & MY_REPLACE_EXT) == 0) /* If we should keep old ext */ { - length=strlength(name); /* Old extension */ + length=strlength(name); /* Use old extension */ ext = ""; } else { length=(uint) (pos-(char*) name); /* Change extension */ - ext= form; + ext= extension; } } else { - length=strlength(name); /* Har ingen ext- tag nya */ - ext=form; + length=strlength(name); /* No ext, use the now one */ + ext=extension; } if (strlen(dev)+length+strlen(ext) >= FN_REFLEN || length >= FN_LEN ) - { /* To long path, return original */ + { + /* To long path, return original or NULL */ uint tmp_length; - if (flag & 64) - return 0; + if (flag & MY_SAFE_PATH) + return NullS; tmp_length=strlength(startpos); DBUG_PRINT("error",("dev: '%s' ext: '%s' length: %d",dev,ext,length)); (void) strmake(to,startpos,min(tmp_length,FN_REFLEN-1)); @@ -96,9 +100,14 @@ my_string fn_format(my_string to, const char *name, const char *dsk, #endif (void) strmov(pos,ext); /* Don't convert extension */ } - if (flag & 32) - (void) my_realpath(to, to, MYF(flag & 32 ? 0 : MY_RESOLVE_LINK)); - else if (flag & 16) + /* + If MY_RETURN_REAL_PATH and MY_RESOLVE_SYMLINK is given, only do + realpath if the file is a symbolic link + */ + if (flag & MY_RETURN_REAL_PATH) + (void) my_realpath(to, to, MYF(flag & MY_RESOLVE_SYMLINKS ? + MY_RESOLVE_LINK: 0)); + else if (flag & MY_RESOLVE_SYMLINKS) { strmov(buff,to); (void) my_readlink(to, buff, MYF(0)); |