/************************************************************************* ** ** helpdll - stubs for call-back routines when used as dll. ** ** Copyright 1987, Microsoft Corporation ** ** Purpose: ** ** Revision History: ** ** 12-Mar-1990 ln CloseFile -> HelpCloseFile ** [] 22-Jan-1988 LN Created ** *************************************************************************/ #include #include #if defined (OS2) #define INCL_BASE #include #else #include #endif #include "help.h" /* global (help & user) decl */ #include "helpsys.h" /* internal (help sys only) decl*/ #ifdef OS2 int _acrtused; /* define to disable crt0 */ #endif char far * pascal near hfstrchr(char far *, char); /************************************************************************ * * OpenFileOnPath - Open a file located somewhere on the PATH * * Purpose: * * Entry: * pszName - far pointer to filename to open * mode - read/write mode * * Exit: * returns file handle * * Exceptions: * return 0 on error. * */ FILE * pascal far OpenFileOnPath( char far *pszName, int mode ) { FILE *fh; char szNameFull[260]; char szNameFull1[260]; fh = (FILE *)pathopen(pszName, szNameFull, "rb"); if (!fh) { char *pszPath; char *pT; if (*pszName == '$') { if (pT = hfstrchr(pszName,':')) { /* if properly terminated */ *pT = 0; /* terminate env variable */ pszPath = pszName+1; /* get path name */ pszName = pT+1; /* and point to filename part */ } } else { pszPath = "PATH"; } sprintf(szNameFull, "$%s:%s", pszPath, pszName); fh = (FILE *)pathopen(szNameFull, szNameFull1, "rb"); } return fh; } /************************************************************************ * * HelpCloseFile - Close a file * * Purpose: * * Entry: * fh = file handle * * Exit: * none * */ void pascal far HelpCloseFile( FILE* fh ) { fclose(fh); } /************************************************************************ * * ReadHelpFile - locate and read data from help file * * Purpose: * reads cb bytes from the file fh, at file position fpos, placing them in * pdest. Special case of pdest==0, returns file size of fh. * * Entry: * fh = File handle * fpos = position to seek to first * pdest = location to place it * cb = count of bytes to read * * Exit: * returns length of data read * * Exceptions: * returns 0 on errors. * */ unsigned long pascal far ReadHelpFile ( FILE *fh, unsigned long fpos, char far *pdest, unsigned short cb ) { unsigned long cRet = 0; if (pdest) { // // Read cb bytes // if (!fseek(fh, fpos, SEEK_SET)) { cRet = fread(pdest, 1, cb, fh); } } else { // // Return size of file (yuck!) // if (!fseek(fh, 0, SEEK_END)) { fgetpos(fh, (fpos_t *) &cRet); } } return cRet; } /************************************************************************ ** ** HelpAlloc - Allocate a segment of memory for help ** ** Purpose: ** ** Entry: ** size = size of memory segment desired ** ** Exit: ** returns handle on success ** ** Exceptions: ** returns NULL on failure */ mh pascal far HelpAlloc(ushort size) { return (mh)malloc(size); /* end HelpAlloc */}