summaryrefslogtreecommitdiffstats
path: root/private/utils/mep/extens/mbrowse/calbak.c
diff options
context:
space:
mode:
Diffstat (limited to 'private/utils/mep/extens/mbrowse/calbak.c')
-rw-r--r--private/utils/mep/extens/mbrowse/calbak.c436
1 files changed, 436 insertions, 0 deletions
diff --git a/private/utils/mep/extens/mbrowse/calbak.c b/private/utils/mep/extens/mbrowse/calbak.c
new file mode 100644
index 000000000..51579eae9
--- /dev/null
+++ b/private/utils/mep/extens/mbrowse/calbak.c
@@ -0,0 +1,436 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ calbak.c
+
+Abstract:
+
+ Callback functions needed by the bsc library.
+
+Author:
+
+ Ramon Juan San Andres (ramonsa) 06-Nov-1990
+
+
+Revision History:
+
+
+--*/
+
+/**************************************************************************/
+
+#include "stdlib.h"
+#include "mbr.h"
+
+
+typedef char bscbuf[2048];
+
+/**************************************************************************/
+
+LPV
+BSC_API
+LpvAllocCb (
+ IN WORD cb
+ )
+/*++
+
+Routine Description:
+
+ Allocates block of memory.
+
+Arguments:
+
+ cb - Supplies size of block.
+
+Return Value:
+
+ Pointer to block of memory of size cb, or NULL
+
+--*/
+
+{
+ return (LPV)malloc(cb);
+}
+
+
+
+/**************************************************************************/
+
+VOID
+BSC_API
+FreeLpv (
+ IN LPV lpv
+ )
+/*++
+
+Routine Description:
+
+ Frees a block of memory.
+
+Arguments:
+
+ lpv - Suplies a pointer to the block of memory to free.
+
+Return Value:
+
+ None.
+
+--*/
+
+{
+ free(lpv);
+}
+
+
+
+/**************************************************************************/
+
+VOID
+BSC_API
+SeekError (
+ IN LSZ lszFileName
+ )
+/*++
+
+Routine Description:
+
+ Error handling for seek operations.
+
+Arguments:
+
+ lszFileName - Supplies the name of the file.
+
+Return Value:
+
+ None.
+
+--*/
+
+{
+ errstat(MBRERR_BSC_SEEK_ERROR, lszFileName);
+}
+
+
+
+/**************************************************************************/
+
+VOID
+BSC_API
+ReadError (
+ IN LSZ lszFileName
+ )
+/*++
+
+Routine Description:
+
+ Error handling for read operations.
+
+Arguments:
+
+ lszFileName - Supplies the name of the file.
+
+Return Value:
+
+ None.
+
+--*/
+
+{
+ errstat(MBRERR_BSC_READ_ERROR, lszFileName);
+}
+
+
+
+/**************************************************************************/
+
+VOID
+BSC_API
+BadBSCVer (
+ IN LSZ lszFileName
+ )
+/*++
+
+Routine Description:
+
+ Error handling for bad version number.
+
+Arguments:
+
+ lszFileName - Supplies the name of the file.
+ .
+ .
+
+Return Value:
+
+ None.
+
+--*/
+
+{
+ errstat(MBRERR_BAD_BSC_VERSION, lszFileName);
+}
+
+
+
+/**************************************************************************/
+
+FILEHANDLE
+BSC_API
+BSCOpen (
+ IN LSZ lszFileName,
+ IN FILEMODE mode
+ )
+/*++
+
+Routine Description:
+
+ Opens a file.
+
+Arguments:
+
+ lszFileName - Supplies the name of the file.
+ mode - Supplies the mode with which to open the file.
+
+Return Value:
+
+ File handle for the opened file. -1 if error.
+
+--*/
+
+{
+#if defined (OS2)
+ bscbuf b;
+
+ strcpy(b, lszFileName);
+ return open(b, mode);
+#else
+ return CreateFile( lszFileName, mode, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+#endif
+}
+
+
+
+/**************************************************************************/
+
+int
+BSC_API
+BSCRead (
+ IN FILEHANDLE handle,
+ OUT LPCH lpchBuf,
+ IN WORD cb
+ )
+/*++
+
+Routine Description:
+
+ Reads in the specified number of bytes.
+
+Arguments:
+
+ handle - Supplies the file handle.
+ lpchBuf - Supplies pointer to buffer.
+ cb - Supplies number of bytes to read.
+
+Return Value:
+
+ Number of bytes read
+
+--*/
+
+{
+#if defined (OS2)
+ bscbuf b;
+
+ while (cb > sizeof(b)) {
+ if (read(handle, b, sizeof(b)) == -1) {
+ return -1;
+ }
+ memcpy(lpchBuf, b, sizeof(b));
+ cb -= sizeof(b);
+ lpchBuf += sizeof(b);
+ }
+
+ if (read(handle, b, cb) == -1) {
+ return -1;
+ }
+ memcpy(lpchBuf, b, cb);
+ return cb;
+#else
+ DWORD BytesRead;
+ if ( !ReadFile(handle, lpchBuf, cb, &BytesRead, NULL) ) {
+ return -1;
+ } else {
+ return BytesRead;
+ }
+#endif
+}
+
+
+
+/**************************************************************************/
+
+int
+BSC_API
+BSCClose (
+ IN FILEHANDLE handle
+ )
+/*++
+
+Routine Description:
+
+ Closes a handle.
+
+Arguments:
+
+ handle - Supplies the handle to be closed.
+
+Return Value:
+
+ 0 if the file was successfully closed, -! if error.
+
+--*/
+
+{
+#if defined (OS2)
+ return close(handle);
+#else
+ return !CloseHandle( handle );
+#endif
+}
+
+
+
+/**************************************************************************/
+
+int
+BSC_API
+BSCSeek (
+ FILEHANDLE handle,
+ long lPos,
+ FILEMODE mode
+ )
+/*++
+
+Routine Description:
+
+ Seek (change file pointer).
+
+Arguments:
+
+ handle - Supplies the file handle.
+ lPos - Supplies the offset from the position specified by mode.
+ mode - Supplies the initial position. Must be one of the SEEK_*
+ values of the lseek C library function.
+
+
+Return Value:
+
+ 0 if successful, -1 if error.
+
+--*/
+
+{
+#if defined (OS2)
+ if (lseek(handle, lPos, mode) == -1) {
+ return -1;
+ } else {
+ return 0;
+ }
+#else
+ if (SetFilePointer( handle, lPos, 0L, mode) == -1) {
+ return -1;
+ } else {
+ return 0;
+ }
+#endif
+}
+
+
+
+
+/**************************************************************************/
+
+VOID
+BSC_API
+BSCOutput (
+ IN LSZ lsz
+ )
+/*++
+
+Routine Description:
+
+ Outputs a given string.
+
+Arguments:
+
+ lsz - Supplies the string to be output.
+
+Return Value:
+
+ None.
+
+--*/
+
+{
+ // PWND pWinCur;
+ // winContents wc;
+ USHORT len; // Length of string
+ PBYTE p;
+ PFILE pFile; // Current file
+
+
+ pFile = FileNameToHandle("", NULL);
+
+ //GetEditorObject (RQ_WIN_HANDLE, 0, &pWinCur);
+ //GetEditorObject (RQ_WIN_CONTENTS | 0xff, pWinCur, &wc);
+
+ len = strlen(lsz);
+
+ while (len) {
+ //
+ // We output the string one line at a time.
+ //
+ p = lsz;
+
+ while (len--) {
+ if (*lsz != '\n') {
+ lsz++;
+ } else {
+ *lsz++ = '\00';
+ break;
+ }
+ }
+
+ // if ((wc.pFile == pBrowse) && BscInUse) {
+ if ((pFile == pBrowse) && BscInUse) {
+ //
+ // Display in Browser window
+ //
+ PutLine(BrowseLine++, p, pBrowse);
+ } else {
+ //
+ // Display in status line
+ //
+ errstat(p,NULL);
+ }
+ }
+}
+
+
+
+/**************************************************************************/
+
+#ifdef DEBUG
+VOID BSC_API
+BSCDebugOut(LSZ lsz)
+// ignore debug output by default
+//
+{
+ // unreferenced lsz
+ lsz = NULL;
+}
+#endif
+