fixed wrong declaration of os/2 api functions
This commit is contained in:
		@ -677,37 +677,89 @@ PEER: ?好!
 | 
			
		||||
Note that 你 has been converted to a question mark since the letter is
 | 
			
		||||
not supported by cp949.
 | 
			
		||||
 | 
			
		||||
## Built-in I/O ##
 | 
			
		||||
 | 
			
		||||
## Built-in Functions ##
 | 
			
		||||
QSEAWK comes with built-in I/O commands and functions in addition to the 
 | 
			
		||||
implicit input streams for pattern-action blocks. The built-in I/O facility 
 | 
			
		||||
is available only if QSEAWK is set with #QSE_AWK_RIO.
 | 
			
		||||
 | 
			
		||||
QSEAWK provides the following built-in functions.
 | 
			
		||||
### getline ###
 | 
			
		||||
	
 | 
			
		||||
The *getline* command has multiple forms of usage. It can be used with or 
 | 
			
		||||
without a variable name and can also be associated with a pipe or a file 
 | 
			
		||||
redirection. Basically, it reads a record from an input stream associated 
 | 
			
		||||
and stores it.
 | 
			
		||||
 | 
			
		||||
*getline* without a following variable reads a record from an associated
 | 
			
		||||
input stream and updates $0 with the value. It also updates *NF*, *FNR*, *NR*.
 | 
			
		||||
The sample below reads records from the console and prints them. 
 | 
			
		||||
 | 
			
		||||
    BEGIN {
 | 
			
		||||
        while (getline > 0) print $0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
It is equivalent to 
 | 
			
		||||
 | 
			
		||||
    { print $0 } 
 | 
			
		||||
 | 
			
		||||
but performs the task in the *BEGIN* block.
 | 
			
		||||
 | 
			
		||||
*getline* with a variable reads a record from an associated input stream
 | 
			
		||||
and updates the variable with the value. It updates *FNR* and *NR*, too.
 | 
			
		||||
 | 
			
		||||
    BEGIN {
 | 
			
		||||
        while (getline line > 0) print line;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
*getline* is associated with the console by default. you can change it
 | 
			
		||||
to a file or a pipe by using |, ||, <.
 | 
			
		||||
 | 
			
		||||
The *getline* command acts like a function in that it returns a value: 1 on 
 | 
			
		||||
success, 0 on EOF, -1 on error. But you can't place an empty parentheses
 | 
			
		||||
when no variable name is specified nor can you parenthesize the optional 
 | 
			
		||||
variable name. For example, *getline(a)* is different from *getline a* and 
 | 
			
		||||
means the concatenation of the return value of *getline* and the variable *a*.
 | 
			
		||||
 | 
			
		||||
### print ###
 | 
			
		||||
 | 
			
		||||
### printf ###
 | 
			
		||||
 | 
			
		||||
### setioattr (io-name, attr-name, attr-value) ###
 | 
			
		||||
 | 
			
		||||
It changes the I/O attribute of the name attr-name to the value attr-value 
 | 
			
		||||
for an I/O stream identified by io-name. It returns 0 on success and -1 on 
 | 
			
		||||
The *setioattr* function changes the I/O attribute of the name *attr-name* to 
 | 
			
		||||
the value *attr-value* for a stream identified by *io-name*. It returns 0 on 
 | 
			
		||||
success and -1 on failure.
 | 
			
		||||
 | 
			
		||||
 - *io-name* is a source or target name used in *getline*, *print*, *printf* 
 | 
			
		||||
   combined with |, ||, >, <, >>.
 | 
			
		||||
 - *attr-name* is one of *codepage*, *ctimeout*, *atimeout*, *rtimeout*, 
 | 
			
		||||
   *wtimeout*.
 | 
			
		||||
 - *attr-value* varies depending on *attr-name*.
 | 
			
		||||
   + codepage: *cp949*, *cp950*, *utf8*
 | 
			
		||||
   + ctimeout, atimeout, rtimeout, wtimeout: the number of seconds. effective 
 | 
			
		||||
    on socket based streams only. you may use a floating-point number for 
 | 
			
		||||
    lower resoluation than a second. a negative value turns off timeout. 
 | 
			
		||||
 | 
			
		||||
See this sample that prints the contents of a document encoded in cp949.
 | 
			
		||||
 | 
			
		||||
    BEGIN { 
 | 
			
		||||
        setioattr ("README.TXT", "codepage", "cp949"); 
 | 
			
		||||
        while ((getline x < "README.TXT") > 0) print x; 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
### getioattr (io-name, attr-name, attr-value) ###
 | 
			
		||||
 | 
			
		||||
The getioattr() function retrieves the current attribute value of the attribute
 | 
			
		||||
named *attr-name* for the stream identified by *io-name*. The value retrieved 
 | 
			
		||||
is set to the variable referenced by *attr-value*. See *setioattr* for 
 | 
			
		||||
description on *io-name* and *attr-name*. It returns 0 on success and -1 on 
 | 
			
		||||
failure.
 | 
			
		||||
 | 
			
		||||
- io-name is a source or target name used in getline, print, printf combined
 | 
			
		||||
  with |, ||, >, <, >>.
 | 
			
		||||
- attr-name is one of codepage, ctimeout, atimeout, rtimeout, wtimeout.
 | 
			
		||||
- attr-value varies depending on attr-name.
 | 
			
		||||
-- codepage: cp949, cp950, utf8
 | 
			
		||||
-- ctimeout, atimeout, rtimeout, wtimeout: the number of seconds. applies to socket based stream only. you may use a floating-point number for lower resoluation than a second. a negative value turns off timeout. 
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Convert a document encoded in cp949 to a current codepage
 | 
			
		||||
#
 | 
			
		||||
BEGIN 
 | 
			
		||||
{ 
 | 
			
		||||
	setioattr ("README.INS", "codepage", "cp949"); 
 | 
			
		||||
	while ((getline x < "README.INS") > 0) print x; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
### getioattr (io-name, attr-name) ###
 | 
			
		||||
 | 
			
		||||
It returns the current attribute value of the attribute named attr-name for
 | 
			
		||||
the stream identified by io-name. See setioattr for description on io-name and
 | 
			
		||||
attr-name. It returns the attribute value on success and -1 on failure.
 | 
			
		||||
    BEGIN { 
 | 
			
		||||
        setioattr ("README.TXT", "codepage", "cp949"); 
 | 
			
		||||
        if (getioattr ("README.TXT", "codepage", codepage) <= -1)
 | 
			
		||||
            print "codepage unknown";
 | 
			
		||||
        else print "codepage: " codepage;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
[awkbook]: http://cm.bell-labs.com/cm/cs/awkbook/ 
 | 
			
		||||
 | 
			
		||||
@ -59,31 +59,44 @@ enum
 | 
			
		||||
#include "syserr.h"
 | 
			
		||||
IMPLEMENT_SYSERR_TO_ERRNUM (fio, FIO)
 | 
			
		||||
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
 | 
			
		||||
typedef APIRET (*DosOpenLType) (
 | 
			
		||||
	PSZ pszFileName, PHFILE pHf, PULONG pulAction,
 | 
			
		||||
	LONGLONG cbFile, ULONG ulAttribute,
 | 
			
		||||
	ULONG fsOpenFlags, ULONG fsOpenMode,
 | 
			
		||||
typedef DWORD WINAPI (*getmappedfilename_t) (
 | 
			
		||||
	HANDLE hProcess,
 | 
			
		||||
	LPVOID lpv,
 | 
			
		||||
	LPTSTR lpFilename,
 | 
			
		||||
	DWORD nSize
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
#elif defined(__OS2__)
 | 
			
		||||
 | 
			
		||||
typedef APIRET APIENTRY (*dosopenl_t) (
 | 
			
		||||
	PSZ pszFileName,
 | 
			
		||||
	PHFILE pHf,
 | 
			
		||||
	PULONG pulAction,
 | 
			
		||||
	LONGLONG cbFile,
 | 
			
		||||
	ULONG ulAttribute,
 | 
			
		||||
	ULONG fsOpenFlags,
 | 
			
		||||
	ULONG fsOpenMode,
 | 
			
		||||
	PEAOP2 peaop2
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
typedef APIRET (*DosSetFilePtrLType) (
 | 
			
		||||
typedef APIRET APIENTRY (*dossetfileptrl_t) (
 | 
			
		||||
	HFILE hFile,
 | 
			
		||||
	LONGLONG ib,
 | 
			
		||||
	ULONG method,
 | 
			
		||||
	PLONGLONG ibActual
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
typedef APIRET (*DosSetFileSizeLType) (
 | 
			
		||||
typedef APIRET APIENTRY (*dossetfilesizel_t) (
 | 
			
		||||
	HFILE hFile,
 | 
			
		||||
	LONGLONG cbSize
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
static int dos_set = 0;
 | 
			
		||||
static DosOpenLType dos_open_l = QSE_NULL;
 | 
			
		||||
static DosSetFilePtrLType dos_set_file_ptr_l = QSE_NULL;
 | 
			
		||||
static DosSetFileSizeLType dos_set_file_size_l = QSE_NULL;
 | 
			
		||||
static dosopenl_t dos_open_l = QSE_NULL;
 | 
			
		||||
static dossetfileptrl_t dos_set_file_ptr_l = QSE_NULL;
 | 
			
		||||
static dossetfilesizel_t dos_set_file_size_l = QSE_NULL;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -1309,13 +1322,6 @@ static int get_devname_from_handle (
 | 
			
		||||
	void* mem = NULL;
 | 
			
		||||
	DWORD olen;
 | 
			
		||||
	HINSTANCE psapi;
 | 
			
		||||
 | 
			
		||||
	typedef DWORD (WINAPI*getmappedfilename_t) (
 | 
			
		||||
		HANDLE hProcess,
 | 
			
		||||
		LPVOID lpv,
 | 
			
		||||
		LPTSTR lpFilename,
 | 
			
		||||
		DWORD nSize
 | 
			
		||||
	);
 | 
			
		||||
	getmappedfilename_t getmappedfilename;
 | 
			
		||||
 | 
			
		||||
	/* try to load psapi.dll dynamially for 
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user