⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dgisrc.cpp

📁 《Web编程专家指南》
💻 CPP
字号:
/*
 *  Dynamic  Gateway  Interface
 *  A. Montefusco
 *  June 10, 1995
 *
 *  Example 2
 *
 */


#include <time.h>
#include <string.h>
#include <iostream.h>
#include <dos.h>
#include "dgi.h"
#include "dgihelp.h"
#include "debug.h"


#if defined(__OS2__) && defined(__BORLANDC__)
#define EXPORT _export
#else
#define EXPORT
#endif


/*
 *   HTML 2.0 compatible header... 
 */

#define HTML  "Content-type: text/html\r\n\r\n"                       \
              "<html>                                               " \
              "<head>                                               " \
              "<title>Returned from DGI executable !!! </title>     " \
              "</head>                                              " \
              "<body>                                               " \
              "<h1>                                                 " \
              "Search Result                                        " \
              "</h1>                                                " \
              "<p>                                                  " \
              "<p>"

/*
 *   ... and trailer
 */

#define HTML_TRAILER  "</body>" \
                      "</html>"

/*
 *  List all files in the current directory
 *
 */
void SearchFile (const char *pszFn);



PDGI_FN_OUTMSG  pFnOut;
PDGI_FN_GETDATA pFnGetData;
void           *pCbPrm;


long EXPORT DgiStart (PDGI_FN_OUTMSG pFnOm, PDGI_FN_GETDATA pFnGd, void *pPrm)
{
   TRACE(cerr << "DgiStart" << endl;);
   pFnOut     = pFnOm;
   pFnGetData = pFnGd;
   pCbPrm     = pPrm;
   return 1;
}


long EXPORT DgiDoAction (const char *pszQueryInfo,
                         const char *pszPathInfo,
                         const char *pszFormData,
                         char *)
{
   TRACE(
   cerr << "DgiDoAction:" << endl
        << "Query info:\t[" << pszQueryInfo << "]"
        << endl
        << "Path info:\t[" << pszPathInfo << "]"
        << endl
        << "Form data:\t[" << pszFormData << "]"
        << endl;
        );

   htPrintf ("%s", HTML);

   SearchFile (pszQueryInfo+1);

   htPrintf ("%s", HTML_TRAILER);

   return 1;
}


long EXPORT DgiEnd (void)
{
   TRACE(cerr << "DgiEnd" << endl;);
   return 1;
}


void SearchFile (const char *pszFn)
{
   struct find_t ffblk;
   int done, count = 0;

   htPrintf("<h2>Directory listing of %s</h2><p>", pszFn);
   htPrintf("<pre>");

   done = _dos_findfirst(pszFn, _A_NORMAL,&ffblk);
   while (!done) {
      htPrintf("%10d   %s<p>", ffblk.size, ffblk.name);
      count++;
      done = _dos_findnext(&ffblk);
   }
   htPrintf("</pre>");

   if (count == 0) htPrintf ("%s", "No file(s) found.");
              else htPrintf ("<b>%d file%s found</b>", count, (count > 1) ? "s" :"");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -