{
  "disks": {
    "1": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "INSTALL  DBF",
              "size": 1949,
              "date": "1993-04-26",
              "time": "12:36"
            },
            {
              "name": "INSTALL  EXE",
              "size": 63119,
              "date": "1993-04-26",
              "time": "2:50"
            },
            {
              "name": "INSTALL  FPT",
              "size": 512,
              "date": "1993-04-26",
              "time": "12:36"
            },
            {
              "name": "INSTALL  INI",
              "size": 149,
              "date": "1994-01-19",
              "time": "11:56"
            },
            {
              "name": "MSC      PAK",
              "size": 72215,
              "date": "1993-04-26",
              "time": "12:36"
            },
            {
              "name": "README   TXT",
              "size": 10538,
              "date": "1993-04-28",
              "time": "12:55"
            },
            {
              "name": "WATCOM   PAK",
              "size": 71426,
              "date": "1993-04-26",
              "time": "12:36"
            },
            {
              "name": "EXAMPLES PAK",
              "size": 78811,
              "date": "1993-04-28",
              "time": "13:02"
            }
          ]
        }
      ],
      "volume": "FOXPRO LCK"
    }
  },
  "desc_file": "README.TXT",
  "desc_text": "                       README.TXT\r\n**********************************************************\r\n          Microsoft(R) FoxPro(R) Version 2.5\r\n  Library Construction Kit for Windows(TM)and MS-DOS(R)\r\n\r\n    (C)1993 Microsoft Corporation. All Rights Reserved.\r\n\r\n  This file contains additions and corrections to the\r\n  FoxPro Library Construction Kit Developer's Guide.\r\n\r\n**********************************************************\r\n========\r\nCONTENTS\r\n========\r\n\r\nPart   Description\r\n----   -----------\r\n\r\n1      Additions to Documentation Since Printing\r\n2      Corrections to Documentation Since Printing\r\n\r\n----------------------------------------------------------\r\n=================================================\r\nPart 1: Additions to Documentation Since Printing\r\n=================================================\r\n\r\nThe EXAMPLES directory contains a FoxPro database with all\r\nthe example code that is used in the manual.  Simply\r\nsearch for the function with example code you wish to\r\ncopy and then extract the code from the memo field. You\r\nare free to use this code in your own applications.\r\n\r\n-----------------------------------------------------------\r\n\r\nThe following function has been added:\r\n\r\nWHANDLE _WMainWindow( )\r\n\r\nDescription:\r\n_WMainWindow( ) returns the WHANDLE of the main FoxPro\r\nwindow in FoxPro for Windows or of the FoxPro desktop\r\nin FoxPro for MS-DOS.\r\n\r\nExample:\r\nThe following example writes a message to the main FoxPro\r\nwindow in FoxPro for Windows or to the FoxPro desktop in\r\nFoxPro for MS-DOS.\r\n\r\nFoxPro Code:\r\n\r\n   SET LIBRARY TO WMAIN\r\n   = EXWMAIN()\r\n\r\nC Code:\r\n\r\n   #include <pro_ext.h>\r\n\r\n   void FAR example(ParamBlk FAR *parm)\r\n   {\r\n        WHANDLE wh = _WMainWindow();\r\n        _WPutStr(wh, \"\\nThis is the main FoxPro window or desktop.\");\r\n   }\r\n\r\n   FoxInfo myFoxInfo[] = {\r\n        {\"EXWMAIN\", example, 0, \"\"},\r\n   };\r\n\r\n   FoxTable _FoxTable = {\r\n        (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo\r\n   };\r\n\r\n----------------------------------------------------------\r\n===================================================\r\nPart 2: Corrections to Documentation Since Printing\r\n===================================================\r\n\r\nPage 2: In the Reverse.C example:\r\n\r\nThe comment \"/* Check to see if we can allocate the memory\r\nneeded. */\" is missing the end comment marker */.\r\n\r\nThe three-line comment \"Since this routine doesn't call\r\nany functions that cause memory reorganization . . . \r\nprior to de-referencing them (_HandToPtr)\" is missing the\r\nsingle line comment marker // in the second and third\r\nlines.\r\n\r\nThis statement:\r\n\r\n   for (i = 0; i << parm->p[0].val.ev_length; i++)\r\n            *(out_string--) = *(in_string++);\r\n\r\nshould be:\r\n\r\n   for (i = 0; i < parm->p[0].val.ev_length; i++)\r\n            *(out_string--) = *(in_string++);\r\n\r\nChange the \"<<\" in the original example to \"<\".\r\n\r\n----------------------------------------------------------\r\nPage 5: The Value Structure Fields table should include\r\nthe General FoxPro data type.  The applicable fields and\r\ntheir values are listed below:\r\n\r\nval.ev_type = 'G'\r\nval.ev_width = FCHAN\r\nval.ev_long = length of general field\r\nval.ev_real = offset of general field\r\n\r\n----------------------------------------------------------\r\nPage 6: The data type FPFI, a FAR pointer to a function\r\nreturning Int, is mistakenly listed as \"FPDI\".\r\n\r\n----------------------------------------------------------\r\n\r\nPage 7: In addition to the Point, Rect and EventRec data\r\nstructures, PointP and RectP should be included. PointP\r\nand RectP are identical to Point and Rect except that\r\nPoint and Rect coordinates are in rows and columns while\r\nPointP and RectP coordinates are in pixels.\r\n\r\n----------------------------------------------------------\r\nPage 12: The example\r\n\r\n    if (parm->p[0].val.ev_type='C'\r\n                x=parm->p[0].val.ev_length\r\n\r\nshould be:\r\n\r\n   if (parm->p[0].val.ev_type=='C')\r\n                x=parm->p[0].val.ev_length;\r\n\r\nUse an expression ==, a closed parenthesis at the end of\r\nthe first line, and a semicolon at the end of the second\r\nline.\r\n\r\n----------------------------------------------------------\r\n\r\nPage 22: When compiling a .PLB library in Microsoft C7 or\r\nVisual C/C++, you need to use the following command line:\r\n\r\nCL /O /ALw /Zp /GW\r\n\r\nWhen linking a .PLB library in Microsoft C7 or C8, you \r\nneed to use the /NOE and /NONULLS switches.\r\n\r\nLeaving out /NOE can cause redefinition errors. Leaving\r\nout /NONULLS will cause FoxPro not to recognize the .PLB\r\nas a valid library.\r\n\r\n----------------------------------------------------------\r\n\r\nPage 25: The section heading for the makefile on this page\r\nis incorrect. It should say \"Microsoft C/C++ Makefile for\r\nMS-DOS\" instead of \"WATCOM C Makefile for MS-DOS.\" \r\n\r\n----------------------------------------------------------\r\n\r\nPage 26: The  makefile on this page should have the\r\nfollowing section heading: \"WATCOM C Makefile for MS-DOS.\"\r\n\r\n----------------------------------------------------------\r\n\r\nPage 39: The example doesn't work as intended in all\r\ncases. To have it work, you need to change the following\r\nline:\r\n\r\n   (( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length] = '\\0';\r\n\r\nto:\r\n\r\n   (( char FAR *) _HandToPtr(p0.ev_handle))[p0.ev_length - 1] = '\\0';\r\n   (( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length - 1] = '\\0';\r\n                                                                                                                       \r\n----------------------------------------------------------\r\n\r\nPage 85: The following information applies to the \r\n_DBSeek( ) function: The struct Value passed to _DBSeek( )\r\n(via a pointer) must be of ev_type == 'N' when seeking a\r\nnumeric field even if that field has 0 decimal digits.\r\nIf the struct Value has an ev_type of 'I', _DBSeek( )will\r\nreturn the internal error number -302, \"Data type\r\nmismatch.\"\r\n\r\n----------------------------------------------------------\r\n\r\nPage 109: The struct EDENV documented with _EdGetEnv( ) isn't\r\ncorrect. The actual structure from PRO_EXT.H appears\r\nas follows:\r\n\r\nNOTE:  (R) indicates that this member is read-only and\r\n       can't be set using _EdSetEnv( ).\r\n\r\n       (B) indicates that these members takes on one of\r\n       two Boolean values: 1 = true or 0 = false.\r\n\r\n\r\ntypedef struct\r\n{\r\n   char            filename[MAXFILENAME]; // (R)\r\n   EDPOS           length;       // # of bytes in text. (R)\r\n   unsigned short  lenLimit;     // Max allowable length. 0 = infinite.\r\n\r\n   unsigned short  dirty,        // Has the file been changed? (R, B)\r\n                   autoIndent,   // Auto indent? (B)\r\n                   backup,       // Make backup files? (B)\r\n                   addLineFeeds, // Add line feeds when saving? (B)\r\n                   autoCompile,  // Shall we auto compile this thing? (B)\r\n                   addCtrlZ,     // Add end of file ctrl-z? (B)\r\n                   savePrefs,    // Save edit preferences? (B)\r\n                   dragAndDrop,  // Allow drag-and-drop. (B)\r\n                   readOnly,     // 0 = not r/o, 1 = file is r/o,\r\n                                 // 2 = file is r/w, opened r/o,\r\n                                 // 3 = file is r/o, opened r/o. (R)\r\n                   status,       // Display status bar? (B)\r\n                   lockPrefs,    // Can update the preferences ? (B)\r\n                   insertMode;   // (B)\r\n\r\n   short   wrap;       // If < 0, new line at Return only.\r\n   EDPOS   selStart;   // Selection start. (R)\r\n   EDPOS   selEnd;     // Selection end. (R)\r\n   EDPOS   selAnchor;  // Selection anchor point. (R)\r\n   short   justMode;   // Justification (0 = left, 1 = right, 2 = center).\r\n   short   tabWidth;   // TAB size in spaces.\r\n\r\n   char    fontName[MAXFONTNAME];\r\n   short   fontSize;\r\n   short   fontStyle;  // 0 = plain, 1 = bold, 2 = italic, 3 = bold italic.\r\n   short   kind;       // Kind of editor session; EDCOMMAND, EDPROGRAM, etc.\r\n                       // defined in pro_ext.h. (R)\r\n} EDENV;\r\n\r\n\t\r\n----------------------------------------------------------\r\n\r\nPage 122: The syntax for _EdOpenFile() is missing the\r\n\"mode\" argument.  It should read:\r\n\r\n   _EdOpenFile(TEXT *filename, int mode)\r\n\r\n   TEXT *filename;      /* File to open. */\r\n   int mode;            /* Mode option. */\r\n\t\r\nThe following Mode options are available:\r\nFO_READONLY, FO_WRITEONLY, FO_READWRITE.\r\n\r\n----------------------------------------------------------\r\n\r\nPage 315: zoomEvent is a FoxPro for MS-DOS event.  You\r\ncan't trap for this event in FoxPro for Windows.\r\n\r\n----------------------------------------------------------\r\n\r\nIn an EventHandler in the FoxPro for Windows Library\r\nConstruction Kit, if you make a call to FoxPro which\r\ngenerates another event, the original event record may be\r\nchanged.  This won't happen in the FoxPro for MS-DOS\r\nLibrary Construction Kit. The following example\r\nillustrates this:\r\n\r\n#include <pro_ext.h>\r\n\r\nint         g_eventid = 0;         // Our event handler.\r\n\r\nFAR EventHandler(WHandle theWindow, EventRec FAR *ev)\r\n{\r\n        Point     pt;\r\n    switch (ev->what)              // Determine the event type.\r\n    {\r\n        case keyDownEvent:\r\n                        if (theWindow == _WMainWindow())\r\n                                return NO;\r\n                        else\r\n                        {\r\n                                pt.h = 35;\r\n                                pt.v = 10;\r\n\r\n                        // This causes the event handler to be re-entered.\r\n                                _WSize(theWindow, pt);\t\r\n                        }\r\n                        _PutStr(\"\\nDone with the keyDownEvent\");\r\n                        break;\r\n\r\n                case sizeEvent:\r\n                        _PutStr(\"\\nSize Event received.\");\r\n                        break;\r\n\r\n                        default:\r\n                        return NO;\r\n        }\r\n        return NO;\r\n}\r\n\r\nFAR EventExit()\r\n{\r\n    _DeActivateHandler(g_eventid);     // Get rid of our event handler.\r\n}\r\n\r\n\r\nFAR Quotes(ParamBlk FAR *parm)\r\n{\r\n    //  Set up our event handler.\r\n    g_eventid = _ActivateHandler(EventHandler);\r\n}\r\n\r\n\r\nFoxInfo myFoxInfo[] = {\r\n    {\"QUOTES\", Quotes, 0, \"\"},\r\n    {\"EVENTEXIT\", EventExit, CALLONUNLOAD, \"\"}\r\n};\r\n\r\nFoxTable _FoxTable = {\r\n    (FoxTable FAR *)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo\r\n};\r\n\r\n----------------------------------------------------------\r\n\r\n                      =================\r\n                      End of README.TXT\r\n                      ================="
}