fixed wrong declaration of os/2 api functions
This commit is contained in:
parent
6a2dce50b8
commit
7f64932d19
@ -677,37 +677,89 @@ PEER: ?好!
|
|||||||
Note that 你 has been converted to a question mark since the letter is
|
Note that 你 has been converted to a question mark since the letter is
|
||||||
not supported by cp949.
|
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) ###
|
### setioattr (io-name, attr-name, attr-value) ###
|
||||||
|
|
||||||
It changes the I/O attribute of the name attr-name to the value attr-value
|
The *setioattr* function changes the I/O attribute of the name *attr-name* to
|
||||||
for an I/O stream identified by io-name. It returns 0 on success and -1 on
|
the value *attr-value* for a stream identified by *io-name*. It returns 0 on
|
||||||
failure.
|
success and -1 on failure.
|
||||||
|
|
||||||
- io-name is a source or target name used in getline, print, printf combined
|
- *io-name* is a source or target name used in *getline*, *print*, *printf*
|
||||||
with |, ||, >, <, >>.
|
combined with |, ||, >, <, >>.
|
||||||
- attr-name is one of codepage, ctimeout, atimeout, rtimeout, wtimeout.
|
- *attr-name* is one of *codepage*, *ctimeout*, *atimeout*, *rtimeout*,
|
||||||
- attr-value varies depending on attr-name.
|
*wtimeout*.
|
||||||
-- codepage: cp949, cp950, utf8
|
- *attr-value* varies depending on *attr-name*.
|
||||||
-- 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.
|
+ 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.
|
||||||
# Convert a document encoded in cp949 to a current codepage
|
|
||||||
#
|
BEGIN {
|
||||||
BEGIN
|
setioattr ("README.TXT", "codepage", "cp949");
|
||||||
{
|
while ((getline x < "README.TXT") > 0) print x;
|
||||||
setioattr ("README.INS", "codepage", "cp949");
|
|
||||||
while ((getline x < "README.INS") > 0) print x;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
### getioattr (io-name, attr-name) ###
|
### getioattr (io-name, attr-name, attr-value) ###
|
||||||
|
|
||||||
It returns the current attribute value of the attribute named attr-name for
|
The getioattr() function retrieves the current attribute value of the attribute
|
||||||
the stream identified by io-name. See setioattr for description on io-name and
|
named *attr-name* for the stream identified by *io-name*. The value retrieved
|
||||||
attr-name. It returns the attribute value on success and -1 on failure.
|
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.
|
||||||
|
|
||||||
|
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/
|
[awkbook]: http://cm.bell-labs.com/cm/cs/awkbook/
|
||||||
|
@ -59,31 +59,44 @@ enum
|
|||||||
#include "syserr.h"
|
#include "syserr.h"
|
||||||
IMPLEMENT_SYSERR_TO_ERRNUM (fio, FIO)
|
IMPLEMENT_SYSERR_TO_ERRNUM (fio, FIO)
|
||||||
|
|
||||||
#if defined(__OS2__)
|
#if defined(_WIN32)
|
||||||
|
|
||||||
typedef APIRET (*DosOpenLType) (
|
typedef DWORD WINAPI (*getmappedfilename_t) (
|
||||||
PSZ pszFileName, PHFILE pHf, PULONG pulAction,
|
HANDLE hProcess,
|
||||||
LONGLONG cbFile, ULONG ulAttribute,
|
LPVOID lpv,
|
||||||
ULONG fsOpenFlags, ULONG fsOpenMode,
|
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
|
PEAOP2 peaop2
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef APIRET (*DosSetFilePtrLType) (
|
typedef APIRET APIENTRY (*dossetfileptrl_t) (
|
||||||
HFILE hFile,
|
HFILE hFile,
|
||||||
LONGLONG ib,
|
LONGLONG ib,
|
||||||
ULONG method,
|
ULONG method,
|
||||||
PLONGLONG ibActual
|
PLONGLONG ibActual
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef APIRET (*DosSetFileSizeLType) (
|
typedef APIRET APIENTRY (*dossetfilesizel_t) (
|
||||||
HFILE hFile,
|
HFILE hFile,
|
||||||
LONGLONG cbSize
|
LONGLONG cbSize
|
||||||
);
|
);
|
||||||
|
|
||||||
static int dos_set = 0;
|
static int dos_set = 0;
|
||||||
static DosOpenLType dos_open_l = QSE_NULL;
|
static dosopenl_t dos_open_l = QSE_NULL;
|
||||||
static DosSetFilePtrLType dos_set_file_ptr_l = QSE_NULL;
|
static dossetfileptrl_t dos_set_file_ptr_l = QSE_NULL;
|
||||||
static DosSetFileSizeLType dos_set_file_size_l = QSE_NULL;
|
static dossetfilesizel_t dos_set_file_size_l = QSE_NULL;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1309,13 +1322,6 @@ static int get_devname_from_handle (
|
|||||||
void* mem = NULL;
|
void* mem = NULL;
|
||||||
DWORD olen;
|
DWORD olen;
|
||||||
HINSTANCE psapi;
|
HINSTANCE psapi;
|
||||||
|
|
||||||
typedef DWORD (WINAPI*getmappedfilename_t) (
|
|
||||||
HANDLE hProcess,
|
|
||||||
LPVOID lpv,
|
|
||||||
LPTSTR lpFilename,
|
|
||||||
DWORD nSize
|
|
||||||
);
|
|
||||||
getmappedfilename_t getmappedfilename;
|
getmappedfilename_t getmappedfilename;
|
||||||
|
|
||||||
/* try to load psapi.dll dynamially for
|
/* try to load psapi.dll dynamially for
|
||||||
|
Loading…
Reference in New Issue
Block a user