From 4765ab612ca4f5ee35c413437f7da04889bd0a14 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 Oct 2001 03:22:31 +0200 Subject: Update for OS2 (patch from Yuri Dario). Use LONG_TIMEOUT (one year) instead of ~0 for long timeouts Fixed error messages. Fixed problem with const propagation when comparing columns of different types BitKeeper/deleted/.del-.cvsignore~a91d63182f0b2366: Delete: sql/share/norwegian/.cvsignore BitKeeper/deleted/.del-.cvsignore~469064b5190d703d: Delete: sql/share/norwegian-ny/.cvsignore Docs/manual.texi: Changelog client/client_priv.h: Update for OS2 client/mysqldump.c: Update for OS2 include/mysqld_error.h: Updated error texts isam/create.c: Removed warning myisam/myisamchk.c: Fix for OS2 myisam/myisampack.c: Fix for OS2 mysys/mf_cache.c: Fix for OS2 mysys/mf_tempfile.c: Fix for OS2 mysys/my_os2file64.c: Fix for OS2 mysys/my_tempnam.c: Fix for OS2 os2/ChangeLog.os2: Fix for OS2 os2/MySQL-Client.icc: Fix for OS2 os2/MySQL-Opt.icc: Fix for OS2 os2/MySQL-Source.icc: Fix for OS2 os2/MySQL-Sql.icc: Fix for OS2 os2/MySQL-Util.icc: Fix for OS2 sql/mysqld.cc: Use LONG_TIMEOUT (one year) instead of ~0 for long timeouts. This avoids some problems when users spefices wrong arguments to mysqld. sql/nt_servc.cc: C sql/share/czech/errmsg.txt: Updated error texts sql/share/danish/errmsg.txt: Updated error texts sql/share/dutch/errmsg.txt: Updated error texts sql/share/english/errmsg.txt: Updated error texts sql/share/estonian/errmsg.txt: Updated error texts sql/share/french/errmsg.txt: Updated error texts sql/share/german/errmsg.txt: Updated error texts sql/share/greek/errmsg.txt: Updated error texts sql/share/hungarian/errmsg.txt: Updated error texts sql/share/italian/errmsg.txt: Updated error texts sql/share/japanese/errmsg.txt: Updated error texts sql/share/korean/errmsg.txt: Updated error texts sql/share/norwegian-ny/errmsg.txt: Updated error texts sql/share/norwegian/errmsg.txt: Updated error texts sql/share/polish/errmsg.txt: Updated error texts sql/share/portuguese/errmsg.txt: Updated error texts sql/share/romanian/errmsg.txt: Updated error texts sql/share/russian/errmsg.txt: Updated error texts sql/share/slovak/errmsg.txt: Updated error texts sql/share/spanish/errmsg.txt: Updated error texts sql/share/swedish/errmsg.txt: Updated error texts sql/share/ukrainian/errmsg.txt: Updated error texts sql/sql_select.cc: Fixed problem with const propagation when comparing columns of different types. Fixed bug when HEAP table is converted to MyISAM tables in GROUP BY on long strings. --- mysys/my_os2file64.c | 58 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 8 deletions(-) (limited to 'mysys/my_os2file64.c') diff --git a/mysys/my_os2file64.c b/mysys/my_os2file64.c index 8964e562ea1..b7ee40d292e 100644 --- a/mysys/my_os2file64.c +++ b/mysys/my_os2file64.c @@ -22,7 +22,6 @@ void _OS2errno( APIRET rc); longlong _lseek64( int fd, longlong offset, int seektype); int _lock64( int fd, int locktype, my_off_t start, my_off_t length, myf MyFlags); -int _sopen64( const char *name, int oflag, int shflag, int mask); // // this class is used to define a global c++ variable, that @@ -255,7 +254,7 @@ int _lock64( int fd, int locktype, my_off_t start, return(-1); } -int _sopen64( const char *name, int oflag, int shflag, int mask) +int _sopen( const char *name, int oflag, int shflag, int mask) { int fail_errno; APIRET rc = 0; @@ -325,17 +324,60 @@ int _sopen64( const char *name, int oflag, int shflag, int mask) return hf; } -inline int open( const char *name, int oflag) +int read( int fd, void *buffer, unsigned int count) { - return _sopen64( name, oflag, OPEN_SHARE_DENYNONE, S_IREAD | S_IWRITE); + APIRET rc; + ULONG actual; + + rc = DosRead( fd, (PVOID) buffer, count, &actual); + + if (!rc) + return( actual);/* NO_ERROR */ + + // set errno + _OS2errno( rc); + // write failed + return(-1); } -inline int open( const char *name, int oflag, int mask) +int write( int fd, const void *buffer, unsigned int count) { - return _sopen64( name, oflag, OPEN_SHARE_DENYNONE, mask); + APIRET rc; + ULONG actual; + + rc = DosWrite( fd, (PVOID) buffer, count, &actual); + + if (!rc) + return( actual);/* NO_ERROR */ + + // set errno + _OS2errno( rc); + // write failed + return(-1); +} + +int close( int fd) +{ + APIRET rc; + ULONG actual; + + rc = DosClose( fd); + + if (!rc) + return( 0);/* NO_ERROR */ + + // set errno + _OS2errno( rc); + // write failed + return(-1); } -inline int sopen( const char *name, int oflag, int shflag, int mask) +inline int open( const char *name, int oflag) +{ + return sopen( name, oflag, OPEN_SHARE_DENYNONE, S_IREAD | S_IWRITE); +} + +inline int open( const char *name, int oflag, int mask) { - return _sopen64( name, oflag, shflag, mask); + return sopen( name, oflag, OPEN_SHARE_DENYNONE, mask); } -- cgit v1.2.1