home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / sysutils / msshell / ms_sh200.zoo / patch.lib < prev    next >
Text File  |  1992-06-20  |  3KB  |  97 lines

  1.  MS-DOS Shell Version 2.0    Patch.Lib            March 1992
  2.  
  3.  MS-DOS SHELL - Copyright (c) 1990,1,2 Data Logic Limited and Charles Forsyth
  4.  
  5.  This code is based on (in part) the shell program written by Charles
  6.  Forsyth and is subject to the following copyright restrictions:
  7.  
  8.  1.  Redistribution and use in source and binary forms are permitted
  9.      provided that the above copyright notice is duplicated in the
  10.      source form and the copyright notice in file sh6.c is displayed
  11.      on entry to the program.
  12.  
  13.  2.  The sources (or parts thereof) or objects generated from the
  14.      sources (or parts of sources) cannot be sold under any circumstances.
  15.  
  16.     $Header: c:/usr/src/shell/rcs/patch.lib 2.0 1992/04/13 17:40:33 Ian_Stewartson Exp $
  17.  
  18.     $Log: patch.lib $
  19.     Revision 2.0  1992/04/13  17:40:33  Ian_Stewartson
  20.     MS-Shell 2.0 Baseline release
  21.  
  22.     
  23. ________________________________________________________________________________
  24.  
  25. This document provides a set of instructions for modifying the Microsoft C
  26. v5.1 Library function open so that the O_NOINHERIT flag is passed to MSDOS.
  27. The CodeView commands are given where appropriate.
  28.  
  29. 1.  Using CodeView (or a similar debugger), set a breakpoint on the call to
  30.     open in S_open.
  31.  
  32.     - v S_open
  33.     move cursor to open
  34.     - <F9>
  35.  
  36. 2.  Execute to the break point.  You may have to enter a command which opens
  37.     a file.
  38.  
  39.     - g
  40.  
  41. 3.  Display the Assembly listing
  42.  
  43.     - <F3>
  44.  
  45. 4.  Single step the debugger into the open function
  46.  
  47.     - <F8> (5 times on my system)
  48.  
  49. 5.  Page through the assembler listing until you find the Interrupt 21 call.
  50.     In my version, this is about 16 assembler instructions into the open
  51.     function.  The call sequence is:
  52.  
  53.     mov        byte ptr [bp - 4], 80H
  54.     push    ds
  55.     lds        dx, dword ptr [bp + 6]
  56.     and        al, 03
  57.     or        al, bh
  58.     mov        ah, 3d
  59.     int        21H
  60.  
  61. 6.  Record the machine code values for this sequence (especially the last 4
  62.     instructions).  On my system these are:
  63.  
  64.     2403    and        al, 03
  65.     0AC7    or        al, bh
  66.     B43D    mov        ah, 3d
  67.     CD21    int        21H
  68.  
  69. 7.  Exit CodeView
  70.  
  71. 8.  Extract the module open.obj from your library.
  72.  
  73.     lib llibce "*open.obj;"
  74.  
  75. 9.  Using an appropriate binary editor (or hex dump program) look for the
  76.     sequence of machine code values leading up to the interrupt (see step 6
  77.     above).  In my version of open.obj, it starts at offset 0x0f2 in the
  78.     file.  Change the AND AL, 03 instruction to AND AL, 83 by changing 24
  79.     03 to 24 83.
  80.  
  81.     You may have to write a little program to open the file in binary mode,
  82.     seek to the appropriate location and write 0x83 to the file and close
  83.     it.
  84.  
  85. 10. Re-load the module in the library (you may want to keep a copy of the
  86.     original module/library in case of problems).
  87.  
  88.     lib llibce "-+open.obj;"
  89.  
  90. 11. Re-link the shell
  91.  
  92. 12. Check that the AND AL, 03 has become an AND AL, 83 using steps 1 to 5.
  93.  
  94. Note:
  95.     Microsoft, MSDOS and CodeView are registered trademarks of Microsoft
  96.     Corporation
  97.